<?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>238577</bug_id>
          
          <creation_ts>2022-03-30 15:31:56 -0700</creation_ts>
          <short_desc>Dynamically switch message filter</short_desc>
          <delta_ts>2022-04-28 16:32:48 -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>WebKit Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Per Arne Vollan">pvollan</reporter>
          <assigned_to name="Per Arne Vollan">pvollan</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gavin.p</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mazander</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1856586</commentid>
    <comment_count>0</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-30 15:31:56 -0700</bug_when>
    <thetext>Enable dynamic switching of bootstrap message filter in the WebContent process&apos; sandbox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856818</commentid>
    <comment_count>1</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-31 08:47:50 -0700</bug_when>
    <thetext>&lt;rdar://69263324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856825</commentid>
    <comment_count>2</comment_count>
      <attachid>456243</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-31 09:06:24 -0700</bug_when>
    <thetext>Created attachment 456243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856827</commentid>
    <comment_count>3</comment_count>
      <attachid>456245</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-31 09:09:14 -0700</bug_when>
    <thetext>Created attachment 456245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856835</commentid>
    <comment_count>4</comment_count>
      <attachid>456248</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-31 09:41:39 -0700</bug_when>
    <thetext>Created attachment 456248
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856837</commentid>
    <comment_count>5</comment_count>
      <attachid>456250</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-03-31 09:43:19 -0700</bug_when>
    <thetext>Created attachment 456250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857409</commentid>
    <comment_count>6</comment_count>
      <attachid>456406</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-01 15:10:17 -0700</bug_when>
    <thetext>Created attachment 456406
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857850</commentid>
    <comment_count>7</comment_count>
      <attachid>456570</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-04 07:43:14 -0700</bug_when>
    <thetext>Created attachment 456570
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857852</commentid>
    <comment_count>8</comment_count>
      <attachid>456571</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-04 07:49:25 -0700</bug_when>
    <thetext>Created attachment 456571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859927</commentid>
    <comment_count>9</comment_count>
      <attachid>456571</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-08 16:14:44 -0700</bug_when>
    <thetext>Comment on attachment 456571
Patch

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

This is a complex enough change that I wonder whether we should land it in two parts:

(1) No-op change. Do the changes to com.apple.WebProcess.sb.in, process-entitlements.sh, etc. that make mach bootstrap sandboxing possible, but enable mach bootstrap unconditionally right at process start time.

This will tell us whether we got the basics of the sandbox definition and the system calls right.

(2) Dynamic switching. Remove the unconditional mach bootstrap enablement, and put it only in those select places that grant an entitlement.

I don&apos;t want to put a lot of stop energy in front of landing a security improvement, but I know that sandbox changes can have unforeseen fallout, and I think a little staging might help us.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:860
&gt; +    process().enableMachBootstrap();
&gt;      process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(fontdMachExtensionHandle()), 0);

Is there some abstraction we can use that will automatically enable mach bootstrap when we perform a relevant action, rather than requiring the caller to remember do it?

For example, maybe SandboxExtension::createHandleForMachLookup() could do this automatically?

Relatedly, WebPageProxy::creationParameters does this:

#if HAVE(STATIC_FONT_REGISTRY)
    if (preferences().shouldAllowUserInstalledFonts())
        parameters.fontMachExtensionHandle = fontdMachExtensionHandle();
#endif

Is it missing a call to enable mach bootstrap? 

An abstraction that does the right thing for you automatically is my favorite option. Second to that, it would still be an improvement for functions like SandboxExtension::createHandleForMachLookup() to assert or crash or something if mach bootstrap has not been enabled yet.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:333
&gt; +void WebProcessProxy::enableMachBootstrap() const

Can you add a comment explaining what mach bootstrap is? I think it&apos;s another name for access to launchd?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:453
&gt; +    Ref&lt;WebPage&gt; page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));
&gt; +
&gt; +    if (WebProcess::singleton().injectedBundle())
&gt; +        WebProcess::singleton().injectedBundle()-&gt;didCreatePage(page.ptr());
&gt; +

Why did this move?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863320</commentid>
    <comment_count>10</comment_count>
      <attachid>458070</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-21 09:32:56 -0700</bug_when>
    <thetext>Created attachment 458070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863322</commentid>
    <comment_count>11</comment_count>
      <attachid>458071</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-21 09:40:33 -0700</bug_when>
    <thetext>Created attachment 458071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863323</commentid>
    <comment_count>12</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-21 09:55:08 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #9)
&gt; Comment on attachment 456571 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456571&amp;action=review
&gt; 
&gt; This is a complex enough change that I wonder whether we should land it in
&gt; two parts:
&gt; 
&gt; (1) No-op change. Do the changes to com.apple.WebProcess.sb.in,
&gt; process-entitlements.sh, etc. that make mach bootstrap sandboxing possible,
&gt; but enable mach bootstrap unconditionally right at process start time.
&gt; 
&gt; This will tell us whether we got the basics of the sandbox definition and
&gt; the system calls right.
&gt; 
&gt; (2) Dynamic switching. Remove the unconditional mach bootstrap enablement,
&gt; and put it only in those select places that grant an entitlement.
&gt; 
&gt; I don&apos;t want to put a lot of stop energy in front of landing a security
&gt; improvement, but I know that sandbox changes can have unforeseen fallout,
&gt; and I think a little staging might help us.
&gt; 

That makes sense! Are you OK with reviewing the patch as a whole first, and then we&apos;ll split it up in two pieces when the complete patch looks good? 


&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:860
&gt; &gt; +    process().enableMachBootstrap();
&gt; &gt;      process().send(Messages::WebProcess::SwitchFromStaticFontRegistryToUserFontRegistry(fontdMachExtensionHandle()), 0);
&gt; 
&gt; Is there some abstraction we can use that will automatically enable mach
&gt; bootstrap when we perform a relevant action, rather than requiring the
&gt; caller to remember do it?
&gt; 
&gt; For example, maybe SandboxExtension::createHandleForMachLookup() could do
&gt; this automatically?
&gt; 

That is a good point. This is fixed in the latest patch, where Mach bootstrap&apos;ing will be automatically enabled when creating new Mach sandbox extensions.

&gt; Relatedly, WebPageProxy::creationParameters does this:
&gt; 
&gt; #if HAVE(STATIC_FONT_REGISTRY)
&gt;     if (preferences().shouldAllowUserInstalledFonts())
&gt;         parameters.fontMachExtensionHandle = fontdMachExtensionHandle();
&gt; #endif
&gt; 
&gt; Is it missing a call to enable mach bootstrap? 
&gt; 

This happens before the WebContent process has been declared as launched. At this point in time we still allow Mach bootstrap&apos;ing, so there is no need to manually enable it.

&gt; An abstraction that does the right thing for you automatically is my
&gt; favorite option. Second to that, it would still be an improvement for
&gt; functions like SandboxExtension::createHandleForMachLookup() to assert or
&gt; crash or something if mach bootstrap has not been enabled yet.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:333
&gt; &gt; +void WebProcessProxy::enableMachBootstrap() const
&gt; 
&gt; Can you add a comment explaining what mach bootstrap is? I think it&apos;s
&gt; another name for access to launchd?
&gt; 

Yes, that is correct. In order to be able to bootstrap and create new Mach connections, we need access to launchd. I have added a comment in SandboxExtension::createHandleForMachLookup.

&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:453
&gt; &gt; +    Ref&lt;WebPage&gt; page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));
&gt; &gt; +
&gt; &gt; +    if (WebProcess::singleton().injectedBundle())
&gt; &gt; +        WebProcess::singleton().injectedBundle()-&gt;didCreatePage(page.ptr());
&gt; &gt; +
&gt; 
&gt; Why did this move?

This was moved to delay declaring the WebContent process as launched until after the WebPage has been constructed. This is not essential, but it enables us to avoid manually enable Mach bootstrap&apos;ing when Mach sandbox extensions are created before this point in time. This is because we always have access to launchd during launch of the WebContent process. This is specified in the sandbox. In general, it is also good to declare the WebContent as launched as late as possible before starting an actual load, since it may enable us to block more resources only used during launch.

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863330</commentid>
    <comment_count>13</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-21 10:05:28 -0700</bug_when>
    <thetext>&gt; &gt; I don&apos;t want to put a lot of stop energy in front of landing a security
&gt; &gt; improvement, but I know that sandbox changes can have unforeseen fallout,
&gt; &gt; and I think a little staging might help us.
&gt; &gt; 
&gt; 
&gt; That makes sense! Are you OK with reviewing the patch as a whole first, and
&gt; then we&apos;ll split it up in two pieces when the complete patch looks good? 

Sure!

&gt; &gt; Relatedly, WebPageProxy::creationParameters does this:
&gt; &gt; 
&gt; &gt; #if HAVE(STATIC_FONT_REGISTRY)
&gt; &gt;     if (preferences().shouldAllowUserInstalledFonts())
&gt; &gt;         parameters.fontMachExtensionHandle = fontdMachExtensionHandle();
&gt; &gt; #endif
&gt; &gt; 
&gt; &gt; Is it missing a call to enable mach bootstrap? 
&gt; &gt; 
&gt; 
&gt; This happens before the WebContent process has been declared as launched. At
&gt; this point in time we still allow Mach bootstrap&apos;ing, so there is no need to
&gt; manually enable it.

Got it.

&gt; &gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:453
&gt; &gt; &gt; +    Ref&lt;WebPage&gt; page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));
&gt; &gt; &gt; +
&gt; &gt; &gt; +    if (WebProcess::singleton().injectedBundle())
&gt; &gt; &gt; +        WebProcess::singleton().injectedBundle()-&gt;didCreatePage(page.ptr());
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Why did this move?
&gt; 
&gt; This was moved to delay declaring the WebContent process as launched until
&gt; after the WebPage has been constructed. This is not essential, but it
&gt; enables us to avoid manually enable Mach bootstrap&apos;ing when Mach sandbox
&gt; extensions are created before this point in time. This is because we always
&gt; have access to launchd during launch of the WebContent process. This is
&gt; specified in the sandbox. In general, it is also good to declare the
&gt; WebContent as launched as late as possible before starting an actual load,
&gt; since it may enable us to block more resources only used during launch.

Got it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863362</commentid>
    <comment_count>14</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-21 12:01:09 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=458071&amp;action=review

&gt; Source/WebKit/Shared/SandboxExtension.h:114
&gt; +#if PLATFORM(COCOA)
&gt; +    static void allowEnableMachBootstrap() { s_allowEnableMachBootstrap = true; }
&gt; +#endif

&quot;Allow enable&quot; is a bit of an awkward phrase. Maybe we can improve here.

Does WebContent start out in the revoked state now? I feel like we used to haver a line of code that did the revocation, and I lost it.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:342
&gt; +#if HAVE(SANDBOX_STATE_FLAGS)
&gt; +    // When launchd is blocked in the sandbox, we need to manually enable bootstrapping of new XPC connectons.
&gt; +    // This is done by unblocking launchd, since launchd access is required when creating Mach connections.
&gt; +    // Unblocking launchd is done by enabling a sandbox state variable.
&gt; +    if (s_allowEnableMachBootstrap)
&gt; +        sandbox_enable_state_flag(ENABLE_MACH_BOOTSTRAP, *auditToken);
&gt; +#endif

I think it would be nice to turn this into a release assertion. One way to do that would be for this function to take an extra argument indicating whether the caller expects to be calling this before or after mach bootstrap has been revoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863378</commentid>
    <comment_count>15</comment_count>
      <attachid>458071</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-21 13:20:42 -0700</bug_when>
    <thetext>Comment on attachment 458071
Patch

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

&gt; Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:1471
&gt; +(with-filter
&gt; +    (require-any
&gt; +        (require-not (state-flag &quot;WebContentProcessLaunched&quot;))
&gt; +        (state-flag &quot;EnableMachBootstrap&quot;))

I see: I found the bit of code in WebPage::create that triggers this. Surprising! :P

&gt; Source/WebKit/Shared/SandboxExtension.h:114
&gt; +#if PLATFORM(COCOA)
&gt; +    static void allowEnableMachBootstrap() { s_allowEnableMachBootstrap = true; }
&gt; +#endif

&quot;Allow enable&quot; is a bit of an awkward phrase. Maybe we can improve here.

Does WebContent start out in the revoked state now? I feel like we used to haver a line of code that did the revocation, and I lost it.

&gt; Source/WebKit/Shared/Cocoa/SandboxExtensionCocoa.mm:342
&gt; +#if HAVE(SANDBOX_STATE_FLAGS)
&gt; +    // When launchd is blocked in the sandbox, we need to manually enable bootstrapping of new XPC connectons.
&gt; +    // This is done by unblocking launchd, since launchd access is required when creating Mach connections.
&gt; +    // Unblocking launchd is done by enabling a sandbox state variable.
&gt; +    if (s_allowEnableMachBootstrap)
&gt; +        sandbox_enable_state_flag(ENABLE_MACH_BOOTSTRAP, *auditToken);
&gt; +#endif

I think it would be nice to turn this into a release assertion. One way to do that would be for this function to take an extra argument indicating whether the caller expects to be calling this before or after mach bootstrap has been revoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863379</commentid>
    <comment_count>16</comment_count>
      <attachid>458071</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-21 13:28:12 -0700</bug_when>
    <thetext>Comment on attachment 458071
Patch

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

&gt;&gt; Source/WebKit/Shared/SandboxExtension.h:114
&gt;&gt; +#endif
&gt; 
&gt; &quot;Allow enable&quot; is a bit of an awkward phrase. Maybe we can improve here.
&gt; 
&gt; Does WebContent start out in the revoked state now? I feel like we used to haver a line of code that did the revocation, and I lost it.

Here&apos;s one concrete suggestion: How about renaming this to &quot;setDidFinishLaunching() / s_didFinishLaunching&quot;?

Then, in createHandleForMachLookup, the caller can specify an enum class SandboxExtension { BeforeLaunch, AfterLaunch }, and we can RELEASE_ASSERT(sandboxExtensionTiming == SandboxExtensionTiming::BeforeLaunch || s_didFinishLaunching)&quot;.

Side note: I think using a static variable for this will not have the behavior we want? The static will become true after the first WebContent process we launch, and then for every subsequent WebContent process, the during-launch calls to createHandleForMachLookup() will end up enabling mach bootstrap eagerly. (I believe the assertion described above would have caught this.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863380</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-21 13:28:59 -0700</bug_when>
    <thetext>^ enum class SandboxExtensionTiming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863656</commentid>
    <comment_count>18</comment_count>
      <attachid>458147</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-22 07:54:29 -0700</bug_when>
    <thetext>Created attachment 458147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863659</commentid>
    <comment_count>19</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-22 08:06:53 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #15)
&gt; Comment on attachment 458071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458071&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb.in:1471
&gt; &gt; +(with-filter
&gt; &gt; +    (require-any
&gt; &gt; +        (require-not (state-flag &quot;WebContentProcessLaunched&quot;))
&gt; &gt; +        (state-flag &quot;EnableMachBootstrap&quot;))
&gt; 
&gt; I see: I found the bit of code in WebPage::create that triggers this.
&gt; Surprising! :P
&gt; 
&gt; &gt; Source/WebKit/Shared/SandboxExtension.h:114
&gt; &gt; +#if PLATFORM(COCOA)
&gt; &gt; +    static void allowEnableMachBootstrap() { s_allowEnableMachBootstrap = true; }
&gt; &gt; +#endif
&gt; 
&gt; &quot;Allow enable&quot; is a bit of an awkward phrase. Maybe we can improve here.
&gt; 
&gt; Does WebContent start out in the revoked state now? I feel like we used to
&gt; haver a line of code that did the revocation, and I lost it.
&gt; 

During startup, WebContent is not blocking access to launchd. This is controlled by the sandbox state variable &quot;WebContentProcessLaunched&quot; in a sandbox rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863666</commentid>
    <comment_count>20</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-22 08:25:11 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #16)
&gt; Comment on attachment 458071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458071&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/SandboxExtension.h:114
&gt; &gt;&gt; +#endif
&gt; &gt; 
&gt; &gt; &quot;Allow enable&quot; is a bit of an awkward phrase. Maybe we can improve here.
&gt; &gt; 
&gt; &gt; Does WebContent start out in the revoked state now? I feel like we used to haver a line of code that did the revocation, and I lost it.
&gt; 
&gt; Here&apos;s one concrete suggestion: How about renaming this to
&gt; &quot;setDidFinishLaunching() / s_didFinishLaunching&quot;?
&gt; 
&gt; Then, in createHandleForMachLookup, the caller can specify an enum class
&gt; SandboxExtension { BeforeLaunch, AfterLaunch }, and we can
&gt; RELEASE_ASSERT(sandboxExtensionTiming ==
&gt; SandboxExtensionTiming::BeforeLaunch || s_didFinishLaunching)&quot;.
&gt; 
&gt; Side note: I think using a static variable for this will not have the
&gt; behavior we want? The static will become true after the first WebContent
&gt; process we launch, and then for every subsequent WebContent process, the
&gt; during-launch calls to createHandleForMachLookup() will end up enabling mach
&gt; bootstrap eagerly. (I believe the assertion described above would have
&gt; caught this.)

That is a great catch! I added the enum { BeforeLaunch, AfterLaunch } in the latest WIP patch, but did not include a RELEASE_ASSERT yet, due to the issue with the static member.

There is also another issue we need to consider, I think. Let&apos;s say we create a Mach extension before launch in the UI process that is not supposed to immediately create a new XPC connections in the WebContent process. Attempting to create this XPC connection at a later point after launch will fail, since we have not enabled Mach bootstrap&apos;ing in this case. I think this can be addressed by creating a generic sandbox extension for Mach bootstrap&apos;ing, which will have the same lifetime as the Mach sandbox extension. I am looking into that now.  

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1863696</commentid>
    <comment_count>21</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-22 10:15:03 -0700</bug_when>
    <thetext>&gt; There is also another issue we need to consider, I think. Let&apos;s say we
&gt; create a Mach extension before launch in the UI process that is not supposed
&gt; to immediately create a new XPC connections in the WebContent process.
&gt; Attempting to create this XPC connection at a later point after launch will
&gt; fail, since we have not enabled Mach bootstrap&apos;ing in this case. 

I think this case may not be a serious concern in practice. At least, not from the perspective of this API.

If the UI Process issues a Mach extension before launch, and then disconnects launchd, and then the WebContent Process consumes the Mach extension (with launchd disconnected), the WebContent Process will get a sandbox denial -- and that is the behavior we want because it ensures our security / sandboxing goal. 

I believe the appropriate fix for a case like this would not be to change the API, but rather to change the timing in the WebContent Process to resolve the sandbox denial.

&gt; I think
&gt; this can be addressed by creating a generic sandbox extension for Mach
&gt; bootstrap&apos;ing, which will have the same lifetime as the Mach sandbox
&gt; extension. I am looking into that now.

If this design is possible, I think it might be cool, even if it isn&apos;t required for the detail above. It has the nice property that the Mach bootstrap / launchd privilege doesn&apos;t have to be permanent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864126</commentid>
    <comment_count>22</comment_count>
      <attachid>458071</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-25 09:36:24 -0700</bug_when>
    <thetext>Comment on attachment 458071
Patch

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

Not sure I understand why there is a little variety in the ways we call getAuditToken.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2892
&gt; +        sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ &quot;com.apple.iconservices&quot;_s, &quot;com.apple.iconservices.store&quot;_s }, m_process-&gt;connection()-&gt;getAuditToken());

When I see an expression like &quot;a-&gt;b()-&gt;...&quot; I always wonder what guarantees neither a nor b is null. This is no exception to that.

For m_process I see above that we check hasRunningProcess, and throughout the function we dereference m_process, but given the conditionals and such it’s easy to miss and it’s spread across a 20-line function. I kind of wish there was a way to make this easier to see that it’s correct.

For connection(), why is it guaranteed to never return non-null? If it is then maybe it should return a reference? If it can return null but there’s some reason it won’t here I’d like to know why it is.

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:204
&gt; +    auto auditToken = process.connection()-&gt;getAuditToken();

Same thing again for connection().

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:845
&gt; +    if (auto handle = SandboxExtension::createHandleForMachLookup(&quot;com.apple.mobileassetd.v2&quot;_s, m_process-&gt;connection()-&gt;getAuditToken()))

Same thing again. Strangely the code just below this calls process(), not m_process-&gt;, and I’d like to know why. But again, no null check of connection().

&gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:863
&gt; +    auto auditToken = m_process-&gt;hasConnection() ? m_process-&gt;connection()-&gt;getAuditToken() : std::nullopt;

My worry is now greater because here I see we check hasConnection(). Why here and not in the other 3 cases above? Maybe we should abstract this into a helper function so we’re not always having to think about this?

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:251
&gt; +    handleArray = SandboxExtension::createHandlesForMachLookup({ &quot;com.apple.iphone.axserver-systemwide&quot;_s, &quot;com.apple.frontboard.systemappservices&quot;_s }, hasConnection() ? connection()-&gt;getAuditToken() : std::nullopt);

Again the hasConnection check. I think a function might make me more confident all 5 of these call sites do things correctly, if it had the correct checks in it and returned a std::optional. Doesn’t have to be a member function, could be a free function. Just have to put it in a header file where all 3 of these source files can get at it. I guess it might be more than one function since this one is in the process class so it would not need to get at the process, but others are not and maybe they do?

Maybe a function just makes this a little worse; not sure how important this issue is.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:458
&gt; +    Ref&lt;WebPage&gt; page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864149</commentid>
    <comment_count>23</comment_count>
      <attachid>458286</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 11:08:56 -0700</bug_when>
    <thetext>Created attachment 458286
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864186</commentid>
    <comment_count>24</comment_count>
      <attachid>458292</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 12:10:13 -0700</bug_when>
    <thetext>Created attachment 458292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864194</commentid>
    <comment_count>25</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 12:56:10 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #21)
&gt; &gt; There is also another issue we need to consider, I think. Let&apos;s say we
&gt; &gt; create a Mach extension before launch in the UI process that is not supposed
&gt; &gt; to immediately create a new XPC connections in the WebContent process.
&gt; &gt; Attempting to create this XPC connection at a later point after launch will
&gt; &gt; fail, since we have not enabled Mach bootstrap&apos;ing in this case. 
&gt; 
&gt; I think this case may not be a serious concern in practice. At least, not
&gt; from the perspective of this API.
&gt; 
&gt; If the UI Process issues a Mach extension before launch, and then
&gt; disconnects launchd, and then the WebContent Process consumes the Mach
&gt; extension (with launchd disconnected), the WebContent Process will get a
&gt; sandbox denial -- and that is the behavior we want because it ensures our
&gt; security / sandboxing goal. 
&gt; 
&gt; I believe the appropriate fix for a case like this would not be to change
&gt; the API, but rather to change the timing in the WebContent Process to
&gt; resolve the sandbox denial.
&gt; 

Ah, that is a good point. I wonder if there are one or two cases where it might be hard to change the point in time where we create and send the Mach sandbox extension to the WebContent process. For example, consider the extension we create for com.apple.lsd.open for Mail. This extension is created in the UI process before launch and will not create an XPC connection to the service when consumed in the WebContent process. When loading a mail with a URL, Data Detectors will need to open an XPC connection to this service to determine if the URL can be opened by an app on the system. Unless Mach bootstrap&apos;ing has been enabled when creating the extension, this Mach lookup will fail. Due to this, I have proposed to change the enum from enum class SandboxExtension { BeforeLaunch, AfterLaunch } to enum class MachBootstrapOptions { DoNotEnableMachBootstrap, EnableMachBootstrap } in the latest patch.

I also removed the static member s_didFinishLaunching in SandboxExtension, since such a flag really needs to be associated with every WebProcessProxy in order to be correct.  

&gt; &gt; I think
&gt; &gt; this can be addressed by creating a generic sandbox extension for Mach
&gt; &gt; bootstrap&apos;ing, which will have the same lifetime as the Mach sandbox
&gt; &gt; extension. I am looking into that now.
&gt; 
&gt; If this design is possible, I think it might be cool, even if it isn&apos;t
&gt; required for the detail above. It has the nice property that the Mach
&gt; bootstrap / launchd privilege doesn&apos;t have to be permanent.

Yes, I think this would be a nice follow-up :)

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864196</commentid>
    <comment_count>26</comment_count>
      <attachid>458294</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 12:57:26 -0700</bug_when>
    <thetext>Created attachment 458294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864200</commentid>
    <comment_count>27</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-25 13:04:30 -0700</bug_when>
    <thetext>&gt; Source/WebKit/Shared/SandboxExtension.h:101
&gt; +    static std::optional&lt;Handle&gt; createHandleForMachLookup(ASCIILiteral service, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);
&gt; +    static Vector&lt;Handle&gt; createHandlesForMachLookup(Span&lt;const ASCIILiteral&gt; services, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);
&gt; +    static Vector&lt;Handle&gt; createHandlesForMachLookup(std::initializer_list&lt;const ASCIILiteral&gt; services, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);

Maybe we should make DoNotEnableMachBootstrap the default argument?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864213</commentid>
    <comment_count>28</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 13:53:02 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #22)
&gt; Comment on attachment 458071 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458071&amp;action=review
&gt; 
&gt; Not sure I understand why there is a little variety in the ways we call
&gt; getAuditToken.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:2892
&gt; &gt; +        sandboxExtensions = SandboxExtension::createHandlesForMachLookup({ &quot;com.apple.iconservices&quot;_s, &quot;com.apple.iconservices.store&quot;_s }, m_process-&gt;connection()-&gt;getAuditToken());
&gt; 
&gt; When I see an expression like &quot;a-&gt;b()-&gt;...&quot; I always wonder what guarantees
&gt; neither a nor b is null. This is no exception to that.
&gt; 
&gt; For m_process I see above that we check hasRunningProcess, and throughout
&gt; the function we dereference m_process, but given the conditionals and such
&gt; it’s easy to miss and it’s spread across a 20-line function. I kind of wish
&gt; there was a way to make this easier to see that it’s correct.
&gt; 
&gt; For connection(), why is it guaranteed to never return non-null? If it is
&gt; then maybe it should return a reference? If it can return null but there’s
&gt; some reason it won’t here I’d like to know why it is.
&gt; 

I believe connection() is null until WebProcessProxy::didFinishLaunching has been called. In this specific case, the WebContent process has finished launching, so we always expect to have a connection here.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:204
&gt; &gt; +    auto auditToken = process.connection()-&gt;getAuditToken();
&gt; 
&gt; Same thing again for connection().
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:845
&gt; &gt; +    if (auto handle = SandboxExtension::createHandleForMachLookup(&quot;com.apple.mobileassetd.v2&quot;_s, m_process-&gt;connection()-&gt;getAuditToken()))
&gt; 
&gt; Same thing again. Strangely the code just below this calls process(), not
&gt; m_process-&gt;, and I’d like to know why. But again, no null check of
&gt; connection().
&gt; 
&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm:863
&gt; &gt; +    auto auditToken = m_process-&gt;hasConnection() ? m_process-&gt;connection()-&gt;getAuditToken() : std::nullopt;
&gt; 
&gt; My worry is now greater because here I see we check hasConnection(). Why
&gt; here and not in the other 3 cases above? Maybe we should abstract this into
&gt; a helper function so we’re not always having to think about this?
&gt; 

I believe the function fontdMachExtensionHandle() can potentially be called both before and after WebProcessProxy::didFinishLaunching was called, so I think a connection check is required here.

&gt; &gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:251
&gt; &gt; +    handleArray = SandboxExtension::createHandlesForMachLookup({ &quot;com.apple.iphone.axserver-systemwide&quot;_s, &quot;com.apple.frontboard.systemappservices&quot;_s }, hasConnection() ? connection()-&gt;getAuditToken() : std::nullopt);
&gt; 
&gt; Again the hasConnection check. I think a function might make me more
&gt; confident all 5 of these call sites do things correctly, if it had the
&gt; correct checks in it and returned a std::optional. Doesn’t have to be a
&gt; member function, could be a free function. Just have to put it in a header
&gt; file where all 3 of these source files can get at it. I guess it might be
&gt; more than one function since this one is in the process class so it would
&gt; not need to get at the process, but others are not and maybe they do?
&gt; 
&gt; Maybe a function just makes this a little worse; not sure how important this
&gt; issue is.
&gt; 

To make this more consistent, I have added a new method to WebProcessProxy that will return the audit token from the connection if it exists. I believe we always expect the WebProcessProxy to be non-null in these cases, but the connection might be null if the call is being made before the WebContent process has finished launching. I have also added a release assert to assert that there is an audit token available when enabling Mach bootstrap&apos;ing, since it is required then.


&gt; &gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:458
&gt; &gt; +    Ref&lt;WebPage&gt; page = adoptRef(*new WebPage(pageID, WTFMove(parameters)));
&gt; 
&gt; auto

Fixed!

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864215</commentid>
    <comment_count>29</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 13:54:53 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #27)
&gt; &gt; Source/WebKit/Shared/SandboxExtension.h:101
&gt; &gt; +    static std::optional&lt;Handle&gt; createHandleForMachLookup(ASCIILiteral service, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);
&gt; &gt; +    static Vector&lt;Handle&gt; createHandlesForMachLookup(Span&lt;const ASCIILiteral&gt; services, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);
&gt; &gt; +    static Vector&lt;Handle&gt; createHandlesForMachLookup(std::initializer_list&lt;const ASCIILiteral&gt; services, std::optional&lt;audit_token_t&gt;, MachBootstrapOptions, OptionSet&lt;Flags&gt; = Flags::Default);
&gt; 
&gt; Maybe we should make DoNotEnableMachBootstrap the default argument?

That makes sense, I will update the patch!

Thanks for reviewing!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864226</commentid>
    <comment_count>30</comment_count>
      <attachid>458299</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 14:20:05 -0700</bug_when>
    <thetext>Created attachment 458299
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864240</commentid>
    <comment_count>31</comment_count>
      <attachid>458299</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-04-25 14:55:43 -0700</bug_when>
    <thetext>Comment on attachment 458299
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864244</commentid>
    <comment_count>32</comment_count>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 15:02:22 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #31)
&gt; Comment on attachment 458299 [details]
&gt; Patch
&gt; 
&gt; r=me

Thanks for reviewing!

I will now split this into two separate patches, where the first will enable Mach bootstrap&apos;ing unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864255</commentid>
    <comment_count>33</comment_count>
      <attachid>458303</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-25 15:24:06 -0700</bug_when>
    <thetext>Created attachment 458303
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1864653</commentid>
    <comment_count>34</comment_count>
      <attachid>458407</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-26 15:41:09 -0700</bug_when>
    <thetext>Created attachment 458407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865176</commentid>
    <comment_count>35</comment_count>
      <attachid>458531</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-28 10:01:01 -0700</bug_when>
    <thetext>Created attachment 458531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865257</commentid>
    <comment_count>36</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-28 14:50:05 -0700</bug_when>
    <thetext>ChangeLog entry in Source/WTF/ChangeLog is not at the top of the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865259</commentid>
    <comment_count>37</comment_count>
      <attachid>458548</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-28 14:59:34 -0700</bug_when>
    <thetext>Created attachment 458548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865260</commentid>
    <comment_count>38</comment_count>
      <attachid>458549</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2022-04-28 15:03:14 -0700</bug_when>
    <thetext>Created attachment 458549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865287</commentid>
    <comment_count>39</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-28 16:32:41 -0700</bug_when>
    <thetext>Committed r293595 (250104@main): &lt;https://commits.webkit.org/250104@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458549.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456243</attachid>
            <date>2022-03-31 09:06:24 -0700</date>
            <delta_ts>2022-03-31 09:09:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220331090622.patch</filename>
            <type>text/plain</type>
            <size>23297</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxMDYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgSGFz
aFRyYW5zbGF0b3IgZm9yIEFTQ0lJTGl0ZXJhbCBmb3IgZmFzdGVyIGxvb2t1cCBpbiBIYXNoTWFw
cyAvIEhhc2hTZXRzCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAko
cmV2aXNpb24gMjkyMTA2KQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJ
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgaW50IHNhbmRib3hfYXBwbHkoc2Fu
ZGJveF9wcm9maWxlX3QpOwogY2hhciAqc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9raXRfcmVn
aXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3Ms
IGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncywgYXVkaXRf
dG9rZW5fdCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9l
bnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lz
dHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CiAKK2Jvb2wgc2FuZGJveF9lbmFibGVf
c3RhdGVfZmxhZyhjb25zdCBjaGFyICp2YXJuYW1lLCBhdWRpdF90b2tlbl90KTsKKwogV1RGX0VY
VEVSTl9DX0VORAogCiAjZW5kaWYgLy8gT1MoREFSV0lOKQpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsNDIgQEAKKzIwMjItMDMtMzEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUu
Y29tPgorCisgICAgICAgIER5bmFtaWNhbGx5IHN3aXRjaCBtZXNzYWdlIGZpbHRlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTc3CisgICAgICAg
IDxyZGFyOi8vNjkyNjMzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVXNlIGEgc2FuZGJveCBzdGF0ZSB2YXJpYWJsZSB0byBkeW5hbWljYWxseSBz
d2l0Y2ggdGhlIGJvb3RzdHJhcCBmaWx0ZXIgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcycgc2Fu
ZGJveC4KKyAgICAgICAgVGhlIGJvb3RzdHJhcCBmaWx0ZXIgaXMgYmVpbmcgc3dpdGNoZWQgd2hl
biB3ZSBjcmVhdGUgbWFjaCBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MuCisKKyAgICAgICAgKiBSZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBw
bGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW46CisgICAgICAgICogU2NyaXB0cy9wcm9jZXNzLWVu
dGl0bGVtZW50cy5zaDoKKyAgICAgICAgKiBTaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJp
YWJsZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFkZFBsYXRmb3JtTG9hZFBh
cmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9B
c3NldFNlcnZpY2VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9t
U3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Byb3h5Ojp1bmJsb2NrQWNjZXNzaWJpbGl0eVNlcnZlcklmTmVlZGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRl
bnRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbmFibGVNYWNo
Qm9vdHN0cmFwIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFtKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJp
bmdBbmRJY29uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjplbnN1cmVTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW46CisKIDIwMjItMDMtMzEgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHB1c2ggc3Vic2NyaXB0aW9ucyB3aGVuIHBlcm1pc3Npb25z
IGFyZSByZXNldApJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVz
L2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0
LldlYkNvbnRlbnQuc2IuaW4JKHJldmlzaW9uIDI5MjEwNikKKysrIFNvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNi
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI5LDM5ICsxNDI5LDMzIEBACiApCiAKIChkZWZpbmUt
b25jZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgIChtZXNzYWdlLW51bWJl
cgotICAgICAgICAyMDYKLSAgICAgICAgMjA3Ci0gICAgICAgIDcxMQotICAgICAgICA3MTIKLSAg
ICAgICAgNzE4Ci0gICAgICAgIDgwMAotICAgICAgICA4MDIKLSAgICAgICAgODAzCi0gICAgICAg
IDgwNAotICAgICAgICA4MDUKLSAgICApCi0pCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNiAyMDcg
NzExIDcxMiA3MTggODAwIDgwMiA4MDMgODA0IDgwNSkpCiAKLShpZiAoZGVmaW5lZD8gJypzYnBs
LXZlcnNpb24qKQorKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCiAg
ICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgog
ICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKICAg
ICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAotICAgICAgICAgICAgICAgIChtYWNo
LWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAg
ICApCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkp
CisKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisoaWYgKHJlcXVpcmUtYW5jZXN0b3It
d2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkuZW5hYmxlLXN0YXRl
LWZsYWdzIikKKyAgICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKIDs7IGVsc2UKLSAgICAoYWxsb3cg
bWFjaC1ib290c3RyYXAKLSAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCi0gICAgICAgICAg
ICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAo
YWxsb3cgeHBjLW1lc3NhZ2Utc2VuZAotICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1t
ZXNzYWdlLW51bWJlcnMpCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCisgICAg
KGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworKHdpdGgtZmlsdGVyCisgICAg
KHJlcXVpcmUtYW55CisgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVu
dFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAoc3RhdGUtZmxhZyAiRW5hYmxlTWFjaEJvb3Rz
dHJhcCIpKQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisjZWxzZQor
KGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCisgICAgICAg
IChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCisgICAgICAgIChhbGxv
dyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2Ut
bnVtYmVycykpKSkKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNjYWxsLW1hY2gtb25seS1pbi11c2Ut
ZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVyCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCShyZXZpc2lvbiAyOTIxMDYpCisr
KyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHdvcmtpbmcg
Y29weSkKQEAgLTE5Nyw2ICsxOTcsMTIgQEAgZnVuY3Rpb24gbWFjX3Byb2Nlc3Nfd2ViY29udGVu
dF9zaGFyZWRfZW50aXRsZW1lbnRzKCkKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUuc2VjdXJpdHkuY3Muc2luZ2xlLWppdCBib29sIFlFUwogICAgICAgICBmaQogCisgICAg
ICAgIGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIgPj0gMTMwMDAwICkp
CisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJp
dmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgICAgICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFn
czowIHN0cmluZyBFbmFibGVNYWNoQm9vdHN0cmFwCisgICAgICAgIGZpCisKICAgICAgICAgaWYg
W1sgIiR7V0tfV0VCQ09OVEVOVF9TRVJWSUNFX05FRURTX1hQQ19ET01BSU5fRVhURU5TSU9OX0VO
VElUTEVNRU5UfSIgPT0gWUVTIF1dCiAgICAgICAgIHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS54cGMuZG9tYWluLWV4dGVuc2lvbiBib29sIFlFUwpA
QCAtMzQ0LDYgKzM1MCw4IEBAIGZ1bmN0aW9uIGlvc19mYW1pbHlfcHJvY2Vzc193ZWJjb250ZW50
X2VudGl0bGVtZW50cygpCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnBh
Yy5leGNlcHRpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZh
dGUudmVyaWZpZWQtaml0IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkK
KyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1z
dGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVNYWNoQm9vdHN0cmFwCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlv
biBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNw
ZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVu
YWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCShyZXZpc2lvbiAyOTIxMDYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
MSw2ICsyOTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpmaW5pc2hHcmEKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5z
aW9uRm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFnZSkpIHsKKyAgICAgICAgICAgIG1f
cGFnZS5wcm9jZXNzKCkuZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgICAgICAgICAgaWYgKGF1
dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+
Z2V0QXVkaXRUb2tlbigpKSkKICAgICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVh
dGVkSGFuZGxlKTsKICAgICAgICAgICAgIG1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25Gb3JU
Q0NEID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI5MjEwNikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzYsNiArNzYsOCBAQCBib29sIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRl
TWVkaWFTdHJlYW0oVXMKICAgICBhdXRvJiBwcm9jZXNzID0gcHJveHkucGFnZSgpLnByb2Nlc3Mo
KTsKICAgICBzaXplX3QgZXh0ZW5zaW9uQ291bnQgPSAwOwogCisgICAgcHJvY2Vzcy5lbmFibGVN
YWNoQm9vdHN0cmFwKCk7CisgICAgCiAgICAgYm9vbCBuZWVkc0F1ZGlvU2FuZGJveEV4dGVuc2lv
biA9IHdpdGhBdWRpbyAmJiAhcHJvY2Vzcy5oYXNBdWRpb0NhcHR1cmVFeHRlbnNpb24oKSAmJiAh
cHJveHkucGFnZSgpLnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NFbmFibGVk
KCkgJiYgIXByb3h5LnBhZ2UoKS5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BVUHJvY2Vz
c0VuYWJsZWQoKTsKICAgICBpZiAobmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAg
IGV4dGVuc2lvbkNvdW50Kys7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDI5MjEwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODQsMTAgKzI4ODQsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3Bl
cmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRv
bigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247Ci0gICAgaWYgKGV2ZW50TWF5
U3RhcnREcmFnKQorICAgIGlmIChldmVudE1heVN0YXJ0RHJhZykgeworICAgICAgICBtX3Byb2Nl
c3MtPmVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUu
aWNvbnNlcnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJfcyB9LCBzdGQ6
Om51bGxvcHQpOworICAgIH0KICNlbmRpZgotICAgIAorCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcs
ICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1v
dXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCwgc2FuZGJveEV4
dGVuc2lvbnMpKTsKIH0KQEAgLTcyNTAsNiArNzI1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlcykpKTsKICNlbmRpZgogCisgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNo
Qm9vdHN0cmFwKCk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2
aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CiAjaWYg
SEFWRShGUk9OVEJPQVJEX1NZU1RFTV9BUFBfU0VSVklDRVMpCiAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI5
MjEwNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4MDksNiArMTgwOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZXN0cm95U3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIoUwogCiBTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyJiBXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVj
aFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIoKQogeworICAgIGVu
YWJsZU1hY2hCb290c3RyYXAoKTsKICAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcikgewogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9u
UmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+KCpjb25uZWN0aW9uKCkpOwog
ICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKm1f
c3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjky
MTA2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQzMSw2ICs0MzEsOCBAQCBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJs
aWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCAKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUg
Y3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KICAg
ICBDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FwdGl2ZVBvcnRhbE1vZGU7IH0KIAorICAgIHZvaWQgZW5hYmxlTWFjaEJvb3RzdHJhcCgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwg
V2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUs
IENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDI5MjEwNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyNjMsNiArMjI2Myw4IEBA
CiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1
OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1MkM1
MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUw
NjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9Owog
CQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVF
NTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50Lmgg
Ki87IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZG
MDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLzsgfTsKKwkJ
RTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAwMjI3RjM2RkJEMDA0QkUy
MUEgLyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUzODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAv
KiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzODE2QjNFMjdFMjQ2M0EwMDVF
QUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBX
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQw
MDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0g
Ki87IH07CkBAIC03MDc0LDkgKzcwNzYsMTAgQEAKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBC
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEIxMTBDMjdD
NDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3Vw
cG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRTM2MTJG
RjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAw
NjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDIyN0YzNkZCRDAwNEJF
MjFBIC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHByZWZlcmVuY2Vz
LnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFG
QzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHBhdGgg
PSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0
MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTc4NjQsNyArNzg2Nyw3IEBACiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAq
LywKIAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJ
CQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJUcmVlICovLAotCQkJCUUz
NjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovLAorCQkJCUUzNkZFRkZFMjdGMzZG
MzQwMDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFDQjc0NjQ1Mjc0Mzc5RjEwMEYxOTg3NCAv
KiBXZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRh
ICovLAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKQEAgLTEzNjgzLDYg
KzEzNjg2LDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzNkZGMDAyMjdGMzZGQkQwMDRC
RTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEg
LyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IFNhbmRib3g7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNDA0OTA2RjIxREU2NUQ3MDAz
N0YwREIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTE0NTkwLDYgKzE0NjAyLDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyog
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThE
MTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNh
bmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JBQjExMTAyNUREMDJC
MzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNTk1Miw2ICsxNTk2NSw3IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1
MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLywKIAkJCQk4
REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2Vz
ICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMxMiAvKiBpT1MueGNhc3NldHMgaW4gUmVz
b3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5z
YiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcyMThDQkI0ODAwODEzODg2IC8qIFNhZmVC
cm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAyOTIxMDYp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIsNDQgQEAKICNlbmRpZgogCiAjaWYgSEFW
RShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVO
QUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290
c3RyYXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQorICAgICht
ZXNzYWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisKKyhkZWZpbmUgKGFsbG93
LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAog
ICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKKyAgICAgICAgICAgIChkZW55IG1hY2gtbWVz
c2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCisgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNz
YWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJz
KSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01FU1NBR0Vf
RklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQogI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgSEFWRShTQU5EQk9YX1NUQVRF
X0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJlcXVpcmUtYW5jZXN0b3Itd2l0aC1l
bnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkuZW5hYmxlLXN0YXRlLWZsYWdz
IikKKyAgICAgICAgICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQorICAgICAgICA7OyBlbHNlCisg
ICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorCisgICAgICAg
ICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55CisgICAgICAgICAgICAgICAg
KHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisg
ICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkKKyAgICAg
ICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpKSkKKyNlbHNlCisgICAg
KGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgogICAg
ICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAg
ICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAg
ICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3Rz
dHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorI2VuZGlmIC8vIEhBVkUoU0FOREJPWF9TVEFURV9G
TEFHUykKICNlbHNlCisgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChhcHBseS1t
ZXNzYWdlLWZpbHRlcgogICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0
ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdlLXNlbmQgKG1lc3NhZ2Ut
bnVtYmVyCisgICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAg
ICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQogI2VuZGlmCi0gICAgICAg
ICAgICAgICAgMjA0Ci0gICAgICAgICAgICAgICAgMjA3Ci0gICAgICAgICAgICAgICAgMzAxCi0g
ICAgICAgICAgICAgICAgNzExCi0gICAgICAgICAgICAgICAgODAwCi0gICAgICAgICAgICAgICAg
ODA0Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQot
KQogCiAoaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxU
RVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWtlcm5lbC1lbmRwb2ludCkpCiAgICAgKGFsbG93
IG1hY2gta2VybmVsLWVuZHBvaW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjkyMTA2KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0NiwxNyAr
NDQ2LDE3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291
bnRlciwgdwogCiBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAgUmVm
PFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRC
dW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUo
KS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwogI2lmIEhBVkUoU0FOREJPWF9TVEFURV9G
TEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1lYW50IHRvIGFjdHVhbGx5IHJlYWQgYSBw
cmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRyaWdnZXIgYSBzYW5kYm94IHJ1bGUgaW4g
dGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCB3aWxsIHRvZ2dsZSBhIHNhbmRi
b3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcwog
ICAgIC8vIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcuIFRoaXMgY2FsbCBzaG91bGQgYmUgcmVwbGFj
ZWQgd2l0aCBwcm9wZXIgQVBJIHdoZW4gYXZhaWxhYmxlLgogICAgIENGUHJlZmVyZW5jZXNHZXRB
cHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoImtleSIpLCBDRlNUUigiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LkxhdW5jaCIpLCBudWxscHRyKTsKICNlbmRpZgotCi0gICAgUmVmPFdlYlBhZ2U+IHBh
Z2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7
Ci0KLSAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRl
UGFnZShwYWdlLnB0cigpKTsKIAogICAgIHJldHVybiBwYWdlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456245</attachid>
            <date>2022-03-31 09:09:14 -0700</date>
            <delta_ts>2022-03-31 09:41:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>25591</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsNiArMzYsMTggQEAKIAogICAgICAgICAqIHd0Zi9QbGF0Zm9ybUhhdmUu
aDoKIAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6
Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgU1BJIHRvIHNldCBzYW5kYm94IHN0YXRlIHZhcmlhYmxlLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oOgorCiAyMDIyLTAzLTMwICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIEhhc2hUcmFuc2xhdG9yIGZvciBBU0NJ
SUxpdGVyYWwgZm9yIGZhc3RlciBsb29rdXAgaW4gSGFzaE1hcHMgLyBIYXNoU2V0cwpJbmRleDog
U291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9uIDI5MjE2MCkKKysr
IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdp
c3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywg
Y29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90
b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2Vu
dHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0
cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9z
dGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhU
RVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjkyMTYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0MiBAQAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAg
PHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3
aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5k
Ym94LgorICAgICAgICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCB3aGVu
IHdlIGNyZWF0ZSBtYWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdlYkNvbnRlbnQgcHJv
Y2Vzcy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3Byb2Nlc3MtZW50
aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlh
Ymxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFy
YW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fz
c2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3aXRjaEZyb21T
dGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbGlkV2ViQ29udGVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJsZU1hY2hC
b290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJlYW0pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmlu
Z0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wMy0zMSAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4gcGVybWlzc2lvbnMg
YXJlIHJlc2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9SZXNv
dXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2Iu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNDAgKzE0NTAsMzQgQEAKICkKIAogKGRlZmluZS1v
bmNlIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgKG1lc3NhZ2UtbnVtYmVy
Ci0gICAgICAgIDIwNgotICAgICAgICAyMDcKLSAgICAgICAgNzExCi0gICAgICAgIDcxMgotICAg
ICAgICA3MTgKLSAgICAgICAgODAwCi0gICAgICAgIDgwMgotICAgICAgICA4MDMKLSAgICAgICAg
ODA0Ci0gICAgICAgIDgwNQotICAgICkKLSkKKyAgICAobWVzc2FnZS1udW1iZXIgMjA2IDIwNyA3
MTEgNzEyIDcxOCA4MDAgODAyIDgwMyA4MDQgODA1KSkKIAotKGlmIChkZWZpbmVkPyAnKnNicGwt
dmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKICAg
ICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAg
ICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQogICAg
ICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAg
ICkKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkK
KworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWlyZS1hbmNlc3Rvci13
aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUtc3RhdGUt
ZmxhZ3MiKQorICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQogOzsgZWxzZQotICAgIChhbGxvdyBt
YWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSAgICAgICAgICAg
IChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChh
bGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1l
c3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICkKLSkKKyAgICAo
YWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQogCisod2l0aC1maWx0ZXIKKyAgICAo
cmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50
UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0
cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbHNlCiso
YWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKKyAgICAgICAg
KGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKKyAgICAgICAgKGFsbG93
IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKQorI2VuZGlmCisKIChkZWZpbmUgKHN5c2NhbGwtbWFjaC1vbmx5LWluLXVzZS1k
dXJpbmctbGF1bmNoKQogICAgIChtYWNodHJhcC1udW1iZXIKICAgICAgICAgTVNDX21hY2hfZ2Vu
ZXJhdGVfYWN0aXZpdHlfaWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVu
dGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vz
cy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5
NywxMiBAQAogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5j
cy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZpCiAKKyAgICAgICAgaWYgKCggIiR7VEFS
R0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMzAwMDAgKSkKKyAgICAgICAgdGhlbgor
ICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11
dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJs
ZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAgICAgICBpZiBbWyAiJHtXS19XRUJDT05U
RU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRFTlNJT05fRU5USVRMRU1FTlR9IiA9PSBZ
RVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJvb2wgWUVTCkBAIC0zNDQsNiArMzUwLDgg
QEAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUucGFjLmV4Y2VwdGlvbiBi
b29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS52ZXJpZmllZC1q
aXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJp
dHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxl
LnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQorICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAg
c3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxl
LnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90ZS1pbnNwZWN0aW9uIGJvb2wgWUVTCiAg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5wcm94eS1h
cHBsaWNhdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwpJbmRleDogU291cmNlL1dlYktpdC9T
aGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFi
bGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjZGVmaW5lIEVOQUJMRV9NQUNIX0JPT1RTVFJBUCAiRW5hYmxlTWFjaEJvb3Rz
dHJhcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYg
KzIwMiw3IEBACiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRl
bnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhw
cm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFwcm9jZXNzLmhhc01hbmFnZWRT
ZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlz
TWFuYWdlZFNlc3Npb25dKSB7CisgICAgICAgIHByb2Nlc3MuZW5hYmxlTWFjaEJvb3RzdHJhcCgp
OwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldl
YkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgICAgICBs
b2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFu
ZGxlKTsKIApAQCAtODQwLDYgKzg0MSw4IEBACiAKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CisgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNoQm9vdHN0
cmFwKCk7CisKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxlQXNzZXRIYW5kbGVW
MjsKICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBzdGQ6Om51bGxvcHQp
KQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKQEAgLTg1
Myw2ICs4NTYsNyBAQAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRS
ZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiB7CisgICAgcHJvY2VzcygpLmVuYWJsZU1hY2hC
b290c3RyYXAoKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShmb250ZE1hY2hFeHRl
bnNpb25IYW5kbGUoKSksIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI5MjE2MCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
ICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChXZWJQcm9jZXNzUHJveHk6OnNo
b3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7CisgICAgICAgIHByb2Nlc3MuZW5hYmxlTWFj
aEJvb3RzdHJhcCgpOwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2ViaW5zcGVjdG9yIl9zLCBz
dGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgcGFyYW1ldGVycy5lbmFibGVSZW1vdGVXZWJJbnNw
ZWN0b3JFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg+CiAj
ZW5kaWYKIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNsdWRlICJTYW5kYm94
U3RhdGVWYXJpYWJsZXMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
IlRDQ1NvZnRMaW5rLmgiCiAjZW5kaWYKQEAgLTI0NSw5ICsyNDksMTAgQEAKICAgICAgICAgcmV0
dXJuOwogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgcmV0dXJuOwotCisgICAg
CiAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxlQXJyYXk7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBlbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgaGFu
ZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7
ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJv
bnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUKGhhbmRsZUFy
cmF5LnNpemUoKSA9PSAyKTsKICNlbmRpZgpAQCAtMzI1LDQgKzMzMCwxMyBAQAogICAgIHJldHVy
biB0cnVlOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJhcCgp
IGNvbnN0Cit7CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIGF1dG8gdG9rZW4g
PSBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKKyAgICBzYW5kYm94X2VuYWJsZV9zdGF0
ZV9mbGFnKEVOQUJMRV9NQUNIX0JPT1RTVFJBUCwgKnRva2VuKTsKKyNlbmRpZgorCiB9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHJldmlzaW9uIDI5MjE2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3IEBACiAgICAg
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9l
c1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7CisgICAgICAgICAgICBtX3BhZ2UucHJvY2VzcygpLmVu
YWJsZU1hY2hCb290c3RyYXAoKTsKICAgICAgICAgICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
dGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkp
CiAgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRsZSk7CiAgICAg
ICAgICAgICBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCA9IHRydWU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDggQEAK
ICAgICBhdXRvJiBwcm9jZXNzID0gcHJveHkucGFnZSgpLnByb2Nlc3MoKTsKICAgICBzaXplX3Qg
ZXh0ZW5zaW9uQ291bnQgPSAwOwogCisgICAgcHJvY2Vzcy5lbmFibGVNYWNoQm9vdHN0cmFwKCk7
CisgICAgCiAgICAgYm9vbCBuZWVkc0F1ZGlvU2FuZGJveEV4dGVuc2lvbiA9IHdpdGhBdWRpbyAm
JiAhcHJvY2Vzcy5oYXNBdWRpb0NhcHR1cmVFeHRlbnNpb24oKSAmJiAhcHJveHkucGFnZSgpLnBy
ZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NFbmFibGVkKCkgJiYgIXByb3h5LnBh
Z2UoKS5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BVUHJvY2Vzc0VuYWJsZWQoKTsKICAg
ICBpZiAobmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24pCiAgICAgICAgIGV4dGVuc2lvbkNvdW50
Kys7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlz
aW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4ODQsMTAgKzI4ODQsMTIgQEAKIAogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnID0gIW1fY3VycmVudERyYWdPcGVyYXRpb24g
JiYgZXZlbnRUeXBlID09IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYgZXZlbnQuYnV0dG9uKCkgIT0g
V2ViTW91c2VFdmVudDo6QnV0dG9uOjpOb0J1dHRvbjsKLSAgICBpZiAoZXZlbnRNYXlTdGFydERy
YWcpCisgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKSB7CisgICAgICAgIG1fcHJvY2Vzcy0+ZW5h
YmxlTWFjaEJvb3RzdHJhcCgpOwogICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2Vy
dmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHN0ZDo6bnVsbG9w
dCk7CisgICAgfQogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJv
Y2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVu
dFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5zaW9u
cykpOwogfQpAQCAtNzI1MCw2ICs3MjUyLDcgQEAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMpKSk7CiAjZW5kaWYKIAorICAgIG1fcHJvY2Vzcy0+ZW5hYmxlTWFjaEJvb3Rz
dHJhcCgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZXNT
YW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uOwogI2lmIEhBVkUo
RlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQogICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9u
dGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyOTIxNjAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODA5LDYgKzE4MDksNyBAQAogCiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyJiBXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIoKQogeworICAgIGVuYWJs
ZU1hY2hCb290c3RyYXAoKTsKICAgICBpZiAoIW1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcikgewogICAgICAgICBtX3NwZWVjaFJlY29nbml0aW9uUmVt
b3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgPSBtYWtlVW5pcXVlPFNwZWVjaFJlY29nbml0
aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+KCpjb25uZWN0aW9uKCkpOwogICAg
ICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNwZWVjaFJlY29nbml0aW9uUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgKm1fc3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjkyMTYw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzMSw2ICs0MzEsOCBAQAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBj
cm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQogICAg
IENhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
YXB0aXZlUG9ydGFsTW9kZTsgfQogCisgICAgdm9pZCBlbmFibGVNYWNoQm9vdHN0cmFwKCkgY29u
c3Q7CisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBX
ZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSwg
Q2FwdGl2ZVBvcnRhbE1vZGUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIy
NjQsNiArMjI2NCw4IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50
UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRDI2QTRDMTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87
IH07CiAJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oICovOyB9OwogCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmggKi87IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaCAqLzsgfTsKKwkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNi
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAw
MjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUzODE2QjNEMjdF
MjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0IyN0UyNDYzOTAw
NUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzODE2
QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNDMjdFMjQ2
MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKIAkJRTM4
NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gKi87IH07CkBAIC03MDc3LDkgKzcwNzksMTAgQEAKIAkJRTM0MzlCNjMy
MzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUg
LyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKLQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5k
Ym94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYw
MDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IHByZWZlcmVuY2VzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIz
QjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAv
KiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL1dl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc4NjcsNyArNzg3MCw3IEBACiAJCQkJQkMxMTFCNUExMTJGNjI4MjAw
MzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYgLyogTm90aWZp
Y2F0aW9ucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJU
cmVlICovLAotCQkJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovLAorCQkJ
CUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFDQjc0NjQ1Mjc0
Mzc5RjEwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2
IC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAq
LywKQEAgLTEzNjg4LDYgKzEzNjkxLDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRi
b3ggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzNkZG
MDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlFMzZGRjAwMTI3
RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IFNhbmRib3g7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNDA0
OTA2RjIxREU2NUQ3MDAzN0YwREIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE0NTk1LDYgKzE0NjA3LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0
MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYwMDMyN0YzNkZC
RDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk1Nyw2ICsxNTk3MCw3IEBACiAJCQkJ
NkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291
cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMxMiAvKiBpT1Mu
eGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAv
KiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcyMThDQkI0ODAw
ODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjkyMTYw
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0Niw2ICs0NDYsMTEgQEAKIAogUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNy
ZWF0ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzKQogeworICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQ
YWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworCisgICAgaWYgKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7CisKICNp
ZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAgICAgLy8gVGhpcyBjYWxsIGlzIG5vdCBtZWFu
dCB0byBhY3R1YWxseSByZWFkIGEgcHJlZmVyZW5jZSwgYnV0IGlzIG9ubHkgaGVyZSB0byB0cmln
Z2VyIGEgc2FuZGJveCBydWxlIGluIHRoZQogICAgIC8vIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2hp
Y2ggd2lsbCB0b2dnbGUgYSBzYW5kYm94IHZhcmlhYmxlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRo
ZSBXZWJDb250ZW50IHByb2Nlc3MKQEAgLTQ1MywxMSArNDU4LDYgQEAKICAgICBDRlByZWZlcmVu
Y2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5MYXVuY2giKSwgbnVsbHB0cik7CiAjZW5kaWYKIAotICAgIFJlZjxXZWJQ
YWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0
ZXJzKSkpOwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxl
KCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRp
ZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAgICByZXR1cm4gcGFnZTsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5z
Yi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5h
cHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUyLDI3ICsyMDUyLDQ0
IEBACiAjZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRFUklORykKKyhkZWZp
bmUgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKKyAgICAobWVzc2FnZS1udW1iZXIg
MjA0IDIwNyAzMDEgNzExIDgwMCA4MDQpKQorCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJh
cC13aXRoLWZpbHRlcikKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5
LW1lc3NhZ2UtZmlsdGVyCisgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0
aCB0ZWxlbWV0cnkpKQorICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAg
ICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCisKIChpZiAo
YW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMi
KSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlO
X1JFUVVJUkVEID49IDEyMDAwMAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICAo
YmVnaW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNv
bS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgICAgICAg
ICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFs
bG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIK
KyAgICAgICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAo
c3RhdGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAg
IChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ct
bWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCisjZWxzZQogICAgIChhbGxvdyBtYWNoLWJv
b3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAogICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNz
YWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3Nh
Z2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Ut
c2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkp
KQorI2VuZGlmIC8vIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICNlbHNlCisgICAgKGFsbG93
IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgogICAgICAgICAg
ICAgKGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAg
KGFsbG93IHhwYy1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAgICAgICAoYWxs
b3cgeHBjLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNz
YWdlLW51bWJlcnMpKSkpKQogI2VuZGlmCi0gICAgICAgICAgICAgICAgMjA0Ci0gICAgICAgICAg
ICAgICAgMjA3Ci0gICAgICAgICAgICAgICAgMzAxCi0gICAgICAgICAgICAgICAgNzExCi0gICAg
ICAgICAgICAgICAgODAwCi0gICAgICAgICAgICAgICAgODA0Ci0gICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQogCiAoaWYgKGFuZCAoZXF1YWw/IChw
YXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdt
YWNoLWtlcm5lbC1lbmRwb2ludCkpCiAgICAgKGFsbG93IG1hY2gta2VybmVsLWVuZHBvaW50Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456248</attachid>
            <date>2022-03-31 09:41:39 -0700</date>
            <delta_ts>2022-03-31 09:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220331094138.patch</filename>
            <type>text/plain</type>
            <size>23663</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRVhQRVJJTUVOVEFMX0ZFQVRVUkVTIGZsYWcgdXNlIG9uIENvY29hIHBsYXRm
b3JtcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIGludCBzYW5kYm94X2FwcGx5KHNhbmRib3hfcHJv
ZmlsZV90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2Vu
dHJ5X2NsYXNzX3RvX3Byb2Nlc3MoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCBjb25zdCBj
aGFyICpyZWdpc3RyeV9lbnRyeV9jbGFzcywgdWludDMyX3QgZmxhZ3MsIGF1ZGl0X3Rva2VuX3Qp
OwogY2hhciAqc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xh
c3MoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCBjb25zdCBjaGFyICpyZWdpc3RyeV9lbnRy
eV9jbGFzcywgdWludDMyX3QgZmxhZ3MpOwogCitib29sIHNhbmRib3hfZW5hYmxlX3N0YXRlX2Zs
YWcoY29uc3QgY2hhciAqdmFybmFtZSwgYXVkaXRfdG9rZW5fdCk7CisKIFdURl9FWFRFUk5fQ19F
TkQKIAogI2VuZGlmIC8vIE9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTIxNjAp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQy
IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KKwor
ICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBmaWx0ZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODU3NworICAgICAgICA8cmRhcjov
LzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBhIHNhbmRib3ggc3RhdGUgdmFyaWFibGUgdG8gZHluYW1pY2FsbHkgc3dpdGNoIHRo
ZSBib290c3RyYXAgZmlsdGVyIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MnIHNhbmRib3guCisg
ICAgICAgIFRoZSBib290c3RyYXAgZmlsdGVyIGlzIGJlaW5nIHN3aXRjaGVkIHdoZW4gd2UgY3Jl
YXRlIG1hY2ggc2FuZGJveCBleHRlbnNpb25zIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgor
CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0Zv
bnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJh
cCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOgorCiAyMDIyLTAzLTMxICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVz
ZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiLmluCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9T
YW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwzMyBAQAogKQogCiAoZGVmaW5lLW9uY2UgKG1h
Y2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIKLSAgICAg
ICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAgICAgIDcx
OAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4MDQKLSAg
ICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcxMSA3MTIg
NzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12ZXJzaW9u
KikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxv
dyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAg
ICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAgICAgICAg
ICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3Ry
YXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQorICAg
ICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisjaWYg
SEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50
aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIp
CisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1hY2gtYm9v
dHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAgKGRlbnkg
eHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhw
Yy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChhbGxvdy1t
YWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChyZXF1aXJl
LWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQcm9jZXNz
TGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkK
KyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhhbGxvdyBt
YWNoLWJvb3RzdHJhcAorICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgorICAgICAgICAoZGVueSBt
YWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQorICAgICAgICAoYWxsb3cgbWFjaC1t
ZXNzYWdlLXNlbmQKKyAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMp
KSkpCisjZW5kaWYKIAogKGRlZmluZSAoc3lzY2FsbC1tYWNoLW9ubHktaW4tdXNlLWR1cmluZy1s
YXVuY2gpCiAgICAgKG1hY2h0cmFwLW51bWJlcgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2Ny
aXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsNiArMTk3LDEyIEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRlbnRfc2hhcmVk
X2VudGl0bGVtZW50cygpCiAgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnNl
Y3VyaXR5LmNzLnNpbmdsZS1qaXQgYm9vbCBZRVMKICAgICAgICAgZmkKIAorICAgICAgICBpZiAo
KCAiJHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iID49IDEzMDAwMCApKQorICAgICAg
ICB0aGVuCisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2Vj
dXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQorICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3M6MCBzdHJp
bmcgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgICAgICBmaQorCiAgICAgICAgIGlmIFtbICIke1dL
X1dFQkNPTlRFTlRfU0VSVklDRV9ORUVEU19YUENfRE9NQUlOX0VYVEVOU0lPTl9FTlRJVExFTUVO
VH0iID09IFlFUyBdXQogICAgICAgICB0aGVuCiAgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUueHBjLmRvbWFpbi1leHRlbnNpb24gYm9vbCBZRVMKQEAgLTM0NCw2
ICszNTAsOCBAQCBmdW5jdGlvbiBpb3NfZmFtaWx5X3Byb2Nlc3Nfd2ViY29udGVudF9lbnRpdGxl
bWVudHMoKQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhjZXB0
aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZlcmlm
aWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5z
ZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgcGxp
c3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxh
Z3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZ
RVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnBy
b3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVW
YXJpYWJsZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNkZWZpbmUgRU5BQkxFX01BQ0hfQk9PVFNUUkFQICJFbmFibGVNYWNo
Qm9vdHN0cmFwIgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2
aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkx
LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZmluaXNo
R3JhCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRD
Q0QgJiYgZG9lc1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7CisgICAgICAgICAgICBtX3BhZ2UucHJv
Y2VzcygpLmVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICAgICAgICAgIGlmIChhdXRvIGNyZWF0
ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1ZGl0
VG9rZW4oKSkpCiAgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRs
ZSk7CiAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCA9IHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYg
Kzc2LDggQEAgYm9vbCBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3Ry
ZWFtKFVzCiAgICAgYXV0byYgcHJvY2VzcyA9IHByb3h5LnBhZ2UoKS5wcm9jZXNzKCk7CiAgICAg
c2l6ZV90IGV4dGVuc2lvbkNvdW50ID0gMDsKIAorICAgIHByb2Nlc3MuZW5hYmxlTWFjaEJvb3Rz
dHJhcCgpOworICAgIAogICAgIGJvb2wgbmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24gPSB3aXRo
QXVkaW8gJiYgIXByb2Nlc3MuaGFzQXVkaW9DYXB0dXJlRXh0ZW5zaW9uKCkgJiYgIXByb3h5LnBh
Z2UoKS5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpICYmICFw
cm94eS5wYWdlKCkucHJlZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVk
KCk7CiAgICAgaWYgKG5lZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBleHRlbnNp
b25Db3VudCsrOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODg0LDEwICsyODg0LDEyIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXNlRXZlbnQoKQogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGJvb2wgZXZlbnRNYXlTdGFydERyYWcgPSAhbV9jdXJyZW50RHJhZ09wZXJhdGlvbiAm
JiBldmVudFR5cGUgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSAmJiBldmVudC5idXR0b24oKSAhPSBX
ZWJNb3VzZUV2ZW50OjpCdXR0b246Ok5vQnV0dG9uOwotICAgIGlmIChldmVudE1heVN0YXJ0RHJh
ZykKKyAgICBpZiAoZXZlbnRNYXlTdGFydERyYWcpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5lbmFi
bGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2
aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0
KTsKKyAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9j
ZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50
VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkpOwogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQsIHNhbmRib3hFeHRlbnNpb25z
KSk7CiB9CkBAIC03MjUwLDYgKzcyNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGwKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpF
eHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKFdURk1vdmUoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMpKSk7CiAjZW5kaWYKIAorICAgIG1fcHJvY2Vzcy0+ZW5hYmxlTWFjaEJvb3RzdHJh
cCgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZXNTYW5k
Ym94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uOwogI2lmIEhBVkUoRlJP
TlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQogICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyOTIxNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODA5LDYgKzE4MDksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVzdHJveVNw
ZWVjaFJlY29nbml0aW9uU2VydmVyKFMKIAogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlciYgV2ViUHJvY2Vzc1Byb3h5OjplbnN1cmVTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKCkKIHsKKyAgICBlbmFibGVNYWNo
Qm9vdHN0cmFwKCk7CiAgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVN
ZWRpYVNvdXJjZU1hbmFnZXIpIHsKICAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyPigqY29ubmVjdGlvbigpKTsKICAgICAgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICptX3NwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOwpAQCAtMjEwMiw2ICsy
MTAzLDE0IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjptYXJrUHJvY2Vzc0FzUmVjZW50bHlVc2Vk
KCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzeXN0ZW1CZWVwKCkKIHsKICAgICBQQUw6OnN5c3Rl
bUJlZXAoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZU1hY2hCb290c3RyYXAo
KSBjb25zdAoreworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICBhdXRvIHRva2Vu
ID0gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7CisgICAgc2FuZGJveF9lbmFibGVfc3Rh
dGVfZmxhZyhFTkFCTEVfTUFDSF9CT09UU1RSQVAsICp0b2tlbik7CisjZW5kaWYKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMSw2ICs0MzEsOCBAQCBjbGFz
cyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCAKICAgICBX
ZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4g
bV9jcm9zc09yaWdpbk1vZGU7IH0KICAgICBDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFs
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGU7IH0KIAorICAgIHZvaWQg
ZW5hYmxlTWFjaEJvb3RzdHJhcCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBX
ZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUsIENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNjQsNiArMjI2NCw4IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBX
ZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vz
cy54aWIgKi87IH07CiAJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi87IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIx
QSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3Rh
dGVWYXJpYWJsZXMuaCAqLzsgfTsKKwkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZl
cmVuY2VzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUz
ODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0Iy
N0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07
CiAJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2
QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsg
fTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi87IH07CkBAIC03MDc3LDkgKzcwNzksMTAgQEAKIAkJ
RTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0g
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNo
aW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5
MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsg
cGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKLQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBh
dGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3Qjcw
OUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFB
IC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IHByZWZlcmVuY2VzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2Mzkw
MDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBO
ZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRo
ID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NjcsNyArNzg3MCw3IEBACiAJCQkJQkMxMTFCNUEx
MTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYg
LyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVt
b3RlTGF5ZXJUcmVlICovLAotCQkJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovLAorCQkJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFD
Qjc0NjQ1Mjc0Mzc5RjEwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAz
NTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1
RSAvKiBYUiAqLywKQEAgLTEzNjg4LDYgKzEzNjkxLDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFB
IC8qIFNhbmRib3ggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlF
MzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNhbmRib3g7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0YwREIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE0NTk1LDYgKzE0NjA3LDcgQEAKIAkJCQlCQzJE
MDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5z
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYw
MDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0Mz
NiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk1Nyw2ICsxNTk3MCw3
IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVs
IGluIFJlc291cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1Bs
aXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMx
MiAvKiBpT1MueGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQw
MDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcy
MThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29t
LmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIs
NDQgQEAKICNlbmRpZgogCiAjaWYgSEFWRShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlm
IChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllF
UyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAt
bWVzc2FnZS1udW1iZXJzKQorICAgIChtZXNzYWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAw
IDgwNCkpCisKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKKyAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCisgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0g
IkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1i
b290c3RyYXApKQogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYg
KHJlcXVpcmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2Vj
dXJpdHkuZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChkZW55IG1hY2gtYm9vdHN0
cmFwKQorICAgICAgICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAt
d2l0aC1maWx0ZXIpKQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVp
cmUtYW55CisgICAgICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250
ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJs
ZU1hY2hCb290c3RyYXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikpKSkKKyNlbHNlCisgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChh
cHBseS1tZXNzYWdlLWZpbHRlcgogICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQg
KHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAo
bWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAg
ICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorI2VuZGlm
IC8vIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICNlbHNlCisgICAgKGFsbG93IG1hY2gtYm9v
dHN0cmFwCisgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgogICAgICAgICAgICAgKGRlbnkg
eHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhw
Yy1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAgICAgICAoYWxsb3cgeHBjLW1l
c3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJl
cnMpKSkpKQogI2VuZGlmCi0gICAgICAgICAgICAgICAgMjA0Ci0gICAgICAgICAgICAgICAgMjA3
Ci0gICAgICAgICAgICAgICAgMzAxCi0gICAgICAgICAgICAgICAgNzExCi0gICAgICAgICAgICAg
ICAgODAwCi0gICAgICAgICAgICAgICAgODA0Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgKQotICAgICAgICApCi0gICAgKQotKQogCiAoaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5B
QkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWtlcm5l
bC1lbmRwb2ludCkpCiAgICAgKGFsbG93IG1hY2gta2VybmVsLWVuZHBvaW50CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjky
MTYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0NiwxNyArNDQ2LDE3IEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgdwogCiBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6
Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiB7CisgICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdl
YlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwog
I2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1l
YW50IHRvIGFjdHVhbGx5IHJlYWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRy
aWdnZXIgYSBzYW5kYm94IHJ1bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3
aGljaCB3aWxsIHRvZ2dsZSBhIHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYg
dGhlIFdlYkNvbnRlbnQgcHJvY2VzcwogICAgIC8vIGhhcyBmaW5pc2hlZCBsYXVuY2hpbmcuIFRo
aXMgY2FsbCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCBwcm9wZXIgQVBJIHdoZW4gYXZhaWxhYmxl
LgogICAgIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoImtleSIpLCBDRlNU
UigiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkxhdW5jaCIpLCBudWxscHRyKTsKICNlbmRp
ZgotCi0gICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlE
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Ci0KLSAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5q
ZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKIAogICAgIHJldHVybiBw
YWdlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456250</attachid>
            <date>2022-03-31 09:43:19 -0700</date>
            <delta_ts>2022-04-01 15:10:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>25596</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRVhQRVJJTUVOVEFMX0ZFQVRVUkVTIGZsYWcgdXNlIG9uIENvY29hIHBsYXRm
b3JtcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVu
c2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZs
YWdzLCBhdWRpdF90b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0
X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3Qg
Y2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5k
Ym94X2VuYWJsZV9zdGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3Qp
OworCiBXVEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmls
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1
NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5
bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzJyBzYW5kYm94LgorICAgICAgICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBz
d2l0Y2hlZCB3aGVuIHdlIGNyZWF0ZSBtYWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1Zh
bGlkV2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmVuYWJsZU1hY2hCb290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRo
RGlzcGxheVN0cmluZ0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wMy0zMSAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4g
cGVybWlzc2lvbnMgYXJlIHJlc2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5k
Ym94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNDAgKzE0NTAsMzQgQEAKICkK
IAogKGRlZmluZS1vbmNlIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgKG1l
c3NhZ2UtbnVtYmVyCi0gICAgICAgIDIwNgotICAgICAgICAyMDcKLSAgICAgICAgNzExCi0gICAg
ICAgIDcxMgotICAgICAgICA3MTgKLSAgICAgICAgODAwCi0gICAgICAgIDgwMgotICAgICAgICA4
MDMKLSAgICAgICAgODA0Ci0gICAgICAgIDgwNQotICAgICkKLSkKKyAgICAobWVzc2FnZS1udW1i
ZXIgMjA2IDIwNyA3MTEgNzEyIDcxOCA4MDAgODAyIDgwMyA4MDQgODA1KSkKIAotKGlmIChkZWZp
bmVkPyAnKnNicGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3Nh
Z2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxl
bWV0cnkpKQogICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAgICAgICAg
ICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAg
ICAgICAgKQotICAgICkKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKSkKKworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWly
ZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5l
bmFibGUtc3RhdGUtZmxhZ3MiKQorICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQogOzsgZWxzZQot
ICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIK
LSAgICAgICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAg
ICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAg
ICkKLSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQogCisod2l0aC1m
aWx0ZXIKKyAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFn
ICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFi
bGVNYWNoQm9vdHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVy
KSkKKyNlbHNlCisoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAoYXBwbHktbWVzc2FnZS1maWx0
ZXIKKyAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKKyAg
ICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAobWFjaC1ib290c3Ry
YXAtbWVzc2FnZS1udW1iZXJzKSkpKQorI2VuZGlmCisKIChkZWZpbmUgKHN5c2NhbGwtbWFjaC1v
bmx5LWluLXVzZS1kdXJpbmctbGF1bmNoKQogICAgIChtYWNodHJhcC1udW1iZXIKICAgICAgICAg
TVNDX21hY2hfZ2VuZXJhdGVfYWN0aXZpdHlfaWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29ya2luZyBjb3B5KQpA
QCAtMTk3LDYgKzE5NywxMiBAQAogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZpCiAKKyAgICAgICAg
aWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMzAwMDAgKSkKKyAg
ICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAgICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAg
c3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAgICAgICBpZiBbWyAi
JHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRFTlNJT05fRU5USVRM
RU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJvb2wgWUVTCkBAIC0z
NDQsNiArMzUwLDggQEAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUucGFj
LmV4Y2VwdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFk
ZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQor
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKICAgICBwbGlzdGJ1ZGR5IEFk
ZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90ZS1pbnNwZWN0aW9u
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3Bl
Y3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJv
eFN0YXRlVmFyaWFibGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjZGVmaW5lIEVOQUJMRV9NQUNIX0JPT1RTVFJBUCAiRW5h
YmxlTWFjaEJvb3RzdHJhcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDYgKzIwMiw3IEBACiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29ya0V4dGVuc2lv
blNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94
RXh0ZW5zaW9ucyhwcm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFwcm9jZXNz
Lmhhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0
b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKSB7CisgICAgICAgIHByb2Nlc3MuZW5hYmxlTWFj
aEJvb3RzdHJhcCgpOwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2Uu
Y29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCkpCiAg
ICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqaGFuZGxlKTsKIApAQCAtODQwLDYgKzg0MSw4IEBACiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CisgICAgbV9wcm9jZXNzLT5lbmFi
bGVNYWNoQm9vdHN0cmFwKCk7CisKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxl
QXNzZXRIYW5kbGVWMjsKICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBz
dGQ6Om51bGxvcHQpKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFu
ZGxlKTsKQEAgLTg1Myw2ICs4NTYsNyBAQAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiB7CisgICAgcHJvY2Vzcygp
LmVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShm
b250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKSksIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlz
aW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzMiw2ICszMzIsNyBAQAogCiAjaWYgUExB
VEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChXZWJQcm9j
ZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7CisgICAgICAgIHByb2Nl
c3MuZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2ViaW5z
cGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgcGFyYW1ldGVycy5lbmFibGVS
ZW1vdGVXZWJJbnNwZWN0b3JFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NjIsNiArNjIsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
ZWRpYUFGLmg+CiAjZW5kaWYKIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNs
dWRlICJTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFD
KQogI2luY2x1ZGUgIlRDQ1NvZnRMaW5rLmgiCiAjZW5kaWYKQEAgLTI0NSw5ICsyNDksMTAgQEAK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgcmV0
dXJuOwotCisgICAgCiAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxl
QXJyYXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBlbmFibGVNYWNoQm9vdHN0cmFw
KCk7CiAgICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJj
b20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkg
PyBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNT
RVJUKGhhbmRsZUFycmF5LnNpemUoKSA9PSAyKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAKICAgICAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGhhbmRsZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hh
c0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFn
ZSkpIHsKKyAgICAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuZW5hYmxlTWFjaEJvb3RzdHJhcCgp
OwogICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkKICAgICAgICAgICAgICAgICBo
YW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKICAgICAgICAgICAgIG1faGFzQ3JlYXRl
ZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9uIDI5
MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQAogICAgIGF1dG8mIHByb2Nlc3Mg
PSBwcm94eS5wYWdlKCkucHJvY2VzcygpOwogICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9IDA7
CiAKKyAgICBwcm9jZXNzLmVuYWJsZU1hY2hCb290c3RyYXAoKTsKKyAgICAKICAgICBib29sIG5l
ZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uID0gd2l0aEF1ZGlvICYmICFwcm9jZXNzLmhhc0F1ZGlv
Q2FwdHVyZUV4dGVuc2lvbigpICYmICFwcm94eS5wYWdlKCkucHJlZmVyZW5jZXMoKS5jYXB0dXJl
QXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSAmJiAhcHJveHkucGFnZSgpLnByZWZlcmVuY2VzKCku
Y2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIGlmIChuZWVkc0F1ZGlvU2Fu
ZGJveEV4dGVuc2lvbikKICAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjkyMTYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg4NCwxMCArMjg4NCwxMiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgZXZlbnRN
YXlTdGFydERyYWcgPSAhbV9jdXJyZW50RHJhZ09wZXJhdGlvbiAmJiBldmVudFR5cGUgPT0gV2Vi
RXZlbnQ6Ok1vdXNlTW92ZSAmJiBldmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpCdXR0
b246Ok5vQnV0dG9uOwotICAgIGlmIChldmVudE1heVN0YXJ0RHJhZykKKyAgICBpZiAoZXZlbnRN
YXlTdGFydERyYWcpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNoQm9vdHN0cmFwKCk7
CiAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBs
ZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0KTsKKyAgICB9CiAjZW5kaWYK
LSAgICAKKwogICAgIExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2
ZW50ICVzIChxdWV1ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5
cGUpLCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Ok1vdXNlRXZlbnQoZXZlbnQsIHNhbmRib3hFeHRlbnNpb25zKSk7CiB9CkBAIC03MjUwLDYg
KzcyNTIsNyBAQAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JG
aWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsKICNl
bmRpZgogCisgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGlj
b25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CiAjaWYgSEFWRShGUk9OVEJPQVJEX1NZU1RFTV9B
UFBfU0VSVklDRVMpCiAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2Vy
dmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDksNiAr
MTgwOSw3IEBACiAKIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXImIFdlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcigpCiB7CisgICAgZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwog
ICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyKSB7CiAgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlcj4oKmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqbV9zcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKTsKQEAgLTIxMDQsNiArMjEwNSwxNCBAQAogICAg
IFBBTDo6c3lzdGVtQmVlcCgpOwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFj
aEJvb3RzdHJhcCgpIGNvbnN0Cit7CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAg
IGF1dG8gdG9rZW4gPSBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKKyAgICBzYW5kYm94
X2VuYWJsZV9zdGF0ZV9mbGFnKEVOQUJMRV9NQUNIX0JPT1RTVFJBUCwgKnRva2VuKTsKKyNlbmRp
ZgorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAy
OTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMxLDYgKzQzMSw4IEBACiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9
CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CiAKKyAgICB2b2lkIGVuYWJsZU1hY2hCb290c3RyYXAo
KSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5N
b2RlLCBDYXB0aXZlUG9ydGFsTW9kZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjI2NCw2ICsyMjY0LDggQEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNv
bnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhp
YiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8q
IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZh
cmlhYmxlcy5oICovOyB9OworCQlFMzZGRjAwNDI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5j
ZXMuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
NkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsKIAkJRTM4MTZC
M0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0
NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJ
RTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0My
N0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9Owog
CQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKQEAgLTcwNzcsOSArNzA3OSwxMCBAQAogCQlFMzQz
OUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNEIxMTBGMjdDNDZEMDkwMDZE
MkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRo
ID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwotCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9
IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQw
MDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyog
U2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
ODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4MTZCM0MyN0UyNDYzOTAwNUVB
RkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdv
cmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBp
b3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNzg2Nyw3ICs3ODcwLDcgQEAKIAkJCQlCQzExMUI1QTExMkY2
MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1MzhFNiAvKiBO
b3RpZmljYXRpb25zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVM
YXllclRyZWUgKi8sCi0JCQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8s
CisJCQkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJCQkJMUNCNzQ2
NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAz
RkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8q
IFhSICovLApAQCAtMTM2ODgsNiArMTM2OTEsMTUgQEAKIAkJCW5hbWUgPSBQREY7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyog
U2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
RTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovLAorCQkJCUUzNkZG
MDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gU2FuZGJveDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJ
CUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTQ1OTUsNiArMTQ2MDcsNyBAQAogCQkJCUJDMkQwMjE3
MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94
SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZGRjAwMzI3
RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2Vp
dmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8q
IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTE1OTU3LDYgKzE1OTcwLDcgQEAK
IAkJCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4g
UmVzb3VyY2VzICovLAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Qu
c3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8q
IGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZCRDAwNEJF
MjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5NzIxOENC
QjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAy
OTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQ2LDYgKzQ0NiwxMSBAQAogCiBSZWY8V2ViUGFnZT4gV2ViUGFn
ZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMpCiB7CisgICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3
IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsK
KwogI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90
IG1lYW50IHRvIGFjdHVhbGx5IHJlYWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRv
IHRyaWdnZXIgYSBzYW5kYm94IHJ1bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNz
LCB3aGljaCB3aWxsIHRvZ2dsZSBhIHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUg
aWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcwpAQCAtNDUzLDExICs0NTgsNiBAQAogICAgIENGUHJl
ZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoImtleSIpLCBDRlNUUigiY29tLmFwcGxl
LldlYktpdC5XZWJDb250ZW50LkxhdW5jaCIpLCBudWxscHRyKTsKICNlbmRpZgogCi0gICAgUmVm
PFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBh
cmFtZXRlcnMpKSk7Ci0KLSAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRC
dW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUo
KS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKLQogICAgIHJldHVybiBwYWdlOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIw
NTIsNDQgQEAKICNlbmRpZgogCiAjaWYgSEFWRShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQor
KGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQorICAgIChtZXNzYWdlLW51
bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9v
dHN0cmFwLXdpdGgtZmlsdGVyKQorICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAorICAgICAgICAo
YXBwbHktbWVzc2FnZS1maWx0ZXIKKyAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5k
ICh3aXRoIHRlbGVtZXRyeSkpCisgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQK
KyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkKKwog
KGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikg
IllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQorI2lmIF9fTUFDX09TX1hfVkVSU0lP
Tl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQor
ICAgIChiZWdpbgorICAgICAgICAoaWYgKHJlcXVpcmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVu
dCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkuZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAg
ICAgICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQorICAgICAgICA7OyBlbHNlCisgICAgICAgICAg
ICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorCisgICAgICAgICh3aXRoLWZp
bHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55CisgICAgICAgICAgICAgICAgKHJlcXVpcmUt
bm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgICAg
ICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkKKyAgICAgICAgICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpKSkKKyNlbHNlCiAgICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotI2lmIF9fTUFDX09T
X1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCiAgICAgICAgICAgICAoZGVueSBtYWNo
LW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IG1hY2gt
bWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVz
c2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVy
cykpKSkpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogI2Vsc2UKKyAgICAo
YWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAg
ICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAg
ICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAg
IChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFw
LW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAyMDQKLSAgICAg
ICAgICAgICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAgICAgICA3MTEK
LSAgICAgICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVh
bD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5l
ZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9p
bnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456406</attachid>
            <date>2022-04-01 15:10:17 -0700</date>
            <delta_ts>2022-04-04 07:43:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>25942</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRVhQRVJJTUVOVEFMX0ZFQVRVUkVTIGZsYWcgdXNlIG9uIENvY29hIHBsYXRm
b3JtcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVu
c2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZs
YWdzLCBhdWRpdF90b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0
X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3Qg
Y2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5k
Ym94X2VuYWJsZV9zdGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3Qp
OworCiBXVEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmls
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1
NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5
bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzJyBzYW5kYm94LgorICAgICAgICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBz
d2l0Y2hlZCB3aGVuIHdlIGNyZWF0ZSBtYWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1Zh
bGlkV2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmVuYWJsZU1hY2hCb290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRo
RGlzcGxheVN0cmluZ0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wMy0zMSAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4g
cGVybWlzc2lvbnMgYXJlIHJlc2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5k
Ym94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNDAgKzE0NTAsMzQgQEAKICkK
IAogKGRlZmluZS1vbmNlIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgKG1l
c3NhZ2UtbnVtYmVyCi0gICAgICAgIDIwNgotICAgICAgICAyMDcKLSAgICAgICAgNzExCi0gICAg
ICAgIDcxMgotICAgICAgICA3MTgKLSAgICAgICAgODAwCi0gICAgICAgIDgwMgotICAgICAgICA4
MDMKLSAgICAgICAgODA0Ci0gICAgICAgIDgwNQotICAgICkKLSkKKyAgICAobWVzc2FnZS1udW1i
ZXIgMjA2IDIwNyA3MTEgNzEyIDcxOCA4MDAgODAyIDgwMyA4MDQgODA1KSkKIAotKGlmIChkZWZp
bmVkPyAnKnNicGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3Nh
Z2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxl
bWV0cnkpKQogICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAgICAgICAg
ICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAg
ICAgICAgKQotICAgICkKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKSkKKworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWly
ZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5l
bmFibGUtc3RhdGUtZmxhZ3MiKQorICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQogOzsgZWxzZQot
ICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIK
LSAgICAgICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAg
ICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAg
ICkKLSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQogCisod2l0aC1m
aWx0ZXIKKyAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFn
ICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFi
bGVNYWNoQm9vdHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVy
KSkKKyNlbHNlCisoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAoYXBwbHktbWVzc2FnZS1maWx0
ZXIKKyAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKKyAg
ICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAobWFjaC1ib290c3Ry
YXAtbWVzc2FnZS1udW1iZXJzKSkpKQorI2VuZGlmCisKIChkZWZpbmUgKHN5c2NhbGwtbWFjaC1v
bmx5LWluLXVzZS1kdXJpbmctbGF1bmNoKQogICAgIChtYWNodHJhcC1udW1iZXIKICAgICAgICAg
TVNDX21hY2hfZ2VuZXJhdGVfYWN0aXZpdHlfaWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJj
ZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29ya2luZyBjb3B5KQpA
QCAtMTk3LDYgKzE5NywxMiBAQAogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZpCiAKKyAgICAgICAg
aWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMzAwMDAgKSkKKyAg
ICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAgICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAg
c3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAgICAgICBpZiBbWyAi
JHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRFTlNJT05fRU5USVRM
RU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJvb2wgWUVTCkBAIC0z
NDQsNiArMzUwLDggQEAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUucGFj
LmV4Y2VwdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFk
ZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQor
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKICAgICBwbGlzdGJ1ZGR5IEFk
ZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90ZS1pbnNwZWN0aW9u
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3Bl
Y3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwpJbmRleDogU291
cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJv
eFN0YXRlVmFyaWFibGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjZGVmaW5lIEVOQUJMRV9NQUNIX0JPT1RTVFJBUCAiRW5h
YmxlTWFjaEJvb3RzdHJhcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDYgKzIwMiw3IEBACiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29ya0V4dGVuc2lv
blNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94
RXh0ZW5zaW9ucyhwcm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYgKCFwcm9jZXNz
Lmhhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0
b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKSB7CisgICAgICAgIHByb2Nlc3MuZW5hYmxlTWFj
aEJvb3RzdHJhcCgpOwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2Uu
Y29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCkpCiAg
ICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqaGFuZGxlKTsKIApAQCAtODQwLDYgKzg0MSw4IEBACiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CisgICAgbV9wcm9jZXNzLT5lbmFi
bGVNYWNoQm9vdHN0cmFwKCk7CisKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgbW9iaWxl
QXNzZXRIYW5kbGVWMjsKICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9zLCBz
dGQ6Om51bGxvcHQpKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFu
ZGxlKTsKQEAgLTg1Myw2ICs4NTYsNyBAQAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiB7CisgICAgcHJvY2Vzcygp
LmVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShm
b250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKSksIDApOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlz
aW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbXBvcnQgIldl
Ykluc3BlY3RvclByZWZlcmVuY2VPYnNlcnZlci5oIgogI2ltcG9ydCA8UXVhcnR6Q29yZS9DQVJl
bW90ZUxheWVyU2VydmVyLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9OU0FwcGxpY2F0aW9uU1BJ
Lmg+CisjaW1wb3J0IDxub3RpZnlfa2V5cy5oPgogI2Vsc2UKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAjZW5kaWYKQEAgLTMzMiw2ICszMzMsNyBAQAogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVO
QUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIGlmIChXZWJQcm9jZXNzUHJveHk6OnNob3VsZEVu
YWJsZVJlbW90ZUluc3BlY3RvcigpKSB7CisgICAgICAgIHByb2Nlc3MuZW5hYmxlTWFjaEJvb3Rz
dHJhcCgpOwogICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2ViaW5zcGVjdG9yIl9zLCBzdGQ6Om51
bGxvcHQpKQogICAgICAgICAgICAgcGFyYW1ldGVycy5lbmFibGVSZW1vdGVXZWJJbnNwZWN0b3JF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsMTAgQEAKICNp
bmNsdWRlIDxXZWJDb3JlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNNZWRpYUFGLmg+CiAjZW5kaWYK
IAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNsdWRlICJTYW5kYm94U3RhdGVW
YXJpYWJsZXMuaCIKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgIlRDQ1Nv
ZnRMaW5rLmgiCiAjZW5kaWYKQEAgLTI0NSw5ICsyNDksMTAgQEAKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkKICAgICAgICAgcmV0dXJuOwotCisgICAgCiAgICAg
VmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxlQXJyYXk7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyAgICBlbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgaGFuZGxlQXJy
YXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20u
YXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRib2Fy
ZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNp
emUoKSA9PSAyKTsKICNlbmRpZgpAQCAtMzI1LDQgKzMzMCwxMiBAQAogICAgIHJldHVybiB0cnVl
OwogfQogCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJhcCgpIGNvbnN0
Cit7CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIGF1dG8gdG9rZW4gPSBjb25u
ZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKKyAgICBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFn
KEVOQUJMRV9NQUNIX0JPT1RTVFJBUCwgKnRva2VuKTsKKyNlbmRpZgogfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsNyBAQAogICAgICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgICAg
ICBpZiAoIW1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEICYmIGRvZXNQYWdlTmVl
ZFRDQ0QobV9wYWdlKSkgeworICAgICAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5lbmFibGVNYWNo
Qm9vdHN0cmFwKCk7CiAgICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3Ms
IG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQogICAgICAg
ICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAg
bV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgPSB0cnVlOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAko
cmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4IEBACiAgICAgYXV0
byYgcHJvY2VzcyA9IHByb3h5LnBhZ2UoKS5wcm9jZXNzKCk7CiAgICAgc2l6ZV90IGV4dGVuc2lv
bkNvdW50ID0gMDsKIAorICAgIHByb2Nlc3MuZW5hYmxlTWFjaEJvb3RzdHJhcCgpOworICAgIAog
ICAgIGJvb2wgbmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24gPSB3aXRoQXVkaW8gJiYgIXByb2Nl
c3MuaGFzQXVkaW9DYXB0dXJlRXh0ZW5zaW9uKCkgJiYgIXByb3h5LnBhZ2UoKS5wcmVmZXJlbmNl
cygpLmNhcHR1cmVBdWRpb0luVUlQcm9jZXNzRW5hYmxlZCgpICYmICFwcm94eS5wYWdlKCkucHJl
ZmVyZW5jZXMoKS5jYXB0dXJlQXVkaW9JbkdQVVByb2Nlc3NFbmFibGVkKCk7CiAgICAgaWYgKG5l
ZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uKQogICAgICAgICBleHRlbnNpb25Db3VudCsrOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyOTIx
NjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODg0LDEwICsyODg0LDEyIEBACiAKICNpZiBQTEFURk9STShNQUMpCiAgICAg
Ym9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50
VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247Ci0gICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQorICAg
IGlmIChldmVudE1heVN0YXJ0RHJhZykgeworICAgICAgICBtX3Byb2Nlc3MtPmVuYWJsZU1hY2hC
b290c3RyYXAoKTsKICAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9z
LCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJfcyB9LCBzdGQ6Om51bGxvcHQpOworICAg
IH0KICNlbmRpZgotICAgIAorCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNl
bnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3Ry
aW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCwgc2FuZGJveEV4dGVuc2lvbnMpKTsKIH0K
QEAgLTcyNTAsNiArNzI1Miw3IEBACiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5k
U2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChXVEZNb3ZlKHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzKSkpOwogI2VuZGlmCiAKKyAgICBtX3Byb2Nlc3MtPmVuYWJsZU1hY2hCb290c3RyYXAoKTsK
ICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbjsKICNpZiBIQVZFKEZST05UQk9B
UkRfU1lTVEVNX0FQUF9TRVJWSUNFUykKICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjkyMTYwKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgwOSw2ICsxODA5LDcgQEAKIAogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1l
ZGlhU291cmNlTWFuYWdlciYgV2ViUHJvY2Vzc1Byb3h5OjplbnN1cmVTcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKCkKIHsKKyAgICBlbmFibGVNYWNoQm9v
dHN0cmFwKCk7CiAgICAgaWYgKCFtX3NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRp
YVNvdXJjZU1hbmFnZXIpIHsKICAgICAgICAgbV9zcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyID0gbWFrZVVuaXF1ZTxTcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyPigqY29ubmVjdGlvbigpKTsKICAgICAgICAgYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2VNYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksICptX3NwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOwpAQCAtMjEwNCw2ICsyMTA1
LDEyIEBACiAgICAgUEFMOjpzeXN0ZW1CZWVwKCk7CiB9CiAKKyNpZiAhUExBVEZPUk0oQ09DT0Ep
Cit2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJhcCgpIGNvbnN0Cit7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBNRVNTQUdFX0NIRUNL
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkocmV2aXNp
b24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzMSw2ICs0MzEsOCBAQAogICAgIFdlYkNvcmU6OkNyb3NzT3Jp
Z2luTW9kZSBjcm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9k
ZTsgfQogICAgIENhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXB0aXZlUG9ydGFsTW9kZTsgfQogCisgICAgdm9pZCBlbmFibGVNYWNoQm9vdHN0
cmFwKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQsIFdlYkNvcmU6OkNyb3NzT3Jp
Z2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTIyNjQsNiArMjI2NCw4IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBX
ZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vz
cy54aWIgKi87IH07CiAJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5q
ZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi87IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIx
QSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3Rh
dGVWYXJpYWJsZXMuaCAqLzsgfTsKKwkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZl
cmVuY2VzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUz
ODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0Iy
N0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07
CiAJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2
QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsg
fTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi87IH07CkBAIC03MDc3LDkgKzcwNzksMTAgQEAKIAkJ
RTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0g
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNo
aW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5
MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsg
cGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKLQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBh
dGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3Qjcw
OUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xp
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFB
IC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IHByZWZlcmVuY2VzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2Mzkw
MDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBO
ZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRo
ID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4NjcsNyArNzg3MCw3IEBACiAJCQkJQkMxMTFCNUEx
MTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYg
LyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVt
b3RlTGF5ZXJUcmVlICovLAotCQkJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovLAorCQkJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFD
Qjc0NjQ1Mjc0Mzc5RjEwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAz
NTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1
RSAvKiBYUiAqLywKQEAgLTEzNjg4LDYgKzEzNjkxLDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFB
IC8qIFNhbmRib3ggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlF
MzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IFNhbmRib3g7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0YwREIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE0NTk1LDYgKzE0NjA3LDcgQEAKIAkJCQlCQzJE
MDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5z
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYw
MDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VS
ZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0Mz
NiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk1Nyw2ICsxNTk3MCw3
IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVs
IGluIFJlc291cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1Bs
aXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMx
MiAvKiBpT1MueGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQw
MDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcy
MThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0Niw2ICs0NDYsMTEgQEAKIAogUmVmPFdlYlBhZ2U+IFdl
YlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogeworICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYo
Km5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworCisgICAgaWYgKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIo
KSk7CisKICNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAgICAgLy8gVGhpcyBjYWxsIGlz
IG5vdCBtZWFudCB0byBhY3R1YWxseSByZWFkIGEgcHJlZmVyZW5jZSwgYnV0IGlzIG9ubHkgaGVy
ZSB0byB0cmlnZ2VyIGEgc2FuZGJveCBydWxlIGluIHRoZQogICAgIC8vIFdlYkNvbnRlbnQgcHJv
Y2Vzcywgd2hpY2ggd2lsbCB0b2dnbGUgYSBzYW5kYm94IHZhcmlhYmxlIHVzZWQgdG8gZGV0ZXJt
aW5lIGlmIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKQEAgLTQ1MywxMSArNDU4LDYgQEAKICAgICBD
RlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJrZXkiKSwgQ0ZTVFIoImNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5MYXVuY2giKSwgbnVsbHB0cik7CiAjZW5kaWYKIAotICAg
IFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92
ZShwYXJhbWV0ZXJzKSkpOwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVj
dGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVu
ZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAgICByZXR1cm4gcGFnZTsKIH0K
IApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNi
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2Vi
UHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUyLDI3
ICsyMDUyLDQ0IEBACiAjZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRFUklO
RykKKyhkZWZpbmUgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKKyAgICAobWVzc2Fn
ZS1udW1iZXIgMjA0IDIwNyAzMDEgNzExIDgwMCA4MDQpKQorCisoZGVmaW5lIChhbGxvdy1tYWNo
LWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAg
ICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCisgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Ut
c2VuZCAod2l0aCB0ZWxlbWV0cnkpKQorICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1z
ZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkp
CisKIChpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRF
UiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyNpZiBfX01BQ19PU19YX1ZF
UlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFH
UykKKyAgICAoYmVnaW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRs
ZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisg
ICAgICAgICAgICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAgICAgOzsgZWxzZQorICAgICAg
ICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0
aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1
aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAg
ICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAg
ICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCisjZWxzZQogICAgIChhbGxv
dyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSNpZiBfX01B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAogICAgICAgICAgICAgKGRlbnkg
bWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyBt
YWNoLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyBtYWNo
LW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51
bWJlcnMpKSkpKQorI2VuZGlmIC8vIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICNlbHNlCisg
ICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgog
ICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAg
ICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAg
ICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3Rz
dHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQogI2VuZGlmCi0gICAgICAgICAgICAgICAgMjA0Ci0g
ICAgICAgICAgICAgICAgMjA3Ci0gICAgICAgICAgICAgICAgMzAxCi0gICAgICAgICAgICAgICAg
NzExCi0gICAgICAgICAgICAgICAgODAwCi0gICAgICAgICAgICAgICAgODA0Ci0gICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQogCiAoaWYgKGFuZCAo
ZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRl
ZmluZWQ/ICdtYWNoLWtlcm5lbC1lbmRwb2ludCkpCiAgICAgKGFsbG93IG1hY2gta2VybmVsLWVu
ZHBvaW50Cg==
</data>
<flag name="commit-queue"
          id="484812"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456570</attachid>
            <date>2022-04-04 07:43:14 -0700</date>
            <delta_ts>2022-04-04 07:49:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>25452</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRVhQRVJJTUVOVEFMX0ZFQVRVUkVTIGZsYWcgdXNlIG9uIENvY29hIHBsYXRm
b3JtcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVu
c2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZs
YWdzLCBhdWRpdF90b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0
X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3Qg
Y2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5k
Ym94X2VuYWJsZV9zdGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3Qp
OworCiBXVEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0MiBAQAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmls
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1
NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5
bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzJyBzYW5kYm94LgorICAgICAgICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBz
d2l0Y2hlZCB3aGVuIHdlIGNyZWF0ZSBtYWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1Zh
bGlkV2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmVuYWJsZU1hY2hCb290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRo
RGlzcGxheVN0cmluZ0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wMy0zMSAgQmVuIE5oYW0gIDxu
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcHVzaCBzdWJzY3JpcHRpb25zIHdoZW4g
cGVybWlzc2lvbnMgYXJlIHJlc2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5k
Ym94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNl
L1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0Lldl
YkNvbnRlbnQuc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNDAgKzE0NTAsMzAgQEAKICkK
IAogKGRlZmluZS1vbmNlIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgKG1l
c3NhZ2UtbnVtYmVyCi0gICAgICAgIDIwNgotICAgICAgICAyMDcKLSAgICAgICAgNzExCi0gICAg
ICAgIDcxMgotICAgICAgICA3MTgKLSAgICAgICAgODAwCi0gICAgICAgIDgwMgotICAgICAgICA4
MDMKLSAgICAgICAgODA0Ci0gICAgICAgIDgwNQotICAgICkKLSkKKyAgICAobWVzc2FnZS1udW1i
ZXIgMjA2IDIwNyA3MTEgNzEyIDcxOCA4MDAgODAyIDgwMyA4MDQgODA1KSkKIAotKGlmIChkZWZp
bmVkPyAnKnNicGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3Nh
Z2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxl
bWV0cnkpKQogICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAgICAgICAg
ICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAg
ICAgICAgKQotICAgICkKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKSkKKworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWly
ZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5l
bmFibGUtc3RhdGUtZmxhZ3MiKQorICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQogOzsgZWxzZQot
ICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIK
LSAgICAgICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAg
ICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAg
ICkKLSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQogCisod2l0aC1m
aWx0ZXIKKyAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFn
ICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFi
bGVNYWNoQm9vdHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVy
KSkKKyNlbHNlCisoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCisjZW5kaWYKKwog
KGRlZmluZSAoc3lzY2FsbC1tYWNoLW9ubHktaW4tdXNlLWR1cmluZy1sYXVuY2gpCiAgICAgKG1h
Y2h0cmFwLW51bWJlcgogICAgICAgICBNU0NfbWFjaF9nZW5lcmF0ZV9hY3Rpdml0eV9pZApJbmRl
eDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2
aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1l
bnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xOTcsNiArMTk3LDEyIEBACiAgICAgICAgICAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnNlY3VyaXR5LmNzLnNpbmdsZS1qaXQgYm9vbCBZRVMK
ICAgICAgICAgZmkKIAorICAgICAgICBpZiAoKCAiJHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUn0iID49IDEzMDAwMCApKQorICAgICAgICB0aGVuCisgICAgICAgICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJh
eQorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5
Lm11dGFibGUtc3RhdGUtZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgICAg
ICBmaQorCiAgICAgICAgIGlmIFtbICIke1dLX1dFQkNPTlRFTlRfU0VSVklDRV9ORUVEU19YUENf
RE9NQUlOX0VYVEVOU0lPTl9FTlRJVExFTUVOVH0iID09IFlFUyBdXQogICAgICAgICB0aGVuCiAg
ICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUueHBjLmRvbWFpbi1l
eHRlbnNpb24gYm9vbCBZRVMKQEAgLTM0NCw2ICszNTAsOCBAQAogICAgIHBsaXN0YnVkZHkgQWRk
IDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhjZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRk
eSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZlcmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29s
IFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRh
YmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2
YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3Rz
dHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3Iu
YWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAg
ICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBv
aW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hT
dGF0ZVZhcmlhYmxlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRi
b3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNkZWZpbmUgRU5B
QkxFX01BQ0hfQk9PVFNUUkFQICJFbmFibGVNYWNoQm9vdHN0cmFwIgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlz
aW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDcgQEAKICAgICBsb2FkUGFy
YW1ldGVycy5uZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBjcmVhdGVO
ZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBMQVRGT1JN
KElPUykKICAgICBpZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkg
JiYgW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKKyAg
ICAgICAgcHJvY2Vzcy5lbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5h
cHBsZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVV
SSJfcywgc3RkOjpudWxsb3B0KSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRG
aWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCkBAIC04NDAsNiArODQx
LDggQEAKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKCkK
IHsKKyAgICBtX3Byb2Nlc3MtPmVuYWJsZU1hY2hCb290c3RyYXAoKTsKKwogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwogICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAgIG1vYmlsZUFzc2V0
SGFuZGxlVjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwpAQCAtODUzLDYgKzg1Niw3IEBACiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lz
dHJ5KCkKIHsKKyAgICBwcm9jZXNzKCkuZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lz
dHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpKSwgMCk7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMy
LDYgKzMzMiw3IEBACiAKICNpZiBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxFKFJFTU9URV9JTlNQ
RUNUT1IpCiAgICAgaWYgKFdlYlByb2Nlc3NQcm94eTo6c2hvdWxkRW5hYmxlUmVtb3RlSW5zcGVj
dG9yKCkpIHsKKyAgICAgICAgcHJvY2Vzcy5lbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCkpCiAgICAgICAg
ICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9
IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHJldmlzaW9uIDI5MjE2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29h
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2MiwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
Q2FwdGlvblVzZXJQcmVmZXJlbmNlc01lZGlhQUYuaD4KICNlbmRpZgogCisjaWYgSEFWRShTQU5E
Qk9YX1NUQVRFX0ZMQUdTKQorI2luY2x1ZGUgIlNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIgorI2Vu
ZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiVENDU29mdExpbmsuaCIKICNlbmRp
ZgpAQCAtMjQ4LDYgKzI1Miw3IEBACiAKICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiBoYW5kbGVBcnJheTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIGVuYWJsZU1h
Y2hCb290c3RyYXAoKTsKICAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lzdGVt
d2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0sIGNv
bm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0
KTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlmCkBAIC0zMjUs
NCArMzMwLDEyIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjplbmFibGVNYWNoQm9vdHN0cmFwKCkgY29uc3QKK3sKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVf
RkxBR1MpCisgICAgYXV0byB0b2tlbiA9IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOwor
ICAgIHNhbmRib3hfZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQLCAqdG9r
ZW4pOworI2VuZGlmCiB9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjkxLDYgKzI5MSw3IEBACiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4
dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7CisgICAgICAgICAg
ICBtX3BhZ2UucHJvY2VzcygpLmVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICAgICAgICAgIGlm
IChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9u
KCktPmdldEF1ZGl0VG9rZW4oKSkpCiAgICAgICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgq
Y3JlYXRlZEhhbmRsZSk7CiAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9u
Rm9yVENDRCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
cm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDYgKzc2LDggQEAKICAgICBhdXRvJiBwcm9jZXNzID0gcHJveHkucGFnZSgpLnBy
b2Nlc3MoKTsKICAgICBzaXplX3QgZXh0ZW5zaW9uQ291bnQgPSAwOwogCisgICAgcHJvY2Vzcy5l
bmFibGVNYWNoQm9vdHN0cmFwKCk7CisgICAgCiAgICAgYm9vbCBuZWVkc0F1ZGlvU2FuZGJveEV4
dGVuc2lvbiA9IHdpdGhBdWRpbyAmJiAhcHJvY2Vzcy5oYXNBdWRpb0NhcHR1cmVFeHRlbnNpb24o
KSAmJiAhcHJveHkucGFnZSgpLnByZWZlcmVuY2VzKCkuY2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3NF
bmFibGVkKCkgJiYgIXByb3h5LnBhZ2UoKS5wcmVmZXJlbmNlcygpLmNhcHR1cmVBdWRpb0luR1BV
UHJvY2Vzc0VuYWJsZWQoKTsKICAgICBpZiAobmVlZHNBdWRpb1NhbmRib3hFeHRlbnNpb24pCiAg
ICAgICAgIGV4dGVuc2lvbkNvdW50Kys7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODQsMTAgKzI4ODQsMTIg
QEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGV2ZW50TWF5U3RhcnREcmFnID0gIW1f
Y3VycmVudERyYWdPcGVyYXRpb24gJiYgZXZlbnRUeXBlID09IFdlYkV2ZW50OjpNb3VzZU1vdmUg
JiYgZXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6QnV0dG9uOjpOb0J1dHRvbjsKLSAg
ICBpZiAoZXZlbnRNYXlTdGFydERyYWcpCisgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKSB7Cisg
ICAgICAgIG1fcHJvY2Vzcy0+ZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgICAgICBzYW5kYm94
RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0
b3JlIl9zIH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgfQogI2VuZGlmCi0gICAgCisKICAgICBMT0co
TW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6
ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50
UXVldWUuc2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2
ZW50LCBzYW5kYm94RXh0ZW5zaW9ucykpOwogfQpAQCAtNzI1MCw2ICs3MjUyLDcgQEAKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVs
KFdURk1vdmUoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKSk7CiAjZW5kaWYKIAorICAgIG1fcHJv
Y2Vzcy0+ZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94
RXh0ZW5zaW9uOwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQogICAg
IGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51
bGxvcHQpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODA5LDYgKzE4MDksNyBAQAogCiBTcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyJiBXZWJQcm9jZXNz
UHJveHk6OmVuc3VyZVNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1h
bmFnZXIoKQogeworICAgIGVuYWJsZU1hY2hCb290c3RyYXAoKTsKICAgICBpZiAoIW1fc3BlZWNo
UmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcikgewogICAgICAgICBt
X3NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIgPSBtYWtl
VW5pcXVlPFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI+
KCpjb25uZWN0aW9uKCkpOwogICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgKm1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlcik7CkBAIC0yMTA0LDYgKzIxMDUsMTIgQEAKICAgICBQQUw6OnN5c3RlbUJlZXAo
KTsKIH0KIAorI2lmICFQTEFURk9STShDT0NPQSkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmFi
bGVNYWNoQm9vdHN0cmFwKCkgY29uc3QKK3sKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAogI3VuZGVmIE1FU1NBR0VfQ0hFQ0sKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMxLDYgKzQz
MSw4IEBACiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUg
Y2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9
CiAKKyAgICB2b2lkIGVuYWJsZU1hY2hCb290c3RyYXAoKSBjb25zdDsKKwogcHJvdGVjdGVkOgog
ICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJ
c1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlLCBDYXB0aXZlUG9ydGFsTW9kZSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI2NCw2ICsyMjY0LDggQEAKIAkJ
RTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0
RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFF
MDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUw
MDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUx
RUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RD
MTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsg
fTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEy
N0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZG
RjAwNDI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAv
KiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsKIAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMw
IC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsg
fTsKQEAgLTcwNzcsOSArNzA3OSwxMCBAQAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJD
NjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2
RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEg
LyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAv
KiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5l
dHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg2
Nyw3ICs3ODcwLDcgQEAKIAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAog
CQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJE
MkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJG
RjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAw
NEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJCQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdl
YkdQVSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8s
CiAJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLApAQCAtMTM2ODgsNiArMTM2
OTEsMTUgQEAKIAkJCW5hbWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFB
IC8qIHByZWZlcmVuY2VzLnNiICovLAorCQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBT
YW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBE
QiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTQ1OTUsNiArMTQ2MDcsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2
RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJv
eFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIzMDA4
RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE1OTU3LDYgKzE1OTcwLDcgQEAKIAkJCQk2QkU5NjlDMTFFNTRENDUyMDA4
Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCThEQzJF
RjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGlu
IFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dz
aW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ2LDYg
KzQ0NiwxMSBAQAogCiBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAg
UmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3Zl
KHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0
ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5k
bGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwogI2lmIEhBVkUoU0FOREJPWF9TVEFU
RV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1lYW50IHRvIGFjdHVhbGx5IHJlYWQg
YSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRyaWdnZXIgYSBzYW5kYm94IHJ1bGUg
aW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCB3aWxsIHRvZ2dsZSBhIHNh
bmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cwpAQCAtNDUzLDExICs0NTgsNiBAQAogICAgIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFs
dWUoQ0ZTVFIoImtleSIpLCBDRlNUUigiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkxhdW5j
aCIpLCBudWxscHRyKTsKICNlbmRpZgogCi0gICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJl
ZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Ci0KLSAgICBpZiAo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0
cigpKTsKLQogICAgIHJldHVybiBwYWdlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAyOTIx
NjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2Iu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIsNDAgQEAKICNlbmRpZgogCiAjaWYg
SEFWRShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlmIChhbmQgKGVxdWFsPyAocGFyYW0g
IkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1i
b290c3RyYXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQorICAg
IChtZXNzYWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisKKyhkZWZpbmUgKGFs
bG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJh
cAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKKyAgICAgICAgICAgIChkZW55IG1hY2gt
bWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCisgICAgICAgICAgICAoYWxsb3cgbWFjaC1t
ZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1i
ZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01FU1NB
R0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQogI2lmIF9fTUFD
X09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCi0gICAgICAgICAgICAoZGVueSBt
YWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IG1h
Y2gtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9G
TEFHUykKKyAgICAoYmVnaW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50
aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIp
CisgICAgICAgICAgICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAgICAgOzsgZWxzZQorICAg
ICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAo
d2l0aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChy
ZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAg
ICAgICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAg
ICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCiAjZWxzZQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9Y
X1NUQVRFX0ZMQUdTKQorI2Vsc2UKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAg
KGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5k
ICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAo
bWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAg
ICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYK
LSAgICAgICAgICAgICAgICAyMDQKLSAgICAgICAgICAgICAgICAyMDcKLSAgICAgICAgICAgICAg
ICAzMDEKLSAgICAgICAgICAgICAgICA3MTEKLSAgICAgICAgICAgICAgICA4MDAKLSAgICAgICAg
ICAgICAgICA4MDQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgICkK
LSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNT
QUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkKICAg
ICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9pbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456571</attachid>
            <date>2022-04-04 07:49:25 -0700</date>
            <delta_ts>2022-04-21 09:32:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>25814</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTMxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDMtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAg
ICAgICBSZW1vdmUgRVhQRVJJTUVOVEFMX0ZFQVRVUkVTIGZsYWcgdXNlIG9uIENvY29hIHBsYXRm
b3JtcwpJbmRleDogU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1
ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVu
c2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZs
YWdzLCBhdWRpdF90b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0
X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3Qg
Y2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5k
Ym94X2VuYWJsZV9zdGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3Qp
OworCiBXVEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSw0NiBAQAorMjAyMi0wMy0zMSAgUGVyIEFybmUgVm9sbGFuICA8cHZv
bGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmls
dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1
NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5
bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzJyBzYW5kYm94LgorICAgICAgICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBz
d2l0Y2hlZCB3aGVuIHdlIGNyZWF0ZSBtYWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdl
YkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFm
dGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkIHRvIHNldCB0aGUgc2FuZGJveCB2YXJp
YWJsZSB3aGljaCBpbmRpY2F0ZXMKKyAgICAgICAgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNz
IGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0aGlzIGxhc3QgY2hhbmdlLCB0aGUgYm9vdHN0cmFwIGZp
bHRlciB3b3VsZCBoYXZlIG5lZWRlZAorICAgICAgICBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0
aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0aW5nIHRoZSBXZWJQYWdlIHdpbGwgY29uc3VtZSBhbmQg
cmV2b2tlIHNvbWUgbWFjaAorICAgICAgICBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
OgorICAgICAgICAqIFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICog
U2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZv
bnRSZWdpc3RyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxp
emVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vz
c2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBy
b2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1
ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VG
aWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFu
YWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIy
LTAzLTMxICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBwdXNo
IHN1YnNjcmlwdGlvbnMgd2hlbiBwZXJtaXNzaW9ucyBhcmUgcmVzZXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRi
b3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCShyZXZpc2lv
biAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9z
L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ1
MCw0MCArMTQ1MCwzMCBAQAogKQogCiAoZGVmaW5lLW9uY2UgKG1hY2gtYm9vdHN0cmFwLW1lc3Nh
Z2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIKLSAgICAgICAgMjA2Ci0gICAgICAgIDIw
NwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAgICAgIDcxOAotICAgICAgICA4MDAKLSAg
ICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4MDQKLSAgICAgICAgODA1Ci0gICAgKQot
KQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcxMSA3MTIgNzE4IDgwMCA4MDIgODAzIDgw
NCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93
LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAog
ICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55IG1hY2gtbWVz
c2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNz
YWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJz
KQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQorICAgICAgICAgICAgICAgIChtYWNo
LWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisjaWYgSEFWRShTQU5EQk9YX1NUQVRF
X0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5hcHBs
ZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgKGRlbnkgbWFjaC1i
b290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCi0gICAgICAgIChh
cHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAo
d2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdlLXNlbmQKLSAg
ICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAg
ICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikpCiAKKyh3aXRoLWZpbHRlcgorICAgIChyZXF1aXJlLWFueQorICAgICAgICAocmVx
dWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQcm9jZXNzTGF1bmNoZWQiKSkKKyAgICAg
ICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkKKyAgICAoYWxsb3ctbWFjaC1i
b290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRo
LWZpbHRlcikKKyNlbmRpZgorCiAoZGVmaW5lIChzeXNjYWxsLW1hY2gtb25seS1pbi11c2UtZHVy
aW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVyCiAgICAgICAgIE1TQ19tYWNoX2dlbmVy
YXRlX2FjdGl2aXR5X2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3Mt
ZW50aXRsZW1lbnRzLnNoCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcs
MTIgQEAKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Mu
c2luZ2xlLWppdCBib29sIFlFUwogICAgICAgICBmaQogCisgICAgICAgIGlmICgoICIke1RBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIgPj0gMTMwMDAwICkpCisgICAgICAgIHRoZW4KKyAg
ICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRh
YmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFw
cGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVN
YWNoQm9vdHN0cmFwCisgICAgICAgIGZpCisKICAgICAgICAgaWYgW1sgIiR7V0tfV0VCQ09OVEVO
VF9TRVJWSUNFX05FRURTX1hQQ19ET01BSU5fRVhURU5TSU9OX0VOVElUTEVNRU5UfSIgPT0gWUVT
IF1dCiAgICAgICAgIHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUu
cHJpdmF0ZS54cGMuZG9tYWluLWV4dGVuc2lvbiBib29sIFlFUwpAQCAtMzQ0LDYgKzM1MCw4IEBA
CiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnBhYy5leGNlcHRpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudmVyaWZpZWQtaml0
IGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5
Lm1lc3NhZ2UtZmlsdGVyIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0
cmluZyBFbmFibGVNYWNoQm9vdHN0cmFwCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5w
cml2YXRlLndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBib29sIFlFUwogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IucHJveHktYXBw
bGljYXRpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUu
d2Via2l0LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVuYWJsZU1hY2hCb290c3Ry
YXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsy
MDIsNyBAQAogICAgIGxvYWRQYXJhbWV0ZXJzLm5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5z
aW9uSGFuZGxlcyA9IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMocHJv
Y2Vzcyk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmICghcHJvY2Vzcy5oYXNNYW5hZ2VkU2Vz
c2lvblNhbmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmlsdGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01h
bmFnZWRTZXNzaW9uXSkgeworICAgICAgICBwcm9jZXNzLmVuYWJsZU1hY2hCb290c3RyYXAoKTsK
ICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJD
b250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQpKQogICAgICAgICAgICAgbG9h
ZFBhcmFtZXRlcnMuY29udGVudEZpbHRlckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAKQEAgLTg0MCw2ICs4NDEsOCBAQAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nl
c3NUb0Fzc2V0U2VydmljZXMoKQogeworICAgIG1fcHJvY2Vzcy0+ZW5hYmxlTWFjaEJvb3RzdHJh
cCgpOworCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlVjI7
CiAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgc3RkOjpudWxsb3B0KSkK
ICAgICAgICAgbW9iaWxlQXNzZXRIYW5kbGVWMiA9IFdURk1vdmUoKmhhbmRsZSk7CkBAIC04NTMs
NiArODU2LDcgQEAKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVn
aXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKQogeworICAgIHByb2Nlc3MoKS5lbmFibGVNYWNoQm9v
dHN0cmFwKCk7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3aXRj
aEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0ZW5z
aW9uSGFuZGxlKCkpLCAwKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyOTIxNjApCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoV2ViUHJvY2Vzc1Byb3h5OjpzaG91
bGRFbmFibGVSZW1vdGVJbnNwZWN0b3IoKSkgeworICAgICAgICBwcm9jZXNzLmVuYWJsZU1hY2hC
b290c3RyYXAoKTsKICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLndlYmluc3BlY3RvciJfcywgc3Rk
OjpudWxsb3B0KSkKICAgICAgICAgICAgIHBhcmFtZXRlcnMuZW5hYmxlUmVtb3RlV2ViSW5zcGVj
dG9yRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEwIEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWVkaWFBRi5oPgogI2Vu
ZGlmCiAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisjaW5jbHVkZSAiU2FuZGJveFN0
YXRlVmFyaWFibGVzLmgiCisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJU
Q0NTb2Z0TGluay5oIgogI2VuZGlmCkBAIC0yNDgsNiArMjUyLDcgQEAKIAogICAgIFZlY3RvcjxT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgZW5hYmxlTWFjaEJvb3RzdHJhcCgpOwogICAgIGhhbmRsZUFycmF5ID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlw
aG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVt
YXBwc2VydmljZXMiX3MgfSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRv
a2VuKCkgOiBzdGQ6Om51bGxvcHQpOwogICAgIEFTU0VSVChoYW5kbGVBcnJheS5zaXplKCkgPT0g
Mik7CiAjZW5kaWYKQEAgLTMyNSw0ICszMzAsMTIgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuYWJsZU1hY2hCb290c3RyYXAoKSBjb25zdAoreworI2lm
IEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICBhdXRvIHRva2VuID0gY29ubmVjdGlvbigp
LT5nZXRBdWRpdFRva2VuKCk7CisgICAgc2FuZGJveF9lbmFibGVfc3RhdGVfZmxhZyhFTkFCTEVf
TUFDSF9CT09UU1RSQVAsICp0b2tlbik7CisjZW5kaWYKIH0KKworfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNpb24gMjkyMTYwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFt
X2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1f
cGFnZSkpIHsKKyAgICAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuZW5hYmxlTWFjaEJvb3RzdHJh
cCgpOwogICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2Uu
cHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkKICAgICAgICAgICAgICAg
ICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKICAgICAgICAgICAgIG1faGFzQ3Jl
YXRlZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHJldmlzaW9u
IDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsOCBAQAogICAgIGF1dG8mIHByb2Nl
c3MgPSBwcm94eS5wYWdlKCkucHJvY2VzcygpOwogICAgIHNpemVfdCBleHRlbnNpb25Db3VudCA9
IDA7CiAKKyAgICBwcm9jZXNzLmVuYWJsZU1hY2hCb290c3RyYXAoKTsKKyAgICAKICAgICBib29s
IG5lZWRzQXVkaW9TYW5kYm94RXh0ZW5zaW9uID0gd2l0aEF1ZGlvICYmICFwcm9jZXNzLmhhc0F1
ZGlvQ2FwdHVyZUV4dGVuc2lvbigpICYmICFwcm94eS5wYWdlKCkucHJlZmVyZW5jZXMoKS5jYXB0
dXJlQXVkaW9JblVJUHJvY2Vzc0VuYWJsZWQoKSAmJiAhcHJveHkucGFnZSgpLnByZWZlcmVuY2Vz
KCkuY2FwdHVyZUF1ZGlvSW5HUFVQcm9jZXNzRW5hYmxlZCgpOwogICAgIGlmIChuZWVkc0F1ZGlv
U2FuZGJveEV4dGVuc2lvbikKICAgICAgICAgZXh0ZW5zaW9uQ291bnQrKzsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjkyMTYwKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjg4NCwxMCArMjg4NCwxMiBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgZXZl
bnRNYXlTdGFydERyYWcgPSAhbV9jdXJyZW50RHJhZ09wZXJhdGlvbiAmJiBldmVudFR5cGUgPT0g
V2ViRXZlbnQ6Ok1vdXNlTW92ZSAmJiBldmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpC
dXR0b246Ok5vQnV0dG9uOwotICAgIGlmIChldmVudE1heVN0YXJ0RHJhZykKKyAgICBpZiAoZXZl
bnRNYXlTdGFydERyYWcpIHsKKyAgICAgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNoQm9vdHN0cmFw
KCk7CiAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5h
cHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0KTsKKyAgICB9CiAjZW5k
aWYKLSAgICAKKwogICAgIExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNl
IGV2ZW50ICVzIChxdWV1ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVu
dFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQsIHNhbmRib3hFeHRlbnNpb25zKSk7CiB9CkBAIC03MjUw
LDYgKzcyNTIsNyBAQAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hG
b3JGaWxlc0Zyb21PcGVuUGFuZWwoV1RGTW92ZShzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpKTsK
ICNlbmRpZgogCisgICAgbV9wcm9jZXNzLT5lbmFibGVNYWNoQm9vdHN0cmFwKCk7CiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24s
IGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CiAjaWYgSEFWRShGUk9OVEJPQVJEX1NZU1RF
TV9BUFBfU0VSVklDRVMpCiAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBw
c2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDks
NiArMTgwOSw3IEBACiAKIFNwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJj
ZU1hbmFnZXImIFdlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcigpCiB7CisgICAgZW5hYmxlTWFjaEJvb3RzdHJhcCgp
OwogICAgIGlmICghbV9zcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyKSB7CiAgICAgICAgIG1fc3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlciA9IG1ha2VVbmlxdWU8U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGlt
ZU1lZGlhU291cmNlTWFuYWdlcj4oKmNvbm5lY3Rpb24oKSk7CiAgICAgICAgIGFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCAqbV9zcGVlY2hSZWNvZ25pdGlvblJl
bW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyKTsKQEAgLTIxMDQsNiArMjEwNSwxMiBAQAog
ICAgIFBBTDo6c3lzdGVtQmVlcCgpOwogfQogCisjaWYgIVBMQVRGT1JNKENPQ09BKQordm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmVuYWJsZU1hY2hCb290c3RyYXAoKSBjb25zdAoreworfQorI2VuZGlm
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjdW5kZWYgTUVTU0FHRV9DSEVDSwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI5MjE2
MCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MzEsNiArNDMxLDggQEAKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUg
Y3Jvc3NPcmlnaW5Nb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KICAg
ICBDYXB0aXZlUG9ydGFsTW9kZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FwdGl2ZVBvcnRhbE1vZGU7IH0KIAorICAgIHZvaWQgZW5hYmxlTWFjaEJvb3RzdHJhcCgpIGNv
bnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwg
V2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUs
IENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTIxNjApCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjY0LDYgKzIyNjQsOCBAQAogCQlFMUQyNkE1MzE3NTk2NEQ5MDA5NUJGRDEgLyogV2ViQ29udGVu
dFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGliICov
OyB9OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9u
UGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFt
ZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFn
ZUVkaXRvckNsaWVudC5oICovOyB9OworCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2Fu
ZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFi
bGVzLmggKi87IH07CisJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5z
YiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYw
MDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovOyB9OwogCQlFMzgxNkIzRDI3
RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNCMjdFMjQ2Mzkw
MDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OwogCQlFMzgx
NkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQzI3RTI0
NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CiAJCUUz
ODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3Zp
ZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tICovOyB9OwpAQCAtNzA3Nyw5ICs3MDc5LDEwIEBACiAJCUUzNDM5QjYz
MjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5bGli
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGls
ZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM0QjExMEYyN0M0NkQwOTAwNkQyRjJF
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBs
aWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07Ci0JCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0gU2Fu
ZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkF0
dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUz
NkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Fu
ZGJveFN0YXRlVmFyaWFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkZG
MDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBwcmVmZXJlbmNlcy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4MTZC
M0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAg
LyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBwYXRoID0gTmV0d29yay9X
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRl
UHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgcGF0aCA9IGlvcy9X
ZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03ODY3LDcgKzc4NzAsNyBAQAogCQkJCUJDMTExQjVBMTEyRjYyODIw
MDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJNTFBRjFCM0QyNzFGNDZBNjAwMTUzOEU2IC8qIE5vdGlm
aWNhdGlvbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90ZUxheWVy
VHJlZSAqLywKLQkJCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLywKKwkJ
CQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLywKIAkJCQkxQ0I3NDY0NTI3
NDM3OUYxMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNGQjBF
NiAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyogWFIg
Ki8sCkBAIC0xMzY4OCw2ICsxMzY5MSwxNSBAQAogCQkJbmFtZSA9IFBERjsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5k
Ym94ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlFMzZG
RjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8sCisJCQkJRTM2RkYwMDEy
N0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBTYW5kYm94OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJRTQw
NDkwNkYyMURFNjVENzAwMzdGMERCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0xNDU5NSw2ICsxNDYwNyw3IEBACiAJCQkJQkMyRDAyMTcxMkFD
NDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkZGMDAzMjdGMzZG
QkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1
ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1NEQwNDIxRjFENzJEMDA3RTNDMzYgLyogU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTU5NTcsNiArMTU5NzAsNyBAQAogCQkJ
CTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2RlbCBpbiBSZXNv
dXJjZXMgKi8sCiAJCQkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2IC8qIEluZm9QbGlzdC5zdHJp
bmdzIGluIFJlc291cmNlcyAqLywKIAkJCQkzRkIwOEU0MzFGNjBCMjQwMDA1RTUzMTIgLyogaU9T
LnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKKwkJCQlFMzZGRjAwNDI3RjM2RkJEMDA0QkUyMUEg
LyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCTVDOEJDNzk3MjE4Q0JCNDgw
MDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI5MjE2
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NDYsNiArNDQ2LDExIEBACiAKIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpj
cmVhdGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKIHsKKyAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2Vi
UGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKworICAgIGlmIChXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOworCiAj
aWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogICAgIC8vIFRoaXMgY2FsbCBpcyBub3QgbWVh
bnQgdG8gYWN0dWFsbHkgcmVhZCBhIHByZWZlcmVuY2UsIGJ1dCBpcyBvbmx5IGhlcmUgdG8gdHJp
Z2dlciBhIHNhbmRib3ggcnVsZSBpbiB0aGUKICAgICAvLyBXZWJDb250ZW50IHByb2Nlc3MsIHdo
aWNoIHdpbGwgdG9nZ2xlIGEgc2FuZGJveCB2YXJpYWJsZSB1c2VkIHRvIGRldGVybWluZSBpZiB0
aGUgV2ViQ29udGVudCBwcm9jZXNzCkBAIC00NTMsMTEgKzQ1OCw2IEBACiAgICAgQ0ZQcmVmZXJl
bmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigia2V5IiksIENGU1RSKCJjb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuTGF1bmNoIiksIG51bGxwdHIpOwogI2VuZGlmCiAKLSAgICBSZWY8V2Vi
UGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1l
dGVycykpKTsKLQotICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRs
ZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5k
aWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOwotCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4JKHJldmlzaW9uIDI5MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20u
YXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA1MiwyNyArMjA1Miw0
MCBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNBTkRCT1hfTUVTU0FHRV9GSUxURVJJTkcpCi0oaWYg
KGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVT
IikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisoZGVmaW5lIChtYWNoLWJvb3RzdHJhcC1t
ZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNCAyMDcgMzAxIDcxMSA4MDAg
ODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCiAgICAg
KGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgorICAg
ICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKKyAgICAg
ICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJv
b3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisoaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAi
RU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWJv
b3RzdHJhcCkpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAK
LSAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0g
ICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisjaWYg
SEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJlcXVp
cmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHku
ZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQor
ICAgICAgICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1m
aWx0ZXIpKQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55
CisgICAgICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJv
Y2Vzc0xhdW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hC
b290c3RyYXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRl
cikpKSkKICNlbHNlCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNl
bmRpZiAvLyBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisjZWxzZQorICAgIChhbGxvdyBtYWNo
LWJvb3RzdHJhcAorICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChk
ZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxv
dyB4cGMtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IHhw
Yy1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKSkKICNlbmRpZgotICAgICAgICAgICAgICAgIDIwNAotICAgICAgICAgICAgICAg
IDIwNwotICAgICAgICAgICAgICAgIDMwMQotICAgICAgICAgICAgICAgIDcxMQotICAgICAgICAg
ICAgICAgIDgwMAotICAgICAgICAgICAgICAgIDgwNAotICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICkKLSAgICAgICAgKQotICAgICkKLSkKIAogKGlmIChhbmQgKGVxdWFsPyAocGFyYW0g
IkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1r
ZXJuZWwtZW5kcG9pbnQpKQogICAgIChhbGxvdyBtYWNoLWtlcm5lbC1lbmRwb2ludAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458070</attachid>
            <date>2022-04-21 09:32:56 -0700</date>
            <delta_ts>2022-04-21 09:40:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220421093255.patch</filename>
            <type>text/plain</type>
            <size>28405</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTIwICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NiBAQAor
MjAyMi0wNC0yMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCB3aGVuIHdlIGNyZWF0ZSBt
YWNoIHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKyAgICAg
ICAgVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRpY2F0ZXMKKyAg
ICAgICAgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLCB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZlIG5lZWRlZAor
ICAgICAgICBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFjaAorICAgICAg
ICBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAg
KGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFs
bG93IHhwYy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChy
ZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQ
cm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNj
YWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24g
bWFjX3Byb2Nlc3Nfd2ViY29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zMTgsNiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhj
ZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZl
cmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUt
ZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OSw2ICsxMDksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNvbnN1bWVQZXJtYW5lbnRs
eShjb25zdCBIYW5kbGUmKTsKICAgICBzdGF0aWMgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoY29u
c3QgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mKTsKIAorI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIHN0YXRpYyB2b2lkIGFsbG93RW5hYmxlTWFjaEJvb3RzdHJhcCgpIHsgc19hbGxv
d0VuYWJsZU1hY2hCb290c3RyYXAgPSB0cnVlOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBTYW5kYm94RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYpOwogICAgICAgICAgICAgICAg
ICAgICAgCkBAIC0xMTYsNiArMTIwLDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5p
cXVlX3B0cjxTYW5kYm94RXh0ZW5zaW9uSW1wbD4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIHNp
emVfdCBtX3VzZUNvdW50IHsgMCB9OwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
c3RhdGljIGJvb2wgc19hbGxvd0VuYWJsZU1hY2hCb290c3RyYXA7CisjZW5kaWYKIH07CiAKIFN0
cmluZyBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEw
IEBACiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0IDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisjaW5jbHVk
ZSAiU2FuZGJveFN0YXRlVmFyaWFibGVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKQEAgLTEzMyw2ICsxMzcsOCBAQCBwcml2
YXRlOgogICAgIGludDY0X3QgbV9oYW5kbGUgeyAwIH07CiB9OwogCitib29sIFNhbmRib3hFeHRl
bnNpb246OnNfYWxsb3dFbmFibGVNYWNoQm9vdHN0cmFwID0gZmFsc2U7CisKIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZTo6SGFuZGxlKCkKIHsKIH0KQEAgLTMyNyw2ICszMzMsMTMgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAg
Ly8gV2hlbiBsYXVuY2hkIGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFu
dWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8v
IFRoaXMgaXMgZG9uZSBieSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNz
IGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICBpZiAoc19h
bGxvd0VuYWJsZU1hY2hCb290c3RyYXApCisgICAgICAgIHNhbmRib3hfZW5hYmxlX3N0YXRlX2Zs
YWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7CisjZW5kaWYKKwogICAgIHJl
dHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1Nh
bmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0
LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGUKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9
IHByb2Nlc3MuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7CiAgICAgICAgICAgICBpZiAo
bmVlZHNBcHBsZUNhbWVyYVNhbmRib3hFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAo
YXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KGFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIGF1ZGl0VG9rZW4pKSB7CiAgICAgICAgICAg
ICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwog
ICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFwcGxlQ2FtZXJhU2Vydmlj
ZVBhdGgpOwogICAgICAgICAgICAgICAgIH0KICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FN
RVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhh
bmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYWRkaXRp
b25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIGF1ZGl0VG9rZW4pKSB7CiAgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAg
ICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVy
YVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNjYsNiAr
MTE2NiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UobV93ZWJQYWdlSUQsIGNyZWF0
aW9uUGFyYW1ldGVycyhtX3Byb2Nlc3MsICptX2RyYXdpbmdBcmVhKSksIDApOwogCiAgICAgbV9w
cm9jZXNzLT5hZGRWaXNpdGVkTGlua1N0b3JlVXNlcih2aXNpdGVkTGlua1N0b3JlKCksIG1faWRl
bnRpZmllcik7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjph
bGxvd0VuYWJsZU1hY2hCb290c3RyYXAoKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2xvc2UoKQpAQCAtMjg4NSw5ICsyODg5LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nl
c3NOZXh0UXVldWVkTW91cwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGV2ZW50TWF5U3Rh
cnREcmFnID0gIW1fY3VycmVudERyYWdPcGVyYXRpb24gJiYgZXZlbnRUeXBlID09IFdlYkV2ZW50
OjpNb3VzZU1vdmUgJiYgZXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6QnV0dG9uOjpO
b0J1dHRvbjsKICAgICBpZiAoZXZlbnRNYXlTdGFydERyYWcpCi0gICAgICAgIHNhbmRib3hFeHRl
bnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAi
Y29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUi
X3MgfSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaWNvbnNl
cnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJfcyB9LCBtX3Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKTsKICNlbmRpZgotICAgIAorCiAgICAgTE9H
KE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNp
emUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVu
dFF1ZXVlLnNpemUoKSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChl
dmVudCwgc2FuZGJveEV4dGVuc2lvbnMpKTsKIH0KQEAgLTcyNTYsMTEgKzcyNjAsMTIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9yT3BlbgogI2VuZGlmCiAKICAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwg
aWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbjsKKyAgICBhdXRvIGF1ZGl0VG9rZW4gPSBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOwogI2lmIEhBVkUoRlJPTlRCT0FS
RF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5
c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5m
cm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRpdFRva2VuKSkKICAgICAgICAgZnJv
bnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAjZW5k
aWYKLSAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQor
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4pKQogICAgICAg
ICBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERp
c3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGlj
b25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2Fy
ZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikp
OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI5
Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBWZWN0b3I8
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hF
eHRlbnNpb25zKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOworICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKTsKIAogICAgIHZv
aWQgZGlkVXBkYXRlRWRpdG9yU3RhdGUoY29uc3QgRWRpdG9yU3RhdGUmIG9sZEVkaXRvclN0YXRl
LCBjb25zdCBFZGl0b3JTdGF0ZSYgbmV3RWRpdG9yU3RhdGUpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkocmV2aXNp
b24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxMSArMjAxLDEyIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWUKICNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVS
SU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBsb2FkUGFyYW1ldGVycy5uZXR3b3JrRXh0
ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1Nh
bmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIGF1
ZGl0VG9rZW4gPSBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOwogICAgIGlm
ICghcHJvY2Vzcy5oYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmls
dGVyRXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRTZXNzaW9uXSkgewotICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVt
b3RlVUkiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52
aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgYXVkaXRU
b2tlbikpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAotICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJv
bnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4p
KQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFn
ZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEkKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1v
YmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9z
LCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpKSkKICAgICAgICAgbW9i
aWxlQXNzZXRIYW5kbGVWMiA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkdyYW50QWNjZXNzVG9Bc3NldFNlcnZpY2VzKG1vYmlsZUFz
c2V0SGFuZGxlVjIpLCAwKTsKIH0KQEAgLTg1OSw3ICs4NjAsOCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSCiBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFn
ZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQogewogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
Zm9udHMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgYXV0byBhdWRpdFRva2VuID0gbV9wcm9jZXNz
LT5oYXNDb25uZWN0aW9uKCkgPyBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tl
bigpIDogc3RkOjpudWxsb3B0OworICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgYXVkaXRU
b2tlbikpCiAgICAgICAgIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKICAgICByZXR1cm4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0OCw3ICsyNDgsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpCiAKICAgICBWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGVBcnJheTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9zLCAi
Y29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgY29ubmVjdGlvbigp
ID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51bGxvcHQpOworICAgIGhh
bmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
eyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZy
b250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgaGFzQ29ubmVjdGlvbigpID8gY29ubmVj
dGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51bGxvcHQpOwogICAgIEFTU0VSVChoYW5k
bGVBcnJheS5zaXplKCkgPT0gMik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTI5NzUpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjQ2LDYgKzIyNDYsOCBAQAogCQlFMUQyNkE1MzE3NTk2NEQ5MDA5NUJGRDEgLyog
V2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nl
c3MueGliICovOyB9OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXph
dGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9OworCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUy
MUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0
YXRlVmFyaWFibGVzLmggKi87IH07CisJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVm
ZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovOyB9OwogCQlF
MzgxNkIzRDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNC
MjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9
OwogCQlFMzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgx
NkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87
IH07CiAJCUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVw
ZGF0ZVByb3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovOyB9OwpAQCAtNzAyOSw5ICs3MDMxLDEwIEBACiAJ
CUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9
IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
aGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxp
Yjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM0QjExMEYyN0M0NkQw
OTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07Ci0JCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBw
YXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3
MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIx
QSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2FuZGJveFN0YXRlVmFyaWFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBwcmVmZXJlbmNlcy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQzI3RTI0NjM5
MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBwYXRoID0g
TmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgcGF0
aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODA3LDcgKzc4MTAsNyBAQAogCQkJCUJDMTExQjVB
MTEyRjYyODIwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJNTFBRjFCM0QyNzFGNDZBNjAwMTUzOEU2
IC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJl
bW90ZUxheWVyVHJlZSAqLywKLQkJCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJv
eCAqLywKKwkJCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLywKIAkJCQkx
Q0I3NDY0NTI3NDM3OUYxMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTFBQkY0Mzc4MUEzNjgw
MzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQy
NUUgLyogWFIgKi8sCkBAIC0xMzUzOCw2ICsxMzU0MSwxNSBAQAogCQkJbmFtZSA9IFBERjsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIx
QSAvKiBTYW5kYm94ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8sCisJCQkJ
RTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovLAor
CQkJKTsKKwkJCXBhdGggPSBTYW5kYm94OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJRTQwNDkwNkYyMURFNjVENzAwMzdGMERCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNDQ0Niw2ICsxNDQ1OCw3IEBACiAJCQkJQkMy
RDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVu
c2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNh
bmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkZG
MDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdl
UmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1NEQwNDIxRjFENzJEMDA3RTND
MzYgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTU3ODcsNiArMTU4MDAs
NyBAQAogCQkJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9tb2Rl
bCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2IC8qIEluZm9Q
bGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKIAkJCQkzRkIwOEU0MzFGNjBCMjQwMDA1RTUz
MTIgLyogaU9TLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKKwkJCQlFMzZGRjAwNDI3RjM2RkJE
MDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCTVDOEJDNzk3
MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vz
cy5zYi5pbgkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUyLDI3ICsyMDUy
LDQwIEBACiAjZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRFUklORykKLShp
ZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZ
RVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyhkZWZpbmUgKG1hY2gtYm9vdHN0cmFw
LW1lc3NhZ2UtbnVtYmVycykKKyAgICAobWVzc2FnZS1udW1iZXIgMjA0IDIwNyAzMDEgNzExIDgw
MCA4MDQpKQorCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKICAg
ICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCi0j
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICAgICAgICAgICAg
IChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAo
YWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAgICAgICAoYWxs
b3cgbWFjaC1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5E
Qk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQor
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgSEFWRShT
QU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJlcXVpcmUtYW5j
ZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkuZW5hYmxl
LXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQorICAgICAg
ICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIp
KQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55CisgICAg
ICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vzc0xh
dW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpKSkK
KyNlbHNlCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbmRpZiAv
LyBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAjZWxzZQorICAgIChhbGxvdyBtYWNoLWJvb3Rz
dHJhcAorICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55IHhw
Yy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4cGMt
bWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNz
YWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJz
KSkpKSkKICNlbmRpZgotICAgICAgICAgICAgICAgIDIwNAotICAgICAgICAgICAgICAgIDIwNwot
ICAgICAgICAgICAgICAgIDMwMQotICAgICAgICAgICAgICAgIDcxMQotICAgICAgICAgICAgICAg
IDgwMAotICAgICAgICAgICAgICAgIDgwNAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAg
ICkKLSAgICAgICAgKQotICAgICkKLSkKIAogKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJM
RV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1rZXJuZWwt
ZW5kcG9pbnQpKQogICAgIChhbGxvdyBtYWNoLWtlcm5lbC1lbmRwb2ludApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI5Mjk3
NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTUsNiArNDU1LDExIEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChX
VEY6OlJlZkNvdW50ZWQKIAogUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewor
ICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RG
TW92ZShwYXJhbWV0ZXJzKSkpOworCisgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmlu
amVjdGVkQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVk
QnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7CisKICNpZiBIQVZFKFNBTkRCT1hf
U1RBVEVfRkxBR1MpCiAgICAgLy8gVGhpcyBjYWxsIGlzIG5vdCBtZWFudCB0byBhY3R1YWxseSBy
ZWFkIGEgcHJlZmVyZW5jZSwgYnV0IGlzIG9ubHkgaGVyZSB0byB0cmlnZ2VyIGEgc2FuZGJveCBy
dWxlIGluIHRoZQogICAgIC8vIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2hpY2ggd2lsbCB0b2dnbGUg
YSBzYW5kYm94IHZhcmlhYmxlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MKQEAgLTQ2MiwxMSArNDY3LDYgQEAgUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQ
YWdlSWRlbnRpZgogICAgIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2VyVmFsdWUoQ0ZTVFIoImtl
eSIpLCBDRlNUUigiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkxhdW5jaCIpLCBudWxscHRy
KTsKICNlbmRpZgogCi0gICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBh
Z2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Ci0KLSAgICBpZiAoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKLQogICAg
IHJldHVybiBwYWdlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458071</attachid>
            <date>2022-04-21 09:40:33 -0700</date>
            <delta_ts>2022-04-25 11:08:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220421094032.patch</filename>
            <type>text/plain</type>
            <size>29033</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTIwICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAor
MjAyMi0wNC0yMCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZQorICAgICAg
ICBhdXRvbWF0aWNhbGx5IHdoZW4gY3JlYXRpbmcgYSBuZXcgTWFjaCBzYW5kYm94IGV4dGVuc2lv
bi4gVGhpcyByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4gdG8gYmUgYXZhaWxhYmxlLAorICAgICAg
ICB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRva2VuIHdoZW4gY3JlYXRp
bmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9ucy4KKyAgICAgICAgVGhpcyBwYXRjaCBh
bHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkIHRvIHNl
dCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRpY2F0ZXMKKyAgICAgICAgdGhhdCB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0aGlzIGxhc3QgY2hhbmdl
LCB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZlIG5lZWRlZAorICAgICAgICBzd2l0Y2hp
bmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0aW5nIHRoZSBXZWJQYWdl
IHdpbGwgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFjaAorICAgICAgICBleHRlbnNpb25zLgor
CisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2
aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0Zv
bnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJh
cCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFs
dGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9j
ZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI5Mjk1Ny4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3Vy
Y2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmlu
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJv
ZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkod29ya2luZyBjb3B5
KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9uY2UgKG1hY2gtYm9vdHN0
cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIKLSAgICAgICAgMjA2Ci0g
ICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAgICAgIDcxOAotICAgICAg
ICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4MDQKLSAgICAgICAgODA1
Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcxMSA3MTIgNzE4IDgwMCA4
MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12ZXJzaW9uKikKKyhkZWZp
bmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJv
b3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55
IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAgICAgICAgICAoYWxsb3cg
bWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2Fn
ZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQorICAgICAgICAgICAg
ICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisjaWYgSEFWRShTQU5E
Qk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQg
ImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgKGRl
bnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCi0g
ICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3Nh
Z2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdl
LXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQot
ICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChhbGxvdy1tYWNoLWJvb3Rz
dHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChyZXF1aXJlLWFueQorICAg
ICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQcm9jZXNzTGF1bmNoZWQi
KSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkKKyAgICAoYWxs
b3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhhbGxvdy1tYWNoLWJvb3Rz
dHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNjYWxsLW1hY2gtb25seS1p
bi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVyCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHdv
cmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24gbWFjX3Byb2Nlc3Nfd2Vi
Y29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5z
ZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZpCiAKKyAgICAgICAgaWYg
KCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAxMzAwMDAgKSkKKyAgICAg
ICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNl
Y3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAgICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAgc3Ry
aW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAgICAgICBpZiBbWyAiJHtX
S19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRFTlNJT05fRU5USVRMRU1F
TlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQg
OmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJvb2wgWUVTCkBAIC0zMTgs
NiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dlYmNvbnRlbnRfZQogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhjZXB0aW9uIGJvb2wgWUVT
CiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZlcmlmaWVkLWppdCBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tZXNz
YWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgcGxpc3RidWRkeSBBZGQg
OmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3M6MCBzdHJpbmcg
RW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFwcGxpY2F0
aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2Fu
ZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyBib29sIGNvbnN1bWVQZXJtYW5lbnRseShjb25zdCBIYW5kbGUm
KTsKICAgICBzdGF0aWMgYm9vbCBjb25zdW1lUGVybWFuZW50bHkoY29uc3QgVmVjdG9yPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4mKTsKIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRp
YyB2b2lkIGFsbG93RW5hYmxlTWFjaEJvb3RzdHJhcCgpIHsgc19hbGxvd0VuYWJsZU1hY2hCb290
c3RyYXAgPSB0cnVlOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBTYW5kYm94
RXh0ZW5zaW9uKGNvbnN0IEhhbmRsZSYpOwogICAgICAgICAgICAgICAgICAgICAgCkBAIC0xMTYs
NiArMTIwLDkgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxTYW5kYm94
RXh0ZW5zaW9uSW1wbD4gbV9zYW5kYm94RXh0ZW5zaW9uOwogICAgIHNpemVfdCBtX3VzZUNvdW50
IHsgMCB9OwogI2VuZGlmCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RhdGljIGJvb2wgc19h
bGxvd0VuYWJsZU1hY2hCb290c3RyYXA7CisjZW5kaWYKIH07CiAKIFN0cmluZyBzdHJpbmdCeVJl
c29sdmluZ1N5bWxpbmtzSW5QYXRoKFN0cmluZ1ZpZXcgcGF0aCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCShyZXZp
c2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5z
aW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDEwIEBACiAjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisjaW5jbHVkZSAiU2FuZGJveFN0YXRl
VmFyaWFibGVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFNhbmRi
b3hFeHRlbnNpb25JbXBsIHsKQEAgLTEzMyw2ICsxMzcsOCBAQCBwcml2YXRlOgogICAgIGludDY0
X3QgbV9oYW5kbGUgeyAwIH07CiB9OwogCitib29sIFNhbmRib3hFeHRlbnNpb246OnNfYWxsb3dF
bmFibGVNYWNoQm9vdHN0cmFwID0gZmFsc2U7CisKIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZTo6
SGFuZGxlKCkKIHsKIH0KQEAgLTMyNyw2ICszMzMsMTQgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0K
ICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAgLy8gV2hlbiBsYXVuY2hk
IGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFudWFsbHkgZW5hYmxlIGJv
b3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8vIFRoaXMgaXMgZG9uZSBi
eSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNzIGlzIHJlcXVpcmVkIHdo
ZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJsb2NraW5nIGxhdW5jaGQg
aXMgZG9uZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFibGUuCisgICAgaWYgKHNf
YWxsb3dFbmFibGVNYWNoQm9vdHN0cmFwKQorICAgICAgICBzYW5kYm94X2VuYWJsZV9zdGF0ZV9m
bGFnKEVOQUJMRV9NQUNIX0JPT1RTVFJBUCwgKmF1ZGl0VG9rZW4pOworI2VuZGlmCisKICAgICBy
ZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9T
YW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNkZWZpbmUgRU5BQkxFX01BQ0hfQk9PVFNUUkFQICJFbmFibGVNYWNoQm9vdHN0cmFwIgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NN
YW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTMgKzEx
NCwxNCBAQCBib29sIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBhdXRvIGF1ZGl0VG9rZW4g
PSBwcm9jZXNzLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOwogICAgICAgICAgICAgaWYg
KG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuKSkgewogICAgICAgICAg
ICAgICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsK
ICAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhcHBsZUNhbWVyYVNlcnZp
Y2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CiAjaWYgSEFWRShBRERJVElPTkFMX0FQUExFX0NB
TUVSQV9TRVJWSUNFKQotICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJh
U2VydmljZVBhdGgsIHN0ZDo6bnVsbG9wdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0
aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuKSkgewogICAgICAgICAgICAg
ICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsKICAg
ICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhZGRpdGlvbmFsQXBwbGVDYW1l
cmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY2LDYg
KzExNjYsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fd2ViUGFnZUlELCBjcmVh
dGlvblBhcmFtZXRlcnMobV9wcm9jZXNzLCAqbV9kcmF3aW5nQXJlYSkpLCAwKTsKIAogICAgIG1f
cHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIodmlzaXRlZExpbmtTdG9yZSgpLCBtX2lk
ZW50aWZpZXIpOworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgU2FuZGJveEV4dGVuc2lvbjo6
YWxsb3dFbmFibGVNYWNoQm9vdHN0cmFwKCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKQEAgLTI4ODUsOSArMjg4OSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzTmV4dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0
YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVu
dDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6
Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0
ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsg
ImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3Jl
Il9zIH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25z
ZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSk7CiAjZW5kaWYKLSAgICAKKwogICAgIExP
RyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBz
aXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZl
bnRRdWV1ZS5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQo
ZXZlbnQsIHNhbmRib3hFeHRlbnNpb25zKSk7CiB9CkBAIC03MjU2LDExICs3MjYwLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW4KICNlbmRpZgogCiAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24s
IGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CisgICAgYXV0byBhdWRpdFRva2VuID0gbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKICNpZiBIQVZFKEZST05UQk9B
UkRfU1lTVEVNX0FQUF9TRVJWSUNFUykKLSAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
ZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbikpCiAgICAgICAgIGZy
b250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogI2Vu
ZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkK
KyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBhdWRpdFRva2VuKSkKICAgICAg
ICAgaWNvblNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhE
aXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBp
Y29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCksIGZyb250Ym9h
cmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24p
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAy
OTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjY0Myw3ICsyNjQzLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgVmVjdG9y
PFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94
RXh0ZW5zaW9ucyhXZWJQcm9jZXNzUHJveHkmKTsKICNlbmRpZgogCi0gICAgc3RhdGljIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKTsKKyAgICBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCk7CiAKICAgICB2
b2lkIGRpZFVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0
ZSwgY29uc3QgRWRpdG9yU3RhdGUmIG5ld0VkaXRvclN0YXRlKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlz
aW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1lCiAjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRF
UklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29ya0V4
dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNT
YW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCisgICAgYXV0byBh
dWRpdFRva2VuID0gcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKICAgICBp
ZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZp
bHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJl
bW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQu
dmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIGF1ZGl0
VG9rZW4pKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudEZpbHRlckV4dGVuc2lv
bkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZy
b250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRpdFRva2Vu
KSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNzLm1hcmtIYXNNYW5h
Z2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsKQEAgLTg0MSw3ICs4NDIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRB
Y2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBt
b2JpbGVBc3NldEhhbmRsZVYyOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIi
X3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpCiAgICAgICAgIG1v
YmlsZUFzc2V0SGFuZGxlVjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVB
c3NldEhhbmRsZVYyKSwgMCk7CiB9CkBAIC04NTksNyArODYwLDggQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN3aXRjaEZyb21TdGF0aWNGb250UgogU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBh
Z2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCkKIHsKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LmZvbnRzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vz
cy0+aGFzQ29ubmVjdGlvbigpID8gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9r
ZW4oKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIGF1ZGl0
VG9rZW4pKQogICAgICAgICBmb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgcmV0dXJuIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwogfQpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW0JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlByb2Nlc3NQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaQogCiAgICAgVmVjdG9yPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxlQXJyYXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNG
b3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywg
ImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0sIGNvbm5lY3Rpb24o
KSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0KTsKKyAgICBo
YW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5m
cm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0sIGhhc0Nvbm5lY3Rpb24oKSA/IGNvbm5l
Y3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0KTsKICAgICBBU1NFUlQoaGFu
ZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtMjI0Niw2ICsyMjQ2LDggQEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8q
IFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9j
ZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0
aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6
YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJ
bmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAwNEJF
MjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hT
dGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZGRjAwNDI3RjM2RkJEMDA0QkUyMUEgLyogcHJl
ZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsKIAkJ
RTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIz
QjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsg
fTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4
MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICov
OyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0
aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKQEAgLTcwMjksOSArNzAzMSwxMCBAQAog
CQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGgg
PSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0
U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHls
aWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNEIxMTBGMjdDNDZE
MDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsg
cGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdC
NzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUy
MUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRl
bnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4MTZCM0MyN0UyNDYz
OTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9
IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBh
dGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgwNyw3ICs3ODEwLDcgQEAKIAkJCQlCQzExMUI1
QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1MzhF
NiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBS
ZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRi
b3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJCQkJ
MUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4
MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0
MjVFIC8qIFhSICovLApAQCAtMTM1MzgsNiArMTM1NDEsMTUgQEAKIAkJCW5hbWUgPSBQREY7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUy
MUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovLAorCQkJ
CUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTQ0NDYsNiArMTQ0NTgsNyBAQAogCQkJCUJD
MkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBT
YW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZG
RjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2Fn
ZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0Uz
QzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTE1Nzg3LDYgKzE1ODAw
LDcgQEAKIAkJCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9k
ZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZv
UGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1
MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZC
RDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5
NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nl
c3Muc2IuaW4JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA1MiwyNyArMjA1
Miw0MCBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNBTkRCT1hfTUVTU0FHRV9GSUxURVJJTkcpCi0o
aWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAi
WUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisoZGVmaW5lIChtYWNoLWJvb3RzdHJh
cC1tZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNCAyMDcgMzAxIDcxMSA4
MDAgODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCiAg
ICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgot
I2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCiAgICAgICAgICAg
ICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAg
KGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFs
bG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1l
c3NhZ2UtbnVtYmVycykpKSkpCisKKyhpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FO
REJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkK
KyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAorI2lmIEhBVkUo
U0FOREJPWF9TVEFURV9GTEFHUykKKyAgICAoYmVnaW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFu
Y2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJs
ZS1zdGF0ZS1mbGFncyIpCisgICAgICAgICAgICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAg
ICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVy
KSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1aXJlLWFueQorICAg
ICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NM
YXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0
cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkp
CisjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisjZW5kaWYg
Ly8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogI2Vsc2UKKyAgICAoYWxsb3cgbWFjaC1ib290
c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSB4
cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAoYWxsb3cgeHBj
LW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyB4cGMtbWVz
c2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVy
cykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAyMDQKLSAgICAgICAgICAgICAgICAyMDcK
LSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAgICAgICA3MTEKLSAgICAgICAgICAgICAg
ICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFC
TEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gta2VybmVs
LWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9pbnQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU1LDYgKzQ1NSwxMSBAQCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwo
V1RGOjpSZWZDb3VudGVkCiAKIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsK
KyAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdU
Rk1vdmUocGFyYW1ldGVycykpKTsKKworICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5p
bmplY3RlZEJ1bmRsZSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3Rl
ZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOworCiAjaWYgSEFWRShTQU5EQk9Y
X1NUQVRFX0ZMQUdTKQogICAgIC8vIFRoaXMgY2FsbCBpcyBub3QgbWVhbnQgdG8gYWN0dWFsbHkg
cmVhZCBhIHByZWZlcmVuY2UsIGJ1dCBpcyBvbmx5IGhlcmUgdG8gdHJpZ2dlciBhIHNhbmRib3gg
cnVsZSBpbiB0aGUKICAgICAvLyBXZWJDb250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgdG9nZ2xl
IGEgc2FuZGJveCB2YXJpYWJsZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgV2ViQ29udGVudCBw
cm9jZXNzCkBAIC00NjIsMTEgKzQ2Nyw2IEBAIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUo
UGFnZUlkZW50aWYKICAgICBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJr
ZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5MYXVuY2giKSwgbnVsbHB0
cik7CiAjZW5kaWYKIAotICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQ
YWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwotCi0gICAgaWYgKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAg
ICByZXR1cm4gcGFnZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458147</attachid>
            <date>2022-04-22 07:54:29 -0700</date>
            <delta_ts>2022-04-25 11:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bootstrap2.patch</filename>
            <type>text/plain</type>
            <size>39990</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTIwICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQAogY2hhciAqc2FuZGJveF9leHRlbnNpb25faXNzdWVfaW9r
aXRfcmVnaXN0cnlfZW50cnlfY2xhc3NfdG9fcHJvY2Vzcyhjb25zdCBjaGFyICpleHRlbnNpb25f
Y2xhc3MsIGNvbnN0IGNoYXIgKnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncywg
YXVkaXRfdG9rZW5fdCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdp
c3RyeV9lbnRyeV9jbGFzcyhjb25zdCBjaGFyICpleHRlbnNpb25fY2xhc3MsIGNvbnN0IGNoYXIg
KnJlZ2lzdHJ5X2VudHJ5X2NsYXNzLCB1aW50MzJfdCBmbGFncyk7CiAKK2Jvb2wgc2FuZGJveF9l
bmFibGVfc3RhdGVfZmxhZyhjb25zdCBjaGFyICp2YXJuYW1lLCBhdWRpdF90b2tlbl90KTsKKwog
V1RGX0VYVEVSTl9DX0VORAogCiAjZW5kaWYgLy8gT1MoREFSV0lOKQpJbmRleDogU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTEgQEAKKzIwMjItMDQtMjAgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5A
YXBwbGUuY29tPgorCisgICAgICAgIER5bmFtaWNhbGx5IHN3aXRjaCBtZXNzYWdlIGZpbHRlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTc3Cisg
ICAgICAgIDxyZGFyOi8vNjkyNjMzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIGEgc2FuZGJveCBzdGF0ZSB2YXJpYWJsZSB0byBkeW5hbWlj
YWxseSBzd2l0Y2ggdGhlIGJvb3RzdHJhcCBmaWx0ZXIgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vz
cycgc2FuZGJveC4KKyAgICAgICAgRHVyaW5nIGxhdW5jaCBvZiB0aGUgV2ViQ29udGVudCBwcm9j
ZXNzLCB3ZSB1c2UgYSBtb3JlIHBlcm1pc3NpdmUgYm9vdHN0cmFwIGZpbHRlciB0byBhbGxvdyBj
cmVhdGluZyBNYWNoCisgICAgICAgIGNvbm5lY3Rpb25zIGluIHRoaXMgdGltZSBmcmFtZS4gQWZ0
ZXIgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBoYXMgbGF1bmNoZWQsIHdlIHN3aXRjaCB0byBhIGJs
b2NraW5nIGZpbHRlciwKKyAgICAgICAgd2hpY2ggd2lsbCBlc3NlbnRpYWxseSBibG9jayBhY2Nl
c3MgdG8gbGF1bmNoZC4gVGhlIGJvb3RzdHJhcCBmaWx0ZXIgaXMgYmVpbmcgc3dpdGNoZWQgYmFj
ayB0byB0aGUgbW9yZQorICAgICAgICBwZXJtaXNzaXZlIHZlcnNpb24gd2hlbiB3ZSBjcmVhdGUg
bmV3IE1hY2ggc2FuZGJveCBleHRlbnNpb25zIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzLiBU
aGlzIGlzIGRvbmUKKyAgICAgICAgYXV0b21hdGljYWxseSB3aGVuIGNyZWF0aW5nIGEgbmV3IE1h
Y2ggc2FuZGJveCBleHRlbnNpb24uIFRoaXMgcmVxdWlyZXMgdGhlIGF1ZGl0IHRva2VuIHRvIGJl
IGF2YWlsYWJsZSwKKyAgICAgICAgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBwYXNzIHRoZSBhdWRp
dCB0b2tlbiB3aGVuIGNyZWF0aW5nIHRoZSBuZXcgTWFjaCBzYW5kYm94IGV4dGVuc2lvbnMuCisg
ICAgICAgIFRoaXMgcGF0Y2ggYWxzbyB3YWl0cyB1bnRpbCBhZnRlciB0aGUgV2ViIHBhZ2UgaGFz
IGJlZW4gY3JlYXRlZCB0byBzZXQgdGhlIHNhbmRib3ggdmFyaWFibGUgd2hpY2ggaW5kaWNhdGVz
CisgICAgICAgIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBoYXMgbGF1bmNoZWQuIFdpdGhv
dXQgdGhpcyBsYXN0IGNoYW5nZSwgdGhlIGJvb3RzdHJhcCBmaWx0ZXIgd291bGQgaGF2ZSBuZWVk
ZWQKKyAgICAgICAgc3dpdGNoaW5nIHdoZW4gY3JlYXRpbmcgdGhlIFdlYiBwYWdlLCBzaW5jZSBj
cmVhdGluZyB0aGUgV2ViUGFnZSB3aWxsIGNvbnN1bWUgYW5kIHJldm9rZSBzb21lIG1hY2gKKyAg
ICAgICAgZXh0ZW5zaW9ucy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMv
aW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1Zh
bGlkV2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmVuYWJsZU1hY2hCb290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVl
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFT
dHJlYW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRo
RGlzcGxheVN0cmluZ0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJl
Y29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wNC0xOCAgQ29tbWl0IFF1ZXVl
ICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0
aW5nIHIyOTI5NTcuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmls
ZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJL
aXQuV2ViQ29udGVudC5zYi5pbgkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9S
ZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQu
c2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NTAsNDAgKzE0NTAsMzAgQEAKICkKIAogKGRlZmlu
ZS1vbmNlIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCi0gICAgKG1lc3NhZ2UtbnVt
YmVyCi0gICAgICAgIDIwNgotICAgICAgICAyMDcKLSAgICAgICAgNzExCi0gICAgICAgIDcxMgot
ICAgICAgICA3MTgKLSAgICAgICAgODAwCi0gICAgICAgIDgwMgotICAgICAgICA4MDMKLSAgICAg
ICAgODA0Ci0gICAgICAgIDgwNQotICAgICkKLSkKKyAgICAobWVzc2FnZS1udW1iZXIgMjA2IDIw
NyA3MTEgNzEyIDcxOCA4MDAgODAyIDgwMyA4MDQgODA1KSkKIAotKGlmIChkZWZpbmVkPyAnKnNi
cGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikK
ICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVy
CiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQog
ICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1h
Y2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQot
ICAgICkKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkp
KSkKKworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWlyZS1hbmNlc3Rv
ci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUtc3Rh
dGUtZmxhZ3MiKQorICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQogOzsgZWxzZQotICAgIChhbGxv
dyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSAgICAgICAg
ICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAg
IChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFw
LW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICkKLSkKKyAg
ICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQogCisod2l0aC1maWx0ZXIKKyAg
ICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250
ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9v
dHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbHNl
CisoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCisjZW5kaWYKKwogKGRlZmluZSAo
c3lzY2FsbC1tYWNoLW9ubHktaW4tdXNlLWR1cmluZy1sYXVuY2gpCiAgICAgKG1hY2h0cmFwLW51
bWJlcgogICAgICAgICBNU0NfbWFjaF9nZW5lcmF0ZV9hY3Rpdml0eV9pZApJbmRleDogU291cmNl
L1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjky
OTc1KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDEyIEBACiAgICAgICAgICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnNlY3VyaXR5LmNzLnNpbmdsZS1qaXQgYm9vbCBZRVMKICAgICAgICAg
ZmkKIAorICAgICAgICBpZiAoKCAiJHtUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUn0iID49
IDEzMDAwMCApKQorICAgICAgICB0aGVuCisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQorICAgICAg
ICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUt
c3RhdGUtZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgICAgICBmaQorCiAg
ICAgICAgIGlmIFtbICIke1dLX1dFQkNPTlRFTlRfU0VSVklDRV9ORUVEU19YUENfRE9NQUlOX0VY
VEVOU0lPTl9FTlRJVExFTUVOVH0iID09IFlFUyBdXQogICAgICAgICB0aGVuCiAgICAgICAgICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUueHBjLmRvbWFpbi1leHRlbnNpb24g
Ym9vbCBZRVMKQEAgLTMxOCw2ICszMjQsOCBAQAogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS5wYWMuZXhjZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNv
bS5hcHBsZS5wcml2YXRlLnZlcmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRk
IDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRl
LWZsYWdzIGFycmF5CisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3Vy
aXR5Lm11dGFibGUtc3RhdGUtZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVt
b3RlLWluc3BlY3Rpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUud2ViaW5zcGVjdG9yLnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3Ri
dWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wg
WUVTCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4
dGVuc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDEwIEBACiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg+CiAjaW1wb3J0
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisj
aW5jbHVkZSAiU2FuZGJveFN0YXRlVmFyaWFibGVzLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFNhbmRib3hFeHRlbnNpb25JbXBsIHsKQEAgLTMxNiw3ICszMjAsNyBA
QAogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdz
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uVGltaW5nIHNhbmRib3hF
eHRlbnNpb25UaW1pbmcsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgogewogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5k
Ym94RXh0ZW5zaW9uKTsKQEAgLTMyNywyMSArMzMxLDI5IEBACiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogICAgIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAg
ICAvLyBXaGVuIGxhdW5jaGQgaXMgYmxvY2tlZCBpbiB0aGUgc2FuZGJveCwgd2UgbmVlZCB0byBt
YW51YWxseSBlbmFibGUgYm9vdHN0cmFwcGluZyBvZiBuZXcgWFBDIGNvbm5lY3RvbnMuCisgICAg
Ly8gVGhpcyBpcyBkb25lIGJ5IHVuYmxvY2tpbmcgbGF1bmNoZCwgc2luY2UgbGF1bmNoZCBhY2Nl
c3MgaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBNYWNoIGNvbm5lY3Rpb25zLgorICAgIC8vIFVu
YmxvY2tpbmcgbGF1bmNoZCBpcyBkb25lIGJ5IGVuYWJsaW5nIGEgc2FuZGJveCBzdGF0ZSB2YXJp
YWJsZS4KKyAgICBpZiAoc2FuZGJveEV4dGVuc2lvblRpbWluZyA9PSBBZnRlckxhdW5jaCkKKyAg
ICAgICAgc2FuZGJveF9lbmFibGVfc3RhdGVfZmxhZyhFTkFCTEVfTUFDSF9CT09UU1RSQVAsICph
dWRpdFRva2VuKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAot
YXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4g
YXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KK2F1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25z
dCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb25UaW1pbmcgc2FuZGJveEV4dGVuc2lvblRpbWluZywg
T3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAo
QVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7Ci0gICAgICAg
IGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRv
a2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2Vydmlj
ZXMsIFthdWRpdFRva2VuLCBzYW5kYm94RXh0ZW5zaW9uVGltaW5nLCBmbGFnc10gKEFTQ0lJTGl0
ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geworICAgICAgICBhdXRvIGhh
bmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgc2Fu
ZGJveEV4dGVuc2lvblRpbWluZywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uVGltaW5nIHNhbmRib3hFeHRl
bnNpb25UaW1pbmcsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5i
ZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVy
biBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4oKSwgc2Vy
dmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIHNhbmRib3hFeHRlbnNpb25UaW1pbmcsIGZsYWdz
KTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRp
dFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6
Om9wdGlvbmFsPEhhbmRsZT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2Fu
ZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
U2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmlu
ZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDEyIEBACiAgICAgICAgIE5vUmVwb3J0LAogICAgICAgICBEb05vdENhbm9uaWNh
bGl6ZSwKICAgICB9OwotICAgIAorCisgICAgZW51bSBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uVGlt
aW5nIHsKKyAgICAgICAgQmVmb3JlTGF1bmNoLAorICAgICAgICBBZnRlckxhdW5jaAorICAgIH07
CisKICAgICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5k
bGUpOwogICAgIHB1YmxpYzoKQEAgLTkxLDkgKzk2LDkgQEAKICAgICBzdGF0aWMgc3RkOjpvcHRp
b25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlG
aWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxI
YW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVu
c2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vydmlj
ZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdz
OjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
QVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIFNhbmRi
b3hFeHRlbnNpb25UaW1pbmcsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Cisg
ICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48
Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiwgU2FuZGJveEV4dGVuc2lvblRpbWluZywgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0
ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIFNhbmRib3hFeHRlbnNpb25UaW1pbmcsIE9wdGlv
blNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwg
YXVkaXRfdG9rZW5fdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVI
YW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1
bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFz
c0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpv
cHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0
KTsKQEAgLTEwOSw2ICsxMTQsMTAgQEAKICAgICBzdGF0aWMgYm9vbCBjb25zdW1lUGVybWFuZW50
bHkoY29uc3QgSGFuZGxlJik7CiAgICAgc3RhdGljIGJvb2wgY29uc3VtZVBlcm1hbmVudGx5KGNv
bnN0IFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+Jik7CiAKKyNpZiBQTEFURk9STShD
T0NPQSkKKyAgICBzdGF0aWMgdm9pZCBzZXREaWRGaW5pc2hMYXVuY2hpbmcoKSB7IHNfZGlkRmlu
aXNoTGF1bmNoaW5nID0gdHJ1ZTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
U2FuZGJveEV4dGVuc2lvbihjb25zdCBIYW5kbGUmKTsKICAgICAgICAgICAgICAgICAgICAgIApA
QCAtMTE2LDYgKzEyNSw5IEBACiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8U2FuZGJveEV4
dGVuc2lvbkltcGw+IG1fc2FuZGJveEV4dGVuc2lvbjsKICAgICBzaXplX3QgbV91c2VDb3VudCB7
IDAgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBib29sIHNfZGlk
RmluaXNoTGF1bmNoaW5nOworI2VuZGlmCiB9OwogCiBTdHJpbmcgc3RyaW5nQnlSZXNvbHZpbmdT
eW1saW5rc0luUGF0aChTdHJpbmdWaWV3IHBhdGgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI5Mjk3
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSwxMiBAQAogI2lmICFFTkFCTEUoQ09OVEVO
VF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGxvYWRQYXJhbWV0ZXJzLm5l
dHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IGNyZWF0ZU5ldHdvcmtFeHRl
bnNpb25zU2FuZGJveEV4dGVuc2lvbnMocHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oSU9TKQorICAg
IGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuaGFzQ29ubmVjdGlvbigpID8gcHJvY2Vzcy5jb25u
ZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdDsKICAgICBpZiAoIXByb2Nl
c3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2YWx1
YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9z
LCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZp
Y2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIGF1ZGl0VG9rZW4sIFNh
bmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkFmdGVyTGF1bmNoKSkKICAg
ICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5
c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbiwgU2FuZGJveEV4
dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvblRpbWluZzo6QWZ0ZXJMYXVuY2gpKQogICAgICAgICAg
ICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZN
b3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFnZWRTZXNzaW9uU2Fu
ZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3IEBACiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQu
djIiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52
MiJfcywgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4
dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvblRpbWluZzo6QWZ0ZXJMYXVuY2gpKQogICAgICAgICBt
b2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxl
QXNzZXRIYW5kbGVWMiksIDApOwogfQpAQCAtODUzLDEzICs4NTQsMTQgQEAKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnko
KQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9t
U3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhh
bmRsZSgpKSwgMCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3
aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0
ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkFm
dGVyTGF1bmNoKSksIDApOwogfQogCi1TYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFnZVBy
b3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQorU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246
OlNhbmRib3hFeHRlbnNpb25UaW1pbmcgc2FuZGJveEV4dGVuc2lvblRpbWluZykKIHsKICAgICBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGF1dG8gYXVkaXRUb2tl
biA9IG1fcHJvY2Vzcy0+aGFzQ29ubmVjdGlvbigpID8gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9u
dHMiX3MsIGF1ZGl0VG9rZW4sIHNhbmRib3hFeHRlbnNpb25UaW1pbmcpKQogICAgICAgICBmb250
TWFjaEV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgcmV0dXJuIGZvbnRN
YWNoRXh0ZW5zaW9uSGFuZGxlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzAsNyArMzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKENPQ09BKSAm
JiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBpZiAoV2ViUHJvY2Vzc1Byb3h5OjpzaG91
bGRFbmFibGVSZW1vdGVJbnNwZWN0b3IoKSkgewotICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2Vi
aW5zcGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUud2Vi
aW5zcGVjdG9yIl9zLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRl
bnNpb25UaW1pbmc6OkJlZm9yZUxhdW5jaCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJs
ZVJlbW90ZVdlYkluc3BlY3RvckV4dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAg
ICAgfQogI2VuZGlmCkBAIC00MTUsMTMgKzQxNSwxMyBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAgIGlmICghX01HQ2FjaGVWYWxpZCgp
KSB7Ci0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpu
dWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWdlc3RhbHQueHBjIl9zLCBz
dGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkJl
Zm9yZUxhdW5jaCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLm1vYmlsZUdlc3RhbHRFeHRlbnNp
b25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIH0KICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIGlmIChhdXRvIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmNvcmVz
ZXJ2aWNlcy5sYXVuY2hzZXJ2aWNlc2QiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8g
bGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNlcnZpY2Vz
ZCJfcywgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uVGlt
aW5nOjpCZWZvcmVMYXVuY2gpKQogICAgICAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0
ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwog
I2VuZGlmCiAKQEAgLTQyOCw3ICs0MjgsNyBAQAogI2lmIEhBVkUoVklERU9fUkVTVFJJQ1RFRF9E
RUNPRElORykKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKE1hY0FwcGxpY2F0aW9uOjppc0Fw
cGxlTWFpbCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHRydXN0ZEV4dGVuc2lvbkhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50cnVz
dGQuYWdlbnQiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRvIHRydXN0ZEV4dGVu
c2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS50cnVzdGQuYWdlbnQiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lv
bjo6U2FuZGJveEV4dGVuc2lvblRpbWluZzo6QmVmb3JlTGF1bmNoKSkKICAgICAgICAgICAgIHBh
cmFtZXRlcnMudHJ1c3RkRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqdHJ1c3RkRXh0ZW5zaW9u
SGFuZGxlKTsKICAgICAgICAgcGFyYW1ldGVycy5yZXN0cmljdEltYWdlQW5kVmlkZW9EZWNvZGVy
cyA9IHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Byb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAogICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
aGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1
cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUu
ZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0
aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgaGFuZGxlQXJyYXkg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBw
bGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBoYXNDb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdl
dEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNp
emUoKSA9PSAyKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMywxMyArMjEzLDEzIEBACiAgICAgfQogI2lmIEhBVkUoQVVESVRfVE9LRU4pCiAgICAgICAg
IGlmIChzaG91bGRDcmVhdGVBcHBsZUNhbWVyYVNlcnZpY2VTYW5kYm94RXh0ZW5zaW9uKCkpIHsK
LSAgICAgICAgICAgIGF1dG8gYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25I
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQpOworICAgICAgICAgICAgYXV0byBh
cHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWNhbWVyYWQi
X3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvblRpbWlu
Zzo6QWZ0ZXJMYXVuY2gpOwogICAgICAgICAgICAgaWYgKCFhcHBsZUNhbWVyYVNlcnZpY2VQYXRo
U2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5k
Ym94IGV4dGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAg
ICAgICBhdXRvIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBh
dXRvIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6U2Fu
ZGJveEV4dGVuc2lvblRpbWluZzo6QWZ0ZXJMYXVuY2gpOwogICAgICAgICAgICAgaWYgKCFhZGRp
dGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUpIHsKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRl
IGNvbS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQgc2FuZGJveCBleHRlbnNpb24iKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291
cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAg
bV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uYWRkKGlkZW50aWZpZXIpOwogICAgICAg
ICBpZiAobV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uc2l6ZSgpID09IDEpIHsKICAg
ICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGVGb3JUQ0NEOwotICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tl
bigpKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX2Nvbm5lY3Rpb24t
PmdldEF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvblRpbWlu
Zzo6QWZ0ZXJMYXVuY2gpKQogICAgICAgICAgICAgICAgIGhhbmRsZUZvclRDQ0QgPSBXVEZNb3Zl
KCpoYW5kbGUpOwogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZv
ck1pY3JvcGhvbmU7CiAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1p
Y3JvcGhvbmUiX3MpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAko
cmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyAr
MjkxLDcgQEAKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9u
Rm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFnZSkpIHsKLSAgICAgICAgICAgIGlmIChh
dXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCkt
PmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRj
Y2QiX3MsIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCksIFNh
bmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkFmdGVyTGF1bmNoKSkKICAg
ICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZNb3ZlKCpjcmVhdGVkSGFuZGxlKTsKICAgICAgICAg
ICAgIG1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEID0gdHJ1ZTsKICAgICAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTMg
KzExNCwxNCBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgYXV0byBhdWRpdFRva2VuID0gcHJvY2Vzcy5jb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4o
KTsKICAgICAgICAgICAgIGlmIChuZWVkc0FwcGxlQ2FtZXJhU2FuZGJveEV4dGVuc2lvbikgewot
ICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0
KSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRU
b2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6U2FuZGJveEV4dGVuc2lvblRpbWluZzo6QWZ0ZXJMYXVu
Y2gpKSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBX
VEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5k
KGFwcGxlQ2FtZXJhU2VydmljZVBhdGgpOwogICAgICAgICAgICAgICAgIH0KICNpZiBIQVZFKEFE
RElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICAgICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRp
dGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgc3RkOjpudWxsb3B0KSkgeworICAgICAgICAg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIGF1ZGl0VG9rZW4s
IFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkFmdGVyTGF1bmNoKSkg
ewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVzWy0tZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAgaWRzLnVuY2hlY2tlZEFwcGVuZChhZGRp
dGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyOTI5NzUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yODg1LDkgKzI4ODUsOSBAQAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBib29sIGV2
ZW50TWF5U3RhcnREcmFnID0gIW1fY3VycmVudERyYWdPcGVyYXRpb24gJiYgZXZlbnRUeXBlID09
IFdlYkV2ZW50OjpNb3VzZU1vdmUgJiYgZXZlbnQuYnV0dG9uKCkgIT0gV2ViTW91c2VFdmVudDo6
QnV0dG9uOjpOb0J1dHRvbjsKICAgICBpZiAoZXZlbnRNYXlTdGFydERyYWcpCi0gICAgICAgIHNh
bmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2Vydmlj
ZXMuc3RvcmUiX3MgfSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBw
bGUuaWNvbnNlcnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJfcyB9LCBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9u
OjpTYW5kYm94RXh0ZW5zaW9uVGltaW5nOjpBZnRlckxhdW5jaCk7CiAjZW5kaWYKLSAgICAKKwog
ICAgIExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChx
dWV1ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21v
dXNlRXZlbnRRdWV1ZS5zaXplKCkpOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNl
RXZlbnQoZXZlbnQsIHNhbmRib3hFeHRlbnNpb25zKSk7CiB9CkBAIC03MjU2LDExICs3MjU2LDEy
IEBACiAjZW5kaWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uOworICAg
IGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2Vu
KCk7CiAjaWYgSEFWRShGUk9OVEJPQVJEX1NZU1RFTV9BUFBfU0VSVklDRVMpCi0gICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkp
CisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIGF1
ZGl0VG9rZW4pKQogICAgICAgICBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uID0g
V1RGTW92ZSgqaGFuZGxlKTsKICNlbmRpZgotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2Vydmlj
ZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJf
cywgYXVkaXRUb2tlbikpCiAgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBX
VEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3Bs
YXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0
YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzg0LDEyICs4Mzg1LDEyIEBACiAgICAgICAg
IHx8ICFwcmVmZXJlbmNlcygpLnVzZUdQVVByb2Nlc3NGb3JDYW52YXNSZW5kZXJpbmdFbmFibGVk
KCkKICAgICAgICAgfHwgIXByZWZlcmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvcldlYkdMRW5hYmxl
ZCgpKSB7CiAgICAgICAgIHBhcmFtZXRlcnMuZ3B1SU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKGdwdUlP
S2l0Q2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwotICAgICAgICBwYXJhbWV0ZXJzLmdwdU1hY2hF
eHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoZ3B1TWFjaFNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRl
cnMuZ3B1TWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cChncHVNYWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0LCBTYW5kYm94
RXh0ZW5zaW9uOjpTYW5kYm94RXh0ZW5zaW9uVGltaW5nOjpCZWZvcmVMYXVuY2gpOwogICAgIH0K
ICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgaWYgKHByZWZlcmVu
Y2VzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkKLSAgICAgICAgcGFyYW1ldGVy
cy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gZm9udGRNYWNoRXh0
ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRlbnNpb25UaW1pbmc6OkJl
Zm9yZUxhdW5jaCk7CiAjZW5kaWYKICNpZiBIQVZFKEFQUF9BQ0NFTlRfQ09MT1JTKQogICAgIHBh
cmFtZXRlcnMuYWNjZW50Q29sb3IgPSBwYWdlQ2xpZW50KCkuYWNjZW50Q29sb3IoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjY0Myw3ICsyNjQzLDcgQEAKICAgICBzdGF0aWMgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZT4gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhXZWJQcm9j
ZXNzUHJveHkmKTsKICNlbmRpZgogCi0gICAgc3RhdGljIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKTsKKyAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246OlNhbmRib3hFeHRl
bnNpb25UaW1pbmcpOwogCiAgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0
b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JTdGF0
ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI0Niw2ICsyMjQ2LDggQEAK
IAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5
NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUx
NkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2
NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJ
CUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGll
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1
M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAq
LzsgfTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYw
MDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlF
MzZGRjAwNDI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIx
QSAvKiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsKIAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8q
IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9j
a0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVB
RkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBG
ODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAw
NDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAq
LzsgfTsKQEAgLTcwMjksOSArNzAzMSwxMCBAQAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0
NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7
IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVz
dFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBw
b3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZG
MDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2ht
ZW50RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2
NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUy
MUEgLyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMu
c2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZD
MCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9
IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQw
MDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
NzgwNyw3ICs3ODEwLDcgQEAKIAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICov
LAogCQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJ
CTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2
MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYz
NDAwNEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJCQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8q
IFdlYkdQVSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEg
Ki8sCiAJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLApAQCAtMTM1MzgsNiAr
MTM1NDEsMTUgQEAKIAkJCW5hbWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJF
MjFBIC8qIHByZWZlcmVuY2VzLnNiICovLAorCQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAv
KiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3
RjBEQiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTQ0NDYsNiArMTQ0NTgsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQx
Mjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2Fu
ZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIz
MDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNj
cm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcx
MTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4g
SGVhZGVycyAqLywKQEAgLTE1Nzg3LDYgKzE1ODAwLDcgQEAKIAkJCQk2QkU5NjlDMTFFNTRENDUy
MDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCThE
QzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNv
dXJjZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNi
IGluIFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJy
b3dzaW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1
LDYgKzQ1NSwxMSBAQAogCiBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7Cisg
ICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5q
ZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRC
dW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwogI2lmIEhBVkUoU0FOREJPWF9T
VEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1lYW50IHRvIGFjdHVhbGx5IHJl
YWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRyaWdnZXIgYSBzYW5kYm94IHJ1
bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCB3aWxsIHRvZ2dsZSBh
IHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIFdlYkNvbnRlbnQgcHJv
Y2VzcwpAQCAtNDYyLDExICs0NjcsNiBAQAogICAgIENGUHJlZmVyZW5jZXNHZXRBcHBJbnRlZ2Vy
VmFsdWUoQ0ZTVFIoImtleSIpLCBDRlNUUigiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Lkxh
dW5jaCIpLCBudWxscHRyKTsKICNlbmRpZgogCi0gICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9w
dFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Ci0KLSAgICBp
ZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdl
LnB0cigpKTsKLQogICAgIHJldHVybiBwYWdlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAy
OTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Mu
c2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIsNDAgQEAKICNlbmRpZgogCiAj
aWYgSEFWRShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlmIChhbmQgKGVxdWFsPyAocGFy
YW0gIkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFj
aC1ib290c3RyYXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQor
ICAgIChtZXNzYWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisKKyhkZWZpbmUg
KGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3Rz
dHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKKyAgICAgICAgICAgIChkZW55IG1h
Y2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCisgICAgICAgICAgICAoYWxsb3cgbWFj
aC1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01F
U1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXApKQogI2lmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCi0gICAgICAgICAgICAoZGVu
eSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93
IG1hY2gtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorI2lmIEhBVkUoU0FOREJPWF9TVEFU
RV9GTEFHUykKKyAgICAoYmVnaW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgt
ZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFn
cyIpCisgICAgICAgICAgICAoZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAgICAgOzsgZWxzZQor
ICAgICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAg
ICAod2l0aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAg
IChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQor
ICAgICAgICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAg
ICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCiAjZWxzZQorICAg
IChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisjZW5kaWYgLy8gSEFWRShTQU5E
Qk9YX1NUQVRFX0ZMQUdTKQorI2Vsc2UKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAg
ICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1z
ZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2Vu
ZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisg
ICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5k
aWYKLSAgICAgICAgICAgICAgICAyMDQKLSAgICAgICAgICAgICAgICAyMDcKLSAgICAgICAgICAg
ICAgICAzMDEKLSAgICAgICAgICAgICAgICA3MTEKLSAgICAgICAgICAgICAgICA4MDAKLSAgICAg
ICAgICAgICAgICA4MDQKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAg
ICkKLSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9N
RVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkK
ICAgICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9pbnQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458286</attachid>
            <date>2022-04-25 11:08:56 -0700</date>
            <delta_ts>2022-04-25 12:10:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220425110855.patch</filename>
            <type>text/plain</type>
            <size>46266</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAor
MjAyMi0wNC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAg
ICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBj
b250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAg
ZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUg
aXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAg
ICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcg
dGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAg
ICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5l
dyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwK
KyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlz
IHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0
ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25z
IGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5
cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRv
IGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1p
c3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4g
dG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRv
a2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZl
IG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFj
aCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAg
KGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFs
bG93IHhwYy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChy
ZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQ
cm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNj
YWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24g
bWFjX3Byb2Nlc3Nfd2ViY29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zMTgsNiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhj
ZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZl
cmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUt
ZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fu
b25pY2FsaXplLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBP
cHRpb25zIDogdWludDhfdCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAg
ICAgICAgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkx
LDkgKzk2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMs
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9w
dGlvbnMsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZl
Y3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNp
b24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMCBAQAogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2luY2x1ZGUgIlNhbmRib3hTdGF0ZVZh
cmlhYmxlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94
RXh0ZW5zaW9uSW1wbCB7CkBAIC0zMTYsNyArMzIwLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVy
YWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRp
b25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vydmlj
ZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFw
T3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4g
c3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQo
IWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpAQCAtMzI3LDIxICszMzEsMzEgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAg
Ly8gV2hlbiBsYXVuY2hkIGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFu
dWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8v
IFRoaXMgaXMgZG9uZSBieSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNz
IGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJs
b2NraW5nIGxhdW5jaGQgaXMgZG9uZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFi
bGUuCisgICAgaWYgKG1hY2hCb290c3RyYXBPcHRpb25zID09IEVuYWJsZU1hY2hCb290c3RyYXAp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXVkaXRUb2tlbik7CisgICAgICAgIHNhbmRib3hf
ZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRs
ZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJh
bCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhhbmRs
ZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3Mp
OworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRU
b2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2Up
IC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0
aW9ucywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGhh
bmRsZTsKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBz
ZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25T
ZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNp
emUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVk
aXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzKTsKIH0KIAogYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVW
YXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94
L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RS
QVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaQogICAgICAgICBtX3NvdXJjZXNOZWVk
aW5nU2FuZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJj
ZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tl
bigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJv
b3RzdHJhcCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9w
aG9uZTsKICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9u
ZSJfcykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lv
biAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVk
VENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2Qi
X3MsIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAg
ICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2Vzcygp
LmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNy
ZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZv
clRDQ0QgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXI6OndpbGxDcmVhdGUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAg
ICAgICAgaWYgKG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5k
Ym94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBw
bGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJ
T05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZN
b3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFk
ZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4ODUsOSArMjg4NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4
dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJh
ZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91
c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0
b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9u
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5h
cHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0s
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNl
cyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0
VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1h
Y2hCb290c3RyYXApOwogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJ
UHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VF
dmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQpAQCAtNzI1NiwxMSArNzI1NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuCiAjZW5kaWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94
RXh0ZW5zaW9uOworICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vzcy0+YXVkaXRUb2tlbigp
OwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQor
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRp
dFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFj
aEJvb3RzdHJhcCkpCiAgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24g
PSBXVEZNb3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2
aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2Vz
Il9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6
RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMs
IGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQ
Qzo6RGF0YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBp
Y29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzg0LDEyICs4Mzg1LDEyIEBAIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICAgICAgfHwgIXByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAg
ICB8fCAhcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKICAg
ICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2Vz
KCksIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVN
YWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVNYWNo
RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKGdwdU1hY2hTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246
Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIH0K
ICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgaWYgKHByZWZlcmVu
Y2VzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkKLSAgICAgICAgcGFyYW1ldGVy
cy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gZm9udGRNYWNoRXh0
ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05v
dEVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9S
UykKICAgICBwYXJhbWV0ZXJzLmFjY2VudENvbG9yID0gcGFnZUNsaWVudCgpLmFjY2VudENvbG9y
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2NDMsNyArMjY0Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJv
eEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCk7CisgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyk7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUVkaXRv
clN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3Rh
dGUmIG5ld0VkaXRvclN0YXRlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KICAgICBDYXB0aXZlUG9ydGFsTW9k
ZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGU7
IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbigpIGNvbnN0OworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQs
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxMSArMjAxLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWUKICNpZiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBsb2FkUGFyYW1ldGVycy5u
ZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBjcmVhdGVOZXR3b3JrRXh0
ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBhdXRvIGF1ZGl0VG9rZW4gPSBwcm9jZXNzLmF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIXByb2Nl
c3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2YWx1
YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9z
LCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZp
Y2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIGF1ZGl0VG9rZW4sIFNh
bmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFw
KSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFn
ZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEkKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1v
YmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9z
LCBwcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFw
T3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIG1vYmlsZUFzc2V0SGFuZGxl
VjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRsZVYyKSwg
MCk7CiB9CkBAIC04NTMsMTMgKzg1NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmV2b2tlQWNj
ZXNzVG9Bc3NldFNlCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJl
Z2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdp
c3RyeShmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpN
YWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpLCAwKTsKIH0KIAotU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKCkKK1NhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4
dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNo
Qm9vdHN0cmFwT3B0aW9ucykKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1h
Y2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51
bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgcHJvY2VzcygpLmF1ZGl0VG9r
ZW4oKSwgbWFjaEJvb3RzdHJhcE9wdGlvbnMpKQogICAgICAgICBmb250TWFjaEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgcmV0dXJuIGZvbnRNYWNoRXh0ZW5zaW9uSGFu
ZGxlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
VwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IGlmIChXZWJQcm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCkpCisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3Rz
dHJhcCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCkBAIC0zOTAs
MTIgKzM5MCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAg
ICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21w
aWxlclNlcnZpY2UoKSkKLSAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
V2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZp
Y2VzKCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFpc0Z1bGxXZWJCcm93c2VyKCkpCi0gICAgICAgIHBhcmFtZXRl
cnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2Vz
KCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6
OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFz
QUdYQ29tcGlsZXJTZXJ2aWNlKCkpCiAgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0
ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENs
YXNzRXh0ZW5zaW9ucyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgc3RkOjpudWxsb3B0
KTsKQEAgLTQxNSwyMCArNDE1LDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBpZiAoIV9NR0NhY2hlVmFsaWQoKSkgewotICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUubW9iaWxlZ2VzdGFsdC54cGMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5z
aW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYg
KGF1dG8gbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNl
cnZpY2VzZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBsYXVuY2hTZXJ2aWNlc0V4
dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBzdGQ6Om51bGxv
cHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1h
Y2hCb290c3RyYXApKQogICAgICAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CiAKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGlmIChNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKSkgewotICAgICAgICBpZiAo
YXV0byB0cnVzdGRFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudHJ1c3RkLmFnZW50Il9zLCBzdGQ6Om51bGxvcHQp
KQorICAgICAgICBpZiAoYXV0byB0cnVzdGRFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudHJ1c3RkLmFnZW50Il9z
LCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpE
b05vdEVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgcGFyYW1ldGVycy50cnVzdGRF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCp0cnVzdGRFeHRlbnNpb25IYW5kbGUpOwogICAgICAg
ICBwYXJhbWV0ZXJzLnJlc3RyaWN0SW1hZ2VBbmRWaWRlb0RlY29kZXJzID0gdHJ1ZTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpCiAK
ICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGVBcnJheTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1z
eXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3Mg
fSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51
bGxvcHQpOworICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9z
LCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgYXVkaXRUb2tl
bigpIDogc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9u
czo6RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNpemUoKSA9
PSAyKTsKICNlbmRpZgogCkBAIC0zMjUsNCArMzI1LDEyIEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5
OjptZXNzYWdlU291cmNlSXNWYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBXZWJQcm9jZXNzUHJveHk6OmF1ZGl0VG9rZW4oKSBjb25zdAorewor
ICAgIGlmICghaGFzQ29ubmVjdGlvbigpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIAorICAgIHJldHVybiBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKK30KKwogfQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5j
cHAJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQ
cm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBHUFVQ
cm9jZXNzUHJveHk6OkdQVVByb2Nlc3NQcm94eSgpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKSkg
ewotICAgICAgICBwYXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hD
b21waWxlclNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwgc3RkOjpu
dWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFi
bGVNYWNoQm9vdHN0cmFwKTsKICAgICAgICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NF
eHRlbnNpb25zKFdlYkNvcmU6OmFneENvbXBpbGVyQ2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwog
ICAgIH0KIAogICAgIGlmICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJp
KCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZp
Y2VzKCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRl
bnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAobm9uQnJvd3NlclNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6
TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAjZW5kaWYK
IAogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZUdQVVByb2Nlc3NQYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
OwpAQCAtMjEzLDEzICsyMTMsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGFkZENhbWVyYVNhbmRi
b3hFeHRlbgogICAgIH0KICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBpZiAoc2hvdWxk
Q3JlYXRlQXBwbGVDYW1lcmFTZXJ2aWNlU2FuZGJveEV4dGVuc2lvbigpKSB7Ci0gICAgICAgICAg
ICBhdXRvIGFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxl
Y2FtZXJhZCJfcywgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gYXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51
bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJs
ZU1hY2hCb290c3RyYXApOwogICAgICAgICAgICAgaWYgKCFhcHBsZUNhbWVyYVNlcnZpY2VQYXRo
U2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5k
Ym94IGV4dGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICNpZiBIQVZFKEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAg
ICAgICBhdXRvIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBh
dXRvIGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5hcHBsZWgxM2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFj
aEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgICAgICAg
ICBpZiAoIWFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhh
bmRsZSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJs
ZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlaDEzY2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MywyMiArMjUzLDIyIEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBhZGREaXNwbGF5Q2FwdHVyZVNhbmQKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnJlcGxheWtpdC5zaGFyaW5nc2Vzc2lvbi5u
b3RpZmljYXRpb24iX3MsICphdWRpdFRva2VuKTsKKyAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBsYXlraXQu
c2hhcmluZ3Nlc3Npb24ubm90aWZpY2F0aW9uIl9zLCAqYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVu
c2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAg
ICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBleHRlbnNpb25zLmFw
cGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKIAotICAgIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBsYXlraXQuc2hhcmluZ3Nl
c3Npb24iX3MsICphdWRpdFRva2VuKTsKKyAgICBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUucmVwbGF5a2l0LnNoYXJpbmdzZXNz
aW9uIl9zLCAqYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsK
IAotICAgIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS50Y2NkLnN5c3RlbSJfcywgKmF1ZGl0VG9rZW4pOworICAgIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50
Y2NkLnN5c3RlbSJfcywgKmF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3Ry
YXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIGlmICghaGFuZGxlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqaGFu
ZGxlKSk7CiAKLSAgICBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUucmVwbGF5ZCJfcywgKmF1ZGl0VG9rZW4pOworICAgIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5yZXBsYXlkIl9zLCAqYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJh
cE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5k
bGUpKTsKQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWRkRGlzcGxheUNh
cHR1cmVTYW5kCiAjaWYgUExBVEZPUk0oSU9TKQogc3RhdGljIGlubGluZSBib29sIGFkZFRDQ0RT
YW5kYm94RXh0ZW5zaW9uKFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNp
b25zKQogewotICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudGNjZCJfcywgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9v
dHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICBpZiAoIWhhbmRs
ZSkgewogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRl
IGNvbS5hcHBsZS50Y2NkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI0Niw2ICsyMjQ2LDggQEAKIAkJ
RTFEMjZBNTMxNzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0
RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFF
MDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUw
MDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUx
RUU1M0UzMTFGOENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RD
MTFGOENGOUYwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsg
fTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEy
N0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZG
RjAwNDI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAv
KiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsKIAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMw
IC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhG
RTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAw
Rjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsg
fTsKQEAgLTcwMjksOSArNzAzMSwxMCBAQAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbkluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJD
NjAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBh
dGggPSBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1
cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0
LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2
RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50
RWxlbWVudENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEg
LyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAv
KiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5l
dHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25V
cGRhdGVQcm92aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgw
Nyw3ICs3ODEwLDcgQEAKIAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAog
CQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJE
MkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJG
RjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAw
NEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJCQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdl
YkdQVSAqLywKIAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8s
CiAJCQkJMTE4NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLApAQCAtMTM1MzgsNiArMTM1
NDEsMTUgQEAKIAkJCW5hbWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFB
IC8qIHByZWZlcmVuY2VzLnNiICovLAorCQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBT
YW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBE
QiAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTQ0NDYsNiArMTQ0NTgsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2
RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJv
eFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIzMDA4
RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE1Nzg3LDYgKzE1ODAwLDcgQEAKIAkJCQk2QkU5NjlDMTFFNTRENDUyMDA4
Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCThEQzJF
RjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGlu
IFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dz
aW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI5Mjk3NSkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29y
a2luZyBjb3B5KQpAQCAtMjA1MiwyNyArMjA1Miw0MCBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNB
TkRCT1hfTUVTU0FHRV9GSUxURVJJTkcpCi0oaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxF
X1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJh
cCkpCisoZGVmaW5lIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3Nh
Z2UtbnVtYmVyIDIwNCAyMDcgMzAxIDcxMSA4MDAgODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFj
aC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCiAgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAg
ICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTIwMDAwCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0
aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kIChtZXNz
YWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAg
ICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCisKKyhpZiAoYW5k
IChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAo
ZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEyMDAwMAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICAoYmVn
aW4KKyAgICAgICAgKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgICAgICAgICAo
ZGVueSBtYWNoLWJvb3RzdHJhcCkKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93
LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAg
ICAgICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3Rh
dGUtZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChz
dGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFj
aC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCisjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3Rz
dHJhcC13aXRoLWZpbHRlcikpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQog
I2Vsc2UKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2Ut
ZmlsdGVyCiAgICAgICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRy
eSkpCi0gICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIK
KyAgICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1h
Y2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAg
ICAyMDQKLSAgICAgICAgICAgICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAg
ICAgICAgICA3MTEKLSAgICAgICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChp
ZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZ
RVMiKSAoZGVmaW5lZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1r
ZXJuZWwtZW5kcG9pbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDYgKzQ1NSwxMSBA
QCBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkCiAKIFJlZjxXZWJQYWdl
PiBXZWJQYWdlOjpjcmVhdGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBhdXRvIHBhZ2UgPSBhZG9wdFJlZigqbmV3
IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsK
KwogI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90
IG1lYW50IHRvIGFjdHVhbGx5IHJlYWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRv
IHRyaWdnZXIgYSBzYW5kYm94IHJ1bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNz
LCB3aGljaCB3aWxsIHRvZ2dsZSBhIHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUg
aWYgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcwpAQCAtNDYyLDExICs0NjcsNiBAQCBSZWY8V2ViUGFn
ZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmCiAgICAgQ0ZQcmVmZXJlbmNlc0dldEFwcElu
dGVnZXJWYWx1ZShDRlNUUigia2V5IiksIENGU1RSKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRl
bnQuTGF1bmNoIiksIG51bGxwdHIpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUGFnZT4gcGFnZSA9
IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKLQot
ICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdl
KHBhZ2UucHRyKCkpOwotCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458292</attachid>
            <date>2022-04-25 12:10:13 -0700</date>
            <delta_ts>2022-04-25 12:57:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220425121011.patch</filename>
            <type>text/plain</type>
            <size>46251</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAor
MjAyMi0wNC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAg
ICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBj
b250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAg
ZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUg
aXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAg
ICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcg
dGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAg
ICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5l
dyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwK
KyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlz
IHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0
ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25z
IGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5
cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRv
IGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1p
c3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4g
dG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRv
a2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZl
IG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFj
aCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAg
KGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFs
bG93IHhwYy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChy
ZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQ
cm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNj
YWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24g
bWFjX3Byb2Nlc3Nfd2ViY29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zMTgsNiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhj
ZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZl
cmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUt
ZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fu
b25pY2FsaXplLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBP
cHRpb25zIDogdWludDhfdCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAg
ICAgICAgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkx
LDkgKzk2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMs
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9w
dGlvbnMsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZl
Y3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNp
b24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMCBAQAogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2luY2x1ZGUgIlNhbmRib3hTdGF0ZVZh
cmlhYmxlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94
RXh0ZW5zaW9uSW1wbCB7CkBAIC0zMTYsNyArMzIwLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVy
YWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRp
b25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vydmlj
ZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFw
T3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4g
c3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQo
IWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpAQCAtMzI3LDIxICszMzEsMzEgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAg
Ly8gV2hlbiBsYXVuY2hkIGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFu
dWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8v
IFRoaXMgaXMgZG9uZSBieSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNz
IGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJs
b2NraW5nIGxhdW5jaGQgaXMgZG9uZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFi
bGUuCisgICAgaWYgKG1hY2hCb290c3RyYXBPcHRpb25zID09IEVuYWJsZU1hY2hCb290c3RyYXAp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXVkaXRUb2tlbik7CisgICAgICAgIHNhbmRib3hf
ZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRs
ZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJh
bCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhhbmRs
ZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3Mp
OworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRU
b2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2Up
IC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0
aW9ucywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGhh
bmRsZTsKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBz
ZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25T
ZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNp
emUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVk
aXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzKTsKIH0KIAogYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVW
YXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94
L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RS
QVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaQogICAgICAgICBtX3NvdXJjZXNOZWVk
aW5nU2FuZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJj
ZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tl
bigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJv
b3RzdHJhcCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9w
aG9uZTsKICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9u
ZSJfcykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lv
biAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVk
VENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2Qi
X3MsIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAg
ICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2Vzcygp
LmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNy
ZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZv
clRDQ0QgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXI6OndpbGxDcmVhdGUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAg
ICAgICAgaWYgKG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5k
Ym94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBw
bGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJ
T05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZN
b3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFk
ZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4ODUsOSArMjg4NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4
dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJh
ZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91
c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0
b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9u
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5h
cHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0s
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNl
cyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0
VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1h
Y2hCb290c3RyYXApOwogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJ
UHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VF
dmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQpAQCAtNzI1NiwxMSArNzI1NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuCiAjZW5kaWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94
RXh0ZW5zaW9uOworICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vzcy0+YXVkaXRUb2tlbigp
OwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQor
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRp
dFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFj
aEJvb3RzdHJhcCkpCiAgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24g
PSBXVEZNb3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2
aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2Vz
Il9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6
RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMs
IGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQ
Qzo6RGF0YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBp
Y29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzg0LDEyICs4Mzg1LDEyIEBAIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICAgICAgfHwgIXByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAg
ICB8fCAhcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKICAg
ICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2Vz
KCksIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVN
YWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVNYWNo
RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKGdwdU1hY2hTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246
Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIH0K
ICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgaWYgKHByZWZlcmVu
Y2VzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkKLSAgICAgICAgcGFyYW1ldGVy
cy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gZm9udGRNYWNoRXh0
ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05v
dEVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9S
UykKICAgICBwYXJhbWV0ZXJzLmFjY2VudENvbG9yID0gcGFnZUNsaWVudCgpLmFjY2VudENvbG9y
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2NDMsNyArMjY0Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJv
eEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCk7CisgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyk7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUVkaXRv
clN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3Rh
dGUmIG5ld0VkaXRvclN0YXRlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KICAgICBDYXB0aXZlUG9ydGFsTW9k
ZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGU7
IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbigpIGNvbnN0OworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQs
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxMSArMjAxLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWUKICNpZiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBsb2FkUGFyYW1ldGVycy5u
ZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBjcmVhdGVOZXR3b3JrRXh0
ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBhdXRvIGF1ZGl0VG9rZW4gPSBwcm9jZXNzLmF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIXByb2Nl
c3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2YWx1
YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9z
LCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZp
Y2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIGF1ZGl0VG9rZW4sIFNh
bmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFw
KSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFn
ZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEkKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1v
YmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9z
LCBwcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFw
T3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIG1vYmlsZUFzc2V0SGFuZGxl
VjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRsZVYyKSwg
MCk7CiB9CkBAIC04NTMsMTMgKzg1NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmV2b2tlQWNj
ZXNzVG9Bc3NldFNlCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJl
Z2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdp
c3RyeShmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpN
YWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpLCAwKTsKIH0KIAotU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKCkKK1NhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4
dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNo
Qm9vdHN0cmFwT3B0aW9ucykKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1h
Y2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51
bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgcHJvY2VzcygpLmF1ZGl0VG9r
ZW4oKSwgbWFjaEJvb3RzdHJhcE9wdGlvbnMpKQogICAgICAgICBmb250TWFjaEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgcmV0dXJuIGZvbnRNYWNoRXh0ZW5zaW9uSGFu
ZGxlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
VwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IGlmIChXZWJQcm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCkpCisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3Rz
dHJhcCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCkBAIC0zOTAs
MTIgKzM5MCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAg
ICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21w
aWxlclNlcnZpY2UoKSkKLSAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
V2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZp
Y2VzKCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgaWYgKCFpc0Z1bGxXZWJCcm93c2VyKCkpCi0gICAgICAgIHBhcmFtZXRl
cnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2Vz
KCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6
OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAKICAgICBpZiAoV2ViQ29yZTo6ZGV2aWNlSGFz
QUdYQ29tcGlsZXJTZXJ2aWNlKCkpCiAgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY0lPS2l0RXh0
ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JJT0tpdENs
YXNzRXh0ZW5zaW9ucyhXZWJDb3JlOjphZ3hDb21waWxlckNsYXNzZXMoKSwgc3RkOjpudWxsb3B0
KTsKQEAgLTQxNSwyMCArNDE1LDIwIEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZVcKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKICAgICBpZiAoIV9NR0NhY2hlVmFsaWQoKSkgewotICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUubW9iaWxlZ2VzdGFsdC54cGMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5tb2JpbGVnZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5z
aW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAg
ICAgICAgICAgIHBhcmFtZXRlcnMubW9iaWxlR2VzdGFsdEV4dGVuc2lvbkhhbmRsZSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgaWYg
KGF1dG8gbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuY29yZXNlcnZpY2VzLmxhdW5jaHNl
cnZpY2VzZCJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBsYXVuY2hTZXJ2aWNlc0V4
dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9zLCBzdGQ6Om51bGxv
cHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1h
Y2hCb290c3RyYXApKQogICAgICAgICBwYXJhbWV0ZXJzLmxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9u
SGFuZGxlID0gV1RGTW92ZSgqbGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUpOwogI2VuZGlm
CiAKICNpZiBIQVZFKFZJREVPX1JFU1RSSUNURURfREVDT0RJTkcpCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGlmIChNYWNBcHBsaWNhdGlvbjo6aXNBcHBsZU1haWwoKSkgewotICAgICAgICBpZiAo
YXV0byB0cnVzdGRFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudHJ1c3RkLmFnZW50Il9zLCBzdGQ6Om51bGxvcHQp
KQorICAgICAgICBpZiAoYXV0byB0cnVzdGRFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudHJ1c3RkLmFnZW50Il9z
LCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpE
b05vdEVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgcGFyYW1ldGVycy50cnVzdGRF
eHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCp0cnVzdGRFeHRlbnNpb25IYW5kbGUpOwogICAgICAg
ICBwYXJhbWV0ZXJzLnJlc3RyaWN0SW1hZ2VBbmRWaWRlb0RlY29kZXJzID0gdHJ1ZTsKICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2Nv
YS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpCiAK
ICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGVBcnJheTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1z
eXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3Mg
fSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51
bGxvcHQpOworICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9z
LCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgYXVkaXRUb2tl
bigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJv
b3RzdHJhcCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNpemUoKSA9PSAyKTsKICNlbmRpZgog
CkBAIC0zMjUsNCArMzI1LDEyIEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlU291cmNl
SXNWYWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBXZWJQcm9jZXNzUHJveHk6OmF1ZGl0VG9rZW4oKSBjb25zdAoreworICAgIGlmICghaGFzQ29u
bmVjdGlvbigpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAorICAgIHJldHVy
biBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKTsKK30KKwogfQpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI5
Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsMTIgKzE3MCwxMiBAQCBHUFVQcm9jZXNzUHJveHk6OkdQ
VVByb2Nlc3NQcm94eSgpCiAjZW5kaWYKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKSkgewotICAgICAgICBwYXJh
bWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZpY2Vz
KCksIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuY29tcGlsZXJTZXJ2aWNlRXh0
ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9v
a3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0LCBTYW5kYm94
RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFw
KTsKICAgICAgICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5kbGVzID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNpb25zKFdlYkNv
cmU6OmFneENvbXBpbGVyQ2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwogICAgIH0KIAogICAgIGlm
ICghV2ViQ29yZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCi0gICAgICAgIHBh
cmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNlcnZpY2VzKCksIHN0ZDo6bnVs
bG9wdCk7CisgICAgICAgIHBhcmFtZXRlcnMuZHluYW1pY01hY2hFeHRlbnNpb25IYW5kbGVzID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAobm9uQnJvd3NlclNl
cnZpY2VzKCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9w
dGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAjZW5kaWYKIAogICAgIHBsYXRmb3Jt
SW5pdGlhbGl6ZUdQVVByb2Nlc3NQYXJhbWV0ZXJzKHBhcmFtZXRlcnMpOwpAQCAtMjEzLDEzICsy
MTMsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGFkZENhbWVyYVNhbmRib3hFeHRlbgogICAgIH0K
ICNpZiBIQVZFKEFVRElUX1RPS0VOKQogICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlQXBwbGVDYW1l
cmFTZXJ2aWNlU2FuZGJveEV4dGVuc2lvbigpKSB7Ci0gICAgICAgICAgICBhdXRvIGFwcGxlQ2Ft
ZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlY2FtZXJhZCJfcywgc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aFNhbmRi
b3hFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hF
eHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXAp
OwogICAgICAgICAgICAgaWYgKCFhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSkgewogICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVu
YWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLmFwcGxlY2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICNpZiBIQVZF
KEFERElUSU9OQUxfQVBQTEVfQ0FNRVJBX1NFUlZJQ0UpCi0gICAgICAgICAgICBhdXRvIGFkZGl0
aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWgx
M2NhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBhdXRvIGFkZGl0aW9uYWxB
cHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5hcHBsZWgxM2NhbWVy
YWQiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgICAgICAgICBpZiAoIWFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lvbkhhbmRsZSkgewogICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29t
LmFwcGxlLmFwcGxlaDEzY2FtZXJhZCBzYW5kYm94IGV4dGVuc2lvbiIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTI1MywyMiArMjUzLDIyIEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBhZGREaXNwbGF5Q2FwdHVyZVNhbmQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLnJlcGxheWtpdC5zaGFyaW5nc2Vzc2lvbi5ub3RpZmljYXRpb24iX3Ms
ICphdWRpdFRva2VuKTsKKyAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBsYXlraXQuc2hhcmluZ3Nlc3Npb24u
bm90aWZpY2F0aW9uIl9zLCAqYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3Rz
dHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpo
YW5kbGUpKTsKIAotICAgIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBsYXlraXQuc2hhcmluZ3Nlc3Npb24iX3MsICphdWRp
dFRva2VuKTsKKyAgICBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUucmVwbGF5a2l0LnNoYXJpbmdzZXNzaW9uIl9zLCAqYXVkaXRU
b2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxl
TWFjaEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKIAotICAgIGhhbmRsZSA9
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50
Y2NkLnN5c3RlbSJfcywgKmF1ZGl0VG9rZW4pOworICAgIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkLnN5c3RlbSJfcywg
KmF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05v
dEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIGlmICghaGFuZGxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgZXh0ZW5zaW9ucy5hcHBlbmQoV1RGTW92ZSgqaGFuZGxlKSk7CiAKLSAgICBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUucmVwbGF5ZCJfcywgKmF1ZGl0VG9rZW4pOworICAgIGhhbmRsZSA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBsYXlkIl9zLCAq
YXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90
RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKQEAgLTI4MCw3
ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWRkRGlzcGxheUNhcHR1cmVTYW5kCiAjaWYg
UExBVEZPUk0oSU9TKQogc3RhdGljIGlubGluZSBib29sIGFkZFRDQ0RTYW5kYm94RXh0ZW5zaW9u
KFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiBleHRlbnNpb25zKQogewotICAgIGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLnRjY2QiX3MsIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJf
cywgc3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6
RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICBpZiAoIWhhbmRsZSkgewogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihXZWJSVEMsICJVbmFibGUgdG8gY3JlYXRlIGNvbS5hcHBsZS50Y2Nk
IHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjI0Niw2ICsyMjQ2LDggQEAKIAkJRTFEMjZBNTMxNzU5NjRE
OTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdl
YkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8q
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5k
Ym94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAw
MENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVF
NCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM2RkYwMDMy
N0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFB
IC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZGRjAwNDI3RjM2RkJEMDA0
QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5z
YiAqLzsgfTsKIAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50Rmls
dGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5h
Z2VyLmNwcCAqLzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNl
T3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRl
dmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKQEAgLTcwMjksOSAr
NzAzMSwxMCBAQAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxp
YldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3Jl
VGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUz
NEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUg
LyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVs
ZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMTI3
RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMu
c2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
V2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFn
ZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJE
ZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVy
UHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzgwNyw3ICs3ODEwLDcgQEAK
IAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJCTUxQUYxQjNEMjcx
RjQ2QTYwMDE1MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYw
MEJCMjVFRCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJGRjAyNkY5MDg2MjAwN0Ix
MTc1IC8qIFNhbmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRi
b3ggKi8sCiAJCQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLywKIAkJCQkx
QUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMTE4NTAyNjAy
NjczQjBEQTAwQTY0MjVFIC8qIFhSICovLApAQCAtMTM1MzgsNiArMTM1NDEsMTUgQEAKIAkJCW5h
bWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMzZGRUZGRTI3
RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2Vz
LnNiICovLAorCQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJp
YWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTQ0NDYsNiArMTQ0NTgs
NyBAQAogCQkJCUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8q
IFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYw
MDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAq
LywKKwkJCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVk
QWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQy
MUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJ
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTE1
Nzg3LDYgKzE1ODAwLDcgQEAKIAkJCQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVBy
ZWRpY3Rpb25fbW9kZWwgaW4gUmVzb3VyY2VzICovLAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4
QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZCMDhFNDMx
RjYwQjI0MDAwNUU1MzEyIC8qIGlPUy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTM2
RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLywK
IAkJCQk1QzhCQzc5NzIxOENCQjQ4MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGlu
IFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFw
cGxlLldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAt
MjA1MiwyNyArMjA1Miw0MCBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNBTkRCT1hfTUVTU0FHRV9G
SUxURVJJTkcpCi0oaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FH
RV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisoZGVmaW5lICht
YWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNCAy
MDcgMzAxIDcxMSA4MDAgODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0
aC1maWx0ZXIpCiAgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNz
YWdlLWZpbHRlcgotI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAw
CiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQot
ICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAg
ICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCisKKyhpZiAoYW5kIChlcXVhbD8gKHBhcmFt
ICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gt
Ym9vdHN0cmFwKSkKKyNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAw
MAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICAoYmVnaW4KKyAgICAgICAgKGlm
IChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNl
Y3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgICAgICAgICAoZGVueSBtYWNoLWJvb3Rz
dHJhcCkKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFw
LXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1
aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29u
dGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFi
bGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0
aC1maWx0ZXIpKSkpCisjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRl
cikpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogI2Vsc2UKKyAgICAoYWxs
b3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAg
ICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAg
ICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChh
bGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1l
c3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAyMDQKLSAgICAgICAg
ICAgICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAgICAgICA3MTEKLSAg
ICAgICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVhbD8g
KHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8g
J21hY2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9pbnQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDYgKzQ1NSwxMSBAQCBERUZJTkVfREVCVUdf
T05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkCiAKIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVh
dGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKIHsKKyAgICBhdXRvIHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlE
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5q
ZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwogI2lmIEhBVkUoU0FO
REJPWF9TVEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1lYW50IHRvIGFjdHVh
bGx5IHJlYWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRyaWdnZXIgYSBzYW5k
Ym94IHJ1bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3aGljaCB3aWxsIHRv
Z2dsZSBhIHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIFdlYkNvbnRl
bnQgcHJvY2VzcwpAQCAtNDYyLDExICs0NjcsNiBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3Jl
YXRlKFBhZ2VJZGVudGlmCiAgICAgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNU
Uigia2V5IiksIENGU1RSKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuTGF1bmNoIiksIG51
bGxwdHIpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKLQotICAgIGlmIChXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOwot
CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458294</attachid>
            <date>2022-04-25 12:57:26 -0700</date>
            <delta_ts>2022-04-25 14:20:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220425125725.patch</filename>
            <type>text/plain</type>
            <size>46241</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAor
MjAyMi0wNC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAg
ICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBj
b250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAg
ZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUg
aXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAg
ICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcg
dGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAg
ICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5l
dyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwK
KyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlz
IHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0
ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25z
IGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5
cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRv
IGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1p
c3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4g
dG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRv
a2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZl
IG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFj
aCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAg
KGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFs
bG93IHhwYy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChy
ZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQ
cm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNj
YWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24g
bWFjX3Byb2Nlc3Nfd2ViY29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zMTgsNiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhj
ZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZl
cmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUt
ZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fu
b25pY2FsaXplLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBP
cHRpb25zIDogdWludDhfdCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAg
ICAgICAgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkx
LDkgKzk2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMs
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9w
dGlvbnMsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZl
Y3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNp
b24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lv
bkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCwxMCBAQAogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2luY2x1ZGUgIlNhbmRib3hTdGF0ZVZh
cmlhYmxlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94
RXh0ZW5zaW9uSW1wbCB7CkBAIC0zMTYsNyArMzIwLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JHZQogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1
dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVy
YWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRp
b25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vydmlj
ZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFw
T3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4g
c3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQo
IWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwpAQCAtMzI3LDIxICszMzEsMzEgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAg
Ly8gV2hlbiBsYXVuY2hkIGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFu
dWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8v
IFRoaXMgaXMgZG9uZSBieSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNz
IGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJs
b2NraW5nIGxhdW5jaGQgaXMgZG9uZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFi
bGUuCisgICAgaWYgKG1hY2hCb290c3RyYXBPcHRpb25zID09IEVuYWJsZU1hY2hCb290c3RyYXAp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoYXVkaXRUb2tlbik7CisgICAgICAgIHNhbmRib3hf
ZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7Cisg
ICAgfQorI2VuZGlmCisKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRv
a2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tl
biwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxG
bGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRs
ZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJh
bCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhhbmRs
ZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3Mp
OworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRU
b2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2Up
IC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0
aW9ucywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGhh
bmRsZTsKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVz
Rm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBz
ZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25T
ZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNp
emUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVk
aXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzKTsKIH0KIAogYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVW
YXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94
L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RS
QVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBT
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaQogICAgICAgICBtX3NvdXJjZXNOZWVk
aW5nU2FuZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJj
ZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tl
bigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJv
b3RzdHJhcCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9w
aG9uZTsKICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9u
ZSJfcykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lv
biAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAg
IGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVk
VENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2Qi
X3MsIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAg
ICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2Vzcygp
LmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNy
ZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZv
clRDQ0QgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01h
bmFnZXI6OndpbGxDcmVhdGUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAg
ICAgICAgaWYgKG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5k
Ym94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkp
IHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1v
dmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBw
bGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJ
T05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZN
b3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFk
ZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI4ODUsOSArMjg4NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4
dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJh
ZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91
c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0
b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9u
cyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5h
cHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0s
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNl
cyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0
VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1h
Y2hCb290c3RyYXApOwogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJ
UHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VF
dmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5z
aW9ucykpOwogfQpAQCAtNzI1NiwxMSArNzI1NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuCiAjZW5kaWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94
RXh0ZW5zaW9uOworICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vzcy0+YXVkaXRUb2tlbigp
OwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQor
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRp
dFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFj
aEJvb3RzdHJhcCkpCiAgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24g
PSBXVEZNb3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2
aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2Vz
Il9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6
RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNp
b24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMs
IGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQ
Qzo6RGF0YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBp
Y29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzg0LDEyICs4Mzg1LDEyIEBAIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjoKICAgICAgICAgfHwgIXByZWZl
cmVuY2VzKCkudXNlR1BVUHJvY2Vzc0ZvckNhbnZhc1JlbmRlcmluZ0VuYWJsZWQoKQogICAgICAg
ICB8fCAhcHJlZmVyZW5jZXMoKS51c2VHUFVQcm9jZXNzRm9yV2ViR0xFbmFibGVkKCkpIHsKICAg
ICAgICAgcGFyYW1ldGVycy5ncHVJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoZ3B1SU9LaXRDbGFzc2Vz
KCksIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIHBhcmFtZXRlcnMuZ3B1TWFjaEV4dGVuc2lvbkhh
bmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChncHVN
YWNoU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5ncHVNYWNo
RXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKGdwdU1hY2hTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246
Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIH0K
ICNlbmRpZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgaWYgKHByZWZlcmVu
Y2VzKCkuc2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkKLSAgICAgICAgcGFyYW1ldGVy
cy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOwor
ICAgICAgICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gZm9udGRNYWNoRXh0
ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05v
dEVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9S
UykKICAgICBwYXJhbWV0ZXJzLmFjY2VudENvbG9yID0gcGFnZUNsaWVudCgpLmFjY2VudENvbG9y
KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24g
MjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2NDMsNyArMjY0Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJv
eEV4dGVuc2lvbnMoV2ViUHJvY2Vzc1Byb3h5Jik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCk7CisgICAgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyk7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUVkaXRv
clN0YXRlKGNvbnN0IEVkaXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3Rh
dGUmIG5ld0VkaXRvclN0YXRlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBA
IHB1YmxpYzoKICAgICBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUgY3Jvc3NPcmlnaW5Nb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9jcm9zc09yaWdpbk1vZGU7IH0KICAgICBDYXB0aXZlUG9ydGFsTW9k
ZSBjYXB0aXZlUG9ydGFsTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FwdGl2ZVBvcnRhbE1vZGU7
IH0KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4gYXVkaXRUb2tlbigpIGNvbnN0OworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBXZWJQcm9j
ZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQs
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSwgQ2FwdGl2ZVBvcnRhbE1vZGUpOwogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UGFnZVByb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMSwxMSArMjAxLDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWUKICNpZiAhRU5BQkxFKENPTlRF
TlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBsb2FkUGFyYW1ldGVycy5u
ZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBjcmVhdGVOZXR3b3JrRXh0
ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBMQVRGT1JNKElPUykKKyAg
ICBhdXRvIGF1ZGl0VG9rZW4gPSBwcm9jZXNzLmF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIXByb2Nl
c3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2YWx1
YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxl
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxl
LnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9z
LCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZp
Y2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3MsIGF1ZGl0VG9rZW4sIFNh
bmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFw
KSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5k
bGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbiwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXAp
KQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFn
ZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXN0TmF2aWdhdGlvbldhc0FwcEkKIHZvaWQgV2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIG1v
YmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJf
cywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUubW9iaWxlYXNzZXRkLnYyIl9z
LCBwcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFw
T3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIG1vYmlsZUFzc2V0SGFuZGxl
VjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyhtb2JpbGVBc3NldEhhbmRsZVYyKSwg
MCk7CiB9CkBAIC04NTMsMTMgKzg1NCwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmV2b2tlQWNj
ZXNzVG9Bc3NldFNlCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2l0Y2hGcm9tU3RhdGljRm9udFJl
Z2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdp
c3RyeShmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKSksIDApOworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2Vy
Rm9udFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpN
YWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpLCAwKTsKIH0KIAotU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKCkKK1NhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4
dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNo
Qm9vdHN0cmFwT3B0aW9ucykKIHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZm9udE1h
Y2hFeHRlbnNpb25IYW5kbGU7Ci0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBzdGQ6Om51
bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgcHJvY2VzcygpLmF1ZGl0VG9r
ZW4oKSwgbWFjaEJvb3RzdHJhcE9wdGlvbnMpKQogICAgICAgICBmb250TWFjaEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgcmV0dXJuIGZvbnRNYWNoRXh0ZW5zaW9uSGFu
ZGxlOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzAsNyArMzMwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
VwogCiAjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAg
IGlmIChXZWJQcm9jZXNzUHJveHk6OnNob3VsZEVuYWJsZVJlbW90ZUluc3BlY3RvcigpKSB7Ci0g
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCkpCisg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS53ZWJpbnNwZWN0b3IiX3MsIHN0ZDo6bnVsbG9wdCwgU2Fu
ZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3Rz
dHJhcCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZVJlbW90ZVdlYkluc3BlY3RvckV4
dGVuc2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgfQogI2VuZGlmCkBAIC0zOTAs
MTIgKzM5MCwxMiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXCiAg
ICAgCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21w
aWxlclNlcnZpY2UoKSkKLSAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNp
b25IYW5kbGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAo
V2ViQ29yZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAgICAgICBw
YXJhbWV0ZXJzLmNvbXBpbGVyU2VydmljZUV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChXZWJDb3JlOjphZ3hDb21waWxlclNlcnZp
Y2VzKCksIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGlmICghaXNGdWxsV2ViQnJvd3NlcigpKQotICAgICAgICBwYXJhbWV0ZXJzLmR5
bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQpOworICAg
ICAgICBwYXJhbWV0ZXJzLmR5bmFtaWNNYWNoRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRl
bnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKG5vbkJyb3dzZXJTZXJ2aWNlcygpLCBz
dGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFi
bGVNYWNoQm9vdHN0cmFwKTsKIAogICAgIGlmIChXZWJDb3JlOjpkZXZpY2VIYXNBR1hDb21waWxl
clNlcnZpY2UoKSkKICAgICAgICAgcGFyYW1ldGVycy5keW5hbWljSU9LaXRFeHRlbnNpb25IYW5k
bGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0ZvcklPS2l0Q2xhc3NFeHRlbnNp
b25zKFdlYkNvcmU6OmFneENvbXBpbGVyQ2xhc3NlcygpLCBzdGQ6Om51bGxvcHQpOwpAQCAtNDE1
LDIwICs0MTUsMjAgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplVwog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogICAg
IGlmICghX01HQ2FjaGVWYWxpZCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVn
ZXN0YWx0LnhwYyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1v
YmlsZWdlc3RhbHQueHBjIl9zLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hC
b290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAg
cGFyYW1ldGVycy5tb2JpbGVHZXN0YWx0RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxl
KTsKICAgICB9CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBpZiAoYXV0byBsYXVu
Y2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5jb3Jlc2VydmljZXMubGF1bmNoc2VydmljZXNkIl9z
LCBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIGxhdW5jaFNlcnZpY2VzRXh0ZW5zaW9uSGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLmNvcmVzZXJ2aWNlcy5sYXVuY2hzZXJ2aWNlc2QiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJv
eEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJh
cCkpCiAgICAgICAgIHBhcmFtZXRlcnMubGF1bmNoU2VydmljZXNFeHRlbnNpb25IYW5kbGUgPSBX
VEZNb3ZlKCpsYXVuY2hTZXJ2aWNlc0V4dGVuc2lvbkhhbmRsZSk7CiAjZW5kaWYKIAogI2lmIEhB
VkUoVklERU9fUkVTVFJJQ1RFRF9ERUNPRElORykKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYg
KE1hY0FwcGxpY2F0aW9uOjppc0FwcGxlTWFpbCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHRydXN0
ZEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoImNvbS5hcHBsZS50cnVzdGQuYWdlbnQiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAg
IGlmIChhdXRvIHRydXN0ZEV4dGVuc2lvbkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50cnVzdGQuYWdlbnQiX3MsIHN0ZDo6bnVs
bG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxl
TWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICBwYXJhbWV0ZXJzLnRydXN0ZEV4dGVuc2lvbkhh
bmRsZSA9IFdURk1vdmUoKnRydXN0ZEV4dGVuc2lvbkhhbmRsZSk7CiAgICAgICAgIHBhcmFtZXRl
cnMucmVzdHJpY3RJbWFnZUFuZFZpZGVvRGVjb2RlcnMgPSB0cnVlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bmJsb2NrQWNjZXNzaWJpbGkKIAogICAgIFZlY3Rv
cjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUi
X3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0
aW9uKCkgPyBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7Cisg
ICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExv
b2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBw
bGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBhdWRpdFRva2VuKCksIFNhbmRi
b3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKTsK
ICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlmCiAKQEAgLTMyNSw0
ICszMjUsMTIgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbAogICAg
IHJldHVybiB0cnVlOwogfQogCitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IFdlYlByb2Nl
c3NQcm94eTo6YXVkaXRUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIGNvbm5lY3Rp
b24oKS0+Z2V0QXVkaXRUb2tlbigpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MCwxMiArMTcwLDEyIEBAIEdQVVByb2Nlc3NQcm94eTo6R1BVUHJvY2Vzc1By
b3h5KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKFdlYkNvcmU6
OmRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpKSB7Ci0gICAgICAgIHBhcmFtZXRlcnMuY29t
cGlsZXJTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlcyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKFdlYkNvcmU6OmFneENvbXBpbGVyU2VydmljZXMoKSwgc3RkOjpu
dWxsb3B0KTsKKyAgICAgICAgcGFyYW1ldGVycy5jb21waWxlclNlcnZpY2VFeHRlbnNpb25IYW5k
bGVzID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoV2ViQ29y
ZTo6YWd4Q29tcGlsZXJTZXJ2aWNlcygpLCBzdGQ6Om51bGxvcHQsIFNhbmRib3hFeHRlbnNpb246
Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXApOwogICAgICAg
ICBwYXJhbWV0ZXJzLmR5bmFtaWNJT0tpdEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoV2ViQ29yZTo6YWd4Q29t
cGlsZXJDbGFzc2VzKCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgfQogCiAgICAgaWYgKCFXZWJDb3Jl
OjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKLSAgICAgICAgcGFyYW1ldGVycy5k
eW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cChub25Ccm93c2VyU2VydmljZXMoKSwgc3RkOjpudWxsb3B0KTsKKyAg
ICAgICAgcGFyYW1ldGVycy5keW5hbWljTWFjaEV4dGVuc2lvbkhhbmRsZXMgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChub25Ccm93c2VyU2VydmljZXMoKSwg
c3RkOjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9O
b3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXpl
R1BVUHJvY2Vzc1BhcmFtZXRlcnMocGFyYW1ldGVycyk7CkBAIC0yMTMsMTMgKzIxMywxMyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWRkQ2FtZXJhU2FuZGJveEV4dGVuCiAgICAgfQogI2lmIEhBVkUo
QVVESVRfVE9LRU4pCiAgICAgICAgIGlmIChzaG91bGRDcmVhdGVBcHBsZUNhbWVyYVNlcnZpY2VT
YW5kYm94RXh0ZW5zaW9uKCkpIHsKLSAgICAgICAgICAgIGF1dG8gYXBwbGVDYW1lcmFTZXJ2aWNl
UGF0aFNhbmRib3hFeHRlbnNpb25IYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuYXBwbGVjYW1lcmFkIl9zLCBzdGQ6Om51bGxvcHQp
OworICAgICAgICAgICAgYXV0byBhcHBsZUNhbWVyYVNlcnZpY2VQYXRoU2FuZGJveEV4dGVuc2lv
bkhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5hcHBsZWNhbWVyYWQiX3MsIHN0ZDo6bnVsbG9wdCwgU2FuZGJveEV4dGVuc2lvbjo6
TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCk7CiAgICAgICAg
ICAgICBpZiAoIWFwcGxlQ2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7
CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNy
ZWF0ZSBjb20uYXBwbGUuYXBwbGVjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05B
TF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgIGF1dG8gYWRkaXRpb25hbEFwcGxl
Q2FtZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlaDEzY2FtZXJhZCJf
cywgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgICAgIGF1dG8gYWRkaXRpb25hbEFwcGxlQ2FtZXJh
U2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmFwcGxlaDEzY2FtZXJhZCJfcywgc3Rk
OjpudWxsb3B0LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RF
bmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICAgICAgICAgIGlmICghYWRkaXRpb25hbEFwcGxlQ2Ft
ZXJhU2VydmljZVBhdGhTYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSB7CiAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb20uYXBwbGUuYXBw
bGVoMTNjYW1lcmFkIHNhbmRib3ggZXh0ZW5zaW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjUzLDIyICsyNTMsMjIgQEAgc3RhdGljIGlubGluZSBib29sIGFkZERpc3Bs
YXlDYXB0dXJlU2FuZAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUucmVwbGF5a2l0LnNoYXJpbmdzZXNzaW9uLm5vdGlmaWNhdGlvbiJfcywgKmF1ZGl0VG9r
ZW4pOworICAgIGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLnJlcGxheWtpdC5zaGFyaW5nc2Vzc2lvbi5ub3RpZmljYXRp
b24iX3MsICphdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9u
czo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwog
Ci0gICAgaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLnJlcGxheWtpdC5zaGFyaW5nc2Vzc2lvbiJfcywgKmF1ZGl0VG9rZW4pOwor
ICAgIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS5yZXBsYXlraXQuc2hhcmluZ3Nlc3Npb24iX3MsICphdWRpdFRva2VuLCBTYW5k
Ym94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0
cmFwKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGV4dGVu
c2lvbnMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwogCi0gICAgaGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2Quc3lzdGVt
Il9zLCAqYXVkaXRUb2tlbik7CisgICAgaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2Quc3lzdGVtIl9zLCAqYXVkaXRUb2tl
biwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFj
aEJvb3RzdHJhcCk7CiAgICAgaWYgKCFoYW5kbGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBleHRlbnNpb25zLmFwcGVuZChXVEZNb3ZlKCpoYW5kbGUpKTsKIAotICAgIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5yZXBs
YXlkIl9zLCAqYXVkaXRUb2tlbik7CisgICAgaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnJlcGxheWQiX3MsICphdWRpdFRva2Vu
LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNo
Qm9vdHN0cmFwKTsKICAgICBpZiAoIWhhbmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGV4dGVuc2lvbnMuYXBwZW5kKFdURk1vdmUoKmhhbmRsZSkpOwpAQCAtMjgwLDcgKzI4MCw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBhZGREaXNwbGF5Q2FwdHVyZVNhbmQKICNpZiBQTEFURk9STShJ
T1MpCiBzdGF0aWMgaW5saW5lIGJvb2wgYWRkVENDRFNhbmRib3hFeHRlbnNpb24oVmVjdG9yPFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZT4mIGV4dGVuc2lvbnMpCiB7Ci0gICAgYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
dGNjZCJfcywgc3RkOjpudWxsb3B0KTsKKyAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBzdGQ6Om51
bGxvcHQsIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJs
ZU1hY2hCb290c3RyYXApOwogICAgIGlmICghaGFuZGxlKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFdlYlJUQywgIlVuYWJsZSB0byBjcmVhdGUgY29tLmFwcGxlLnRjY2Qgc2FuZGJveCBl
eHRlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjQ2LDYgKzIyNDYsOCBAQAogCQlFMUQyNkE1MzE3NTk2NEQ5MDA5NUJGRDEg
LyogV2ViQ29udGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyogV2ViQ29udGVudFBy
b2Nlc3MueGliICovOyB9OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveElu
aXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8q
IEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVj
dGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovOyB9OworCQlFMzZGRjAwMzI3RjM2RkJEMDA0
QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJv
eFN0YXRlVmFyaWFibGVzLmggKi87IH07CisJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBw
cmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovOyB9Owog
CQlFMzgxNkIzRDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2
QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICov
OyB9OwogCQlFMzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJN
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MzgxNkIzQzI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
Ki87IH07CiAJCUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlv
blVwZGF0ZVByb3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovOyB9OwpAQCAtNzAyOSw5ICs3MDMxLDEwIEBA
CiAJCUUzNDM5QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25J
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0
aCA9IE5ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5k
eWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM0QjExMEYyN0M0
NkQwOTAwNkQyRjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07Ci0JCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVy
OyBwYXRoID0gU2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEy
N0I3MDlFRDAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVu
dENsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkZGMDAxMjdGMzZGQkQwMDRC
RTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2FuZGJveFN0YXRlVmFyaWFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBwcmVmZXJlbmNlcy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNb2NrQ29u
dGVudEZpbHRlck1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQzI3RTI0
NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBwYXRo
ID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsg
cGF0aCA9IGlvcy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03ODA3LDcgKzc4MTAsNyBAQAogCQkJCUJDMTEx
QjVBMTEyRjYyODIwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJNTFBRjFCM0QyNzFGNDZBNjAwMTUz
OEU2IC8qIE5vdGlmaWNhdGlvbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8q
IFJlbW90ZUxheWVyVHJlZSAqLywKLQkJCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2Fu
ZGJveCAqLywKKwkJCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLywKIAkJ
CQkxQ0I3NDY0NTI3NDM3OUYxMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTFBQkY0Mzc4MUEz
NjgwMzUwMDNGQjBFNiAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxMTg1MDI2MDI2NzNCMERBMDBB
NjQyNUUgLyogWFIgKi8sCkBAIC0xMzUzOCw2ICsxMzU0MSwxNSBAQAogCQkJbmFtZSA9IFBERjsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUUzNkZFRkZFMjdGMzZGMzQwMDRC
RTIxQSAvKiBTYW5kYm94ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8sCisJ
CQkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBTYW5kYm94OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJRTQwNDkwNkYyMURFNjVENzAwMzdGMERCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNDQ0Niw2ICsxNDQ1OCw3IEBACiAJCQkJ
QkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4
dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8q
IFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUz
NkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdCQUIxMTEwMjVERDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNz
YWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1NEQwNDIxRjFENzJEMDA3
RTNDMzYgLyogU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMTU3ODcsNiArMTU4
MDAsNyBAQAogCQkJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGljdGlvbl9t
b2RlbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2IC8qIElu
Zm9QbGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKIAkJCQkzRkIwOEU0MzFGNjBCMjQwMDA1
RTUzMTIgLyogaU9TLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKKwkJCQlFMzZGRjAwNDI3RjM2
RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJCTVDOEJD
Nzk3MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVzb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJv
Y2Vzcy5zYi5pbgkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUyLDI3ICsy
MDUyLDQwIEBACiAjZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRFUklORykK
LShpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIp
ICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyhkZWZpbmUgKG1hY2gtYm9vdHN0
cmFwLW1lc3NhZ2UtbnVtYmVycykKKyAgICAobWVzc2FnZS1udW1iZXIgMjA0IDIwNyAzMDEgNzEx
IDgwMCA4MDQpKQorCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikK
ICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVy
Ci0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICAgICAgICAg
ICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAg
ICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAgICAgICAo
YWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAt
bWVzc2FnZS1udW1iZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJMRV9T
QU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3RyYXAp
KQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisjaWYgSEFW
RShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJlcXVpcmUt
YW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkuZW5h
YmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChkZW55IG1hY2gtYm9vdHN0cmFwKQorICAg
ICAgICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0
ZXIpKQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55Cisg
ICAgICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vz
c0xhdW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290
c3RyYXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikp
KSkKKyNlbHNlCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbmRp
ZiAvLyBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAjZWxzZQorICAgIChhbGxvdyBtYWNoLWJv
b3RzdHJhcAorICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55
IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4
cGMtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IHhwYy1t
ZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1i
ZXJzKSkpKSkKICNlbmRpZgotICAgICAgICAgICAgICAgIDIwNAotICAgICAgICAgICAgICAgIDIw
NwotICAgICAgICAgICAgICAgIDMwMQotICAgICAgICAgICAgICAgIDcxMQotICAgICAgICAgICAg
ICAgIDgwMAotICAgICAgICAgICAgICAgIDgwNAotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICkKLSAgICAgICAgKQotICAgICkKLSkKIAogKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVO
QUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1rZXJu
ZWwtZW5kcG9pbnQpKQogICAgIChhbGxvdyBtYWNoLWtlcm5lbC1lbmRwb2ludApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI5
Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTUsNiArNDU1LDExIEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChXVEY6OlJlZkNvdW50ZWQKIAogUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
eworICAgIGF1dG8gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKKworICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3Rl
ZEJ1bmRsZSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRs
ZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOworCiAjaWYgSEFWRShTQU5EQk9YX1NUQVRF
X0ZMQUdTKQogICAgIC8vIFRoaXMgY2FsbCBpcyBub3QgbWVhbnQgdG8gYWN0dWFsbHkgcmVhZCBh
IHByZWZlcmVuY2UsIGJ1dCBpcyBvbmx5IGhlcmUgdG8gdHJpZ2dlciBhIHNhbmRib3ggcnVsZSBp
biB0aGUKICAgICAvLyBXZWJDb250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgdG9nZ2xlIGEgc2Fu
ZGJveCB2YXJpYWJsZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
CkBAIC00NjIsMTEgKzQ2Nyw2IEBAIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUoUGFnZUlk
ZW50aWYKICAgICBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJrZXkiKSwg
Q0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5MYXVuY2giKSwgbnVsbHB0cik7CiAj
ZW5kaWYKIAotICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBh
Z2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAgICByZXR1
cm4gcGFnZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458299</attachid>
            <date>2022-04-25 14:20:05 -0700</date>
            <delta_ts>2022-04-25 14:55:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220425142003.patch</filename>
            <type>text/plain</type>
            <size>37375</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAor
MjAyMi0wNC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAg
ICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBj
b250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAg
ZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUg
aXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAg
ICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcg
dGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAg
ICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5l
dyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwK
KyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlz
IHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0
ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25z
IGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5
cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRv
IGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1p
c3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4g
dG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRv
a2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZl
IG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFj
aCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGRlbnkgbWFjaC1ib290c3RyYXApCiA7OyBlbHNlCi0gICAgKGFsbG93IG1h
Y2gtYm9vdHN0cmFwCi0gICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAg
KGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFs
bG93IHhwYy1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVz
c2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgIChh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyh3aXRoLWZpbHRlcgorICAgIChy
ZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQ
cm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhh
bGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgogCiAoZGVmaW5lIChzeXNj
YWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVy
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNo
CShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRp
dGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsMTIgQEAgZnVuY3Rpb24g
bWFjX3Byb2Nlc3Nfd2ViY29udGVudF9zaGFyZWRfZQogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zMTgsNiArMzI0LDggQEAgZnVuY3Rpb24gaW9zX2ZhbWlseV9wcm9jZXNzX3dl
YmNvbnRlbnRfZQogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5wYWMuZXhj
ZXB0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnZl
cmlmaWVkLWppdCBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS5zZWN1cml0eS5tZXNzYWdlLWZpbHRlciBib29sIFlFUworICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUt
ZmxhZ3M6MCBzdHJpbmcgRW5hYmxlTWFjaEJvb3RzdHJhcAogICAgIHBsaXN0YnVkZHkgQWRkIDpj
b20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IuYWxsb3ctcmVtb3RlLWluc3BlY3Rpb24gYm9v
bCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9y
LnByb3h5LWFwcGxpY2F0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IGJvb2wgWUVTCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5
LDcgKzU5LDEyIEBAIHB1YmxpYzoKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fu
b25pY2FsaXplLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBP
cHRpb25zIDogdWludDhfdCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAg
ICAgICAgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkx
LDkgKzk2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxI
YW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRlbXBvcmFyeUZpbGUoU3RyaW5nVmlldyBw
cmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFu
ZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVyYWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lm
IEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7Ci0gICAgc3RhdGljIFZlY3RvcjxI
YW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxj
b25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2Vy
dmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMg
PSBNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwLCBPcHRpb25T
ZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2Vydmlj
ZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE1hY2hCb290c3RyYXBPcHRpb25zID0g
TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0
PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3Jl
YXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJ
TGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE1hY2hCb290
c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3Rz
dHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKICAgICBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5n
VmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5k
bGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGlva2l0
Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBG
bGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNG
b3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFz
c2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxh
Z3M6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4
dGVuc2lvbkNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCwxMCBAQAogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5o
PgogI2ltcG9ydCA8d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgSEFWRShTQU5EQk9YX1NUQVRF
X0ZMQUdTKQorI2luY2x1ZGUgIlNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CkBAIC0zMTYs
NyArMzIwLDcgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZQogICAg
IHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBz
dGQ6Om9wdGlvbmFsPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0
aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CiB7
CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNp
b24pOwpAQCAtMzI3LDIxICszMzEsMzEgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAKKyNp
ZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAgLy8gV2hlbiBsYXVuY2hkIGlzIGJsb2Nr
ZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFudWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBp
bmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8vIFRoaXMgaXMgZG9uZSBieSB1bmJsb2Nr
aW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNzIGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRp
bmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJsb2NraW5nIGxhdW5jaGQgaXMgZG9uZSBi
eSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFibGUuCisgICAgaWYgKG1hY2hCb290c3Ry
YXBPcHRpb25zID09IEVuYWJsZU1hY2hCb290c3RyYXApIHsKKyAgICAgICAgUkVMRUFTRV9BU1NF
UlQoYXVkaXRUb2tlbik7CisgICAgICAgIHNhbmRib3hfZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxF
X01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7CisgICAgfQorI2VuZGlmCisKICAgICByZXR1
cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZs
YWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMg
bWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxI
YW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMs
IFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hM
b29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5k
bGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlv
bnMsIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2
aWNlLCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywgZmxhZ3MpOwogICAgICAgICBB
U1NFUlQoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKIH0KIAotYXV0
byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0
b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExv
b2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0
aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVj
dG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bh
biB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBmbGFn
cyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNl
cy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9w
dGlvbnMsIGZsYWdzKTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRv
a2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVk
L1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVuYWJsZU1hY2hCb290c3RyYXAi
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5h
Z2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Bl
ZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJl
YWx0aW1lTWVkaQogICAgICAgICBtX3NvdXJjZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5hZGQo
aWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJjZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lv
bi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhh
bmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9jb25u
ZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRj
Y2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpN
YWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICAg
ICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9waG9uZTsKICAgICAgICAgICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRl
bnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZSJfcykpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5k
bGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJv
eEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7Ci0gICAgICAg
ICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fcGFnZS5wcm9jZXNzKCkuY29u
bmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRl
ZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4
dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAg
ICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOwogICAgICAgICAg
ICAgbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgPSB0cnVlOwogICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMyAr
MTE0LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGUKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGF1dG8gYXVkaXRUb2tl
biA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAgICAgICAgaWYgKG5lZWRzQXBwbGVDYW1l
cmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNl
cnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNh
bWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0
cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpIHsKICAgICAgICAgICAgICAgICAgICAg
aGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAg
ICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFfU0VSVklD
RSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRo
LCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVD
YW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3Rz
dHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSB7CiAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZp
Y2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODUsOSArMjg4NSw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9S
TShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0
aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigp
ICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50TWF5U3Rh
cnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJj
b20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAg
IHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1h
Y2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2Vy
dmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lv
bjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCi0g
ICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVu
dCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBl
KSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5zaW9ucykpOwogfQpAQCAtNzI1NiwxMSAr
NzI1NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuCiAjZW5k
aWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZXNTYW5k
Ym94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uOworICAgIGF1dG8gYXVk
aXRUb2tlbiA9IG1fcHJvY2Vzcy0+YXVkaXRUb2tlbigpOwogI2lmIEhBVkUoRlJPTlRCT0FSRF9T
WVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3Rl
bWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9u
dGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9u
OjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGZy
b250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogI2Vu
ZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkK
KyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JN
YWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94
RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAg
ICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOwog
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxX
aXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRh
ID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpLCBmcm9u
dGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5z
aW9uKSk7CkBAIC04Mzg5LDcgKzgzOTAsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdl
YlBhZ2VQcm94eTo6CiAjZW5kaWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQogICAg
IGlmIChwcmVmZXJlbmNlcygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpCi0gICAg
ICAgIHBhcmFtZXRlcnMuZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBmb250ZE1hY2hFeHRlbnNp
b25IYW5kbGUoKTsKKyAgICAgICAgcGFyYW1ldGVycy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9
IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFw
T3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgogI2lmIEhBVkUoQVBQ
X0FDQ0VOVF9DT0xPUlMpCiAgICAgcGFyYW1ldGVycy5hY2NlbnRDb2xvciA9IHBhZ2VDbGllbnQo
KS5hY2NlbnRDb2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCBwcml2YXRlOgogICAg
IHN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjcmVhdGVOZXR3b3JrRXh0
ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAg
ICBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRs
ZSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5k
bGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMpOwogCiAgICAgdm9pZCBk
aWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNv
bnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JTdGF0ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMz
LDYgKzQzMywxMCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3Nz
T3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CiAgICAgQ2Fw
dGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRp
dmVQb3J0YWxNb2RlOyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6Om9wdGlvbmFs
PGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4oKSBjb25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSos
IElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUsIENhcHRpdmVQb3J0YWxNb2Rl
KTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29j
b2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEg
KzIwMSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1lCiAjaWYg
IUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgbG9h
ZFBhcmFtZXRlcnMubmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gY3Jl
YXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKTsKICNpZiBQTEFU
Rk9STShJT1MpCisgICAgYXV0byBhdWRpdFRva2VuID0gcHJvY2Vzcy5hdWRpdFRva2VuKCk7CiAg
ICAgaWYgKCFwcm9jZXNzLmhhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRX
ZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKSB7Ci0gICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRl
ci5yZW1vdGVVSSJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVp
a2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBh
dWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxl
TWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVy
RXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAotICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIGF1
ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVN
YWNoQm9vdHN0cmFwKSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2
aWNlRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNz
Lm1hcmtIYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsKQEAgLTg0MSw3ICs4NDIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2Jp
bGVhc3NldGQudjIiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmls
ZWFzc2V0ZC52MiJfcywgcHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6
TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICBtb2Jp
bGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxlQXNz
ZXRIYW5kbGVWMiksIDApOwogfQpAQCAtODUzLDEzICs4NTQsMTMgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJldm9rZUFjY2Vzc1RvQXNzZXRTZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJv
bVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgpCiB7Ci0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlU
b1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCkpLCAwKTsKKyAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRS
ZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJv
eEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSwg
MCk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFj
aEV4dGVuc2lvbkhhbmRsZSgpCitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5
Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJh
cE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250
cyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHByb2Nl
c3MoKS5hdWRpdFRva2VuKCksIG1hY2hCb290c3RyYXBPcHRpb25zKSkKICAgICAgICAgZm9udE1h
Y2hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHJldHVybiBmb250TWFj
aEV4dGVuc2lvbkhhbmRsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1
bmJsb2NrQWNjZXNzaWJpbGkKIAogICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaGFuZGxlQXJyYXkg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBw
bGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4
c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2
aWNlcyJfcyB9LCBhdWRpdFRva2VuKCksIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBP
cHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6
ZSgpID09IDIpOwogI2VuZGlmCiAKQEAgLTMyNSw0ICszMjUsMTIgQEAgYm9vbCBXZWJQcm9jZXNz
UHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IFdlYlByb2Nlc3NQcm94eTo6YXVkaXRUb2tlbigpIGNvbnN0
Cit7CisgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworfQor
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyNDYsNiArMjI0Niw4IEBACiAJ
CUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1OTYz
NEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1MkM1MTZB
RTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUwNjVF
MDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlF
MUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNE
QzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi87
IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAx
MjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLzsgfTsKKwkJRTM2
RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEg
LyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUzODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAvKiBX
ZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tD
b250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZD
MCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJN
b2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4
RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQwMDQw
MEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi87
IH07CkBAIC03MDI5LDkgKzcwMzEsMTAgQEAKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEIxMTBDMjdDNDZC
QzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBw
YXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RT
dXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9y
dC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRTM2MTJGRjAy
NkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVu
dEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUz
MUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5kYm94U3RhdGVWYXJpYWJsZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFB
IC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHByZWZlcmVuY2VzLnNi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAg
LyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHBhdGggPSBO
ZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZp
bHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0
MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4
MDcsNyArNzgxMCw3IEBACiAJCQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywK
IAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQky
RDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJUcmVlICovLAotCQkJCUUzNjEy
RkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovLAorCQkJCUUzNkZFRkZFMjdGMzZGMzQw
MDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFDQjc0NjQ1Mjc0Mzc5RjEwMEYxOTg3NCAvKiBX
ZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICov
LAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKQEAgLTEzNTM4LDYgKzEz
NTQxLDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJ
fTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIx
QSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyog
U2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IFNhbmRib3g7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0Yw
REIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAg
LTE0NDQ2LDYgKzE0NDU4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5
NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVy
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0JBQjExMTAyNUREMDJCMzAw
OEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVldWUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5
MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xNTc4Nyw2ICsxNTgwMCw3IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1MjAw
OEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLywKIAkJCQk4REMy
RUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICov
LAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMxMiAvKiBpT1MueGNhc3NldHMgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiBp
biBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcyMThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93
c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIsNDAgQEAKICNlbmRpZgogCiAjaWYgSEFWRShT
QU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJM
RV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290c3Ry
YXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQorICAgIChtZXNz
YWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisKKyhkZWZpbmUgKGFsbG93LW1h
Y2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAg
ICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JF
UVVJUkVEID49IDEyMDAwMAogICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdp
dGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAobWVz
c2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAg
ICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisoaWYgKGFu
ZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikg
KGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAgKGJl
Z2luCisgICAgICAgIChpZiAocmVxdWlyZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20u
YXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUtc3RhdGUtZmxhZ3MiKQorICAgICAgICAgICAg
KGRlbnkgbWFjaC1ib290c3RyYXApCisgICAgICAgIDs7IGVsc2UKKyAgICAgICAgICAgIChhbGxv
dy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisKKyAgICAgICAgKHdpdGgtZmlsdGVyCisg
ICAgICAgICAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgICAgICAgICAocmVxdWlyZS1ub3QgKHN0
YXRlLWZsYWcgIldlYkNvbnRlbnRQcm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgICAgICAgICAo
c3RhdGUtZmxhZyAiRW5hYmxlTWFjaEJvb3RzdHJhcCIpKQorICAgICAgICAgICAgKGFsbG93LW1h
Y2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkpKQorI2Vsc2UKKyAgICAoYWxsb3ctbWFjaC1ib290
c3RyYXAtd2l0aC1maWx0ZXIpKQorI2VuZGlmIC8vIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykK
ICNlbHNlCisgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAgIChhcHBseS1tZXNzYWdl
LWZpbHRlcgogICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0
cnkpKQotICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVy
CisgICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgICht
YWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgMjA0Ci0gICAgICAgICAgICAgICAgMjA3Ci0gICAgICAgICAgICAgICAgMzAxCi0gICAgICAg
ICAgICAgICAgNzExCi0gICAgICAgICAgICAgICAgODAwCi0gICAgICAgICAgICAgICAgODA0Ci0g
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQogCiAo
aWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAi
WUVTIikgKGRlZmluZWQ/ICdtYWNoLWtlcm5lbC1lbmRwb2ludCkpCiAgICAgKGFsbG93IG1hY2gt
a2VybmVsLWVuZHBvaW50CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NSw2ICs0NTUsMTEg
QEAgREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZAogCiBSZWY8V2ViUGFn
ZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CisgICAgYXV0byBwYWdlID0gYWRvcHRSZWYoKm5l
dyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworCisgICAgaWYgKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7
CisKICNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAgICAgLy8gVGhpcyBjYWxsIGlzIG5v
dCBtZWFudCB0byBhY3R1YWxseSByZWFkIGEgcHJlZmVyZW5jZSwgYnV0IGlzIG9ubHkgaGVyZSB0
byB0cmlnZ2VyIGEgc2FuZGJveCBydWxlIGluIHRoZQogICAgIC8vIFdlYkNvbnRlbnQgcHJvY2Vz
cywgd2hpY2ggd2lsbCB0b2dnbGUgYSBzYW5kYm94IHZhcmlhYmxlIHVzZWQgdG8gZGV0ZXJtaW5l
IGlmIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKQEAgLTQ2MiwxMSArNDY3LDYgQEAgUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRpZgogICAgIENGUHJlZmVyZW5jZXNHZXRBcHBJ
bnRlZ2VyVmFsdWUoQ0ZTVFIoImtleSIpLCBDRlNUUigiY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LkxhdW5jaCIpLCBudWxscHRyKTsKICNlbmRpZgogCi0gICAgUmVmPFdlYlBhZ2U+IHBhZ2Ug
PSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7Ci0K
LSAgICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKLSAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFn
ZShwYWdlLnB0cigpKTsKLQogICAgIHJldHVybiBwYWdlOwogfQogCg==
</data>
<flag name="review"
          id="487132"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458303</attachid>
            <date>2022-04-25 15:24:06 -0700</date>
            <delta_ts>2022-04-26 15:41:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220425152404.patch</filename>
            <type>text/plain</type>
            <size>37463</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI1ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMTggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBVc2UgWENCdWlsZCBmb3IgYWxsIGNvbW1hbmQtbGluZSBhbmQgcHJvamVjdCBidWlsZHMK
SW5kZXg6IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVf
dCk7CiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9j
bGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAq
cmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNo
YXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNv
bnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xh
c3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNv
bnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAK
ICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkyOTc1KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAor
MjAyMi0wNC0yNSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2
MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBV
c2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9v
dHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAg
ICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUg
cGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAg
ICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBw
cm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAg
ICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUg
Ym9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAg
ICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4
dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAg
ICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBj
b250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAg
ZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUg
aXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAg
ICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcg
dGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAg
ICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5l
dyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwK
KyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlz
IHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0
ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25z
IGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5
cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRv
IGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1p
c3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4g
dG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRv
a2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVl
biBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRp
Y2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0
aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZl
IG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0
aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFj
aCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3Mv
Y29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdl
UHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFj
Y2Vzc1RvQXNzZXRTZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRX
ZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5h
YmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVh
bSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2du
aXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Nv
bS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTE4ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjI5Mjk1Ny4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9p
b3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291
cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCwzOSArMTQ1MCwyOSBAQAogKQogCiAoZGVmaW5lLW9u
Y2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIK
LSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAg
ICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4
MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcx
MSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUpKQogCi0oaWYgKGRlZmluZWQ/ICcqc2JwbC12
ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAg
IChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCiAgICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAgICAobWFjaC1i
b290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAgICApCi0gICAg
KQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQor
CisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChyZXF1aXJlLWFuY2VzdG9yLXdp
dGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5LmVuYWJsZS1zdGF0ZS1m
bGFncyIpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogOzsgZWxzZQot
ICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIK
LSAgICAgICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAg
ICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAg
ICkKLSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpKQorCisod2l0aC1m
aWx0ZXIKKyAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFn
ICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAgICAgIChzdGF0ZS1mbGFnICJFbmFi
bGVNYWNoQm9vdHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVy
KSkKKyNlbHNlCisoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCisjZW5kaWYKIAog
KGRlZmluZSAoc3lzY2FsbC1tYWNoLW9ubHktaW4tdXNlLWR1cmluZy1sYXVuY2gpCiAgICAgKG1h
Y2h0cmFwLW51bWJlcgpJbmRleDogU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVu
dGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRz
L3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNiArMTcxLDEy
IEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRlbnRfc2hhcmVkX2UKICAgICAgICAgICAg
IHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Muc2luZ2xlLWppdCBib29sIFlF
UwogICAgICAgICBmaQogCisgICAgICAgIGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9O
X01BSk9SfSIgPj0gMTMwMDAwICkpCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFy
cmF5CisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJp
dHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVNYWNoQm9vdHN0cmFwCisgICAg
ICAgIGZpCisKICAgICAgICAgaWYgW1sgIiR7V0tfV0VCQ09OVEVOVF9TRVJWSUNFX05FRURTX1hQ
Q19ET01BSU5fRVhURU5TSU9OX0VOVElUTEVNRU5UfSIgPT0gWUVTIF1dCiAgICAgICAgIHRoZW4K
ICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS54cGMuZG9tYWlu
LWV4dGVuc2lvbiBib29sIFlFUwpAQCAtMzE4LDYgKzMyNCw4IEBAIGZ1bmN0aW9uIGlvc19mYW1p
bHlfcHJvY2Vzc193ZWJjb250ZW50X2UKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUucGFjLmV4Y2VwdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKKyAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFn
cyBhcnJheQorICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5t
dXRhYmxlLXN0YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKICAgICBwbGlz
dGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90ZS1p
bnNwZWN0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LndlYmluc3BlY3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlFUwpJ
bmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkocmV2aXNpb24gMjky
OTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4dGVuc2lvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OSw3ICs1OSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIE5vUmVwb3J0LAogICAg
ICAgICBEb05vdENhbm9uaWNhbGl6ZSwKICAgICB9OwotICAgIAorCisgICAgZW51bSBjbGFzcyBN
YWNoQm9vdHN0cmFwT3B0aW9ucyA6IHVpbnQ4X3QgeworICAgICAgICBEb05vdEVuYWJsZU1hY2hC
b290c3RyYXAsCisgICAgICAgIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICB9OworCiAgICAgY2xh
c3MgSGFuZGxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSGFuZGxlKTsKICAgICBw
dWJsaWM6CkBAIC05MSw5ICs5Niw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxl
KFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5k
bGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lv
bkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hM
b29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0
YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxh
dWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVND
SUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE1hY2hCb290
c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3Rz
dHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVj
dG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxp
dGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBNYWNoQm9vdHN0
cmFwT3B0aW9ucyA9IE1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3Ry
YXAsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVu
YWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAg
ICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRp
dFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5fdCk7CiAgICAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJ
TGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25T
ZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBj
cmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0
PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHJldmlzaW9uIDI5Mjk3NSkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2lu
L1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEhBVkUo
U0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNsdWRlICJTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbklt
cGwgewpAQCAtMzE2LDggKzMyMCw5IEBAIGF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yR2UKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2Us
IHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdz
PiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFj
aEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPgogeworICAgIFVOVVNFRF9QQVJBTShtYWNoQm9vdHN0cmFwT3B0aW9ucyk7CiAg
ICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24p
OwogICAgIApAQCAtMzI3LDIxICszMzIsMzAgQEAgYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KICAgICAK
KyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAgLy8gV2hlbiBsYXVuY2hkIGlzIGJs
b2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFudWFsbHkgZW5hYmxlIGJvb3RzdHJh
cHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8vIFRoaXMgaXMgZG9uZSBieSB1bmJs
b2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNzIGlzIHJlcXVpcmVkIHdoZW4gY3Jl
YXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJsb2NraW5nIGxhdW5jaGQgaXMgZG9u
ZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFibGUuCisgICAgLy8gSW4gdGhlIGlu
aXRpYWwgdmVyc2lvbiBvZiB0aGlzIGNoYW5nZSwgTWFjaCBib290c3RyYXAnaW5nIGlzIGVuYWJs
ZWQgdW5jb25kaXRpb25hbGx5LgorICAgIGlmIChhdWRpdFRva2VuKQorICAgICAgICBzYW5kYm94
X2VuYWJsZV9zdGF0ZV9mbGFnKEVOQUJMRV9NQUNIX0JPT1RTVFJBUCwgKmF1ZGl0VG9rZW4pOwor
I2VuZGlmCisKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBP
cHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgTWFj
aEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxGbGFncz4g
ZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JS
ZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2
aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAgICAgICBhdXRvIGhhbmRsZSA9IGNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAg
IHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRUb2tlbiwg
bWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywg
ZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAgICAgICAgcmV0dXJuIGhhbmRsZTsK
ICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNl
cywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8Rmxh
Z3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlM
aXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2Vu
LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZs
YWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNpemUoKSB9
LCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9v
a3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5zaXplKCkgfSwgYXVkaXRUb2tl
biwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzKTsKIH0KIAogYXV0byBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVk
aXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFCTEVfTUFDSF9CT09UU1RSQVAgIkVu
YWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0
aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkyOTc1KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNl
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAgdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaQogICAgICAgICBtX3NvdXJjZXNOZWVkaW5nU2Fu
ZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJjZXNOZWVk
aW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpLCBT
YW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJh
cCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRsZSk7CiAg
ICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9waG9uZTsK
ICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZSJfcykp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyOTI5
NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lk
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByCiAgICAgICAgIFNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGlmICgh
bV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0QgJiYgZG9lc1BhZ2VOZWVkVENDRCht
X3BhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1f
cGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAg
ICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2VzcygpLmF1ZGl0
VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1h
Y2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZSA9IFdURk1vdmUoKmNyZWF0ZWRI
YW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0Qg
PSB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZpc2lvbiAyOTI5NzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNCwxMyArMTE0LDE0IEBAIGJvb2wgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6
OndpbGxDcmVhdGUKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAg
ICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAgICAgICAg
aWYgKG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9y
TWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhh
bmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBwbGVDYW1l
cmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9B
UFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBs
ZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2FuZGJveEV4
dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpo
YW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFkZGl0aW9u
YWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5Mjk3NSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4ODUsOSArMjg4NSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1ZXVl
ZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFt
X2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3Zl
ICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAg
ICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5p
Y29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHN0ZDo6
bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywg
ImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0VG9rZW4o
KSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290
c3RyYXApOwogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vz
czogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5
cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5zaW9ucykp
OwogfQpAQCAtNzI1NiwxMSArNzI1NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuCiAjZW5kaWYKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmcm9u
dGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5z
aW9uOworICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vzcy0+YXVkaXRUb2tlbigpOwogI2lm
IEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VTKQotICAgIGlmIChhdXRvIGhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRpdFRva2Vu
LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3Rz
dHJhcCkpCiAgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBXVEZN
b3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJf
cywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBh
dWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxl
TWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24gPSBX
VEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3Nl
RmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3Bs
YXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0
YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29uU2Vy
dmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzg5LDcgKzgzOTAsNyBAQCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAjZW5kaWYKICNpZiBIQVZFKFNUQVRJQ19G
T05UX1JFR0lTVFJZKQogICAgIGlmIChwcmVmZXJlbmNlcygpLnNob3VsZEFsbG93VXNlckluc3Rh
bGxlZEZvbnRzKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZm9udE1hY2hFeHRlbnNpb25IYW5kbGUg
PSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKTsKKyAgICAgICAgcGFyYW1ldGVycy5mb250TWFj
aEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5z
aW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICNl
bmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VOVF9DT0xPUlMpCiAgICAgcGFyYW1ldGVycy5hY2NlbnRD
b2xvciA9IHBhZ2VDbGllbnQoKS5hY2NlbnRDb2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQzLDcgKzI2NDMs
NyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKFdlYlByb2Nlc3NQcm94
eSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRk
TWFjaEV4dGVuc2lvbkhhbmRsZSgpOworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmb250
ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnMpOwogCiAgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYg
b2xkRWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JTdGF0ZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAy
OTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMywxMCBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NPcmln
aW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBjb25z
dCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CiAKKyNpZiBQTEFURk9STShDT0NPQSkK
KyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4oKSBjb25zdDsKKyNl
bmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwg
V2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1vZGUs
IENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDEsMTEgKzIwMSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkUGxhdGZv
cm1Mb2FkUGFyYW1lCiAjaWYgIUVOQUJMRShDT05URU5UX0ZJTFRFUklOR19JTl9ORVRXT1JLSU5H
X1BST0NFU1MpCiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29ya0V4dGVuc2lvblNhbmRib3hFeHRl
bnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lvbnNTYW5kYm94RXh0ZW5zaW9ucyhw
cm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCisgICAgYXV0byBhdWRpdFRva2VuID0gcHJvY2Vz
cy5hdWRpdFRva2VuKCk7CiAgICAgaWYgKCFwcm9jZXNzLmhhc01hbmFnZWRTZXNzaW9uU2FuZGJv
eEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JDbGFzcygpIGlzTWFuYWdlZFNlc3Np
b25dKSB7Ci0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52aWV3c2VydmljZS5jb20uYXBw
bGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50Rmls
dGVyLnJlbW90ZVVJIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0
cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1l
dGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKIAot
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywg
c3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVt
YXBwc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3Ry
YXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0
ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsK
IAogICAgICAgICBwcm9jZXNzLm1hcmtIYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKTsK
QEAgLTg0MSw3ICs4NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGFzdE5hdmlnYXRpb25XYXNB
cHBJCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgcHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwg
U2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3Ry
YXApKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMobW9iaWxlQXNzZXRIYW5kbGVWMiksIDApOwogfQpAQCAtODUzLDEzICs4NTQsMTMg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJldm9rZUFjY2Vzc1RvQXNzZXRTZQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSgp
CiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3aXRjaEZyb21T
dGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKCkpLCAwKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6U3dp
dGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShmb250ZE1hY2hFeHRl
bnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJs
ZU1hY2hCb290c3RyYXApKSwgMCk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBXZWJQ
YWdlUHJveHk6OmZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpCitTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVu
c2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMpCiB7CiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwotICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5mb250cyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuZm9udHMiX3MsIHByb2Nlc3MoKS5hdWRpdFRva2VuKCksIG1hY2hCb290c3RyYXBPcHRpb25z
KSkKICAgICAgICAgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwog
ICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCShy
ZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojp1bmJsb2NrQWNjZXNzaWJpbGkKIAogICAgIFZlY3RvcjxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFj
aExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20u
YXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBjb25uZWN0aW9uKCkgPyBj
b25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgaGFuZGxl
QXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJj
b20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRi
b2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBhdWRpdFRva2VuKCksIFNhbmRib3hFeHRlbnNp
b246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKTsKICAgICBBU1NF
UlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlmCiAKQEAgLTMyNSw0ICszMjUsMTIg
QEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbAogICAgIHJldHVybiB0
cnVlOwogfQogCitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IFdlYlByb2Nlc3NQcm94eTo6
YXVkaXRUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+Z2V0
QXVkaXRUb2tlbigpOworfQorCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5Mjk3NSkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIy
NDYsNiArMjI0Niw4IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkwMDk1QkZEMSAvKiBXZWJDb250ZW50
UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxRDI2QTRDMTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgKi87
IH07CiAJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oICovOyB9OwogCQlFMUVFNTNFMzExRjhDRkMwMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdl
RWRpdG9yQ2xpZW50LmggKi87IH07CisJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJs
ZXMuaCAqLzsgfTsKKwkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNi
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzZGRjAw
MjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi87IH07CiAJCUUzODE2QjNEMjdF
MjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4MTZCM0IyN0UyNDYzOTAw
NUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAgKi87IH07CiAJCUUzODE2
QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNDMjdFMjQ2
MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLzsgfTsKIAkJRTM4
NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlk
ZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gKi87IH07CkBAIC03MDI5LDkgKzcwMzEsMTAgQEAKIAkJRTM0MzlCNjMy
MzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBwYXRoID0gTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFNoaW0uZHlsaWIg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxl
ZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTaGltLmR5bGliOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzRCMTEwRjI3QzQ2RDA5MDA2RDJGMkUg
LyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxp
YldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKLQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBTYW5k
Ym94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxQTI3QjcwOUVEMDA2NTMx
QjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXR0
YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2
RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYw
MDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IHByZWZlcmVuY2VzLnNiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIz
QjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFu
YWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAv
KiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHBhdGggPSBOZXR3b3JrL1dl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQ
cm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
V2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBwYXRoID0gaW9zL1dl
YkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc4MDcsNyArNzgxMCw3IEBACiAJCQkJQkMxMTFCNUExMTJGNjI4MjAw
MzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUFGMUIzRDI3MUY0NkE2MDAxNTM4RTYgLyogTm90aWZp
Y2F0aW9ucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBCQjI1RUQgLyogUmVtb3RlTGF5ZXJU
cmVlICovLAotCQkJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovLAorCQkJ
CUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5kYm94ICovLAogCQkJCTFDQjc0NjQ1Mjc0
Mzc5RjEwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJMUFCRjQzNzgxQTM2ODAzNTAwM0ZCMEU2
IC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTExODUwMjYwMjY3M0IwREEwMEE2NDI1RSAvKiBYUiAq
LywKQEAgLTEzNTM4LDYgKzEzNTQxLDE1IEBACiAJCQluYW1lID0gUERGOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRi
b3ggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUUzNkZG
MDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLywKKwkJCQlFMzZGRjAwMTI3
RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IFNhbmRib3g7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlFNDA0
OTA2RjIxREU2NUQ3MDAzN0YwREIgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE0NDQ2LDYgKzE0NDU4LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0
MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRp
YWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYwMDMyN0YzNkZC
RDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
N0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNlaXZlUXVl
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAvKiBTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTc4Nyw2ICsxNTgwMCw3IEBACiAJCQkJ
NkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291
cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVFNTMxMiAvKiBpT1Mu
eGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAv
KiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3OTcyMThDQkI0ODAw
ODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nlc3Muc2IuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCShy
ZXZpc2lvbiAyOTI5NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldl
YlByb2Nlc3Muc2IuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIwNTIsMjcgKzIwNTIsNDAgQEAKICNl
bmRpZgogCiAjaWYgSEFWRShTQU5EQk9YX01FU1NBR0VfRklMVEVSSU5HKQotKGlmIChhbmQgKGVx
dWFsPyAocGFyYW0gIkVOQUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZp
bmVkPyAnbWFjaC1ib290c3RyYXApKQorKGRlZmluZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1u
dW1iZXJzKQorICAgIChtZXNzYWdlLW51bWJlciAyMDQgMjA3IDMwMSA3MTEgODAwIDgwNCkpCisK
KyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBt
YWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSNpZiBfX01BQ19P
U19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAogICAgICAgICAgICAgKGRlbnkgbWFj
aC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyBtYWNo
LW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1l
c3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJl
cnMpKSkpKQorCisoaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FH
RV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKKyNpZiBIQVZFKFNBTkRCT1hfU1RB
VEVfRkxBR1MpCisgICAgKGJlZ2luCisgICAgICAgIChpZiAocmVxdWlyZS1hbmNlc3Rvci13aXRo
LWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUtc3RhdGUtZmxh
Z3MiKQorICAgICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQorICAg
ICAgICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0
ZXIpKQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55Cisg
ICAgICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vz
c0xhdW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290
c3RyYXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikp
KSkKKyNlbHNlCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbmRp
ZiAvLyBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAjZWxzZQorICAgIChhbGxvdyBtYWNoLWJv
b3RzdHJhcAorICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55
IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4
cGMtbWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IHhwYy1t
ZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1i
ZXJzKSkpKSkKICNlbmRpZgotICAgICAgICAgICAgICAgIDIwNAotICAgICAgICAgICAgICAgIDIw
NwotICAgICAgICAgICAgICAgIDMwMQotICAgICAgICAgICAgICAgIDcxMQotICAgICAgICAgICAg
ICAgIDgwMAotICAgICAgICAgICAgICAgIDgwNAotICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICkKLSAgICAgICAgKQotICAgICkKLSkKIAogKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVO
QUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1rZXJu
ZWwtZW5kcG9pbnQpKQogICAgIChhbGxvdyBtYWNoLWtlcm5lbC1lbmRwb2ludApJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI5
Mjk3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NTUsNiArNDU1LDExIEBAIERFRklORV9ERUJVR19PTkxZX0dMT0JB
TChXVEY6OlJlZkNvdW50ZWQKIAogUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
eworICAgIGF1dG8gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUo
cGFyYW1ldGVycykpKTsKKworICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3Rl
ZEJ1bmRsZSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRs
ZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOworCiAjaWYgSEFWRShTQU5EQk9YX1NUQVRF
X0ZMQUdTKQogICAgIC8vIFRoaXMgY2FsbCBpcyBub3QgbWVhbnQgdG8gYWN0dWFsbHkgcmVhZCBh
IHByZWZlcmVuY2UsIGJ1dCBpcyBvbmx5IGhlcmUgdG8gdHJpZ2dlciBhIHNhbmRib3ggcnVsZSBp
biB0aGUKICAgICAvLyBXZWJDb250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgdG9nZ2xlIGEgc2Fu
ZGJveCB2YXJpYWJsZSB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgV2ViQ29udGVudCBwcm9jZXNz
CkBAIC00NjIsMTEgKzQ2Nyw2IEBAIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUoUGFnZUlk
ZW50aWYKICAgICBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKENGU1RSKCJrZXkiKSwg
Q0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5MYXVuY2giKSwgbnVsbHB0cik7CiAj
ZW5kaWYKIAotICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBh
Z2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAgICByZXR1
cm4gcGFnZTsKIH0KIAo=
</data>
<flag name="commit-queue"
          id="487180"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458407</attachid>
            <date>2022-04-26 15:41:09 -0700</date>
            <delta_ts>2022-04-28 10:01:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238577-20220426154108.patch</filename>
            <type>text/plain</type>
            <size>41016</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI2ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMjYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIEFyaWFSZWZsZWN0aW9uRW5hYmxlZCBydW50aW1lIGZsYWcKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
VEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NiArODYsOCBAQCBpbnQgc2FuZGJveF9hcHBseShzYW5kYm94X3Byb2ZpbGVfdCk7CiBjaGFyICpz
YW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdpc3RyeV9lbnRyeV9jbGFzc190b19wcm9j
ZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50
cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90b2tlbl90KTsKIGNoYXIgKnNhbmRib3hf
ZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4
dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90
IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZh
cm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhURVJOX0NfRU5ECiAKICNlbmRpZiAvLyBP
UyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjkzNDc1KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NyBAQAorMjAyMi0wNC0yNiAg
UGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2Fs
bHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBVc2UgYSBzYW5kYm94
IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRl
ciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAgICBEdXJpbmcgbGF1
bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUgcGVybWlzc2l2ZSBi
b290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAgICAgY29ubmVjdGlv
bnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBs
YXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAgICAgICB3aGljaCB3
aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUgYm9vdHN0cmFwIGZp
bHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAgICAgIHBlcm1pc3Np
dmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4dGVuc2lvbnMgZm9y
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAgICAgICBhIGNhc2Ug
YnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBjb250cm9sIHRoaXMg
YmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAgZXh0ZW5zaW9ucy4g
V2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUgaXMgdXN1YWxseSBu
byBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAgICBib290c3RyYXAg
ZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcgdGhlIHBlcm1pc3Np
dmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAgICAgZm9yIHNvbWUg
TWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5ldyBYUEMgY29ubmVj
dGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwKKyAgICAgICAgd2Ug
bmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlzIHJlcXVyaWVkLiBP
dGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0ZXIKKyAgICAgICAg
bGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25zIGNyZWF0ZWQgYWZ0
ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5cyBuZWVkCisgICAg
ICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGJlIGFibGUgdG8g
Y3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1pc3NpdmUKKyAgICAg
ICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4gdG8gYmUgYXZhaWxh
YmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRva2VuIHdoZW4KKyAg
ICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9ucy4gVGhpcyBwYXRj
aCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkIHRv
CisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0
aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0aGlzIGxhc3QgY2hh
bmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZlIG5lZWRlZCBzd2l0
Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0aW5nIHRoZSBXZWJQ
YWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFjaCBleHRlbnNpb25z
LgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldl
YktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxl
bWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVz
Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRT
ZXJ2aWNlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRp
Y0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6dW5ibG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJv
Y2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3Rz
dHJhcCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICog
VUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5k
SWNvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVS
ZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQ
cm9jZXNzLnNiLmluOgorCiAyMDIyLTA0LTI2ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxl
LmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgZXJyb3I6ICJjcDogSmF2YVNjcmlwdENvcmUucHJv
ZmRhdGEgaXMgbm90IGEgZGlyZWN0b3J5IgpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMv
U2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9j
b20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4JKHJldmlzaW9uIDI5MzQ3NSkKKysrIFNv
dXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktp
dC5XZWJDb250ZW50LnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUwLDM5ICsxNDUwLDI5IEBA
CiApCiAKIChkZWZpbmUtb25jZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAg
IChtZXNzYWdlLW51bWJlcgotICAgICAgICAyMDYKLSAgICAgICAgMjA3Ci0gICAgICAgIDcxMQot
ICAgICAgICA3MTIKLSAgICAgICAgNzE4Ci0gICAgICAgIDgwMAotICAgICAgICA4MDIKLSAgICAg
ICAgODAzCi0gICAgICAgIDgwNAotICAgICAgICA4MDUKLSAgICApCi0pCisgICAgKG1lc3NhZ2Ut
bnVtYmVyIDIwNiAyMDcgNzExIDcxMiA3MTggODAwIDgwMiA4MDMgODA0IDgwNSA5MDQpKQogCi0o
aWYgKGRlZmluZWQ/ICcqc2JwbC12ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0
cmFwLXdpdGgtZmlsdGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBw
bHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3
aXRoIHRlbGVtZXRyeSkpCiAgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAg
ICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAg
ICAgKQotICAgICAgICApCi0gICAgKQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1t
ZXNzYWdlLW51bWJlcnMpKSkpKQorCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlm
IChyZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNl
Y3VyaXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdp
dGgtZmlsdGVyKQogOzsgZWxzZQotICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAotICAgICAgICAo
YXBwbHktbWVzc2FnZS1maWx0ZXIKLSAgICAgICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQg
KHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0g
ICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAg
ICAgICkKLSAgICAgICAgKQotICAgICkKLSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0
aC1maWx0ZXIpKQorCisod2l0aC1maWx0ZXIKKyAgICAocmVxdWlyZS1hbnkKKyAgICAgICAgKHJl
cXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vzc0xhdW5jaGVkIikpCisgICAg
ICAgIChzdGF0ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgKGFsbG93LW1hY2gt
Ym9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbHNlCisoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0
aC1maWx0ZXIpCisjZW5kaWYKIAogKGRlZmluZSAoc3lzY2FsbC1tYWNoLW9ubHktaW4tdXNlLWR1
cmluZy1sYXVuY2gpCiAgICAgKG1hY2h0cmFwLW51bWJlcgpJbmRleDogU291cmNlL1dlYktpdC9T
Y3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkocmV2aXNpb24gMjkzNDc1KQorKysg
U291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcsNiArMTk3LDEyIEBAIGZ1bmN0aW9uIG1hY19wcm9jZXNzX3dlYmNvbnRlbnRf
c2hhcmVkX2UKICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHku
Y3Muc2luZ2xlLWppdCBib29sIFlFUwogICAgICAgICBmaQogCisgICAgICAgIGlmICgoICIke1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SfSIgPj0gMTMwMDAwICkpCisgICAgICAgIHRoZW4K
KyAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5t
dXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5CisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29t
LmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFi
bGVNYWNoQm9vdHN0cmFwCisgICAgICAgIGZpCisKICAgICAgICAgaWYgW1sgIiR7V0tfV0VCQ09O
VEVOVF9TRVJWSUNFX05FRURTX1hQQ19ET01BSU5fRVhURU5TSU9OX0VOVElUTEVNRU5UfSIgPT0g
WUVTIF1dCiAgICAgICAgIHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS54cGMuZG9tYWluLWV4dGVuc2lvbiBib29sIFlFUwpAQCAtMzQ0LDYgKzM1MCw4
IEBAIGZ1bmN0aW9uIGlvc19mYW1pbHlfcHJvY2Vzc193ZWJjb250ZW50X2UKICAgICBwbGlzdGJ1
ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUucGFjLmV4Y2VwdGlvbiBib29sIFlFUwogICAgIHBs
aXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0
ZXIgYm9vbCBZRVMKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJp
dHkubXV0YWJsZS1zdGF0ZS1mbGFncyBhcnJheQorICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBw
bGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1h
Y2hCb290c3RyYXAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5z
cGVjdG9yLmFsbG93LXJlbW90ZS1pbnNwZWN0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29s
IFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhw
Yy1lbmRwb2ludCBib29sIFlFUwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveEV4
dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRl
bnNpb24uaAkocmV2aXNpb24gMjkzNDc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIE5vUmVwb3J0LAogICAgICAgICBEb05vdENhbm9uaWNhbGl6ZSwKICAgICB9OwotICAg
IAorCisgICAgZW51bSBjbGFzcyBNYWNoQm9vdHN0cmFwT3B0aW9ucyA6IHVpbnQ4X3QgeworICAg
ICAgICBEb05vdEVuYWJsZU1hY2hCb290c3RyYXAsCisgICAgICAgIEVuYWJsZU1hY2hCb290c3Ry
YXAKKyAgICB9OworCiAgICAgY2xhc3MgSGFuZGxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSGFuZGxlKTsKICAgICBwdWJsaWM6CkBAIC05MSw5ICs5Niw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24o
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChB
U0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZp
Y2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxh
Z3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2
aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZs
YWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE1hY2hCb290c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlvbnM6
OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290c3RyYXBPcHRpb25zOjpE
b05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290
c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4g
PSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5f
dCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tp
dENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0
YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMo
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2Eu
bW0JKHJldmlzaW9uIDI5MzQ3NSkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRi
b3hFeHRlbnNpb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAKICNp
bXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNsdWRlICJTYW5k
Ym94U3RhdGVWYXJpYWJsZXMuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewpAQCAtMzE2LDggKzMyMCw5IEBAIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yR2UKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUp
OwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
QVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRU
b2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+Cith
dXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRl
cmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgTWFj
aEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlvblNldDxGbGFncz4g
ZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgogeworICAgIFVOVVNFRF9QQVJBTShtYWNo
Qm9vdHN0cmFwT3B0aW9ucyk7CiAgICAgSGFuZGxlIGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRs
ZS5tX3NhbmRib3hFeHRlbnNpb24pOwogICAgIApAQCAtMzI3LDIxICszMzIsMzAgQEAgYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogICAgIH0KICAgICAKKyNpZiBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisgICAg
Ly8gV2hlbiBsYXVuY2hkIGlzIGJsb2NrZWQgaW4gdGhlIHNhbmRib3gsIHdlIG5lZWQgdG8gbWFu
dWFsbHkgZW5hYmxlIGJvb3RzdHJhcHBpbmcgb2YgbmV3IFhQQyBjb25uZWN0b25zLgorICAgIC8v
IFRoaXMgaXMgZG9uZSBieSB1bmJsb2NraW5nIGxhdW5jaGQsIHNpbmNlIGxhdW5jaGQgYWNjZXNz
IGlzIHJlcXVpcmVkIHdoZW4gY3JlYXRpbmcgTWFjaCBjb25uZWN0aW9ucy4KKyAgICAvLyBVbmJs
b2NraW5nIGxhdW5jaGQgaXMgZG9uZSBieSBlbmFibGluZyBhIHNhbmRib3ggc3RhdGUgdmFyaWFi
bGUuCisgICAgLy8gSW4gdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGlzIGNoYW5nZSwgTWFjaCBi
b290c3RyYXAnaW5nIGlzIGVuYWJsZWQgdW5jb25kaXRpb25hbGx5LgorICAgIGlmIChhdWRpdFRv
a2VuKQorICAgICAgICBzYW5kYm94X2VuYWJsZV9zdGF0ZV9mbGFnKEVOQUJMRV9NQUNIX0JPT1RT
VFJBUCwgKmF1ZGl0VG9rZW4pOworI2VuZGlmCisKICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUp
OwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiBhdWRpdFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFu
ZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChT
cGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9r
ZW5fdD4gYXVkaXRUb2tlbiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlv
bnMsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0
dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBmbGFn
c10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlKSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gewotICAg
ICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVk
aXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yUmVzb3VyY2VzKHNl
cnZpY2VzLCBbYXVkaXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzXSAoQVNDSUlM
aXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7CisgICAgICAgIGF1dG8g
aGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRva2VuLCBt
YWNoQm9vdHN0cmFwT3B0aW9ucywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFuZGxlKTsKICAg
ICAgICAgcmV0dXJuIGhhbmRsZTsKICAgICB9KTsKIH0KIAotYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3Qg
QVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRp
dFRva2VuLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgorYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxp
emVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFw
T3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2lu
KCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNl
cy5zaXplKCkgfSwgYXVkaXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIGZsYWdzKTsKIH0K
IAogYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2Vu
KFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0
YXRlVmFyaWFibGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2RlZmluZSBFTkFC
TEVfTUFDSF9CT09UU1RSQVAgIkVuYWJsZU1hY2hCb290c3RyYXAiCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hS
ZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24g
MjkzNDc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1v
dGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgdm9pZCBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaQogICAgICAg
ICBtX3NvdXJjZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAg
ICAgIGlmIChtX3NvdXJjZXNOZWVkaW5nU2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewog
ICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAg
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRv
a2VuKCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlv
bi0+Z2V0QXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9u
czo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9
IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
aGFuZGxlRm9yTWljcm9waG9uZTsKICAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53
ZWJraXQubWljcm9waG9uZSJfcykpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw3ICsyOTEsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
CiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgICAgIGlmICghbV9oYXNDcmVhdGVkU2FuZGJveEV4dGVuc2lvbkZvclRDQ0Qg
JiYgZG9lc1BhZ2VOZWVkVENDRChtX3BhZ2UpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBjcmVh
dGVkSGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLnRjY2QiX3MsIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5nZXRBdWRp
dFRva2VuKCkpKQorICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBt
X3BhZ2UucHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3Rz
dHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRs
ZSA9IFdURk1vdmUoKmNyZWF0ZWRIYW5kbGUpOwogICAgICAgICAgICAgbV9oYXNDcmVhdGVkU2Fu
ZGJveEV4dGVuc2lvbkZvclRDQ0QgPSB0cnVlOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCShyZXZp
c2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNCwxMyArMTE0LDE0IEBAIGJvb2wgVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OndpbGxDcmVhdGUKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9CiAKKyAgICAgICAgICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRU
b2tlbigpOwogICAgICAgICAgICAgaWYgKG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9u
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51
bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBh
dWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxl
TWFjaEJvb3RzdHJhcCkpIHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lv
bkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNo
ZWNrZWRBcHBlbmQoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQog
I2lmIEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwg
YXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJs
ZU1hY2hCb290c3RyYXApKSB7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNp
b25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5j
aGVja2VkQXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAg
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDI5MzQ3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODgsOSArMjg4OCw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXMKICNpZiBQTEFURk9STShNQUMpCiAgICAgYm9vbCBl
dmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFnT3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9
PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50TWF5U3RhcnREcmFnKQotICAgICAgICBz
YW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNo
TG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZp
Y2VzLnN0b3JlIl9zIH0sIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIHNhbmRib3hFeHRlbnNpb25z
ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFw
cGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5pY29uc2VydmljZXMuc3RvcmUiX3MgfSwg
cHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9w
dGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOwogI2VuZGlmCi0gICAgCisKICAgICBMT0coTW91
c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAl
enUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVl
dWUuc2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50
LCBzYW5kYm94RXh0ZW5zaW9ucykpOwogfQpAQCAtNzI2MSwxMSArNzI2MSwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuCiAjZW5kaWYKIAogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uLCBpY29u
U2VydmljZXNTYW5kYm94RXh0ZW5zaW9uOworICAgIGF1dG8gYXVkaXRUb2tlbiA9IG1fcHJvY2Vz
cy0+YXVkaXRUb2tlbigpOwogI2lmIEhBVkUoRlJPTlRCT0FSRF9TWVNURU1fQVBQX1NFUlZJQ0VT
KQotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBz
dGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNl
cnZpY2VzIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0
aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGZyb250Ym9hcmRTZXJ2aWNlc1Nh
bmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogI2VuZGlmCi0gICAgaWYgKGF1dG8g
aGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29t
LmFwcGxlLmljb25zZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUuaWNvbnNlcnZpY2VzIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9v
dHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgIGljb25TZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb24gPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0Fu
ZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFS
ZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpLCBmcm9udGJvYXJkU2VydmljZXNTYW5k
Ym94RXh0ZW5zaW9uLCBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uKSk7CkBAIC04Mzk0LDcg
KzgzOTUsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6CiAjZW5k
aWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQogICAgIGlmIChwcmVmZXJlbmNlcygp
LnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpCi0gICAgICAgIHBhcmFtZXRlcnMuZm9u
dE1hY2hFeHRlbnNpb25IYW5kbGUgPSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKTsKKyAgICAg
ICAgcGFyYW1ldGVycy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lv
bkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFi
bGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VOVF9DT0xPUlMpCiAg
ICAgcGFyYW1ldGVycy5hY2NlbnRDb2xvciA9IHBhZ2VDbGllbnQoKS5hY2NlbnRDb2xvcigpOwpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI5MzQ3
NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjUwLDcgKzI2NTAsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRl
bnNpb25zKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lv
bjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMpOwogCiAgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0
ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJiBu
ZXdFZGl0b3JTdGF0ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMywxMCBAQCBwdWJs
aWM6CiAgICAgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY3Jvc3NPcmlnaW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2Fw
dGl2ZVBvcnRhbE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CiAK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1
ZGl0VG9rZW4oKSBjb25zdDsKKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1By
b3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJD
b3JlOjpDcm9zc09yaWdpbk1vZGUsIENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJl
dmlzaW9uIDI5MzQ3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YWRkUGxhdGZvcm1Mb2FkUGFyYW1lCiAjaWYgIUVOQUJMRShDT05URU5UX0ZJ
TFRFUklOR19JTl9ORVRXT1JLSU5HX1BST0NFU1MpCiAgICAgbG9hZFBhcmFtZXRlcnMubmV0d29y
a0V4dGVuc2lvblNhbmRib3hFeHRlbnNpb25IYW5kbGVzID0gY3JlYXRlTmV0d29ya0V4dGVuc2lv
bnNTYW5kYm94RXh0ZW5zaW9ucyhwcm9jZXNzKTsKICNpZiBQTEFURk9STShJT1MpCisgICAgYXV0
byBhdWRpdFRva2VuID0gcHJvY2Vzcy5hdWRpdFRva2VuKCk7CiAgICAgaWYgKCFwcm9jZXNzLmhh
c01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpICYmIFtnZXRXZWJGaWx0ZXJFdmFsdWF0b3JD
bGFzcygpIGlzTWFuYWdlZFNlc3Npb25dKSB7Ci0gICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtp
dC52aWV3c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgc3Rk
OjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNv
bS5hcHBsZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBhdWRpdFRva2VuLCBTYW5kYm94
RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAg
ICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jb250ZW50RmlsdGVyRXh0ZW5zaW9uSGFuZGxlID0g
V1RGTW92ZSgqaGFuZGxlKTsKIAotICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5z
eXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hF
eHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAg
ICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmZyb250Ym9hcmRTZXJ2aWNlRXh0ZW5zaW9uSGFuZGxl
ID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgICAgICBwcm9jZXNzLm1hcmtIYXNNYW5hZ2VkU2Vz
c2lvblNhbmRib3hBY2Nlc3MoKTsKQEAgLTg0MSw3ICs4NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bGFzdE5hdmlnYXRpb25XYXNBcHBJCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NU
b0Fzc2V0U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVB
c3NldEhhbmRsZVYyOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0
ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgcHJv
Y2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0g
V1RGTW92ZSgqaGFuZGxlKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6R3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxlQXNzZXRIYW5kbGVWMiksIDApOwog
fQpAQCAtODUzLDEzICs4NTQsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJldm9rZUFjY2Vzc1Rv
QXNzZXRTZQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3Ry
eVRvVXNlckZvbnRSZWdpc3RyeSgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3M6OlN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnko
Zm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCkpLCAwKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzczo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRS
ZWdpc3RyeShmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJv
b3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSwgMCk7CiB9CiAKLVNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgp
CitTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNp
b25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3Rz
dHJhcE9wdGlvbnMpCiB7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRNYWNoRXh0
ZW5zaW9uSGFuZGxlOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgc3RkOjpudWxsb3B0
KSkKKyAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHByb2Nlc3MoKS5hdWRpdFRva2VuKCks
IG1hY2hCb290c3RyYXBPcHRpb25zKSkKICAgICAgICAgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUg
PSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBy
b2Nlc3NQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAt
MjQ4LDcgKzI0OCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp1bmJsb2NrQWNjZXNzaWJpbGkK
IAogICAgIFZlY3RvcjxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+IGhhbmRsZUFycmF5OwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVy
LXN5c3RlbXdpZGUiX3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJf
cyB9LCBjb25uZWN0aW9uKCkgPyBjb25uZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSA6IHN0ZDo6
bnVsbG9wdCk7CisgICAgaGFuZGxlQXJyYXkgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaXBob25lLmF4c2VydmVyLXN5c3RlbXdpZGUi
X3MsICJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcyB9LCBhdWRpdFRv
a2VuKCksIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNo
Qm9vdHN0cmFwKTsKICAgICBBU1NFUlQoaGFuZGxlQXJyYXkuc2l6ZSgpID09IDIpOwogI2VuZGlm
CiAKQEAgLTMyNSw0ICszMjUsMTIgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3Vy
Y2VJc1ZhbAogICAgIHJldHVybiB0cnVlOwogfQogCitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IFdlYlByb2Nlc3NQcm94eTo6YXVkaXRUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXND
b25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0
dXJuIGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOworfQorCiB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5
MzQ3NSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTIyNjksNiArMjI2OSw4IEBACiAJCUUxRDI2QTUzMTc1OTY0RDkw
MDk1QkZEMSAvKiBXZWJDb250ZW50UHJvY2Vzcy54aWIgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDI2QTRDMTc1OTYzNEUwMDk1QkZEMSAvKiBXZWJD
b250ZW50UHJvY2Vzcy54aWIgKi87IH07CiAJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBT
YW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUU1NTJDMzE2QUUwNjVFMDA0RUQ2NTMgLyogU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oICovOyB9OwogCQlFMUVFNTNFMzExRjhDRkMwMDBD
Q0JFRTQgLyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVFNTNEQzExRjhDRjlGMDBDQ0JFRTQg
LyogSW5qZWN0ZWRCdW5kbGVQYWdlRWRpdG9yQ2xpZW50LmggKi87IH07CisJCUUzNkZGMDAzMjdG
MzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAv
KiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLzsgfTsKKwkJRTM2RkYwMDQyN0YzNkZCRDAwNEJF
MjFBIC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2Ig
Ki87IH07CiAJCUUzODE2QjNEMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTM4MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgKi87IH07CiAJCUUzODE2QjNFMjdFMjQ2M0EwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVu
dEZpbHRlck1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzODE2QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuaCAqLzsgfTsKIAkJRTM4NjZBRTUyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9y
aWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZp
Y2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi87IH07CkBAIC03MDk1LDkgKzcw
OTcsMTAgQEAKIAkJRTM0MzlCNjMyMzQ1NDYzQTAwMTFERTBCIC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbkluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5m
by5oOyBwYXRoID0gTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNEIxMTBDMjdDNDZCQzYwMDZEMkYyRSAvKiBsaWJX
ZWJDb3JlVGVzdFNoaW0uZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRl
c3RTaGltLmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlFMzRC
MTEwRjI3QzQ2RDA5MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFj
aC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8q
IFNhbmRib3ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBmb2xkZXI7IHBhdGggPSBTYW5kYm94OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MzZENzAxQTI3QjcwOUVEMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUQyN0I3MThFRjAwNjUzMUI3IC8qIFdlYkF0dGFjaG1l
bnRFbGVtZW50Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF0dGFjaG1lbnRFbGVt
ZW50Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDEyN0Yz
NkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNi
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IHByZWZlcmVuY2VzLnNiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRG
aWx0ZXJNYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
Yk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHA7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2
QjNDMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2Vy
Lmg7IHBhdGggPSBOZXR3b3JrL1dlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2
aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclBy
b3h5Lm1tOyBwYXRoID0gaW9zL1dlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94
eS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc4ODMsNyArNzg4Niw3IEBACiAJ
CQkJQkMxMTFCNUExMTJGNjI4MjAwMzM3QkFCIC8qIG1hYyAqLywKIAkJCQk1MUFGMUIzRDI3MUY0
NkE2MDAxNTM4RTYgLyogTm90aWZpY2F0aW9ucyAqLywKIAkJCQkyRDJFMDQ3NjFGNUJFQzRGMDBC
QjI1RUQgLyogUmVtb3RlTGF5ZXJUcmVlICovLAotCQkJCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3
NSAvKiBTYW5kYm94ICovLAorCQkJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBTYW5kYm94
ICovLAogCQkJCTFDQjc0NjQ1Mjc0Mzc5RjEwMEYxOTg3NCAvKiBXZWJHUFUgKi8sCiAJCQkJMUFC
RjQzNzgxQTM2ODAzNTAwM0ZCMEU2IC8qIFdlYnNpdGVEYXRhICovLAogCQkJCTExODUwMjYwMjY3
M0IwREEwMEE2NDI1RSAvKiBYUiAqLywKQEAgLTEzNjkyLDYgKzEzNjk1LDE1IEBACiAJCQluYW1l
ID0gUERGOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJRTM2RkVGRkUyN0Yz
NkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5z
YiAqLywKKwkJCQlFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFi
bGVzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IFNhbmRib3g7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQlFNDA0OTA2RjIxREU2NUQ3MDAzN0YwREIgLyogbWFjICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEzOTkyLDEzICsxNDAwNCw3
IEBACiAJCQkJMkREOUVCMkQxQTZGMDEyNTAwQkIxMjY3IC8qIEFQSU5hdmlnYXRpb25DbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjY5RkEyMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZp
Z2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGOUVFRUUxQTc4NkVBRDAwQjZDRkJF
IC8qIEFQSU5hdmlnYXRpb25SZXNwb25zZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3ODgy
ODBGOTQ3MTAwMTcwMEQ0IC8qIEVudGVyRnVsbHNjcmVlbi5qcyBpbiBIZWFkZXJzICovLAotCQkJ
CURENERCNzg5MjgwRjk0NzEwMDE3MDBENCAvKiBGaW5kTm9kZXMuanMgaW4gSGVhZGVycyAqLywK
LQkJCQlERDREQjc4QTI4MEY5NDcxMDAxNzAwRDQgLyogRm9ybUVsZW1lbnRDbGVhci5qcyBpbiBI
ZWFkZXJzICovLAotCQkJCURENERCNzhCMjgwRjk0NzEwMDE3MDBENCAvKiBGb3JtU3VibWl0Lmpz
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0ExRTJBODUxRUVGRTg5MjAwMzdBMEUwIC8qIEFQSU5vdGlm
aWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlERDREQjc4NzI4MEY5NDVFMDAx
NzAwRDQgLyogRWxlbWVudERpc3BsYXllZC5qcyBpbiBIZWFkZXJzICovLAotCQkJCURENERCNzg2
MjgwRjk0NUEwMDE3MDBENCAvKiBFbGVtZW50QXR0cmlidXRlLmpzIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMzM0RENjgxMjM4NDY0NjAwMzYwRjNGIC8qIEFQSU51bWJlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM4NTdGQjUxMkI4MzBFNjAwRURFQjJFIC8qIEFQSU9wZW5QYW5lbFBhcmFtZXRlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTdDODlEMjk4MUE2NzUzQjIwMDNBNUZERSAvKiBBUElQYWdl
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI2Niw4ICsxNDI3MiwxMSBAQAog
CQkJCTJEQTY3MzFBMjBDNzU0QjEwMDNDQjQwMSAvKiBEeW5hbWljVmlld3BvcnRTaXplVXBkYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTA1RkU1NDE4RDdCOURFMDA4RjU3QTggLyogRWRpdGlu
Z1JhbmdlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE0MUFCNTEyQzAyRUM0MDAyQkU2N0IgLyog
RWRpdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCURENERCNzg2MjgwRjk0NUEwMDE3MDBE
NCAvKiBFbGVtZW50QXR0cmlidXRlLmpzIGluIEhlYWRlcnMgKi8sCisJCQkJREQ0REI3ODcyODBG
OTQ1RTAwMTcwMEQ0IC8qIEVsZW1lbnREaXNwbGF5ZWQuanMgaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAzMkRBODEwRjQzN0QxMDA1OEMxNUEgLyogRW5jb2Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0RDREM5OUQyNDhGRThEQTAwQTY5NTIyIC8qIEVuZG93bWVudFN0YXRlVHJhY2tlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJREQ0REI3ODgyODBGOTQ3MTAwMTcwMEQ0IC8qIEVudGVyRnVsbHNjcmVl
bi5qcyBpbiBIZWFkZXJzICovLAogCQkJCTUxQjE1QTg1MTM4NDNBMzkwMDMyMUFEOCAvKiBFbnZp
cm9ubWVudFV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBNTc1RkIxNDk2QjUyNjAw
QTRFRTA2IC8qIEV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcyRUJCRDcy
NTM3RUJBRTAwMDU1MkIzIC8qIEV4dHJhUHJpdmF0ZVN5bWJvbHNGb3JUQVBJLmggaW4gSGVhZGVy
cyAqLywKQEAgLTE0Mjc4LDkgKzE0Mjg3LDEyIEBACiAJCQkJOTMxMkJBRDUyNkYzM0MyNjAwRkRE
RjVGIC8qIEZpbGVTeXN0ZW1TdG9yYWdlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDBC
OTY2MUExOEUyNUFFMTAwQ0UxRjg4IC8qIEZpbmRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBOTBDMUY0MTI2NEZENzEwMDNFNDRENCAvKiBGaW5kQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJREQ0REI3ODkyODBGOTQ3MTAwMTcwMEQ0IC8qIEZpbmROb2Rlcy5qcyBpbiBIZWFk
ZXJzICovLAogCQkJCUM1OUM0QTU5MThCODExNzQwMDdCRENCNiAvKiBGb2N1c2VkRWxlbWVudElu
Zm9ybWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U4MUQ4RDEzMTlGN0VGMDAyNDE5MTAg
LyogRm9udEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTlCRDhBQjRBMjU4MjBFNTMwMDUzODZG
OCAvKiBGb250UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlERDREQjc4QTI4MEY5NDcx
MDAxNzAwRDQgLyogRm9ybUVsZW1lbnRDbGVhci5qcyBpbiBIZWFkZXJzICovLAorCQkJCURENERC
NzhCMjgwRjk0NzEwMDE3MDBENCAvKiBGb3JtU3VibWl0LmpzIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUExNEY4RTIxRDc0QzgzNDAwNkNCRUM2IC8qIEZyYW1lSW5mb0RhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBRTAwRDYxMTgzMTc5MjEwMDA4N0RENyAvKiBGcmFtZUxvYWRTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUMxMjFFODQyNDEwMjA4RDAwNDg2RjlCIC8qIEZyYW1lVHJlZU5vZGVE
YXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjA2LDYgKzE0NjE4LDcgQEAKIAkJCQlCQzJEMDIx
NzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJv
eEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTM2RkYwMDMy
N0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJN0JBQjExMTAyNUREMDJCMzAwOEZDNDc5IC8qIFNjb3BlZEFjdGl2ZU1lc3NhZ2VSZWNl
aXZlUXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU0RDA0MjFGMUQ3MkQwMDdFM0MzNiAv
KiBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDg1MSw3ICsxNDg2NCw2IEBA
CiAJCQkJQkNFNDY5NTQxMjE0RTZDQjAwMEI5OEVCIC8qIFdlYkZvcm1DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUREQTBBMkI1MjdFNTVFNEUwMDVFMDg2RSAvKiBXZWJGb3JtRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUREQTBBMzAxMjdFNTVFNEUwMDVFMDg2RSAvKiBXZWJGb3Jt
RGVsZWdhdGVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTlERkJFNzI4MTM4N0MxMDAz
RkY2QUQgLyogV0tOb3RpZmljYXRpb25Qcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0U0Njk1NjEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTIyN0Q4NDI3QTExMjYxMDA4RUFCNTcgLyogV2ViRm91
bmRUZXh0UmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NUNGRDRFMjc5RDMxRTUwMDJGMTAy
MCAvKiBXZWJGb3VuZFRleHRSYW5nZUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTUz
NDAsNiArMTUzNTIsNyBAQAogCQkJCTMxOEJFMTc5MTQ3NDNFNkYwMEE4RkJCMiAvKiBXS05vdGlm
aWNhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE4QkUxNzExNDc0M0RCMTAwQThGQkIyIC8q
IFdLTm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFBMkVDNzQxNDhE
NTlDQTAwODEwRDcxIC8qIFdLTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxOURGQkU3MjgxMzg3QzEwMDNGRjZBRCAvKiBXS05vdGlmaWNhdGlvblBy
aXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkMwQzRBMTQ2RERDOEEwMDE2QzkxMSAv
KiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0M0QzA5NDE4
MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzNDRUFE
NjE4NTQxN0FFMDA4QzM2M0QgLyogV0tOU0RhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTU5NjUs
NiArMTU5NzgsNyBAQAogCQkJCTZCRTk2OUMxMUU1NEQ0NTIwMDhCNzQ4MyAvKiBjb3JlUHJlZGlj
dGlvbl9tb2RlbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2
IC8qIEluZm9QbGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLywKIAkJCQkzRkIwOEU0MzFGNjBC
MjQwMDA1RTUzMTIgLyogaU9TLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKKwkJCQlFMzZGRjAw
NDI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovLAogCQkJ
CTVDOEJDNzk3MjE4Q0JCNDgwMDgxMzg4NiAvKiBTYWZlQnJvd3NpbmcueGNhc3NldHMgaW4gUmVz
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNz
LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUu
V2ViUHJvY2Vzcy5zYi5pbgkocmV2aXNpb24gMjkzNDc1KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUy
LDI3ICsyMDUyLDQwIEBACiAjZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRF
UklORykKLShpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJ
TFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyhkZWZpbmUgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKKyAgICAobWVzc2FnZS1udW1iZXIgMjA0IDIwNyAz
MDEgNzExIDgwMCA4MDQpKQorCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZp
bHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2Ut
ZmlsdGVyCi0jaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAwMDAKICAg
ICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAg
ICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisgICAgICAg
ICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290
c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkKKworKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVO
QUJMRV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1ib290
c3RyYXApKQorI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTIwMDAwCisj
aWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJl
cXVpcmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJp
dHkuZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJh
cC13aXRoLWZpbHRlcikKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93LW1hY2gt
Ym9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAgICAgICAg
ICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxh
ZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChzdGF0ZS1m
bGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290
c3RyYXAtd2l0aC1maWx0ZXIpKSkpCisjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13
aXRoLWZpbHRlcikpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogI2Vsc2UK
KyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVy
CiAgICAgICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0g
ICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAg
ICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9v
dHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAyMDQK
LSAgICAgICAgICAgICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAgICAg
ICA3MTEKLSAgICAgICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAoYW5k
IChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAo
ZGVmaW5lZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJuZWwt
ZW5kcG9pbnQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCShyZXZpc2lvbiAyOTM0NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSwxMSBAQCBERUZJ
TkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkCiAKIFJlZjxXZWJQYWdlPiBXZWJQ
YWdlOjpjcmVhdGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKIHsKKyAgICBhdXRvIHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBh
Z2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CisKKyAgICBpZiAoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuaW5qZWN0ZWRCdW5kbGUoKSkKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuaW5qZWN0ZWRCdW5kbGUoKS0+ZGlkQ3JlYXRlUGFnZShwYWdlLnB0cigpKTsKKwogI2lm
IEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKICAgICAvLyBUaGlzIGNhbGwgaXMgbm90IG1lYW50
IHRvIGFjdHVhbGx5IHJlYWQgYSBwcmVmZXJlbmNlLCBidXQgaXMgb25seSBoZXJlIHRvIHRyaWdn
ZXIgYSBzYW5kYm94IHJ1bGUgaW4gdGhlCiAgICAgLy8gV2ViQ29udGVudCBwcm9jZXNzLCB3aGlj
aCB3aWxsIHRvZ2dsZSBhIHNhbmRib3ggdmFyaWFibGUgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhl
IFdlYkNvbnRlbnQgcHJvY2VzcwpAQCAtNDY2LDExICs0NzEsNiBAQCBSZWY8V2ViUGFnZT4gV2Vi
UGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmCiAgICAgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJW
YWx1ZShDRlNUUigia2V5IiksIENGU1RSKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuTGF1
bmNoIiksIG51bGxwdHIpOwogI2VuZGlmCiAKLSAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0
UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKLQotICAgIGlm
IChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2Uu
cHRyKCkpOwotCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458531</attachid>
            <date>2022-04-28 10:01:01 -0700</date>
            <delta_ts>2022-04-28 14:59:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>42224</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTM1NzUpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsMTggQEAKIAogICAgICAgICAqIHd0Zi9TdGRMaWJFeHRyYXMu
aDoKIAorMjAyMi0wNC0yOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6
Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAg
ICAgICBBZGQgU1BJIHRvIHNldCBzYW5kYm94IHN0YXRlIHZhcmlhYmxlLgorCisgICAgICAgICog
d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oOgorCiAyMDIyLTA0LTI2ICBNYW51ZWwgUmVnbyBD
YXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBBcmlhUmVmbGVj
dGlvbkVuYWJsZWQgcnVudGltZSBmbGFnCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2lu
L1NhbmRib3hTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL1Nh
bmRib3hTUEkuaAkocmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dURi93dGYvc3BpL2Rhcndp
bi9TYW5kYm94U1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAKIGNoYXIgKnNh
bmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2VudHJ5X2NsYXNzX3RvX3Byb2Nl
c3MoY29uc3QgY2hhciAqZXh0ZW5zaW9uX2NsYXNzLCBjb25zdCBjaGFyICpyZWdpc3RyeV9lbnRy
eV9jbGFzcywgdWludDMyX3QgZmxhZ3MsIGF1ZGl0X3Rva2VuX3QpOwogY2hhciAqc2FuZGJveF9l
eHRlbnNpb25faXNzdWVfaW9raXRfcmVnaXN0cnlfZW50cnlfY2xhc3MoY29uc3QgY2hhciAqZXh0
ZW5zaW9uX2NsYXNzLCBjb25zdCBjaGFyICpyZWdpc3RyeV9lbnRyeV9jbGFzcywgdWludDMyX3Qg
ZmxhZ3MpOwogCitib29sIHNhbmRib3hfZW5hYmxlX3N0YXRlX2ZsYWcoY29uc3QgY2hhciAqdmFy
bmFtZSwgYXVkaXRfdG9rZW5fdCk7CisKIFdURl9FWFRFUk5fQ19FTkQKIAogI2VuZGlmIC8vIE9T
KERBUldJTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTM1NzUpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtNDcwLDYgKzQ3MCw2MCBAQAogICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06CiAgICAgICAgICgt
W1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNrOmRpZFJlY2VpdmVS
ZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKIAorMjAyMi0wNC0yOCAgUGVyIEFybmUgVm9s
bGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1l
c3NhZ2UgZmlsdGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzg1NzcKKyAgICAgICAgPHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlh
YmxlIHRvIGR5bmFtaWNhbGx5IHN3aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2Vi
Q29udGVudCBwcm9jZXNzJyBzYW5kYm94LgorICAgICAgICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBX
ZWJDb250ZW50IHByb2Nlc3MsIHdlIHVzZSBhIG1vcmUgcGVybWlzc2l2ZSBib290c3RyYXAgZmls
dGVyIHRvIGFsbG93IGNyZWF0aW5nIE1hY2gKKyAgICAgICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0
aW1lIGZyYW1lLiBBZnRlciB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ug
c3dpdGNoIHRvIGEgYmxvY2tpbmcgZmlsdGVyLAorICAgICAgICB3aGljaCB3aWxsIGVzc2VudGlh
bGx5IGJsb2NrIGFjY2VzcyB0byBsYXVuY2hkLiBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWlu
ZyBzd2l0Y2hlZCBiYWNrIHRvIHRoZSBtb3JlCisgICAgICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3
aGVuIHdlIGNyZWF0ZSBuZXcgTWFjaCBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250
ZW50IHByb2Nlc3MuIFRoaXMgaXMgZG9uZSBvbgorICAgICAgICBhIGNhc2UgYnkgY2FzZSBiYXNp
cywgYnkgYWRkaW5nIGEgbmV3IHBhcmFtZXRlciB0byBjb250cm9sIHRoaXMgYmVoYXZpb3Igd2hl
biBjcmVhdGluZyBNYWNoIHNhbmRib3gKKyAgICAgICAgZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNo
aW5nIHRoZSBXZWJDb250ZW50IHByb2Nlc3MgdGhlcmUgaXMgdXN1YWxseSBubyBuZWVkIHRvIHNw
ZWNpZnkgdGhhdCB0aGUgcGVybWlzc2l2ZQorICAgICAgICBib290c3RyYXAgZmlsdGVyIGlzIG5l
ZWRlZCwgc2luY2Ugd2UgYXJlIGFscmVhZHkgdXNpbmcgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1
cmluZyBsYXVuY2ggdGltZS4gSG93ZXZlciwKKyAgICAgICAgZm9yIHNvbWUgTWFjaCBleHRlbnNp
b25zIHRoYXQgd2lsbCBvbmx5IHJlc3VsdCBpbiBhIG5ldyBYUEMgY29ubmVjdGlvbiBpbiB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGFmdGVyIGxhdW5jaCwKKyAgICAgICAgd2UgbmVlZCB0byBzcGVj
aWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGlzIHJlcXVyaWVkLiBPdGhlcndpc2UsIGNy
ZWF0aW5nIHRoZSBuZXcgWFBDIGNvbm5lY3Rpb24gYWZ0ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwg
ZmFpbC4gRm9yIE1hY2ggc2FuZGJveCBleHRlbnNpb25zIGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9m
IHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdlIGFsd2F5cyBuZWVkCisgICAgICAgIHRvIHVzZSB0
aGUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGJlIGFibGUgdG8gY3JlYXRlIHRoZSBY
UEMgY29ubmVjdGlvbi4gRW5hYmxpbmcgdGhlIHBlcm1pc3NpdmUKKyAgICAgICAgYm9vdHN0cmFw
IGZpbHRlciByZXF1aXJlcyB0aGUgYXVkaXQgdG9rZW4gdG8gYmUgYXZhaWxhYmxlLCB3aGljaCBt
ZWFucyB3ZSBuZWVkIHRvIHBhc3MgdGhlIGF1ZGl0IHRva2VuIHdoZW4KKyAgICAgICAgY3JlYXRp
bmcgdGhlIG5ldyBNYWNoIHNhbmRib3ggZXh0ZW5zaW9ucy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRz
IHVudGlsIGFmdGVyIHRoZSBXZWIgcGFnZSBoYXMgYmVlbiBjcmVhdGVkIHRvCisgICAgICAgIHNl
dCB0aGUgc2FuZGJveCB2YXJpYWJsZSB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVu
dCBwcm9jZXNzIGhhcyBsYXVuY2hlZC4gV2l0aG91dCB0aGlzIGxhc3QgY2hhbmdlLAorICAgICAg
ICB0aGUgYm9vdHN0cmFwIGZpbHRlciB3b3VsZCBoYXZlIG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBj
cmVhdGluZyB0aGUgV2ViIHBhZ2UsIHNpbmNlIGNyZWF0aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAg
ICAgICAgY29uc3VtZSBhbmQgcmV2b2tlIHNvbWUgbWFjaCBleHRlbnNpb25zLgorCisgICAgICAg
ICogUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiLmluOgorICAgICAgICAqIFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2g6Cisg
ICAgICAgICogU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjphZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3Ry
eVRvVXNlckZvbnRSZWdpc3RyeSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nl
c3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6dW5i
bG9ja0FjY2Vzc2liaWxpdHlTZXJ2ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6ZW5hYmxlTWFjaEJvb3RzdHJhcCBjb25zdCk6
CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdCk6CisgICAgICAgICogVUlQcm9jZXNzL1Vz
ZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlck1lZGlhUHJv
Y2Vzc01hbmFnZXI6OndpbGxDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vz
c05leHRRdWV1ZWRNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbik6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6ZW5zdXJlU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlcik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmlu
OgorCiAyMDIyLTA0LTI2ICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAg
ICAgICBGaXggYnVpbGQgZXJyb3I6ICJjcDogSmF2YVNjcmlwdENvcmUucHJvZmRhdGEgaXMgbm90
IGEgZGlyZWN0b3J5IgpJbmRleDogU291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2Zp
bGVzL2lvcy9jb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuc2IuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9SZXNvdXJjZXMvU2FuZGJveFByb2ZpbGVzL2lvcy9jb20uYXBwbGUuV2Vi
S2l0LldlYkNvbnRlbnQuc2IuaW4JKHJldmlzaW9uIDI5MzU3NSkKKysrIFNvdXJjZS9XZWJLaXQv
UmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50
LnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDUwLDQwICsxNDUwLDMyIEBACiApCiAKIChkZWZp
bmUtb25jZSAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgIChtZXNzYWdlLW51
bWJlcgotICAgICAgICAyMDYKLSAgICAgICAgMjA3Ci0gICAgICAgIDcxMQotICAgICAgICA3MTIK
LSAgICAgICAgNzE4Ci0gICAgICAgIDgwMAotICAgICAgICA4MDIKLSAgICAgICAgODAzCi0gICAg
ICAgIDgwNAotICAgICAgICA4MDUKLSAgICApCi0pCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNiAy
MDcgNzExIDcxMiA3MTggODAwIDgwMiA4MDMgODA0IDgwNSA5MDQpKQogCi0oaWYgKGRlZmluZWQ/
ICcqc2JwbC12ZXJzaW9uKikKKyhkZWZpbmUgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmls
dGVyKQogICAgIChhbGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1m
aWx0ZXIKICAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRy
eSkpCiAgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQKLSAgICAgICAgICAgICAg
ICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAgICAgICAgICAgKQotICAgICAg
ICApCi0gICAgKQotOzsgZWxzZQorICAgICAgICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNz
YWdlLW51bWJlcnMpKSkpKQorCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorKGlmIChy
ZXF1aXJlLWFuY2VzdG9yLXdpdGgtZW50aXRsZW1lbnQgImNvbS5hcHBsZS5wcml2YXRlLnNlY3Vy
aXR5LmVuYWJsZS1zdGF0ZS1mbGFncyIpCiAgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAg
ICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgotICAgICAgICAgICAgKGRlbnkgeHBjLW1lc3NhZ2Ut
c2VuZCAod2l0aCB0ZWxlbWV0cnkpKQotICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNzYWdlLXNl
bmQKLSAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKQotICAg
ICAgICAgICAgKQotICAgICAgICApCi0gICAgKQotKQorICAgICAgICAgICAgKGFsbG93IG1hY2gt
bWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeS1iYWNrdHJhY2UpKSkpCis7OyBlbHNlCisgICAg
KGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKIAorKHdpdGgtZmlsdGVyCisgICAg
KHJlcXVpcmUtYW55CisgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVu
dFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAoc3RhdGUtZmxhZyAiRW5hYmxlTWFjaEJvb3Rz
dHJhcCIpKQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCisjZWxzZQor
KGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKQorI2VuZGlmCisKIChkZWZpbmUgKHN5
c2NhbGwtbWFjaC1vbmx5LWluLXVzZS1kdXJpbmctbGF1bmNoKQogICAgIChtYWNodHJhcC1udW1i
ZXIKICAgICAgICAgTVNDX21hY2hfZ2VuZXJhdGVfYWN0aXZpdHlfaWQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gJKHJldmlzaW9uIDI5MzU3
NSkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9wcm9jZXNzLWVudGl0bGVtZW50cy5zaAkod29y
a2luZyBjb3B5KQpAQCAtMTk3LDYgKzE5NywxMiBAQAogICAgICAgICAgICAgcGxpc3RidWRkeSBB
ZGQgOmNvbS5hcHBsZS5zZWN1cml0eS5jcy5zaW5nbGUtaml0IGJvb2wgWUVTCiAgICAgICAgIGZp
CiAKKyAgICAgICAgaWYgKCggIiR7VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1J9IiA+PSAx
MzAwMDAgKSkKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5h
cHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKKyAgICAgICAgZmkKKwogICAg
ICAgICBpZiBbWyAiJHtXS19XRUJDT05URU5UX1NFUlZJQ0VfTkVFRFNfWFBDX0RPTUFJTl9FWFRF
TlNJT05fRU5USVRMRU1FTlR9IiA9PSBZRVMgXV0KICAgICAgICAgdGhlbgogICAgICAgICAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnhwYy5kb21haW4tZXh0ZW5zaW9uIGJv
b2wgWUVTCkBAIC0zNDQsNiArMzUwLDggQEAKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxl
LnByaXZhdGUucGFjLmV4Y2VwdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS52ZXJpZmllZC1qaXQgYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubWVzc2FnZS1maWx0ZXIgYm9vbCBZRVMKKyAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1m
bGFncyBhcnJheQorICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0
eS5tdXRhYmxlLXN0YXRlLWZsYWdzOjAgc3RyaW5nIEVuYWJsZU1hY2hCb290c3RyYXAKICAgICBw
bGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2ViaW5zcGVjdG9yLmFsbG93LXJlbW90
ZS1pbnNwZWN0aW9uIGJvb2wgWUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2
YXRlLndlYmluc3BlY3Rvci5wcm94eS1hcHBsaWNhdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVk
ZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCBib29sIFlF
UwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbQkocmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvU2FuZGJveEV4dGVuc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCwxMCBAQAogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oPgogI2ltcG9ydCA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2lu
Y2x1ZGUgIlNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBjbGFzcyBTYW5kYm94RXh0ZW5zaW9uSW1wbCB7CkBAIC0zMTYsOCArMzIwLDkgQEAK
ICAgICByZXR1cm4gV1RGTW92ZShoYW5kbGUpOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykg
LT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJh
cE9wdGlvbnMsIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxl
PgogeworICAgIFVOVVNFRF9QQVJBTShtYWNoQm9vdHN0cmFwT3B0aW9ucyk7CiAgICAgSGFuZGxl
IGhhbmRsZTsKICAgICBBU1NFUlQoIWhhbmRsZS5tX3NhbmRib3hFeHRlbnNpb24pOwogICAgIApA
QCAtMzI3LDIxICszMzIsMzAgQEAKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAgICAgCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIC8vIFdoZW4gbGF1bmNo
ZCBpcyBibG9ja2VkIGluIHRoZSBzYW5kYm94LCB3ZSBuZWVkIHRvIG1hbnVhbGx5IGVuYWJsZSBi
b290c3RyYXBwaW5nIG9mIG5ldyBYUEMgY29ubmVjdG9ucy4KKyAgICAvLyBUaGlzIGlzIGRvbmUg
YnkgdW5ibG9ja2luZyBsYXVuY2hkLCBzaW5jZSBsYXVuY2hkIGFjY2VzcyBpcyByZXF1aXJlZCB3
aGVuIGNyZWF0aW5nIE1hY2ggY29ubmVjdGlvbnMuCisgICAgLy8gVW5ibG9ja2luZyBsYXVuY2hk
IGlzIGRvbmUgYnkgZW5hYmxpbmcgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlLgorICAgIC8vIElu
IHRoZSBpbml0aWFsIHZlcnNpb24gb2YgdGhpcyBjaGFuZ2UsIE1hY2ggYm9vdHN0cmFwJ2luZyBp
cyBlbmFibGVkIHVuY29uZGl0aW9uYWxseS4KKyAgICBpZiAoYXVkaXRUb2tlbikKKyAgICAgICAg
c2FuZGJveF9lbmFibGVfc3RhdGVfZmxhZyhFTkFCTEVfTUFDSF9CT09UU1RSQVAsICphdWRpdFRv
a2VuKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFT
Q0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRU
b2tlbiwgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KK2F1dG8gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJ
SUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9r
ZW4sIE1hY2hCb290c3RyYXBPcHRpb25zIG1hY2hCb290c3RyYXBPcHRpb25zLCBPcHRpb25TZXQ8
RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJldHVybiBjcmVhdGVIYW5k
bGVzRm9yUmVzb3VyY2VzKHNlcnZpY2VzLCBbYXVkaXRUb2tlbiwgZmxhZ3NdIChBU0NJSUxpdGVy
YWwgc2VydmljZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKLSAgICAgICAgYXV0byBoYW5k
bGUgPSBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIGZsYWdz
KTsKKyAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgW2F1ZGl0
VG9rZW4sIG1hY2hCb290c3RyYXBPcHRpb25zLCBmbGFnc10gKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNl
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4geworICAgICAgICBhdXRvIGhhbmRsZSA9IGNyZWF0
ZUhhbmRsZUZvck1hY2hMb29rdXAoc2VydmljZSwgYXVkaXRUb2tlbiwgbWFjaEJvb3RzdHJhcE9w
dGlvbnMsIGZsYWdzKTsKICAgICAgICAgQVNTRVJUKGhhbmRsZSk7CiAgICAgICAgIHJldHVybiBo
YW5kbGU7CiAgICAgfSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
c2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVkaXRUb2tlbiwgT3B0aW9u
U2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KK2F1dG8gU2FuZGJveEV4dGVuc2lv
bjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gYXVk
aXRUb2tlbiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMsIE9wdGlv
blNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW4geyBzZXJ2aWNlcy5iZWdpbigpLCBzZXJ2aWNlcy5z
aXplKCkgfSwgYXVkaXRUb2tlbiwgZmxhZ3MpOworICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4oKSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1
ZGl0VG9rZW4sIG1hY2hCb290c3RyYXBPcHRpb25zLCBmbGFncyk7CiB9CiAKIGF1dG8gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yUmVhZEJ5QXVkaXRUb2tlbihTdHJpbmdWaWV3IHBh
dGgsIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbikgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRl
VmFyaWFibGVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNkZWZpbmUgRU5BQkxFX01BQ0hfQk9PVFNU
UkFQICJFbmFibGVNYWNoQm9vdHN0cmFwIgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2Fu
ZGJveEV4dGVuc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRi
b3hFeHRlbnNpb24uaAkocmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQv
U2FuZGJveEV4dGVuc2lvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSwxMiBAQAogICAg
ICAgICBOb1JlcG9ydCwKICAgICAgICAgRG9Ob3RDYW5vbmljYWxpemUsCiAgICAgfTsKLSAgICAK
KworICAgIGVudW0gY2xhc3MgTWFjaEJvb3RzdHJhcE9wdGlvbnMgOiB1aW50OF90IHsKKyAgICAg
ICAgRG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwLAorICAgICAgICBFbmFibGVNYWNoQm9vdHN0cmFw
CisgICAgfTsKKwogICAgIGNsYXNzIEhhbmRsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEhhbmRsZSk7CiAgICAgcHVibGljOgpAQCAtOTEsOSArOTYsOSBAQAogICAgIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPHN0ZDo6cGFpcjxIYW5kbGUsIFN0cmluZz4+IGNyZWF0ZUhhbmRsZUZvclRl
bXBvcmFyeUZpbGUoU3RyaW5nVmlldyBwcmVmaXgsIFR5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yR2VuZXJpY0V4dGVuc2lvbihBU0NJSUxpdGVy
YWwgZXh0ZW5zaW9uQ2xhc3MpOwogI2lmIEhBVkUoQVVESVRfVE9LRU4pCi0gICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJh
bCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+
ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5k
bGVzRm9yTWFjaExvb2t1cChTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7Ci0gICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1
bHQpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiwgTWFjaEJvb3RzdHJhcE9wdGlvbnMgPSBNYWNoQm9vdHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFi
bGVNYWNoQm9vdHN0cmFwLCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOworICAg
IHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4s
IE1hY2hCb290c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxl
TWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBz
dGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoc3RkOjppbml0
aWFsaXplcl9saXN0PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gc2VydmljZXMsIHN0ZDo6b3B0aW9uYWw8
YXVkaXRfdG9rZW5fdD4sIE1hY2hCb290c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpE
ZWZhdWx0KTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZv
clJlYWRCeUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90KTsKICAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvcklPS2l0Q2xhc3NFeHRl
bnNpb24oQVNDSUlMaXRlcmFsIGlva2l0Q2xhc3MsIHN0ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5f
dD4sIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIFZlY3Rv
cjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JJT0tpdENsYXNzRXh0ZW5zaW9ucyhTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gaW9raXRDbGFzc2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+
LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0JKHJldmlzaW9u
IDI5MzU3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTEgKzIwMSwxMiBAQAogI2lmICFFTkFCTEUo
Q09OVEVOVF9GSUxURVJJTkdfSU5fTkVUV09SS0lOR19QUk9DRVNTKQogICAgIGxvYWRQYXJhbWV0
ZXJzLm5ldHdvcmtFeHRlbnNpb25TYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyA9IGNyZWF0ZU5ldHdv
cmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMocHJvY2Vzcyk7CiAjaWYgUExBVEZPUk0oSU9T
KQorICAgIGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgIGlmICgh
cHJvY2Vzcy5oYXNNYW5hZ2VkU2Vzc2lvblNhbmRib3hBY2Nlc3MoKSAmJiBbZ2V0V2ViRmlsdGVy
RXZhbHVhdG9yQ2xhc3MoKSBpc01hbmFnZWRTZXNzaW9uXSkgewotICAgICAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3Rl
VUkiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS51aWtpdC52aWV3
c2VydmljZS5jb20uYXBwbGUuV2ViQ29udGVudEZpbHRlci5yZW1vdGVVSSJfcywgYXVkaXRUb2tl
biwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290
c3RyYXApKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudEZpbHRlckV4dGVuc2lv
bkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZy
b250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBhdWRpdFRva2Vu
LCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3Rz
dHJhcCkpCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5mcm9udGJvYXJkU2VydmljZUV4dGVu
c2lvbkhhbmRsZSA9IFdURk1vdmUoKmhhbmRsZSk7CiAKICAgICAgICAgcHJvY2Vzcy5tYXJrSGFz
TWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCk7CkBAIC04NDEsNyArODQyLDcgQEAKIHZvaWQg
V2ViUGFnZVByb3h5OjpncmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcygpCiB7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIG1vYmlsZUFzc2V0SGFuZGxlVjI7Ci0gICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFw
cGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0byBoYW5k
bGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBw
bGUubW9iaWxlYXNzZXRkLnYyIl9zLCBwcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAg
ICAgIG1vYmlsZUFzc2V0SGFuZGxlVjIgPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHcmFudEFjY2Vzc1RvQXNzZXRTZXJ2aWNlcyht
b2JpbGVBc3NldEhhbmRsZVYyKSwgMCk7CiB9CkBAIC04NTMsMTMgKzg1NCwxMyBAQAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdp
c3RyeSgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3aXRj
aEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0ZW5z
aW9uSGFuZGxlKCkpLCAwKTsKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vz
czo6U3dpdGNoRnJvbVN0YXRpY0ZvbnRSZWdpc3RyeVRvVXNlckZvbnRSZWdpc3RyeShmb250ZE1h
Y2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6
OkVuYWJsZU1hY2hCb290c3RyYXApKSwgMCk7CiB9CiAKLVNhbmRib3hFeHRlbnNpb246OkhhbmRs
ZSBXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpCitTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJv
eEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMgbWFjaEJvb3RzdHJhcE9wdGlvbnMpCiB7
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlOwot
ICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1h
Y2hMb29rdXAoImNvbS5hcHBsZS5mb250cyJfcywgc3RkOjpudWxsb3B0KSkKKyAgICBpZiAoYXV0
byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJj
b20uYXBwbGUuZm9udHMiX3MsIHByb2Nlc3MoKS5hdWRpdFRva2VuKCksIG1hY2hCb290c3RyYXBP
cHRpb25zKSkKICAgICAgICAgZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5k
bGUpOwogICAgIHJldHVybiBmb250TWFjaEV4dGVuc2lvbkhhbmRsZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bQkocmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
UHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNzE2LDE0ICs3MTYsMjEgQEAK
ICAgICAgICAgaW50IG5vdGlmeVRva2VuOwogICAgICAgICBub3RpZnlfcmVnaXN0ZXJfZGlzcGF0
Y2gobWVzc2FnZSwgJm5vdGlmeVRva2VuLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKGlu
dCB0b2tlbikgewogICAgICAgICAgICAgUkVMRUFTRV9MT0coTm90aWZpY2F0aW9ucywgIk9wZW5E
aXJlY3RvcnkgaW52YWxpZGF0ZWQgY2FjaGUiKTsKKyNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAg
ICAgICAgICAgICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5zeXN0ZW0ub3BlbmRpcmVjdG9yeWQubGliaW5mbyJfcywg
c3RkOjpudWxsb3B0KTsKICAgICAgICAgICAgIGlmICghaGFuZGxlKQogICAgICAgICAgICAgICAg
IHJldHVybjsKLSNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCiAgICAgICAgICAgICBpZiAoYXV0byog
Z3B1UHJvY2VzcyA9IEdQVVByb2Nlc3NQcm94eTo6c2luZ2xldG9uSWZDcmVhdGVkKCkpCiAgICAg
ICAgICAgICAgICAgZ3B1UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6R1BVUHJvY2Vzczo6T3BlbkRp
cmVjdG9yeUNhY2hlSW52YWxpZGF0ZWQoKmhhbmRsZSksIDApOwogI2VuZGlmCi0gICAgICAgICAg
ICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok9wZW5EaXJlY3RvcnlD
YWNoZUludmFsaWRhdGVkKCpoYW5kbGUpKTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKSB7CisgICAgICAgICAgICAgICAgaWYgKCFwcm9jZXNzLT5jYW5TZW5k
TWVzc2FnZSgpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5zeXN0ZW0ub3BlbmRpcmVjdG9yeWQubGliaW5mbyJfcywgcHJvY2Vzcy0+
YXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5h
YmxlTWFjaEJvb3RzdHJhcCk7CisgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGUpCisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3M6Ok9wZW5EaXJlY3RvcnlDYWNoZUludmFsaWRhdGVkKCpoYW5kbGUp
LCAwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIG1fb3BlbkRpcmVjdG9y
eU5vdGlmeVRva2Vucy5hcHBlbmQobm90aWZ5VG9rZW4pOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
CShyZXZpc2lvbiAyOTM1NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQ4LDcgKzI0OCw3IEBACiAK
ICAgICBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBoYW5kbGVBcnJheTsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1z
eXN0ZW13aWRlIl9zLCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3Mg
fSwgY29ubmVjdGlvbigpID8gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCkgOiBzdGQ6Om51
bGxvcHQpOworICAgIGhhbmRsZUFycmF5ID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmlwaG9uZS5heHNlcnZlci1zeXN0ZW13aWRlIl9z
LCAiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MgfSwgYXVkaXRUb2tl
bigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJv
b3RzdHJhcCk7CiAgICAgQVNTRVJUKGhhbmRsZUFycmF5LnNpemUoKSA9PSAyKTsKICNlbmRpZgog
CkBAIC0zMjUsNCArMzI1LDEyIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6b3B0aW9u
YWw8YXVkaXRfdG9rZW5fdD4gV2ViUHJvY2Vzc1Byb3h5OjphdWRpdFRva2VuKCkgY29uc3QKK3sK
KyAgICBpZiAoIWhhc0Nvbm5lY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAKKyAgICByZXR1cm4gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7CiB9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVh
bHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NwZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFn
ZXIuY3BwCShyZXZpc2lvbiAyOTM1NzUpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVl
Y2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQAogICAgICAgICBtX3NvdXJjZXNOZWVkaW5nU2FuZGJv
eEV4dGVuc2lvbi5hZGQoaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChtX3NvdXJjZXNOZWVkaW5n
U2FuZGJveEV4dGVuc2lvbi5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlIGhhbmRsZUZvclRDQ0Q7Ci0gICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
dGNjZCJfcywgbV9jb25uZWN0aW9uLT5nZXRBdWRpdFRva2VuKCkpKQorICAgICAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpLCBTYW5k
Ym94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkp
CiAgICAgICAgICAgICAgICAgaGFuZGxlRm9yVENDRCA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAg
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlRm9yTWljcm9waG9uZTsKICAg
ICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvckdlbmVyaWNFeHRlbnNpb24oImNvbS5hcHBsZS53ZWJraXQubWljcm9waG9uZSJfcykpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCShyZXZpc2lvbiAyOTM1NzUp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgICAg
ICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgICAgICBpZiAoIW1faGFzQ3JlYXRlZFNhbmRib3hFeHRlbnNpb25Gb3JUQ0NEICYmIGRvZXNQ
YWdlTmVlZFRDQ0QobV9wYWdlKSkgewotICAgICAgICAgICAgaWYgKGF1dG8gY3JlYXRlZEhhbmRs
ZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBs
ZS50Y2NkIl9zLCBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
KSkKKyAgICAgICAgICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnBy
b2Nlc3MoKS5hdWRpdFRva2VuKCksIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRp
b25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgICAgICAgICBoYW5kbGUgPSBXVEZN
b3ZlKCpjcmVhdGVkSGFuZGxlKTsKICAgICAgICAgICAgIG1faGFzQ3JlYXRlZFNhbmRib3hFeHRl
bnNpb25Gb3JUQ0NEID0gdHJ1ZTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkz
NTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsMTMgKzExNCwxNCBAQAogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgYXV0byBhdWRpdFRva2VuID0gcHJvY2Vz
cy5hdWRpdFRva2VuKCk7CiAgICAgICAgICAgICBpZiAobmVlZHNBcHBsZUNhbWVyYVNhbmRib3hF
eHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJhU2VydmljZVBhdGgs
IHN0ZDo6bnVsbG9wdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFwcGxlQ2FtZXJhU2Vydmlj
ZVBhdGgsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25z
OjpFbmFibGVNYWNoQm9vdHN0cmFwKSkgewogICAgICAgICAgICAgICAgICAgICBoYW5kbGVzWy0t
ZXh0ZW5zaW9uQ291bnRdID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICAgICAgICAgICAgICAgICAg
aWRzLnVuY2hlY2tlZEFwcGVuZChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAg
ICAgICB9CiAjaWYgSEFWRShBRERJVElPTkFMX0FQUExFX0NBTUVSQV9TRVJWSUNFKQotICAgICAg
ICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRs
ZUZvck1hY2hMb29rdXAoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgsIHN0ZDo6bnVs
bG9wdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5z
aW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZp
Y2VQYXRoLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9u
czo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpIHsKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlc1st
LWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAgICAgICAgICAg
IGlkcy51bmNoZWNrZWRBcHBlbmQoYWRkaXRpb25hbEFwcGxlQ2FtZXJhU2VydmljZVBhdGgpOwog
ICAgICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkocmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4OCw5ICsyODg4LDkgQEAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgYm9vbCBldmVudE1heVN0YXJ0RHJhZyA9ICFtX2N1cnJlbnREcmFn
T3BlcmF0aW9uICYmIGV2ZW50VHlwZSA9PSBXZWJFdmVudDo6TW91c2VNb3ZlICYmIGV2ZW50LmJ1
dHRvbigpICE9IFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbjo6Tm9CdXR0b247CiAgICAgaWYgKGV2ZW50
TWF5U3RhcnREcmFnKQotICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNp
b246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMi
X3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgICAgIHNhbmRib3hFeHRlbnNpb25zID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
c0Zvck1hY2hMb29rdXAoeyAiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJfcywgImNvbS5hcHBsZS5p
Y29uc2VydmljZXMuc3RvcmUiX3MgfSwgcHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4
dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOwogI2Vu
ZGlmCi0gICAgCisKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3Vz
ZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZl
bnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50LCBzYW5kYm94RXh0ZW5zaW9ucykpOwogfQpAQCAtNzI2
MSwxMSArNzI2MSwxMiBAQAogI2VuZGlmCiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
ZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNvblNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbjsKKyAgICBhdXRvIGF1ZGl0VG9rZW4gPSBtX3Byb2Nlc3MtPmF1ZGl0VG9rZW4oKTsK
ICNpZiBIQVZFKEZST05UQk9BUkRfU1lTVEVNX0FQUF9TRVJWSUNFUykKLSAgICBpZiAoYXV0byBo
YW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20u
YXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgc3RkOjpudWxsb3B0KSkKKyAg
ICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNo
TG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywgYXVkaXRU
b2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hC
b290c3RyYXApKQogICAgICAgICBmcm9udGJvYXJkU2VydmljZXNTYW5kYm94RXh0ZW5zaW9uID0g
V1RGTW92ZSgqaGFuZGxlKTsKICNlbmRpZgotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29uc2Vydmlj
ZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmljb25zZXJ2aWNlcyJf
cywgYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICBpY29uU2VydmljZXNTYW5kYm94RXh0ZW5zaW9u
ID0gV1RGTW92ZSgqaGFuZGxlKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBk
aXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6
OkRhdGFSZWZlcmVuY2UoKSwgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiwgaWNv
blNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbikpOwpAQCAtODM5NCw3ICs4Mzk1LDcgQEAKICNlbmRp
ZgogI2lmIEhBVkUoU1RBVElDX0ZPTlRfUkVHSVNUUlkpCiAgICAgaWYgKHByZWZlcmVuY2VzKCku
c2hvdWxkQWxsb3dVc2VySW5zdGFsbGVkRm9udHMoKSkKLSAgICAgICAgcGFyYW1ldGVycy5mb250
TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOworICAgICAg
ICBwYXJhbWV0ZXJzLmZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gZm9udGRNYWNoRXh0ZW5zaW9u
SGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJs
ZU1hY2hCb290c3RyYXApOwogI2VuZGlmCiAjaWYgSEFWRShBUFBfQUNDRU5UX0NPTE9SUykKICAg
ICBwYXJhbWV0ZXJzLmFjY2VudENvbG9yID0gcGFnZUNsaWVudCgpLmFjY2VudENvbG9yKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjkzNTc1
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2NTEsNyArMjY1MSw3IEBACiAgICAgc3RhdGljIFZlY3RvcjxTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGU+IGNyZWF0ZU5ldHdvcmtFeHRlbnNpb25zU2FuZGJveEV4dGVuc2lvbnMoV2Vi
UHJvY2Vzc1Byb3h5Jik7CiAjZW5kaWYKIAotICAgIHN0YXRpYyBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUgZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKCk7CisgICAgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9v
dHN0cmFwT3B0aW9ucyk7CiAKICAgICB2b2lkIGRpZFVwZGF0ZUVkaXRvclN0YXRlKGNvbnN0IEVk
aXRvclN0YXRlJiBvbGRFZGl0b3JTdGF0ZSwgY29uc3QgRWRpdG9yU3RhdGUmIG5ld0VkaXRvclN0
YXRlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJ
KHJldmlzaW9uIDI5MzU3NSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MzMsNiArNDMzLDEwIEBACiAgICAgV2ViQ29yZTo6
Q3Jvc3NPcmlnaW5Nb2RlIGNyb3NzT3JpZ2luTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Jvc3NP
cmlnaW5Nb2RlOyB9CiAgICAgQ2FwdGl2ZVBvcnRhbE1vZGUgY2FwdGl2ZVBvcnRhbE1vZGUoKSBj
b25zdCB7IHJldHVybiBtX2NhcHRpdmVQb3J0YWxNb2RlOyB9CiAKKyNpZiBQTEFURk9STShDT0NP
QSkKKyAgICBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4oKSBjb25zdDsK
KyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgV2ViUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29s
JiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkLCBXZWJDb3JlOjpDcm9zc09yaWdpbk1v
ZGUsIENhcHRpdmVQb3J0YWxNb2RlKTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTM1NzUpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjcxLDYgKzIyNzEsOCBAQAogCQlFMUQyNkE1MzE3NTk2NEQ5MDA5NUJGRDEgLyogV2ViQ29u
dGVudFByb2Nlc3MueGliIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUQyNkE0QzE3NTk2MzRFMDA5NUJGRDEgLyogV2ViQ29udGVudFByb2Nlc3MueGli
ICovOyB9OwogCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0
aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFNTUyQzMxNkFFMDY1RTAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCAqLzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVk
QnVuZGxlUGFnZUVkaXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxl
UGFnZUVkaXRvckNsaWVudC5oICovOyB9OworCQlFMzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyog
U2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMzZGRjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFy
aWFibGVzLmggKi87IH07CisJCUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNl
cy5zYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2
RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovOyB9OwogCQlFMzgxNkIz
RDI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzODE2QjNCMjdFMjQ2
MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuY3BwICovOyB9OwogCQlF
MzgxNkIzRTI3RTI0NjNBMDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgxNkIzQzI3
RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi87IH07CiAJ
CUUzODY2QUU1MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzg2NkFFNDIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRpb25VcGRh
dGVQcm92aWRlclByb3h5Lm1tICovOyB9OwpAQCAtNzEwMCw5ICs3MTAyLDEwIEBACiAJCUUzNDM5
QjYzMjM0NTQ2M0EwMDExREUwQiAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgcGF0aCA9IE5ldHdv
cmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMzRCMTEwQzI3QzQ2QkM2MDA2RDJGMkUgLyogbGliV2ViQ29yZVRlc3RTaGltLmR5
bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29t
cGlsZWQubWFjaC1vLmR5bGliIjsgcGF0aCA9IGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJRTM0QjExMEYyN0M0NkQwOTAwNkQy
RjJFIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGgg
PSBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07Ci0JCUUzNjEyRkYwMjZGOTA4NjIwMDdCMTE3NSAvKiBTYW5kYm94ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZm9sZGVyOyBwYXRoID0g
U2FuZGJveDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM2RDcwMUEyN0I3MDlFRDAw
NjUzMUI3IC8qIFdlYkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkF0dGFjaG1lbnRFbGVtZW50Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUUzNkQ3MDFEMjdCNzE4RUYwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBT
YW5kYm94U3RhdGVWYXJpYWJsZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FuZGJveFN0YXRlVmFyaWFibGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUz
NkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBwcmVmZXJlbmNlcy5zYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4
MTZCM0IyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuY3BwOyBwYXRoID0gTmV0d29yay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzgxNkIzQzI3RTI0NjM5MDA1RUFG
QzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oOyBwYXRoID0gTmV0d29y
ay9XZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVudGF0aW9uVXBk
YXRlUHJvdmlkZXJQcm94eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbTsgcGF0aCA9IGlv
cy9XZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC03ODg4LDcgKzc4OTEsNyBAQAogCQkJCUJDMTExQjVBMTEyRjYy
ODIwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJNTFBRjFCM0QyNzFGNDZBNjAwMTUzOEU2IC8qIE5v
dGlmaWNhdGlvbnMgKi8sCiAJCQkJMkQyRTA0NzYxRjVCRUM0RjAwQkIyNUVEIC8qIFJlbW90ZUxh
eWVyVHJlZSAqLywKLQkJCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJveCAqLywK
KwkJCQlFMzZGRUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLywKIAkJCQkxQ0I3NDY0
NTI3NDM3OUYxMDBGMTk4NzQgLyogV2ViR1BVICovLAogCQkJCTFBQkY0Mzc4MUEzNjgwMzUwMDNG
QjBFNiAvKiBXZWJzaXRlRGF0YSAqLywKIAkJCQkxMTg1MDI2MDI2NzNCMERBMDBBNjQyNUUgLyog
WFIgKi8sCkBAIC0xMzcwMCw2ICsxMzcwMywxNSBAQAogCQkJbmFtZSA9IFBERjsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUUzNkZFRkZFMjdGMzZGMzQwMDRCRTIxQSAvKiBT
YW5kYm94ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlF
MzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8sCisJCQkJRTM2RkYw
MDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBTYW5kYm94OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
RTQwNDkwNkYyMURFNjVENzAwMzdGMERCIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNDAwMCwxMyArMTQwMTIsNyBAQAogCQkJCTJERDlFQjJE
MUE2RjAxMjUwMEJCMTI2NyAvKiBBUElOYXZpZ2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQ0Y2OUZBMjExNzZEMDE0MDA0NzFBNTIgLyogQVBJTmF2aWdhdGlvbkRhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJERjlFRUVFMUE3ODZFQUQwMEI2Q0ZCRSAvKiBBUElOYXZpZ2F0aW9u
UmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAotCQkJCURENERCNzg4MjgwRjk0NzEwMDE3MDBENCAv
KiBFbnRlckZ1bGxzY3JlZW4uanMgaW4gSGVhZGVycyAqLywKLQkJCQlERDREQjc4OTI4MEY5NDcx
MDAxNzAwRDQgLyogRmluZE5vZGVzLmpzIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3OEEyODBG
OTQ3MTAwMTcwMEQ0IC8qIEZvcm1FbGVtZW50Q2xlYXIuanMgaW4gSGVhZGVycyAqLywKLQkJCQlE
RDREQjc4QjI4MEY5NDcxMDAxNzAwRDQgLyogRm9ybVN1Ym1pdC5qcyBpbiBIZWFkZXJzICovLAog
CQkJCTdBMUUyQTg1MUVFRkU4OTIwMDM3QTBFMCAvKiBBUElOb3RpZmljYXRpb25Qcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3ODcyODBGOTQ1RTAwMTcwMEQ0IC8qIEVsZW1lbnRE
aXNwbGF5ZWQuanMgaW4gSGVhZGVycyAqLywKLQkJCQlERDREQjc4NjI4MEY5NDVBMDAxNzAwRDQg
LyogRWxlbWVudEF0dHJpYnV0ZS5qcyBpbiBIZWFkZXJzICovLAogCQkJCUJDMzNERDY4MTIzODQ2
NDYwMDM2MEYzRiAvKiBBUElOdW1iZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDODU3RkI1MTJC
ODMwRTYwMEVERUIyRSAvKiBBUElPcGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Qzg5RDI5ODFBNjc1M0IyMDAzQTVGREUgLyogQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLApAQCAtMTQyNzQsOCArMTQyODAsMTEgQEAKIAkJCQkyREE2NzMxQTIwQzc1
NEIxMDAzQ0I0MDEgLyogRHluYW1pY1ZpZXdwb3J0U2l6ZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTEwNUZFNTQxOEQ3QjlERTAwOEY1N0E4IC8qIEVkaXRpbmdSYW5nZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFBNDFBQjUxMkMwMkVDNDAwMkJFNjdCIC8qIEVkaXRvclN0YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERDREQjc4NjI4MEY5NDVBMDAxNzAwRDQgLyogRWxlbWVudEF0dHJp
YnV0ZS5qcyBpbiBIZWFkZXJzICovLAorCQkJCURENERCNzg3MjgwRjk0NUUwMDE3MDBENCAvKiBF
bGVtZW50RGlzcGxheWVkLmpzIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMzJEQTgxMEY0MzdEMTAw
NThDMTVBIC8qIEVuY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQ0RDOTlEMjQ4RkU4REEw
MEE2OTUyMiAvKiBFbmRvd21lbnRTdGF0ZVRyYWNrZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCURE
NERCNzg4MjgwRjk0NzEwMDE3MDBENCAvKiBFbnRlckZ1bGxzY3JlZW4uanMgaW4gSGVhZGVycyAq
LywKIAkJCQk1MUIxNUE4NTEzODQzQTM5MDAzMjFBRDggLyogRW52aXJvbm1lbnRVdGlsaXRpZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTU3NUZCMTQ5NkI1MjYwMEE0RUUwNiAvKiBFdmVudERp
c3BhdGNoZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MkVCQkQ3MjUzN0VCQUUwMDA1NTJCMyAv
KiBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDI4Niw5
ICsxNDI5NSwxMiBAQAogCQkJCTkzMTJCQUQ1MjZGMzNDMjYwMEZEREY1RiAvKiBGaWxlU3lzdGVt
U3RvcmFnZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTAwQjk2NjFBMThFMjVBRTEwMENF
MUY4OCAvKiBGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTkwQzFGNDEyNjRGRDcx
MDAzRTQ0RDQgLyogRmluZENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCURENERCNzg5
MjgwRjk0NzEwMDE3MDBENCAvKiBGaW5kTm9kZXMuanMgaW4gSGVhZGVycyAqLywKIAkJCQlDNTlD
NEE1OTE4QjgxMTc0MDA3QkRDQjYgLyogRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5QkQ4QUI0QTI1ODIwRTUzMDA1Mzg2RjggLyogRm9udFJlZmVyZW5j
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJREQ0REI3OEEyODBGOTQ3MTAwMTcwMEQ0IC8qIEZvcm1F
bGVtZW50Q2xlYXIuanMgaW4gSGVhZGVycyAqLywKKwkJCQlERDREQjc4QjI4MEY5NDcxMDAxNzAw
RDQgLyogRm9ybVN1Ym1pdC5qcyBpbiBIZWFkZXJzICovLAogCQkJCTFBMTRGOEUyMUQ3NEM4MzQw
MDZDQkVDNiAvKiBGcmFtZUluZm9EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUUwMEQ2MTE4
MzE3OTIxMDAwODdERDcgLyogRnJhbWVMb2FkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
MTIxRTg0MjQxMDIwOEQwMDQ4NkY5QiAvKiBGcmFtZVRyZWVOb2RlRGF0YS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNDYxNiw2ICsxNDYyOCw3IEBACiAJCQkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEz
IC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFC
NEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBh
cmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNkZGMDAzMjdGMzZGQkQwMDRCRTIxQSAv
KiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdCQUIxMTEwMjVE
RDAyQjMwMDhGQzQ3OSAvKiBTY29wZWRBY3RpdmVNZXNzYWdlUmVjZWl2ZVF1ZXVlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNEQ1NEQwNDIxRjFENzJEMDA3RTNDMzYgLyogU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMx
OEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
aCBpbiBIZWFkZXJzICovLApAQCAtMTQ4NjEsNyArMTQ4NzQsNiBAQAogCQkJCUJDRTQ2OTU0MTIx
NEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEREEw
QTJCNTI3RTU1RTRFMDA1RTA4NkUgLyogV2ViRm9ybURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlEREEwQTMwMTI3RTU1RTRFMDA1RTA4NkUgLyogV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJNTE5REZCRTcyODEzODdDMTAwM0ZGNkFEIC8qIFdLTm90aWZp
Y2F0aW9uUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNFNDY5NTYxMjE0RTZDQjAw
MEI5OEVCIC8qIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRTUyMjdEODQyN0ExMTI2MTAwOEVBQjU3IC8qIFdlYkZvdW5kVGV4dFJhbmdlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNTVDRkQ0RTI3OUQzMUU1MDAyRjEwMjAgLyogV2ViRm91bmRUZXh0
UmFuZ2VDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MzUwLDYgKzE1MzYyLDcgQEAK
IAkJCQkzMThCRTE3OTE0NzQzRTZGMDBBOEZCQjIgLyogV0tOb3RpZmljYXRpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxOEJFMTcxMTQ3NDNEQjEwMEE4RkJCMiAvKiBXS05vdGlmaWNhdGlvbk1h
bmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQTJFQzc0MTQ4RDU5Q0EwMDgxMEQ3MSAvKiBX
S05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTlE
RkJFNzI4MTM4N0MxMDAzRkY2QUQgLyogV0tOb3RpZmljYXRpb25Qcml2YXRlTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTJDMEM0QTE0NkREQzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Q
cm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNEMwOTQxODE0QjNBRjAwMzY4OEI5IC8q
IFdLTlNBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczQ0VBRDYxODU0MTdBRTAwOEMzNjNE
IC8qIFdLTlNEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTE1OTc1LDYgKzE1OTg4LDcgQEAKIAkJ
CQk2QkU5NjlDMTFFNTRENDUyMDA4Qjc0ODMgLyogY29yZVByZWRpY3Rpb25fbW9kZWwgaW4gUmVz
b3VyY2VzICovLAogCQkJCThEQzJFRjUzMDQ4NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3Ry
aW5ncyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJM0ZCMDhFNDMxRjYwQjI0MDAwNUU1MzEyIC8qIGlP
Uy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRTM2RkYwMDQyN0YzNkZCRDAwNEJFMjFB
IC8qIHByZWZlcmVuY2VzLnNiIGluIFJlc291cmNlcyAqLywKIAkJCQk1QzhCQzc5NzIxOENCQjQ4
MDA4MTM4ODYgLyogU2FmZUJyb3dzaW5nLnhjYXNzZXRzIGluIFJlc291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyOTM1
NzUpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDU5LDYgKzQ1OSwxMSBAQAogCiBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6
Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCiB7CisgICAgYXV0byBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBh
Z2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOworCisgICAgaWYgKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0ZVBhZ2UocGFnZS5wdHIoKSk7CisKICNpZiBIQVZF
KFNBTkRCT1hfU1RBVEVfRkxBR1MpCiAgICAgLy8gVGhpcyBjYWxsIGlzIG5vdCBtZWFudCB0byBh
Y3R1YWxseSByZWFkIGEgcHJlZmVyZW5jZSwgYnV0IGlzIG9ubHkgaGVyZSB0byB0cmlnZ2VyIGEg
c2FuZGJveCBydWxlIGluIHRoZQogICAgIC8vIFdlYkNvbnRlbnQgcHJvY2Vzcywgd2hpY2ggd2ls
bCB0b2dnbGUgYSBzYW5kYm94IHZhcmlhYmxlIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBXZWJD
b250ZW50IHByb2Nlc3MKQEAgLTQ2NiwxMSArNDcxLDYgQEAKICAgICBDRlByZWZlcmVuY2VzR2V0
QXBwSW50ZWdlclZhbHVlKENGU1RSKCJrZXkiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudC5MYXVuY2giKSwgbnVsbHB0cik7CiAjZW5kaWYKIAotICAgIFJlZjxXZWJQYWdlPiBw
YWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkp
OwotCi0gICAgaWYgKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCkpCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmluamVjdGVkQnVuZGxlKCktPmRpZENyZWF0
ZVBhZ2UocGFnZS5wdHIoKSk7Ci0KICAgICByZXR1cm4gcGFnZTsKIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5XZWJQcm9jZXNzLnNiLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgko
cmV2aXNpb24gMjkzNTc1KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvbS5hcHBsZS5X
ZWJQcm9jZXNzLnNiLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMDU2LDI3ICsyMDU2LDQyIEBACiAj
ZW5kaWYKIAogI2lmIEhBVkUoU0FOREJPWF9NRVNTQUdFX0ZJTFRFUklORykKLShpZiAoYW5kIChl
cXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVm
aW5lZD8gJ21hY2gtYm9vdHN0cmFwKSkKKyhkZWZpbmUgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2Ut
bnVtYmVycykKKyAgICAobWVzc2FnZS1udW1iZXIgMjA0IDIwNyAzMDEgNzExIDgwMCA4MDQpKQor
CisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKICAgICAoYWxsb3cg
bWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCisgICAgICAgICAg
ICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQorICAgICAgICAgICAg
KGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFw
LW1lc3NhZ2UtbnVtYmVycykpKSkpCisKKyhpZiAoYW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVf
U0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21hY2gtYm9vdHN0cmFw
KSkKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEyMDAwMAotICAgICAg
ICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAg
ICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyNpZiBIQVZFKFNB
TkRCT1hfU1RBVEVfRkxBR1MpCisgICAgKGJlZ2luCisgICAgICAgIChpZiAocmVxdWlyZS1hbmNl
c3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUt
c3RhdGUtZmxhZ3MiKQorICAgICAgICAgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCisgICAgICAg
ICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCisgICAgICAgICAgICAgICAgICAgIChhbGxv
dyBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnktYmFja3RyYWNlKSkpKQorICAgICAg
ICA7OyBlbHNlCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIp
KQorCisgICAgICAgICh3aXRoLWZpbHRlcgorICAgICAgICAgICAgKHJlcXVpcmUtYW55CisgICAg
ICAgICAgICAgICAgKHJlcXVpcmUtbm90IChzdGF0ZS1mbGFnICJXZWJDb250ZW50UHJvY2Vzc0xh
dW5jaGVkIikpCisgICAgICAgICAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3Ry
YXAiKSkKKyAgICAgICAgICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpKSkK
ICNlbHNlCisgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKyNlbmRpZiAv
LyBIQVZFKFNBTkRCT1hfU1RBVEVfRkxBR1MpCisjZWxzZQorICAgIChhbGxvdyBtYWNoLWJvb3Rz
dHJhcAorICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKICAgICAgICAgICAgIChkZW55IHhw
Yy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4cGMt
bWVzc2FnZS1zZW5kIChtZXNzYWdlLW51bWJlcgorICAgICAgICAgICAgKGFsbG93IHhwYy1tZXNz
YWdlLXNlbmQKKyAgICAgICAgICAgICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJz
KSkpKSkKICNlbmRpZgotICAgICAgICAgICAgICAgIDIwNAotICAgICAgICAgICAgICAgIDIwNwot
ICAgICAgICAgICAgICAgIDMwMQotICAgICAgICAgICAgICAgIDcxMQotICAgICAgICAgICAgICAg
IDgwMAotICAgICAgICAgICAgICAgIDgwNAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAg
ICkKLSAgICAgICAgKQotICAgICkKLSkKIAogKGlmIChhbmQgKGVxdWFsPyAocGFyYW0gIkVOQUJM
RV9TQU5EQk9YX01FU1NBR0VfRklMVEVSIikgIllFUyIpIChkZWZpbmVkPyAnbWFjaC1rZXJuZWwt
ZW5kcG9pbnQpKQogICAgIChhbGxvdyBtYWNoLWtlcm5lbC1lbmRwb2ludAo=
</data>
<flag name="commit-queue"
          id="487403"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458548</attachid>
            <date>2022-04-28 14:59:34 -0700</date>
            <delta_ts>2022-04-28 15:03:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>42192</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI4ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RG
XSBVc2UgcXVhZHJhdGljLXByb2JpbmcgaW5zdGVhZCBvZiBkb3VibGUtaGFzaGluZwpJbmRleDog
U291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9uIDI5MzU4OCkKKysr
IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdp
c3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywg
Y29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90
b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2Vu
dHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0
cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9z
dGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhU
RVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjkzNTg4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTQ3
MCw2ICs0NzAsNjAgQEAKICAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vz
c2lvbkNvY29hLm1tOgogICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CiAK
KzIwMjItMDQtMjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgorCisgICAg
ICAgIER5bmFtaWNhbGx5IHN3aXRjaCBtZXNzYWdlIGZpbHRlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4NTc3CisgICAgICAgIDxyZGFyOi8vNjky
NjMzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
VXNlIGEgc2FuZGJveCBzdGF0ZSB2YXJpYWJsZSB0byBkeW5hbWljYWxseSBzd2l0Y2ggdGhlIGJv
b3RzdHJhcCBmaWx0ZXIgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcycgc2FuZGJveC4KKyAgICAg
ICAgRHVyaW5nIGxhdW5jaCBvZiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSB1c2UgYSBtb3Jl
IHBlcm1pc3NpdmUgYm9vdHN0cmFwIGZpbHRlciB0byBhbGxvdyBjcmVhdGluZyBNYWNoCisgICAg
ICAgIGNvbm5lY3Rpb25zIGluIHRoaXMgdGltZSBmcmFtZS4gQWZ0ZXIgdGhlIFdlYkNvbnRlbnQg
cHJvY2VzcyBoYXMgbGF1bmNoZWQsIHdlIHN3aXRjaCB0byBhIGJsb2NraW5nIGZpbHRlciwKKyAg
ICAgICAgd2hpY2ggd2lsbCBlc3NlbnRpYWxseSBibG9jayBhY2Nlc3MgdG8gbGF1bmNoZC4gVGhl
IGJvb3RzdHJhcCBmaWx0ZXIgaXMgYmVpbmcgc3dpdGNoZWQgYmFjayB0byB0aGUgbW9yZQorICAg
ICAgICBwZXJtaXNzaXZlIHZlcnNpb24gd2hlbiB3ZSBjcmVhdGUgbmV3IE1hY2ggc2FuZGJveCBl
eHRlbnNpb25zIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzLiBUaGlzIGlzIGRvbmUgb24KKyAg
ICAgICAgYSBjYXNlIGJ5IGNhc2UgYmFzaXMsIGJ5IGFkZGluZyBhIG5ldyBwYXJhbWV0ZXIgdG8g
Y29udHJvbCB0aGlzIGJlaGF2aW9yIHdoZW4gY3JlYXRpbmcgTWFjaCBzYW5kYm94CisgICAgICAg
IGV4dGVuc2lvbnMuIFdoaWxlIGxhdW5jaGluZyB0aGUgV2ViQ29udGVudCBwcm9jZXNzIHRoZXJl
IGlzIHVzdWFsbHkgbm8gbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3NpdmUKKyAgICAg
ICAgYm9vdHN0cmFwIGZpbHRlciBpcyBuZWVkZWQsIHNpbmNlIHdlIGFyZSBhbHJlYWR5IHVzaW5n
IHRoZSBwZXJtaXNzaXZlIGZpbHRlciBkdXJpbmcgbGF1bmNoIHRpbWUuIEhvd2V2ZXIsCisgICAg
ICAgIGZvciBzb21lIE1hY2ggZXh0ZW5zaW9ucyB0aGF0IHdpbGwgb25seSByZXN1bHQgaW4gYSBu
ZXcgWFBDIGNvbm5lY3Rpb24gaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBhZnRlciBsYXVuY2gs
CisgICAgICAgIHdlIG5lZWQgdG8gc3BlY2lmeSB0aGF0IHRoZSBwZXJtaXNzaXZlIGZpbHRlciBp
cyByZXF1cmllZC4gT3RoZXJ3aXNlLCBjcmVhdGluZyB0aGUgbmV3IFhQQyBjb25uZWN0aW9uIGFm
dGVyCisgICAgICAgIGxhdW5jaCB3aWxsIGZhaWwuIEZvciBNYWNoIHNhbmRib3ggZXh0ZW5zaW9u
cyBjcmVhdGVkIGFmdGVyIGxhdW5jaCBvZiB0aGUgV2ViQ29udGVudCBwcm9jZXNzLCB3ZSBhbHdh
eXMgbmVlZAorICAgICAgICB0byB1c2UgdGhlIHBlcm1pc3NpdmUgYm9vdHN0cmFwIGZpbHRlciB0
byBiZSBhYmxlIHRvIGNyZWF0ZSB0aGUgWFBDIGNvbm5lY3Rpb24uIEVuYWJsaW5nIHRoZSBwZXJt
aXNzaXZlCisgICAgICAgIGJvb3RzdHJhcCBmaWx0ZXIgcmVxdWlyZXMgdGhlIGF1ZGl0IHRva2Vu
IHRvIGJlIGF2YWlsYWJsZSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBwYXNzIHRoZSBhdWRpdCB0
b2tlbiB3aGVuCisgICAgICAgIGNyZWF0aW5nIHRoZSBuZXcgTWFjaCBzYW5kYm94IGV4dGVuc2lv
bnMuIFRoaXMgcGF0Y2ggYWxzbyB3YWl0cyB1bnRpbCBhZnRlciB0aGUgV2ViIHBhZ2UgaGFzIGJl
ZW4gY3JlYXRlZCB0bworICAgICAgICBzZXQgdGhlIHNhbmRib3ggdmFyaWFibGUgd2hpY2ggaW5k
aWNhdGVzIHRoYXQgdGhlIFdlYkNvbnRlbnQgcHJvY2VzcyBoYXMgbGF1bmNoZWQuIFdpdGhvdXQg
dGhpcyBsYXN0IGNoYW5nZSwKKyAgICAgICAgdGhlIGJvb3RzdHJhcCBmaWx0ZXIgd291bGQgaGF2
ZSBuZWVkZWQgc3dpdGNoaW5nIHdoZW4gY3JlYXRpbmcgdGhlIFdlYiBwYWdlLCBzaW5jZSBjcmVh
dGluZyB0aGUgV2ViUGFnZSB3aWxsCisgICAgICAgIGNvbnN1bWUgYW5kIHJldm9rZSBzb21lIG1h
Y2ggZXh0ZW5zaW9ucy4KKworICAgICAgICAqIFJlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9z
L2NvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbjoKKyAgICAgICAgKiBTY3JpcHRzL3By
b2Nlc3MtZW50aXRsZW1lbnRzLnNoOgorICAgICAgICAqIFNoYXJlZC9TYW5kYm94L1NhbmRib3hT
dGF0ZVZhcmlhYmxlcy5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3JhbnRB
Y2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3
aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbGlk
V2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVu
YWJsZU1hY2hCb290c3RyYXAgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3Qp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjp3aWxsQ3JlYXRlTWVkaWFTdHJl
YW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlz
cGxheVN0cmluZ0FuZEljb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuc3VyZVNwZWVjaFJlY29n
bml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9j
b20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbjoKKwogMjAyMi0wNC0yNiAgRWxsaW90dCBXaWxsaWFt
cyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGVycm9yOiAiY3A6IEphdmFT
Y3JpcHRDb3JlLnByb2ZkYXRhIGlzIG5vdCBhIGRpcmVjdG9yeSIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250
ZW50LnNiLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQ
cm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAy
OTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2Nv
bS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudC5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCw0
MCArMTQ1MCwzMiBAQAogKQogCiAoZGVmaW5lLW9uY2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2Ut
bnVtYmVycykKLSAgICAobWVzc2FnZS1udW1iZXIKLSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwot
ICAgICAgICA3MTEKLSAgICAgICAgNzEyCi0gICAgICAgIDcxOAotICAgICAgICA4MDAKLSAgICAg
ICAgODAyCi0gICAgICAgIDgwMwotICAgICAgICA4MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQor
ICAgIChtZXNzYWdlLW51bWJlciAyMDYgMjA3IDcxMSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4
MDUgOTA0KSkKIAotKGlmIChkZWZpbmVkPyAnKnNicGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxv
dy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAK
ICAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1l
c3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnkpKQogICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVz
c2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVy
cykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICkKLTs7IGVsc2UKKyAgICAgICAgICAg
ICAgICAobWFjaC1ib290c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkKKworI2lmIEhBVkUoU0FO
REJPWF9TVEFURV9GTEFHUykKKyhpZiAocmVxdWlyZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50
ICJjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5lbmFibGUtc3RhdGUtZmxhZ3MiKQogICAgIChh
bGxvdyBtYWNoLWJvb3RzdHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSAgICAg
ICAgICAgIChkZW55IHhwYy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAg
ICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0
cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICkKLSkK
KyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnktYmFj
a3RyYWNlKSkpKQorOzsgZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRl
cikpCiAKKyh3aXRoLWZpbHRlcgorICAgIChyZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1u
b3QgKHN0YXRlLWZsYWcgIldlYkNvbnRlbnRQcm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0
YXRlLWZsYWcgIkVuYWJsZU1hY2hCb290c3RyYXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3Ry
YXAtd2l0aC1maWx0ZXIpKQorI2Vsc2UKKyhhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRl
cikKKyNlbmRpZgorCiAoZGVmaW5lIChzeXNjYWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxh
dW5jaCkKICAgICAobWFjaHRyYXAtbnVtYmVyCiAgICAgICAgIE1TQ19tYWNoX2dlbmVyYXRlX2Fj
dGl2aXR5X2lkCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRs
ZW1lbnRzLnNoCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJv
Y2Vzcy1lbnRpdGxlbWVudHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsMTIgQEAK
ICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Muc2luZ2xl
LWppdCBib29sIFlFUwogICAgICAgICBmaQogCisgICAgICAgIGlmICgoICIke1RBUkdFVF9NQUNf
T1NfWF9WRVJTSU9OX01BSk9SfSIgPj0gMTMwMDAwICkpCisgICAgICAgIHRoZW4KKyAgICAgICAg
ICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0
YXRlLWZsYWdzIGFycmF5CisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnBy
aXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVNYWNoQm9v
dHN0cmFwCisgICAgICAgIGZpCisKICAgICAgICAgaWYgW1sgIiR7V0tfV0VCQ09OVEVOVF9TRVJW
SUNFX05FRURTX1hQQ19ET01BSU5fRVhURU5TSU9OX0VOVElUTEVNRU5UfSIgPT0gWUVTIF1dCiAg
ICAgICAgIHRoZW4KICAgICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0
ZS54cGMuZG9tYWluLWV4dGVuc2lvbiBib29sIFlFUwpAQCAtMzQ0LDYgKzM1MCw4IEBACiAgICAg
cGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnBhYy5leGNlcHRpb24gYm9vbCBZRVMK
ICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudmVyaWZpZWQtaml0IGJvb2wg
WUVTCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm1lc3Nh
Z2UtZmlsdGVyIGJvb2wgWUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LnNlY3VyaXR5Lm11dGFibGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6
Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBF
bmFibGVNYWNoQm9vdHN0cmFwCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRl
LndlYmluc3BlY3Rvci5hbGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBib29sIFlFUwogICAgIHBsaXN0
YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IucHJveHktYXBwbGljYXRp
b24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0
LnVzZS14cGMtZW5kcG9pbnQgYm9vbCBZRVMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9TYW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHJldmlzaW9uIDI5MzU4OCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTAgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2lu
L1NhbmRib3hTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEhBVkUo
U0FOREJPWF9TVEFURV9GTEFHUykKKyNpbmNsdWRlICJTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCIK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbklt
cGwgewpAQCAtMzE2LDggKzMyMCw5IEBACiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0K
IAotYXV0byBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJ
TGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4s
IE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBT
YW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBz
ZXJ2aWNlLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE1hY2hCb290
c3RyYXBPcHRpb25zIG1hY2hCb290c3RyYXBPcHRpb25zLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdz
KSAtPiBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4KIHsKKyAgICBVTlVTRURfUEFSQU0obWFjaEJvb3Rz
dHJhcE9wdGlvbnMpOwogICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9z
YW5kYm94RXh0ZW5zaW9uKTsKICAgICAKQEAgLTMyNywyMSArMzMyLDMwIEBACiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogICAgIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9G
TEFHUykKKyAgICAvLyBXaGVuIGxhdW5jaGQgaXMgYmxvY2tlZCBpbiB0aGUgc2FuZGJveCwgd2Ug
bmVlZCB0byBtYW51YWxseSBlbmFibGUgYm9vdHN0cmFwcGluZyBvZiBuZXcgWFBDIGNvbm5lY3Rv
bnMuCisgICAgLy8gVGhpcyBpcyBkb25lIGJ5IHVuYmxvY2tpbmcgbGF1bmNoZCwgc2luY2UgbGF1
bmNoZCBhY2Nlc3MgaXMgcmVxdWlyZWQgd2hlbiBjcmVhdGluZyBNYWNoIGNvbm5lY3Rpb25zLgor
ICAgIC8vIFVuYmxvY2tpbmcgbGF1bmNoZCBpcyBkb25lIGJ5IGVuYWJsaW5nIGEgc2FuZGJveCBz
dGF0ZSB2YXJpYWJsZS4KKyAgICAvLyBJbiB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoaXMgY2hh
bmdlLCBNYWNoIGJvb3RzdHJhcCdpbmcgaXMgZW5hYmxlZCB1bmNvbmRpdGlvbmFsbHkuCisgICAg
aWYgKGF1ZGl0VG9rZW4pCisgICAgICAgIHNhbmRib3hfZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxF
X01BQ0hfQk9PVFNUUkFQLCAqYXVkaXRUb2tlbik7CisjZW5kaWYKKwogICAgIHJldHVybiBXVEZN
b3ZlKGhhbmRsZSk7CiB9CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zv
ck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlv
bmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+
IFZlY3RvcjxIYW5kbGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JN
YWNoTG9va3VwKFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25h
bDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9v
dHN0cmFwT3B0aW9ucywgT3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4K
IHsKLSAgICByZXR1cm4gY3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgW2F1ZGl0
VG9rZW4sIGZsYWdzXSAoQVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFu
ZGxlPiB7Ci0gICAgICAgIGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChz
ZXJ2aWNlLCBhdWRpdFRva2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JS
ZXNvdXJjZXMoc2VydmljZXMsIFthdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywgZmxh
Z3NdIChBU0NJSUxpdGVyYWwgc2VydmljZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKKyAg
ICAgICAgYXV0byBoYW5kbGUgPSBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1
ZGl0VG9rZW4sIG1hY2hCb290c3RyYXBPcHRpb25zLCBmbGFncyk7CiAgICAgICAgIEFTU0VSVCho
YW5kbGUpOwogICAgICAgICByZXR1cm4gaGFuZGxlOwogICAgIH0pOwogfQogCi1hdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5k
bGU+CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE1hY2hCb290c3RyYXBPcHRpb25zIG1h
Y2hCb290c3RyYXBPcHRpb25zLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFu
ZGxlPgogewotICAgIHJldHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2Vy
dmljZXMuYmVnaW4oKSwgc2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAg
ICByZXR1cm4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2lu
KCksIHNlcnZpY2VzLnNpemUoKSB9LCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywg
ZmxhZ3MpOwogfQogCiBhdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRC
eUF1ZGl0VG9rZW4oU3RyaW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+
IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJv
eC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94L1NhbmRib3hTdGF0ZVZhcmlhYmxlcy5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
ZGVmaW5lIEVOQUJMRV9NQUNIX0JPT1RTVFJBUCAiRW5hYmxlTWFjaEJvb3RzdHJhcCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI5MzU4OCkK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNTksNyArNTksMTIgQEAKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fu
b25pY2FsaXplLAogICAgIH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBP
cHRpb25zIDogdWludDhfdCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAg
ICAgICAgRW5hYmxlTWFjaEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewog
ICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkx
LDkgKzk2LDkgQEAKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBT
dHJpbmc+PiBjcmVhdGVIYW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBU
eXBlKTsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdl
bmVyaWNFeHRlbnNpb24oQVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFV
RElUX1RPS0VOKQotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cChBU0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90
b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMg
VmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJ
SUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25T
ZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBj
cmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVND
SUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxI
YW5kbGU+IGNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0
ZDo6b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4sIE1hY2hCb290c3RyYXBPcHRpb25zID0gTWFjaEJv
b3RzdHJhcE9wdGlvbnM6OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0PEZsYWdz
PiA9IEZsYWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFu
ZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290
c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4g
PSBGbGFnczo6RGVmYXVsdCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRs
ZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+
IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0
aW9ucyA9IE1hY2hCb290c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9w
dGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0
aCwgYXVkaXRfdG9rZW5fdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JJT0tpdENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRl
ZmF1bHQpOwogICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRD
bGFzc0V4dGVuc2lvbnMoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3Rk
OjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNv
Y29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAxLDEx
ICsyMDEsMTIgQEAKICNpZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdf
UFJPQ0VTUykKICAgICBsb2FkUGFyYW1ldGVycy5uZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMgPSBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHBy
b2Nlc3MpOwogI2lmIFBMQVRGT1JNKElPUykKKyAgICBhdXRvIGF1ZGl0VG9rZW4gPSBwcm9jZXNz
LmF1ZGl0VG9rZW4oKTsKICAgICBpZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94
QWNjZXNzKCkgJiYgW2dldFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lv
bl0pIHsKLSAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBs
ZS5XZWJDb250ZW50RmlsdGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUudWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0
ZXIucmVtb3RlVUkiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3Ry
YXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0
ZXJzLmNvbnRlbnRGaWx0ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0g
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBz
dGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1h
cHBzZXJ2aWNlcyJfcywgYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJh
cE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRl
cnMuZnJvbnRib2FyZFNlcnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwog
CiAgICAgICAgIHByb2Nlc3MubWFya0hhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpA
QCAtODQxLDcgKzg0Miw3IEBACiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMoKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhh
bmRsZVYyOwotICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0ZDo6bnVs
bG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgcHJvY2Vzcygp
LmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92
ZSgqaGFuZGxlKTsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3Jh
bnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMobW9iaWxlQXNzZXRIYW5kbGVWMiksIDApOwogfQpAQCAt
ODUzLDEzICs4NTQsMTMgQEAKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNG
b250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9u
dFJlZ2lzdHJ5KGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpKSwgMCk7CisgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlU
b1VzZXJGb250UmVnaXN0cnkoZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNp
b246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSksIDApOwogfQog
Ci1TYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNp
b25IYW5kbGUoKQorU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRN
YWNoRXh0ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25z
IG1hY2hCb290c3RyYXBPcHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBm
b250TWFjaEV4dGVuc2lvbkhhbmRsZTsKLSAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0
ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3Jl
YXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBwcm9jZXNzKCkuYXVk
aXRUb2tlbigpLCBtYWNoQm9vdHN0cmFwT3B0aW9ucykpCiAgICAgICAgIGZvbnRNYWNoRXh0ZW5z
aW9uSGFuZGxlID0gV1RGTW92ZSgqaGFuZGxlKTsKICAgICByZXR1cm4gZm9udE1hY2hFeHRlbnNp
b25IYW5kbGU7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTcxNiwxNCArNzE2LDIxIEBACiAgICAgICAgIGludCBub3RpZnlUb2tlbjsKICAgICAg
ICAgbm90aWZ5X3JlZ2lzdGVyX2Rpc3BhdGNoKG1lc3NhZ2UsICZub3RpZnlUb2tlbiwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXihpbnQgdG9rZW4pIHsKICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HKE5vdGlmaWNhdGlvbnMsICJPcGVuRGlyZWN0b3J5IGludmFsaWRhdGVkIGNhY2hlIik7Cisj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuc3lzdGVtLm9w
ZW5kaXJlY3RvcnlkLmxpYmluZm8iX3MsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBpZiAo
IWhhbmRsZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KQogICAgICAgICAgICAgaWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNp
bmdsZXRvbklmQ3JlYXRlZCgpKQogICAgICAgICAgICAgICAgIGdwdVByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OkdQVVByb2Nlc3M6Ok9wZW5EaXJlY3RvcnlDYWNoZUludmFsaWRhdGVkKCpoYW5kbGUp
LCAwKTsKICNlbmRpZgotICAgICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpPcGVuRGlyZWN0b3J5Q2FjaGVJbnZhbGlkYXRlZCgqaGFuZGxlKSk7CisgICAg
ICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAg
ICAgIGlmICghcHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuc3lzdGVtLm9wZW5kaXJlY3Rv
cnlkLmxpYmluZm8iX3MsIHByb2Nlc3MtPmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6
TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOworICAgICAgICAgICAg
ICAgIGlmICghaGFuZGxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpPcGVuRGlyZWN0b3J5
Q2FjaGVJbnZhbGlkYXRlZCgqaGFuZGxlKSwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0p
OwogICAgICAgICBtX29wZW5EaXJlY3RvcnlOb3RpZnlUb2tlbnMuYXBwZW5kKG5vdGlmeVRva2Vu
KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNz
UHJveHlDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQkocmV2aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI0OCw3ICsyNDgsNyBAQAogCiAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4gaGFuZGxlQXJyYXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBoYW5kbGVB
cnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNv
bS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJv
YXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+
Z2V0QXVkaXRUb2tlbigpIDogc3RkOjpudWxsb3B0KTsKKyAgICBoYW5kbGVBcnJheSA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhv
bmUuYXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFw
cHNlcnZpY2VzIl9zIH0sIGF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3Rz
dHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOwogICAgIEFTU0VSVChoYW5kbGVBcnJh
eS5zaXplKCkgPT0gMik7CiAjZW5kaWYKIApAQCAtMzI1LDQgKzMyNSwxMiBAQAogICAgIHJldHVy
biB0cnVlOwogfQogCitzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IFdlYlByb2Nlc3NQcm94
eTo6YXVkaXRUb2tlbigpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+
Z2V0QXVkaXRUb2tlbigpOwogfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
cGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90
ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkzNTg4KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAg
ICAgbV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uYWRkKGlkZW50aWZpZXIpOwogICAg
ICAgICBpZiAobV9zb3VyY2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uc2l6ZSgpID09IDEpIHsK
ICAgICAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGVGb3JUQ0NEOwotICAg
ICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxl
Rm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRU
b2tlbigpKSkKKyAgICAgICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246
OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX2Nvbm5lY3Rp
b24tPmdldEF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlv
bnM6OkVuYWJsZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZUZvclRDQ0Qg
PSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IGhhbmRsZUZvck1pY3JvcGhvbmU7CiAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUu
d2Via2l0Lm1pY3JvcGhvbmUiX3MpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAkocmV2aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOTEsNyArMjkxLDcgQEAKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRs
ZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRTYW5kYm94
RXh0ZW5zaW9uRm9yVENDRCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFnZSkpIHsKLSAgICAgICAg
ICAgIGlmIChhdXRvIGNyZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5k
bGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25u
ZWN0aW9uKCktPmdldEF1ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVk
SGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29t
LmFwcGxlLnRjY2QiX3MsIG1fcGFnZS5wcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0
ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAg
ICAgICAgICAgICAgaGFuZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRsZSk7CiAgICAgICAgICAg
ICBtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVENDRCA9IHRydWU7CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNz
TWFuYWdlci5jcHAJKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEzICsx
MTQsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAg
IGF1dG8gYXVkaXRUb2tlbiA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAgICAgICAgaWYg
KG5lZWRzQXBwbGVDYW1lcmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cChhcHBsZUNhbWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5z
aW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpIHsKICAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRs
ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBwbGVDYW1lcmFT
ZXJ2aWNlUGF0aCk7CiAgICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9BUFBM
RV9DQU1FUkFfU0VSVklDRSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNh
bWVyYVNlcnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChh
ZGRpdGlvbmFsQXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVu
c2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSB7CiAgICAg
ICAgICAgICAgICAgICAgIGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5k
bGUpOwogICAgICAgICAgICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFkZGl0aW9uYWxB
cHBsZUNhbWVyYVNlcnZpY2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5MzU4OCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4ODgsOSArMjg4OCw5IEBACiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgZXZlbnRNYXlT
dGFydERyYWcgPSAhbV9jdXJyZW50RHJhZ09wZXJhdGlvbiAmJiBldmVudFR5cGUgPT0gV2ViRXZl
bnQ6Ok1vdXNlTW92ZSAmJiBldmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpCdXR0b246
Ok5vQnV0dG9uOwogICAgIGlmIChldmVudE1heVN0YXJ0RHJhZykKLSAgICAgICAgc2FuZGJveEV4
dGVuc2lvbnMgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7
ICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9y
ZSJfcyB9LCBzdGQ6Om51bGxvcHQpOworICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29u
c2VydmljZXMiX3MsICJjb20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHByb2Nlc3Mo
KS5hdWRpdFRva2VuKCksIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpF
bmFibGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgotICAgIAorCiAgICAgTE9HKE1vdXNlSGFuZGxp
bmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdl
Yk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUo
KSk7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCwgc2FuZGJv
eEV4dGVuc2lvbnMpKTsKIH0KQEAgLTcyNjEsMTEgKzcyNjEsMTIgQEAKICNlbmRpZgogCiAgICAg
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNp
b24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb247CisgICAgYXV0byBhdWRpdFRva2VuID0g
bV9wcm9jZXNzLT5hdWRpdFRva2VuKCk7CiAjaWYgSEFWRShGUk9OVEJPQVJEX1NZU1RFTV9BUFBf
U0VSVklDRVMpCi0gICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRl
SGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2Vydmlj
ZXMiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lz
dGVtYXBwc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290
c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgZnJvbnRib2FyZFNl
cnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAjZW5kaWYKLSAgICBp
ZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9v
a3VwKCJjb20uYXBwbGUuaWNvbnNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChh
dXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAo
ImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246
Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgaWNv
blNlcnZpY2VzU2FuZGJveEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5
U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0
YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCksIGZyb250Ym9hcmRTZXJ2
aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24pKTsKQEAg
LTgzOTQsNyArODM5NSw3IEBACiAjZW5kaWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZ
KQogICAgIGlmIChwcmVmZXJlbmNlcygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkp
Ci0gICAgICAgIHBhcmFtZXRlcnMuZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBmb250ZE1hY2hF
eHRlbnNpb25IYW5kbGUoKTsKKyAgICAgICAgcGFyYW1ldGVycy5mb250TWFjaEV4dGVuc2lvbkhh
bmRsZSA9IGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9v
dHN0cmFwT3B0aW9uczo6RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgogI2lmIEhB
VkUoQVBQX0FDQ0VOVF9DT0xPUlMpCiAgICAgcGFyYW1ldGVycy5hY2NlbnRDb2xvciA9IHBhZ2VD
bGllbnQoKS5hY2NlbnRDb2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUxLDcgKzI2NTEsNyBAQAogICAgIHN0
YXRpYyBWZWN0b3I8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjcmVhdGVOZXR3b3JrRXh0ZW5z
aW9uc1NhbmRib3hFeHRlbnNpb25zKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAgICBz
dGF0aWMgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgp
OworICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUo
U2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMpOwogCiAgICAgdm9pZCBkaWRV
cGRhdGVFZGl0b3JTdGF0ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0
IEVkaXRvclN0YXRlJiBuZXdFZGl0b3JTdGF0ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYg
KzQzMywxMCBAQAogICAgIFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUo
KSBjb25zdCB7IHJldHVybiBtX2Nyb3NzT3JpZ2luTW9kZTsgfQogICAgIENhcHRpdmVQb3J0YWxN
b2RlIGNhcHRpdmVQb3J0YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aXZlUG9ydGFsTW9k
ZTsgfQogCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tl
bl90PiBhdWRpdFRva2VuKCkgY29uc3Q7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdlYlBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1l
ZCwgV2ViQ29yZTo6Q3Jvc3NPcmlnaW5Nb2RlLCBDYXB0aXZlUG9ydGFsTW9kZSk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjI3MSw2ICsyMjcxLDggQEAKIAkJRTFEMjZBNTMx
NzU5NjREOTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQx
IC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVE
NjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAv
KiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFG
OENGQzAwMENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYw
MENDQkVFNCAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM2
RkYwMDMyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEyN0YzNkZCRDAw
NEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZGRjAwNDI3RjM2
RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJl
bmNlcy5zYiAqLzsgfTsKIAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250
ZW50RmlsdGVyTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMzgxNkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcCAqLzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1v
Y2tDb250ZW50RmlsdGVyTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50
RmlsdGVyTWFuYWdlci5oICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2Vi
RGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8q
IFdlYkRldmljZU9yaWVudGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKQEAgLTcx
MDAsOSArNzEwMiwxMCBAQAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25JbmZvLmg7IHBhdGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJF
IC8qIGxpYldlYkNvcmVUZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJX
ZWJDb3JlVGVzdFNoaW0uZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCUUzNEIxMTBGMjdDNDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHls
aWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2RjkwODYyMDA3
QjExNzUgLyogU2FuZGJveCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IGZvbGRlcjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzNkQ3MDFBMjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENs
aWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2Vi
QXR0YWNobWVudEVsZW1lbnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNo
bWVudEVsZW1lbnRDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZG
RjAwMTI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVy
ZW5jZXMuc2IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2Nr
Q29udGVudEZpbHRlck1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2Vi
TW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRl
ck1hbmFnZXIuaDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAv
KiBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVBy
b3ZpZGVyUHJveHkubW07IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92
aWRlclByb3h5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg4OCw3ICs3ODkx
LDcgQEAKIAkJCQlCQzExMUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJCTUxQUYx
QjNEMjcxRjQ2QTYwMDE1MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJEMkUwNDc2MUY1
QkVDNEYwMEJCMjVFRCAvKiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJGRjAyNkY5MDg2
MjAwN0IxMTc1IC8qIFNhbmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8q
IFNhbmRib3ggKi8sCiAJCQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLywK
IAkJCQkxQUJGNDM3ODFBMzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMTE4
NTAyNjAyNjczQjBEQTAwQTY0MjVFIC8qIFhSICovLApAQCAtMTM3MDAsNiArMTM3MDMsMTUgQEAK
IAkJCW5hbWUgPSBQREY7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMzZG
RUZGRTI3RjM2RjM0MDA0QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZl
cmVuY2VzLnNiICovLAorCQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3Rh
dGVWYXJpYWJsZXMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTQwMDAsMTMg
KzE0MDEyLDcgQEAKIAkJCQkyREQ5RUIyRDFBNkYwMTI1MDBCQjEyNjcgLyogQVBJTmF2aWdhdGlv
bkNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNGNjlGQTIxMTc2RDAxNDAwNDcxQTUyIC8q
IEFQSU5hdmlnYXRpb25EYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVFRTFBNzg2RUFE
MDBCNkNGQkUgLyogQVBJTmF2aWdhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlE
RDREQjc4ODI4MEY5NDcxMDAxNzAwRDQgLyogRW50ZXJGdWxsc2NyZWVuLmpzIGluIEhlYWRlcnMg
Ki8sCi0JCQkJREQ0REI3ODkyODBGOTQ3MTAwMTcwMEQ0IC8qIEZpbmROb2Rlcy5qcyBpbiBIZWFk
ZXJzICovLAotCQkJCURENERCNzhBMjgwRjk0NzEwMDE3MDBENCAvKiBGb3JtRWxlbWVudENsZWFy
LmpzIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3OEIyODBGOTQ3MTAwMTcwMEQ0IC8qIEZvcm1T
dWJtaXQuanMgaW4gSGVhZGVycyAqLywKIAkJCQk3QTFFMkE4NTFFRUZFODkyMDAzN0EwRTAgLyog
QVBJTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCURENERCNzg3Mjgw
Rjk0NUUwMDE3MDBENCAvKiBFbGVtZW50RGlzcGxheWVkLmpzIGluIEhlYWRlcnMgKi8sCi0JCQkJ
REQ0REI3ODYyODBGOTQ1QTAwMTcwMEQ0IC8qIEVsZW1lbnRBdHRyaWJ1dGUuanMgaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzMzREQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogQVBJTnVtYmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogQVBJT3BlblBhbmVsUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyOTgxQTY3NTNCMjAwM0E1RkRFIC8q
IEFQSVBhZ2VDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mjc0LDggKzE0Mjgw
LDExIEBACiAJCQkJMkRBNjczMUEyMEM3NTRCMTAwM0NCNDAxIC8qIER5bmFtaWNWaWV3cG9ydFNp
emVVcGRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAv
KiBFZGl0aW5nUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1MTJDMDJFQzQwMDJC
RTY3QiAvKiBFZGl0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJREQ0REI3ODYyODBGOTQ1
QTAwMTcwMEQ0IC8qIEVsZW1lbnRBdHRyaWJ1dGUuanMgaW4gSGVhZGVycyAqLywKKwkJCQlERDRE
Qjc4NzI4MEY5NDVFMDAxNzAwRDQgLyogRWxlbWVudERpc3BsYXllZC5qcyBpbiBIZWFkZXJzICov
LAogCQkJCUJDMDMyREE4MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDRENEQzk5RDI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlERDREQjc4ODI4MEY5NDcxMDAxNzAwRDQgLyogRW50ZXJG
dWxsc2NyZWVuLmpzIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4
IC8qIEVudmlyb25tZW50VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0
OTZCNTI2MDBBNEVFMDYgLyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
NzJFQkJENzI1MzdFQkFFMDAwNTUyQjMgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCBp
biBIZWFkZXJzICovLApAQCAtMTQyODYsOSArMTQyOTUsMTIgQEAKIAkJCQk5MzEyQkFENTI2RjMz
QzI2MDBGRERGNUYgLyogRmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwMEI5NjYxQTE4RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUE5MEMxRjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlERDREQjc4OTI4MEY5NDcxMDAxNzAwRDQgLyogRmluZE5vZGVzLmpz
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5QzRBNTkxOEI4MTE3NDAwN0JEQ0I2IC8qIEZvY3VzZWRF
bGVtZW50SW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTgxRDhEMTMxOUY3RUYw
MDI0MTkxMCAvKiBGb250SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEOEFCNEEyNTgyMEU1
MzAwNTM4NkY4IC8qIEZvbnRSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCURENERCNzhB
MjgwRjk0NzEwMDE3MDBENCAvKiBGb3JtRWxlbWVudENsZWFyLmpzIGluIEhlYWRlcnMgKi8sCisJ
CQkJREQ0REI3OEIyODBGOTQ3MTAwMTcwMEQ0IC8qIEZvcm1TdWJtaXQuanMgaW4gSGVhZGVycyAq
LywKIAkJCQkxQTE0RjhFMjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFFMDBENjExODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVU
cmVlTm9kZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ2MTYsNiArMTQ2MjgsNyBAQAogCQkJ
CUJDMkQwMjE3MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hF
eHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAv
KiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
MzZGRjAwMzI3RjM2RkJEMDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVz
c2FnZVJlY2VpdmVRdWV1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAw
N0UzQzM2IC8qIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTE0ODYxLDcgKzE0
ODc0LDYgQEAKIAkJCQlCQ0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRERBMEEyQjUyN0U1NUU0RTAwNUUwODZFIC8qIFdlYkZvcm1E
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRERBMEEzMDEyN0U1NUU0RTAwNUUwODZFIC8q
IFdlYkZvcm1EZWxlZ2F0ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxOURGQkU3Mjgx
Mzg3QzEwMDNGRjZBRCAvKiBXS05vdGlmaWNhdGlvblByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRTQ2OTU2MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1MjI3RDg0MjdBMTEyNjEwMDhFQUI1NyAv
KiBXZWJGb3VuZFRleHRSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU1Q0ZENEUyNzlEMzFF
NTAwMkYxMDIwIC8qIFdlYkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xNTM1MCw2ICsxNTM2Miw3IEBACiAJCQkJMzE4QkUxNzkxNDc0M0U2RjAwQThGQkIyIC8q
IFdLTm90aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3MTE0NzQzREIxMDBB
OEZCQjIgLyogV0tOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEy
RUM3NDE0OEQ1OUNBMDA4MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTE5REZCRTcyODEzODdDMTAwM0ZGNkFEIC8qIFdLTm90aWZp
Y2F0aW9uUHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyQzBDNEExNDZEREM4QTAw
MTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3
QzRDMDk0MTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3M0NFQUQ2MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xNTk3NSw2ICsxNTk4OCw3IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNv
cmVQcmVkaWN0aW9uX21vZGVsIGluIFJlc291cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0
MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4
RTQzMUY2MEIyNDAwMDVFNTMxMiAvKiBpT1MueGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJ
CUUzNkZGMDA0MjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJNUM4QkM3OTcyMThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0
cyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkocmV2aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksMTEgQEAK
IAogUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogeworICAgIGF1dG8gcGFnZSA9
IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKwor
ICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdl
KHBhZ2UucHRyKCkpOworCiAjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogICAgIC8vIFRo
aXMgY2FsbCBpcyBub3QgbWVhbnQgdG8gYWN0dWFsbHkgcmVhZCBhIHByZWZlcmVuY2UsIGJ1dCBp
cyBvbmx5IGhlcmUgdG8gdHJpZ2dlciBhIHNhbmRib3ggcnVsZSBpbiB0aGUKICAgICAvLyBXZWJD
b250ZW50IHByb2Nlc3MsIHdoaWNoIHdpbGwgdG9nZ2xlIGEgc2FuZGJveCB2YXJpYWJsZSB1c2Vk
IHRvIGRldGVybWluZSBpZiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCkBAIC00NjYsMTEgKzQ3MSw2
IEBACiAgICAgQ0ZQcmVmZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigia2V5IiksIENG
U1RSKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuTGF1bmNoIiksIG51bGxwdHIpOwogI2Vu
ZGlmCiAKLSAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdl
SUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKLQotICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5pbmplY3RlZEJ1bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5p
bmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOwotCiAgICAgcmV0dXJu
IHBhZ2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2Vi
UHJvY2Vzcy5zYi5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29t
LmFwcGxlLldlYlByb2Nlc3Muc2IuaW4JKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjA1NiwyNyArMjA1Niw0MiBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNBTkRCT1hfTUVTU0FH
RV9GSUxURVJJTkcpCi0oaWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVT
U0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisoZGVmaW5l
IChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIw
NCAyMDcgMzAxIDcxMSA4MDAgODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAt
d2l0aC1maWx0ZXIpCiAgICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1t
ZXNzYWdlLWZpbHRlcgorICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGgg
dGVsZW1ldHJ5KSkKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAg
ICAgICAgICAgIChtYWNoLWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisoaWYgKGFu
ZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikg
KGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9S
RVFVSVJFRCA+PSAxMjAwMDAKLSAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3
aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1l
c3NhZ2UtbnVtYmVyCisjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgor
ICAgICAgICAoaWYgKHJlcXVpcmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxl
LnByaXZhdGUuc2VjdXJpdHkuZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChhbGxv
dyBtYWNoLWJvb3RzdHJhcAorICAgICAgICAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgor
ICAgICAgICAgICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1l
dHJ5LWJhY2t0cmFjZSkpKSkKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93LW1h
Y2gtYm9vdHN0cmFwLXdpdGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAgICAg
ICAgICAgIChyZXF1aXJlLWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUt
ZmxhZyAiV2ViQ29udGVudFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChzdGF0
ZS1mbGFnICJFbmFibGVNYWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1i
b290c3RyYXAtd2l0aC1maWx0ZXIpKSkpCiAjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJh
cC13aXRoLWZpbHRlcikpCisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2Vs
c2UKKyAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmls
dGVyCiAgICAgICAgICAgICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkp
Ci0gICAgICAgICAgICAoYWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAg
ICAgICAgICAgIChhbGxvdyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gt
Ym9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAy
MDQKLSAgICAgICAgICAgICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAg
ICAgICA3MTEKLSAgICAgICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAo
YW5kIChlcXVhbD8gKHBhcmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMi
KSAoZGVmaW5lZD8gJ21hY2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJu
ZWwtZW5kcG9pbnQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458549</attachid>
            <date>2022-04-28 15:03:14 -0700</date>
            <delta_ts>2022-04-28 16:32:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>238577.patch</filename>
            <type>text/plain</type>
            <size>42462</size>
            <attacher name="Per Arne Vollan">pvollan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTA0LTI4ICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KKworICAgICAgICBEeW5hbWljYWxseSBzd2l0Y2ggbWVzc2FnZSBm
aWx0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
ODU3NworICAgICAgICA8cmRhcjovLzY5MjYzMzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdl
b2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEFkZCBTUEkgdG8gc2V0IHNhbmRib3ggc3RhdGUgdmFy
aWFibGUuCisKKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmg6CisKIDIwMjIt
MDQtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbV1RG
XSBVc2UgcXVhZHJhdGljLXByb2JpbmcgaW5zdGVhZCBvZiBkb3VibGUtaGFzaGluZwpJbmRleDog
U291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9TYW5kYm94U1BJLmgJKHJldmlzaW9uIDI5MzU4OCkKKysr
IFNvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vU2FuZGJveFNQSS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw4IEBACiBjaGFyICpzYW5kYm94X2V4dGVuc2lvbl9pc3N1ZV9pb2tpdF9yZWdp
c3RyeV9lbnRyeV9jbGFzc190b19wcm9jZXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywg
Y29uc3QgY2hhciAqcmVnaXN0cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzLCBhdWRpdF90
b2tlbl90KTsKIGNoYXIgKnNhbmRib3hfZXh0ZW5zaW9uX2lzc3VlX2lva2l0X3JlZ2lzdHJ5X2Vu
dHJ5X2NsYXNzKGNvbnN0IGNoYXIgKmV4dGVuc2lvbl9jbGFzcywgY29uc3QgY2hhciAqcmVnaXN0
cnlfZW50cnlfY2xhc3MsIHVpbnQzMl90IGZsYWdzKTsKIAorYm9vbCBzYW5kYm94X2VuYWJsZV9z
dGF0ZV9mbGFnKGNvbnN0IGNoYXIgKnZhcm5hbWUsIGF1ZGl0X3Rva2VuX3QpOworCiBXVEZfRVhU
RVJOX0NfRU5ECiAKICNlbmRpZiAvLyBPUyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24g
MjkzNTkwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2NiBAQAogMjAyMi0wNC0yOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5j
b20+CiAKKyAgICAgICAgRHluYW1pY2FsbHkgc3dpdGNoIG1lc3NhZ2UgZmlsdGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg1NzcKKyAgICAgICAg
PHJkYXI6Ly82OTI2MzMyND4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4K
KworICAgICAgICBVc2UgYSBzYW5kYm94IHN0YXRlIHZhcmlhYmxlIHRvIGR5bmFtaWNhbGx5IHN3
aXRjaCB0aGUgYm9vdHN0cmFwIGZpbHRlciBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzJyBzYW5k
Ym94LgorICAgICAgICBEdXJpbmcgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nlc3MsIHdl
IHVzZSBhIG1vcmUgcGVybWlzc2l2ZSBib290c3RyYXAgZmlsdGVyIHRvIGFsbG93IGNyZWF0aW5n
IE1hY2gKKyAgICAgICAgY29ubmVjdGlvbnMgaW4gdGhpcyB0aW1lIGZyYW1lLiBBZnRlciB0aGUg
V2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hlZCwgd2Ugc3dpdGNoIHRvIGEgYmxvY2tpbmcg
ZmlsdGVyLAorICAgICAgICB3aGljaCB3aWxsIGVzc2VudGlhbGx5IGJsb2NrIGFjY2VzcyB0byBs
YXVuY2hkLiBUaGUgYm9vdHN0cmFwIGZpbHRlciBpcyBiZWluZyBzd2l0Y2hlZCBiYWNrIHRvIHRo
ZSBtb3JlCisgICAgICAgIHBlcm1pc3NpdmUgdmVyc2lvbiB3aGVuIHdlIGNyZWF0ZSBuZXcgTWFj
aCBzYW5kYm94IGV4dGVuc2lvbnMgZm9yIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuIFRoaXMgaXMg
ZG9uZSBvbgorICAgICAgICBhIGNhc2UgYnkgY2FzZSBiYXNpcywgYnkgYWRkaW5nIGEgbmV3IHBh
cmFtZXRlciB0byBjb250cm9sIHRoaXMgYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBNYWNoIHNhbmRi
b3gKKyAgICAgICAgZXh0ZW5zaW9ucy4gV2hpbGUgbGF1bmNoaW5nIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MgdGhlcmUgaXMgdXN1YWxseSBubyBuZWVkIHRvIHNwZWNpZnkgdGhhdCB0aGUgcGVybWlz
c2l2ZQorICAgICAgICBib290c3RyYXAgZmlsdGVyIGlzIG5lZWRlZCwgc2luY2Ugd2UgYXJlIGFs
cmVhZHkgdXNpbmcgdGhlIHBlcm1pc3NpdmUgZmlsdGVyIGR1cmluZyBsYXVuY2ggdGltZS4gSG93
ZXZlciwKKyAgICAgICAgZm9yIHNvbWUgTWFjaCBleHRlbnNpb25zIHRoYXQgd2lsbCBvbmx5IHJl
c3VsdCBpbiBhIG5ldyBYUEMgY29ubmVjdGlvbiBpbiB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGFm
dGVyIGxhdW5jaCwKKyAgICAgICAgd2UgbmVlZCB0byBzcGVjaWZ5IHRoYXQgdGhlIHBlcm1pc3Np
dmUgZmlsdGVyIGlzIHJlcXVyaWVkLiBPdGhlcndpc2UsIGNyZWF0aW5nIHRoZSBuZXcgWFBDIGNv
bm5lY3Rpb24gYWZ0ZXIKKyAgICAgICAgbGF1bmNoIHdpbGwgZmFpbC4gRm9yIE1hY2ggc2FuZGJv
eCBleHRlbnNpb25zIGNyZWF0ZWQgYWZ0ZXIgbGF1bmNoIG9mIHRoZSBXZWJDb250ZW50IHByb2Nl
c3MsIHdlIGFsd2F5cyBuZWVkCisgICAgICAgIHRvIHVzZSB0aGUgcGVybWlzc2l2ZSBib290c3Ry
YXAgZmlsdGVyIHRvIGJlIGFibGUgdG8gY3JlYXRlIHRoZSBYUEMgY29ubmVjdGlvbi4gRW5hYmxp
bmcgdGhlIHBlcm1pc3NpdmUKKyAgICAgICAgYm9vdHN0cmFwIGZpbHRlciByZXF1aXJlcyB0aGUg
YXVkaXQgdG9rZW4gdG8gYmUgYXZhaWxhYmxlLCB3aGljaCBtZWFucyB3ZSBuZWVkIHRvIHBhc3Mg
dGhlIGF1ZGl0IHRva2VuIHdoZW4KKyAgICAgICAgY3JlYXRpbmcgdGhlIG5ldyBNYWNoIHNhbmRi
b3ggZXh0ZW5zaW9ucy4gVGhpcyBwYXRjaCBhbHNvIHdhaXRzIHVudGlsIGFmdGVyIHRoZSBXZWIg
cGFnZSBoYXMgYmVlbiBjcmVhdGVkIHRvCisgICAgICAgIHNldCB0aGUgc2FuZGJveCB2YXJpYWJs
ZSB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgV2ViQ29udGVudCBwcm9jZXNzIGhhcyBsYXVuY2hl
ZC4gV2l0aG91dCB0aGlzIGxhc3QgY2hhbmdlLAorICAgICAgICB0aGUgYm9vdHN0cmFwIGZpbHRl
ciB3b3VsZCBoYXZlIG5lZWRlZCBzd2l0Y2hpbmcgd2hlbiBjcmVhdGluZyB0aGUgV2ViIHBhZ2Us
IHNpbmNlIGNyZWF0aW5nIHRoZSBXZWJQYWdlIHdpbGwKKyAgICAgICAgY29uc3VtZSBhbmQgcmV2
b2tlIHNvbWUgbWFjaCBleHRlbnNpb25zLgorCisgICAgICAgICogUmVzb3VyY2VzL1NhbmRib3hQ
cm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluOgorICAgICAgICAq
IFNjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2g6CisgICAgICAgICogU2hhcmVkL0NvY29h
L1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCk6CisgICAgICAgIChXZWJLaXQ6OlNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKToKKyAgICAgICAgKiBTaGFy
ZWQvU2FuZGJveC9TYW5kYm94U3RhdGVWYXJpYWJsZXMuaDogQWRkZWQuCisgICAgICAgICogU2hh
cmVkL1NhbmRib3hFeHRlbnNpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUGFn
ZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z3JhbnRB
Y2Nlc3NUb0Fzc2V0U2VydmljZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN3
aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0cnkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OmZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlByb2Nlc3NQb29sOjpyZWdpc3Rlck5vdGlmaWNhdGlvbk9ic2VydmVycyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnVuYmxvY2tBY2Nlc3NpYmlsaXR5U2VydmVySWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1Zh
bGlkV2ViQ29udGVudFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6
OmF1ZGl0VG9rZW4gY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlcjo6YWRkU291
cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZmluaXNoR3JhbnRpbmdSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlck1lZGlhUHJvY2Vzc01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpVc2VyTWVk
aWFQcm9jZXNzTWFuYWdlcjo6d2lsbENyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpw
cm9jZXNzTmV4dFF1ZXVlZE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpjcmVhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29tLmFwcGxl
LldlYlByb2Nlc3Muc2IuaW46CisKKzIwMjItMDQtMjggIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xs
YW5AYXBwbGUuY29tPgorCiAgICAgICAgIEZpeCBidWlsZCBlcnJvciBhZnRlciByMjkzNTA5CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NjYKICAg
ICAgICAgPHJkYXI6Ly85MjQ3MTQxNj4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1Nh
bmRib3hQcm9maWxlcy9pb3MvY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL1NhbmRib3hQcm9maWxlcy9pb3MvY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LnNiLmluCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1Jlc291cmNlcy9TYW5kYm94UHJvZmlsZXMvaW9zL2NvbS5hcHBsZS5XZWJLaXQu
V2ViQ29udGVudC5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ1MCw0MCArMTQ1MCwzMiBAQAog
KQogCiAoZGVmaW5lLW9uY2UgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAo
bWVzc2FnZS1udW1iZXIKLSAgICAgICAgMjA2Ci0gICAgICAgIDIwNwotICAgICAgICA3MTEKLSAg
ICAgICAgNzEyCi0gICAgICAgIDcxOAotICAgICAgICA4MDAKLSAgICAgICAgODAyCi0gICAgICAg
IDgwMwotICAgICAgICA4MDQKLSAgICAgICAgODA1Ci0gICAgKQotKQorICAgIChtZXNzYWdlLW51
bWJlciAyMDYgMjA3IDcxMSA3MTIgNzE4IDgwMCA4MDIgODAzIDgwNCA4MDUgOTA0KSkKIAotKGlm
IChkZWZpbmVkPyAnKnNicGwtdmVyc2lvbiopCisoZGVmaW5lIChhbGxvdy1tYWNoLWJvb3RzdHJh
cC13aXRoLWZpbHRlcikKICAgICAoYWxsb3cgbWFjaC1ib290c3RyYXAKICAgICAgICAgKGFwcGx5
LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAgICAoZGVueSBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0
aCB0ZWxlbWV0cnkpKQogICAgICAgICAgICAgKGFsbG93IG1hY2gtbWVzc2FnZS1zZW5kCi0gICAg
ICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVtYmVycykKLSAgICAgICAgICAg
ICkKLSAgICAgICAgKQotICAgICkKLTs7IGVsc2UKKyAgICAgICAgICAgICAgICAobWFjaC1ib290
c3RyYXAtbWVzc2FnZS1udW1iZXJzKSkpKSkKKworI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFH
UykKKyhpZiAocmVxdWlyZS1hbmNlc3Rvci13aXRoLWVudGl0bGVtZW50ICJjb20uYXBwbGUucHJp
dmF0ZS5zZWN1cml0eS5lbmFibGUtc3RhdGUtZmxhZ3MiKQogICAgIChhbGxvdyBtYWNoLWJvb3Rz
dHJhcAogICAgICAgICAoYXBwbHktbWVzc2FnZS1maWx0ZXIKLSAgICAgICAgICAgIChkZW55IHhw
Yy1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKLSAgICAgICAgICAgIChhbGxvdyB4cGMt
bWVzc2FnZS1zZW5kCi0gICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3NhZ2UtbnVt
YmVycykKLSAgICAgICAgICAgICkKLSAgICAgICAgKQotICAgICkKLSkKKyAgICAgICAgICAgIChh
bGxvdyBtYWNoLW1lc3NhZ2Utc2VuZCAod2l0aCB0ZWxlbWV0cnktYmFja3RyYWNlKSkpKQorOzsg
ZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikpCiAKKyh3aXRoLWZp
bHRlcgorICAgIChyZXF1aXJlLWFueQorICAgICAgICAocmVxdWlyZS1ub3QgKHN0YXRlLWZsYWcg
IldlYkNvbnRlbnRQcm9jZXNzTGF1bmNoZWQiKSkKKyAgICAgICAgKHN0YXRlLWZsYWcgIkVuYWJs
ZU1hY2hCb290c3RyYXAiKSkKKyAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIp
KQorI2Vsc2UKKyhhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikKKyNlbmRpZgorCiAo
ZGVmaW5lIChzeXNjYWxsLW1hY2gtb25seS1pbi11c2UtZHVyaW5nLWxhdW5jaCkKICAgICAobWFj
aHRyYXAtbnVtYmVyCiAgICAgICAgIE1TQ19tYWNoX2dlbmVyYXRlX2FjdGl2aXR5X2lkCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVudHMuc2gKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL3Byb2Nlc3MtZW50aXRsZW1lbnRzLnNoCShyZXZp
c2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvcHJvY2Vzcy1lbnRpdGxlbWVu
dHMuc2gJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw2ICsxOTcsMTIgQEAKICAgICAgICAgICAgIHBs
aXN0YnVkZHkgQWRkIDpjb20uYXBwbGUuc2VjdXJpdHkuY3Muc2luZ2xlLWppdCBib29sIFlFUwog
ICAgICAgICBmaQogCisgICAgICAgIGlmICgoICIke1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SfSIgPj0gMTMwMDAwICkpCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIHBsaXN0YnVkZHkg
QWRkIDpjb20uYXBwbGUucHJpdmF0ZS5zZWN1cml0eS5tdXRhYmxlLXN0YXRlLWZsYWdzIGFycmF5
CisgICAgICAgICAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUuc2VjdXJpdHku
bXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVNYWNoQm9vdHN0cmFwCisgICAgICAg
IGZpCisKICAgICAgICAgaWYgW1sgIiR7V0tfV0VCQ09OVEVOVF9TRVJWSUNFX05FRURTX1hQQ19E
T01BSU5fRVhURU5TSU9OX0VOVElUTEVNRU5UfSIgPT0gWUVTIF1dCiAgICAgICAgIHRoZW4KICAg
ICAgICAgICAgIHBsaXN0YnVkZHkgQWRkIDpjb20uYXBwbGUucHJpdmF0ZS54cGMuZG9tYWluLWV4
dGVuc2lvbiBib29sIFlFUwpAQCAtMzQ0LDYgKzM1MCw4IEBACiAgICAgcGxpc3RidWRkeSBBZGQg
OmNvbS5hcHBsZS5wcml2YXRlLnBhYy5leGNlcHRpb24gYm9vbCBZRVMKICAgICBwbGlzdGJ1ZGR5
IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUudmVyaWZpZWQtaml0IGJvb2wgWUVTCiAgICAgcGxpc3Ri
dWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm1lc3NhZ2UtZmlsdGVyIGJvb2wg
WUVTCisgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLnNlY3VyaXR5Lm11dGFi
bGUtc3RhdGUtZmxhZ3MgYXJyYXkKKyAgICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZh
dGUuc2VjdXJpdHkubXV0YWJsZS1zdGF0ZS1mbGFnczowIHN0cmluZyBFbmFibGVNYWNoQm9vdHN0
cmFwCiAgICAgcGxpc3RidWRkeSBBZGQgOmNvbS5hcHBsZS5wcml2YXRlLndlYmluc3BlY3Rvci5h
bGxvdy1yZW1vdGUtaW5zcGVjdGlvbiBib29sIFlFUwogICAgIHBsaXN0YnVkZHkgQWRkIDpjb20u
YXBwbGUucHJpdmF0ZS53ZWJpbnNwZWN0b3IucHJveHktYXBwbGljYXRpb24gYm9vbCBZRVMKICAg
ICBwbGlzdGJ1ZGR5IEFkZCA6Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9p
bnQgYm9vbCBZRVMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRl
bnNpb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9T
YW5kYm94RXh0ZW5zaW9uQ29jb2EubW0JKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1NhbmRib3hFeHRlbnNpb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsMTAgQEAKICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1NhbmRib3hTUEkuaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9G
TEFHUykKKyNpbmNsdWRlICJTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2FuZGJveEV4dGVuc2lvbkltcGwgewpAQCAtMzE2LDgg
KzMyMCw5IEBACiAgICAgcmV0dXJuIFdURk1vdmUoaGFuZGxlKTsKIH0KIAotYXV0byBTYW5kYm94
RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNl
LCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFn
cz4gZmxhZ3MpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPgorYXV0byBTYW5kYm94RXh0ZW5zaW9u
OjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKEFTQ0lJTGl0ZXJhbCBzZXJ2aWNlLCBzdGQ6Om9w
dGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9rZW4sIE1hY2hCb290c3RyYXBPcHRpb25zIG1h
Y2hCb290c3RyYXBPcHRpb25zLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBzdGQ6Om9wdGlv
bmFsPEhhbmRsZT4KIHsKKyAgICBVTlVTRURfUEFSQU0obWFjaEJvb3RzdHJhcE9wdGlvbnMpOwog
ICAgIEhhbmRsZSBoYW5kbGU7CiAgICAgQVNTRVJUKCFoYW5kbGUubV9zYW5kYm94RXh0ZW5zaW9u
KTsKICAgICAKQEAgLTMyNywyMSArMzMyLDMwIEBACiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogICAgIAorI2lmIEhBVkUoU0FOREJPWF9TVEFURV9GTEFHUykKKyAgICAvLyBX
aGVuIGxhdW5jaGQgaXMgYmxvY2tlZCBpbiB0aGUgc2FuZGJveCwgd2UgbmVlZCB0byBtYW51YWxs
eSBlbmFibGUgYm9vdHN0cmFwcGluZyBvZiBuZXcgWFBDIGNvbm5lY3RvbnMuCisgICAgLy8gVGhp
cyBpcyBkb25lIGJ5IHVuYmxvY2tpbmcgbGF1bmNoZCwgc2luY2UgbGF1bmNoZCBhY2Nlc3MgaXMg
cmVxdWlyZWQgd2hlbiBjcmVhdGluZyBNYWNoIGNvbm5lY3Rpb25zLgorICAgIC8vIFVuYmxvY2tp
bmcgbGF1bmNoZCBpcyBkb25lIGJ5IGVuYWJsaW5nIGEgc2FuZGJveCBzdGF0ZSB2YXJpYWJsZS4K
KyAgICAvLyBJbiB0aGUgaW5pdGlhbCB2ZXJzaW9uIG9mIHRoaXMgY2hhbmdlLCBNYWNoIGJvb3Rz
dHJhcCdpbmcgaXMgZW5hYmxlZCB1bmNvbmRpdGlvbmFsbHkuCisgICAgaWYgKGF1ZGl0VG9rZW4p
CisgICAgICAgIHNhbmRib3hfZW5hYmxlX3N0YXRlX2ZsYWcoRU5BQkxFX01BQ0hfQk9PVFNUUkFQ
LCAqYXVkaXRUb2tlbik7CisjZW5kaWYKKwogICAgIHJldHVybiBXVEZNb3ZlKGhhbmRsZSk7CiB9
CiAKLWF1dG8gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bh
bjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2Vu
X3Q+IGF1ZGl0VG9rZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+
CithdXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKFNwYW48
Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90
PiBhdWRpdFRva2VuLCBNYWNoQm9vdHN0cmFwT3B0aW9ucyBtYWNoQm9vdHN0cmFwT3B0aW9ucywg
T3B0aW9uU2V0PEZsYWdzPiBmbGFncykgLT4gVmVjdG9yPEhhbmRsZT4KIHsKLSAgICByZXR1cm4g
Y3JlYXRlSGFuZGxlc0ZvclJlc291cmNlcyhzZXJ2aWNlcywgW2F1ZGl0VG9rZW4sIGZsYWdzXSAo
QVNDSUlMaXRlcmFsIHNlcnZpY2UpIC0+IHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiB7Ci0gICAgICAg
IGF1dG8gaGFuZGxlID0gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChzZXJ2aWNlLCBhdWRpdFRv
a2VuLCBmbGFncyk7CisgICAgcmV0dXJuIGNyZWF0ZUhhbmRsZXNGb3JSZXNvdXJjZXMoc2Vydmlj
ZXMsIFthdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywgZmxhZ3NdIChBU0NJSUxpdGVy
YWwgc2VydmljZSkgLT4gc3RkOjpvcHRpb25hbDxIYW5kbGU+IHsKKyAgICAgICAgYXV0byBoYW5k
bGUgPSBjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKHNlcnZpY2UsIGF1ZGl0VG9rZW4sIG1hY2hC
b290c3RyYXBPcHRpb25zLCBmbGFncyk7CiAgICAgICAgIEFTU0VSVChoYW5kbGUpOwogICAgICAg
ICByZXR1cm4gaGFuZGxlOwogICAgIH0pOwogfQogCi1hdXRvIFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJ
SUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IGF1ZGl0VG9r
ZW4sIE9wdGlvblNldDxGbGFncz4gZmxhZ3MpIC0+IFZlY3RvcjxIYW5kbGU+CithdXRvIFNhbmRi
b3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rv
a2VuX3Q+IGF1ZGl0VG9rZW4sIE1hY2hCb290c3RyYXBPcHRpb25zIG1hY2hCb290c3RyYXBPcHRp
b25zLCBPcHRpb25TZXQ8RmxhZ3M+IGZsYWdzKSAtPiBWZWN0b3I8SGFuZGxlPgogewotICAgIHJl
dHVybiBjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cChTcGFuIHsgc2VydmljZXMuYmVnaW4oKSwg
c2VydmljZXMuc2l6ZSgpIH0sIGF1ZGl0VG9rZW4sIGZsYWdzKTsKKyAgICByZXR1cm4gY3JlYXRl
SGFuZGxlc0Zvck1hY2hMb29rdXAoU3BhbiB7IHNlcnZpY2VzLmJlZ2luKCksIHNlcnZpY2VzLnNp
emUoKSB9LCBhdWRpdFRva2VuLCBtYWNoQm9vdHN0cmFwT3B0aW9ucywgZmxhZ3MpOwogfQogCiBh
dXRvIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvclJlYWRCeUF1ZGl0VG9rZW4oU3Ry
aW5nVmlldyBwYXRoLCBhdWRpdF90b2tlbl90IGF1ZGl0VG9rZW4pIC0+IHN0ZDo6b3B0aW9uYWw8
SGFuZGxlPgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvU2FuZGJveC9TYW5kYm94U3RhdGVW
YXJpYWJsZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9TYW5kYm94L1Nh
bmRib3hTdGF0ZVZhcmlhYmxlcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL1NhbmRib3gvU2FuZGJveFN0YXRlVmFyaWFibGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjZGVmaW5lIEVOQUJMRV9N
QUNIX0JPT1RTVFJBUCAiRW5hYmxlTWFjaEJvb3RzdHJhcCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1No
YXJlZC9TYW5kYm94RXh0ZW5zaW9uLmgJKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1NhbmRib3hFeHRlbnNpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTks
MTIgQEAKICAgICAgICAgTm9SZXBvcnQsCiAgICAgICAgIERvTm90Q2Fub25pY2FsaXplLAogICAg
IH07Ci0gICAgCisKKyAgICBlbnVtIGNsYXNzIE1hY2hCb290c3RyYXBPcHRpb25zIDogdWludDhf
dCB7CisgICAgICAgIERvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwKKyAgICAgICAgRW5hYmxlTWFj
aEJvb3RzdHJhcAorICAgIH07CisKICAgICBjbGFzcyBIYW5kbGUgewogICAgICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShIYW5kbGUpOwogICAgIHB1YmxpYzoKQEAgLTkxLDkgKzk2LDkgQEAKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8SGFuZGxlLCBTdHJpbmc+PiBjcmVhdGVI
YW5kbGVGb3JUZW1wb3JhcnlGaWxlKFN0cmluZ1ZpZXcgcHJlZml4LCBUeXBlKTsKICAgICBzdGF0
aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhhbmRsZUZvckdlbmVyaWNFeHRlbnNpb24o
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbkNsYXNzKTsKICNpZiBIQVZFKEFVRElUX1RPS0VOKQotICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPEhhbmRsZT4gY3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChB
U0NJSUxpdGVyYWwgc2VydmljZSwgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9u
U2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKLSAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4g
Y3JlYXRlSGFuZGxlc0Zvck1hY2hMb29rdXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZp
Y2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxh
Z3M6OkRlZmF1bHQpOwotICAgIHN0YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9y
TWFjaExvb2t1cChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgQVNDSUlMaXRlcmFsPiBzZXJ2
aWNlcywgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZs
YWdzOjpEZWZhdWx0KTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxIYW5kbGU+IGNyZWF0ZUhh
bmRsZUZvck1hY2hMb29rdXAoQVNDSUlMaXRlcmFsIHNlcnZpY2UsIHN0ZDo6b3B0aW9uYWw8YXVk
aXRfdG9rZW5fdD4sIE1hY2hCb290c3RyYXBPcHRpb25zID0gTWFjaEJvb3RzdHJhcE9wdGlvbnM6
OkRvTm90RW5hYmxlTWFjaEJvb3RzdHJhcCwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZh
dWx0KTsKKyAgICBzdGF0aWMgVmVjdG9yPEhhbmRsZT4gY3JlYXRlSGFuZGxlc0Zvck1hY2hMb29r
dXAoU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6Om9wdGlvbmFsPGF1ZGl0
X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290c3RyYXBPcHRpb25zOjpE
b05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4gPSBGbGFnczo6RGVmYXVs
dCk7CisgICAgc3RhdGljIFZlY3RvcjxIYW5kbGU+IGNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3Vw
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBBU0NJSUxpdGVyYWw+IHNlcnZpY2VzLCBzdGQ6
Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+LCBNYWNoQm9vdHN0cmFwT3B0aW9ucyA9IE1hY2hCb290
c3RyYXBPcHRpb25zOjpEb05vdEVuYWJsZU1hY2hCb290c3RyYXAsIE9wdGlvblNldDxGbGFncz4g
PSBGbGFnczo6RGVmYXVsdCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVh
dGVIYW5kbGVGb3JSZWFkQnlBdWRpdFRva2VuKFN0cmluZ1ZpZXcgcGF0aCwgYXVkaXRfdG9rZW5f
dCk7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SGFuZGxlPiBjcmVhdGVIYW5kbGVGb3JJT0tp
dENsYXNzRXh0ZW5zaW9uKEFTQ0lJTGl0ZXJhbCBpb2tpdENsYXNzLCBzdGQ6Om9wdGlvbmFsPGF1
ZGl0X3Rva2VuX3Q+LCBPcHRpb25TZXQ8RmxhZ3M+ID0gRmxhZ3M6OkRlZmF1bHQpOwogICAgIHN0
YXRpYyBWZWN0b3I8SGFuZGxlPiBjcmVhdGVIYW5kbGVzRm9ySU9LaXRDbGFzc0V4dGVuc2lvbnMo
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGlva2l0Q2xhc3Nlcywgc3RkOjpvcHRpb25hbDxhdWRp
dF90b2tlbl90PiwgT3B0aW9uU2V0PEZsYWdzPiA9IEZsYWdzOjpEZWZhdWx0KTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAxLDExICsyMDEsMTIgQEAKICNp
ZiAhRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HX0lOX05FVFdPUktJTkdfUFJPQ0VTUykKICAgICBs
b2FkUGFyYW1ldGVycy5uZXR3b3JrRXh0ZW5zaW9uU2FuZGJveEV4dGVuc2lvbkhhbmRsZXMgPSBj
cmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRlbnNpb25zKHByb2Nlc3MpOwogI2lmIFBM
QVRGT1JNKElPUykKKyAgICBhdXRvIGF1ZGl0VG9rZW4gPSBwcm9jZXNzLmF1ZGl0VG9rZW4oKTsK
ICAgICBpZiAoIXByb2Nlc3MuaGFzTWFuYWdlZFNlc3Npb25TYW5kYm94QWNjZXNzKCkgJiYgW2dl
dFdlYkZpbHRlckV2YWx1YXRvckNsYXNzKCkgaXNNYW5hZ2VkU2Vzc2lvbl0pIHsKLSAgICAgICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLnVpa2l0LnZpZXdzZXJ2aWNlLmNvbS5hcHBsZS5XZWJDb250ZW50Rmls
dGVyLnJlbW90ZVVJIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgICAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
dWlraXQudmlld3NlcnZpY2UuY29tLmFwcGxlLldlYkNvbnRlbnRGaWx0ZXIucmVtb3RlVUkiX3Ms
IGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFi
bGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRGaWx0
ZXJFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCi0gICAgICAgIGlmIChhdXRv
IGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNv
bS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQor
ICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZnJvbnRib2FyZC5zeXN0ZW1hcHBzZXJ2aWNlcyJfcywg
YXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJs
ZU1hY2hCb290c3RyYXApKQogICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuZnJvbnRib2FyZFNl
cnZpY2VFeHRlbnNpb25IYW5kbGUgPSBXVEZNb3ZlKCpoYW5kbGUpOwogCiAgICAgICAgIHByb2Nl
c3MubWFya0hhc01hbmFnZWRTZXNzaW9uU2FuZGJveEFjY2VzcygpOwpAQCAtODQxLDcgKzg0Miw3
IEBACiB2b2lkIFdlYlBhZ2VQcm94eTo6Z3JhbnRBY2Nlc3NUb0Fzc2V0U2VydmljZXMoKQogewog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBtb2JpbGVBc3NldEhhbmRsZVYyOwotICAgIGlm
IChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29r
dXAoImNvbS5hcHBsZS5tb2JpbGVhc3NldGQudjIiX3MsIHN0ZDo6bnVsbG9wdCkpCisgICAgaWYg
KGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1
cCgiY29tLmFwcGxlLm1vYmlsZWFzc2V0ZC52MiJfcywgcHJvY2VzcygpLmF1ZGl0VG9rZW4oKSwg
U2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3Ry
YXApKQogICAgICAgICBtb2JpbGVBc3NldEhhbmRsZVYyID0gV1RGTW92ZSgqaGFuZGxlKTsKICAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6R3JhbnRBY2Nlc3NUb0Fzc2V0
U2VydmljZXMobW9iaWxlQXNzZXRIYW5kbGVWMiksIDApOwogfQpAQCAtODUzLDEzICs4NTQsMTMg
QEAKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1Vz
ZXJGb250UmVnaXN0cnkoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTd2l0Y2hGcm9tU3RhdGljRm9udFJlZ2lzdHJ5VG9Vc2VyRm9udFJlZ2lzdHJ5KGZvbnRk
TWFjaEV4dGVuc2lvbkhhbmRsZSgpKSwgMCk7CisgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OlN3aXRjaEZyb21TdGF0aWNGb250UmVnaXN0cnlUb1VzZXJGb250UmVnaXN0
cnkoZm9udGRNYWNoRXh0ZW5zaW9uSGFuZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3Ry
YXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSksIDApOwogfQogCi1TYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgV2ViUGFnZVByb3h5Ojpmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoKQorU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlIFdlYlBhZ2VQcm94eTo6Zm9udGRNYWNoRXh0ZW5zaW9uSGFu
ZGxlKFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zIG1hY2hCb290c3RyYXBP
cHRpb25zKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBmb250TWFjaEV4dGVuc2lv
bkhhbmRsZTsKLSAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVI
YW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuZm9udHMiX3MsIHN0ZDo6bnVsbG9wdCkpCisg
ICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFj
aExvb2t1cCgiY29tLmFwcGxlLmZvbnRzIl9zLCBwcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBtYWNo
Qm9vdHN0cmFwT3B0aW9ucykpCiAgICAgICAgIGZvbnRNYWNoRXh0ZW5zaW9uSGFuZGxlID0gV1RG
TW92ZSgqaGFuZGxlKTsKICAgICByZXR1cm4gZm9udE1hY2hFeHRlbnNpb25IYW5kbGU7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQ
b29sQ29jb2EubW0JKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcxNiwxNCAr
NzE2LDIxIEBACiAgICAgICAgIGludCBub3RpZnlUb2tlbjsKICAgICAgICAgbm90aWZ5X3JlZ2lz
dGVyX2Rpc3BhdGNoKG1lc3NhZ2UsICZub3RpZnlUb2tlbiwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXihpbnQgdG9rZW4pIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HKE5vdGlmaWNhdGlv
bnMsICJPcGVuRGlyZWN0b3J5IGludmFsaWRhdGVkIGNhY2hlIik7CisjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKQogICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVh
dGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUuc3lzdGVtLm9wZW5kaXJlY3RvcnlkLmxp
YmluZm8iX3MsIHN0ZDo6bnVsbG9wdCk7CiAgICAgICAgICAgICBpZiAoIWhhbmRsZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQogICAgICAgICAgICAg
aWYgKGF1dG8qIGdwdVByb2Nlc3MgPSBHUFVQcm9jZXNzUHJveHk6OnNpbmdsZXRvbklmQ3JlYXRl
ZCgpKQogICAgICAgICAgICAgICAgIGdwdVByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OkdQVVByb2Nl
c3M6Ok9wZW5EaXJlY3RvcnlDYWNoZUludmFsaWRhdGVkKCpoYW5kbGUpLCAwKTsKICNlbmRpZgot
ICAgICAgICAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpPcGVu
RGlyZWN0b3J5Q2FjaGVJbnZhbGlkYXRlZCgqaGFuZGxlKSk7CisgICAgICAgICAgICBmb3IgKGF1
dG8mIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgeworICAgICAgICAgICAgICAgIGlmICghcHJvY2Vz
cy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAgICAgYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVG
b3JNYWNoTG9va3VwKCJjb20uYXBwbGUuc3lzdGVtLm9wZW5kaXJlY3RvcnlkLmxpYmluZm8iX3Ms
IHByb2Nlc3MtPmF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9w
dGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApOworICAgICAgICAgICAgICAgIGlmICghaGFuZGxl
KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpPcGVuRGlyZWN0b3J5Q2FjaGVJbnZhbGlkYXRl
ZCgqaGFuZGxlKSwgMCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgICAgICBtX29w
ZW5EaXJlY3RvcnlOb3RpZnlUb2tlbnMuYXBwZW5kKG5vdGlmeVRva2VuKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJv
eHlDb2NvYS5tbQkocmV2aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0OCw3ICsy
NDgsNyBAQAogCiAgICAgVmVjdG9yPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gaGFuZGxlQXJy
YXk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hF
eHRlbnNpb246OmNyZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUu
YXhzZXJ2ZXItc3lzdGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNl
cnZpY2VzIl9zIH0sIGNvbm5lY3Rpb24oKSA/IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
IDogc3RkOjpudWxsb3B0KTsKKyAgICBoYW5kbGVBcnJheSA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pcGhvbmUuYXhzZXJ2ZXItc3lz
dGVtd2lkZSJfcywgImNvbS5hcHBsZS5mcm9udGJvYXJkLnN5c3RlbWFwcHNlcnZpY2VzIl9zIH0s
IGF1ZGl0VG9rZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVu
YWJsZU1hY2hCb290c3RyYXApOwogICAgIEFTU0VSVChoYW5kbGVBcnJheS5zaXplKCkgPT0gMik7
CiAjZW5kaWYKIApAQCAtMzI1LDQgKzMyNSwxMiBAQAogICAgIHJldHVybiB0cnVlOwogfQogCitz
dGQ6Om9wdGlvbmFsPGF1ZGl0X3Rva2VuX3Q+IFdlYlByb2Nlc3NQcm94eTo6YXVkaXRUb2tlbigp
IGNvbnN0Cit7CisgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgCisgICAgcmV0dXJuIGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigp
OwogfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlv
blJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFT
b3VyY2VNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgbV9zb3VyY2VzTmVl
ZGluZ1NhbmRib3hFeHRlbnNpb24uYWRkKGlkZW50aWZpZXIpOwogICAgICAgICBpZiAobV9zb3Vy
Y2VzTmVlZGluZ1NhbmRib3hFeHRlbnNpb24uc2l6ZSgpID09IDEpIHsKICAgICAgICAgICAgIFNh
bmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGVGb3JUQ0NEOwotICAgICAgICAgICAgaWYgKGF1
dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgi
Y29tLmFwcGxlLnRjY2QiX3MsIG1fY29ubmVjdGlvbi0+Z2V0QXVkaXRUb2tlbigpKSkKKyAgICAg
ICAgICAgIGlmIChhdXRvIGhhbmRsZSA9IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZv
ck1hY2hMb29rdXAoImNvbS5hcHBsZS50Y2NkIl9zLCBtX2Nvbm5lY3Rpb24tPmdldEF1ZGl0VG9r
ZW4oKSwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3RzdHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hC
b290c3RyYXApKQogICAgICAgICAgICAgICAgIGhhbmRsZUZvclRDQ0QgPSBXVEZNb3ZlKCpoYW5k
bGUpOwogICAgICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvck1pY3Jv
cGhvbmU7CiAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JHZW5lcmljRXh0ZW5zaW9uKCJjb20uYXBwbGUud2Via2l0Lm1pY3JvcGhv
bmUiX3MpKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAkocmV2aXNp
b24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTEsNyArMjkxLDcg
QEAKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZTsKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICAgICAgaWYgKCFtX2hhc0NyZWF0ZWRTYW5kYm94RXh0ZW5zaW9uRm9yVEND
RCAmJiBkb2VzUGFnZU5lZWRUQ0NEKG1fcGFnZSkpIHsKLSAgICAgICAgICAgIGlmIChhdXRvIGNy
ZWF0ZWRIYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3Vw
KCJjb20uYXBwbGUudGNjZCJfcywgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPmdldEF1
ZGl0VG9rZW4oKSkpCisgICAgICAgICAgICBpZiAoYXV0byBjcmVhdGVkSGFuZGxlID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLnRjY2QiX3Ms
IG1fcGFnZS5wcm9jZXNzKCkuYXVkaXRUb2tlbigpLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9v
dHN0cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpCiAgICAgICAgICAgICAgICAgaGFu
ZGxlID0gV1RGTW92ZSgqY3JlYXRlZEhhbmRsZSk7CiAgICAgICAgICAgICBtX2hhc0NyZWF0ZWRT
YW5kYm94RXh0ZW5zaW9uRm9yVENDRCA9IHRydWU7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQcm9jZXNzTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVByb2Nl
c3NNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEzICsxMTQsMTQgQEAKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGF1dG8gYXVkaXRUb2tl
biA9IHByb2Nlc3MuYXVkaXRUb2tlbigpOwogICAgICAgICAgICAgaWYgKG5lZWRzQXBwbGVDYW1l
cmFTYW5kYm94RXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0g
U2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNhbWVyYVNl
cnZpY2VQYXRoLCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFu
ZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhcHBsZUNh
bWVyYVNlcnZpY2VQYXRoLCBhdWRpdFRva2VuLCBTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0
cmFwT3B0aW9uczo6RW5hYmxlTWFjaEJvb3RzdHJhcCkpIHsKICAgICAgICAgICAgICAgICAgICAg
aGFuZGxlc1stLWV4dGVuc2lvbkNvdW50XSA9IFdURk1vdmUoKmhhbmRsZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlkcy51bmNoZWNrZWRBcHBlbmQoYXBwbGVDYW1lcmFTZXJ2aWNlUGF0aCk7CiAg
ICAgICAgICAgICAgICAgfQogI2lmIEhBVkUoQURESVRJT05BTF9BUFBMRV9DQU1FUkFfU0VSVklD
RSkKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBoYW5kbGUgPSBTYW5kYm94RXh0ZW5zaW9uOjpj
cmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZpY2VQYXRo
LCBzdGQ6Om51bGxvcHQpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gaGFuZGxlID0gU2Fu
ZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExvb2t1cChhZGRpdGlvbmFsQXBwbGVD
YW1lcmFTZXJ2aWNlUGF0aCwgYXVkaXRUb2tlbiwgU2FuZGJveEV4dGVuc2lvbjo6TWFjaEJvb3Rz
dHJhcE9wdGlvbnM6OkVuYWJsZU1hY2hCb290c3RyYXApKSB7CiAgICAgICAgICAgICAgICAgICAg
IGhhbmRsZXNbLS1leHRlbnNpb25Db3VudF0gPSBXVEZNb3ZlKCpoYW5kbGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZHMudW5jaGVja2VkQXBwZW5kKGFkZGl0aW9uYWxBcHBsZUNhbWVyYVNlcnZp
Y2VQYXRoKTsKICAgICAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4ODgsOSArMjg4OCw5
IEBACiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGJvb2wgZXZlbnRNYXlTdGFydERyYWcgPSAhbV9j
dXJyZW50RHJhZ09wZXJhdGlvbiAmJiBldmVudFR5cGUgPT0gV2ViRXZlbnQ6Ok1vdXNlTW92ZSAm
JiBldmVudC5idXR0b24oKSAhPSBXZWJNb3VzZUV2ZW50OjpCdXR0b246Ok5vQnV0dG9uOwogICAg
IGlmIChldmVudE1heVN0YXJ0RHJhZykKLSAgICAgICAgc2FuZGJveEV4dGVuc2lvbnMgPSBTYW5k
Ym94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVzRm9yTWFjaExvb2t1cCh7ICJjb20uYXBwbGUuaWNv
bnNlcnZpY2VzIl9zLCAiY29tLmFwcGxlLmljb25zZXJ2aWNlcy5zdG9yZSJfcyB9LCBzdGQ6Om51
bGxvcHQpOworICAgICAgICBzYW5kYm94RXh0ZW5zaW9ucyA9IFNhbmRib3hFeHRlbnNpb246OmNy
ZWF0ZUhhbmRsZXNGb3JNYWNoTG9va3VwKHsgImNvbS5hcHBsZS5pY29uc2VydmljZXMiX3MsICJj
b20uYXBwbGUuaWNvbnNlcnZpY2VzLnN0b3JlIl9zIH0sIHByb2Nlc3MoKS5hdWRpdFRva2VuKCks
IFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpFbmFibGVNYWNoQm9vdHN0
cmFwKTsKICNlbmRpZgotICAgIAorCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6
IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBl
U3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7CiAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCwgc2FuZGJveEV4dGVuc2lvbnMpKTsK
IH0KQEAgLTcyNjEsMTEgKzcyNjEsMTIgQEAKICNlbmRpZgogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24sIGljb25TZXJ2aWNl
c1NhbmRib3hFeHRlbnNpb247CisgICAgYXV0byBhdWRpdFRva2VuID0gbV9wcm9jZXNzLT5hdWRp
dFRva2VuKCk7CiAjaWYgSEFWRShGUk9OVEJPQVJEX1NZU1RFTV9BUFBfU0VSVklDRVMpCi0gICAg
aWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlRm9yTWFjaExv
b2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMiX3MsIHN0ZDo6bnVs
bG9wdCkpCisgICAgaWYgKGF1dG8gaGFuZGxlID0gU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFu
ZGxlRm9yTWFjaExvb2t1cCgiY29tLmFwcGxlLmZyb250Ym9hcmQuc3lzdGVtYXBwc2VydmljZXMi
X3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBPcHRpb25zOjpF
bmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgZnJvbnRib2FyZFNlcnZpY2VzU2FuZGJveEV4
dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAjZW5kaWYKLSAgICBpZiAoYXV0byBoYW5kbGUg
PSBTYW5kYm94RXh0ZW5zaW9uOjpjcmVhdGVIYW5kbGVGb3JNYWNoTG9va3VwKCJjb20uYXBwbGUu
aWNvbnNlcnZpY2VzIl9zLCBzdGQ6Om51bGxvcHQpKQorICAgIGlmIChhdXRvIGhhbmRsZSA9IFNh
bmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZUZvck1hY2hMb29rdXAoImNvbS5hcHBsZS5pY29u
c2VydmljZXMiX3MsIGF1ZGl0VG9rZW4sIFNhbmRib3hFeHRlbnNpb246Ok1hY2hCb290c3RyYXBP
cHRpb25zOjpFbmFibGVNYWNoQm9vdHN0cmFwKSkKICAgICAgICAgaWNvblNlcnZpY2VzU2FuZGJv
eEV4dGVuc2lvbiA9IFdURk1vdmUoKmhhbmRsZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihm
aWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5j
ZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCksIGZyb250Ym9hcmRTZXJ2aWNlc1NhbmRib3hFeHRl
bnNpb24sIGljb25TZXJ2aWNlc1NhbmRib3hFeHRlbnNpb24pKTsKQEAgLTgzOTQsNyArODM5NSw3
IEBACiAjZW5kaWYKICNpZiBIQVZFKFNUQVRJQ19GT05UX1JFR0lTVFJZKQogICAgIGlmIChwcmVm
ZXJlbmNlcygpLnNob3VsZEFsbG93VXNlckluc3RhbGxlZEZvbnRzKCkpCi0gICAgICAgIHBhcmFt
ZXRlcnMuZm9udE1hY2hFeHRlbnNpb25IYW5kbGUgPSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUo
KTsKKyAgICAgICAgcGFyYW1ldGVycy5mb250TWFjaEV4dGVuc2lvbkhhbmRsZSA9IGZvbnRkTWFj
aEV4dGVuc2lvbkhhbmRsZShTYW5kYm94RXh0ZW5zaW9uOjpNYWNoQm9vdHN0cmFwT3B0aW9uczo6
RG9Ob3RFbmFibGVNYWNoQm9vdHN0cmFwKTsKICNlbmRpZgogI2lmIEhBVkUoQVBQX0FDQ0VOVF9D
T0xPUlMpCiAgICAgcGFyYW1ldGVycy5hY2NlbnRDb2xvciA9IHBhZ2VDbGllbnQoKS5hY2NlbnRD
b2xvcigpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlz
aW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjUxLDcgKzI2NTEsNyBAQAogICAgIHN0YXRpYyBWZWN0b3I8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBjcmVhdGVOZXR3b3JrRXh0ZW5zaW9uc1NhbmRib3hFeHRl
bnNpb25zKFdlYlByb2Nlc3NQcm94eSYpOwogI2VuZGlmCiAKLSAgICBzdGF0aWMgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIGZvbnRkTWFjaEV4dGVuc2lvbkhhbmRsZSgpOworICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBmb250ZE1hY2hFeHRlbnNpb25IYW5kbGUoU2FuZGJveEV4dGVuc2lv
bjo6TWFjaEJvb3RzdHJhcE9wdGlvbnMpOwogCiAgICAgdm9pZCBkaWRVcGRhdGVFZGl0b3JTdGF0
ZShjb25zdCBFZGl0b3JTdGF0ZSYgb2xkRWRpdG9yU3RhdGUsIGNvbnN0IEVkaXRvclN0YXRlJiBu
ZXdFZGl0b3JTdGF0ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyOTM1ODgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMzLDYgKzQzMywxMCBAQAogICAg
IFdlYkNvcmU6OkNyb3NzT3JpZ2luTW9kZSBjcm9zc09yaWdpbk1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2Nyb3NzT3JpZ2luTW9kZTsgfQogICAgIENhcHRpdmVQb3J0YWxNb2RlIGNhcHRpdmVQb3J0
YWxNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jYXB0aXZlUG9ydGFsTW9kZTsgfQogCisjaWYgUExB
VEZPUk0oQ09DT0EpCisgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBhdWRpdFRva2Vu
KCkgY29uc3Q7CisjZW5kaWYKKwogcHJvdGVjdGVkOgogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQ
cm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCwgV2ViQ29yZTo6Q3Jv
c3NPcmlnaW5Nb2RlLCBDYXB0aXZlUG9ydGFsTW9kZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjkzNTg4KQor
KysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtMjI3MSw2ICsyMjcxLDggQEAKIAkJRTFEMjZBNTMxNzU5NjREOTAwOTVCRkQx
IC8qIFdlYkNvbnRlbnRQcm9jZXNzLnhpYiBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFEMjZBNEMxNzU5NjM0RTAwOTVCRkQxIC8qIFdlYkNvbnRlbnRQ
cm9jZXNzLnhpYiAqLzsgfTsKIAkJRTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJ
bml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRTU1MkMzMTZBRTA2NUUwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzLmggKi87IH07CiAJCUUxRUU1M0UzMTFGOENGQzAwMENDQkVFNCAv
KiBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUU1M0RDMTFGOENGOUYwMENDQkVFNCAvKiBJbmpl
Y3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaCAqLzsgfTsKKwkJRTM2RkYwMDMyN0YzNkZCRDAw
NEJFMjFBIC8qIFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM2RkYwMDEyN0YzNkZCRDAwNEJFMjFBIC8qIFNhbmRi
b3hTdGF0ZVZhcmlhYmxlcy5oICovOyB9OworCQlFMzZGRjAwNDI3RjM2RkJEMDA0QkUyMUEgLyog
cHJlZmVyZW5jZXMuc2IgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzNkZGMDAyMjdGMzZGQkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiAqLzsgfTsK
IAkJRTM4MTZCM0QyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzgx
NkIzQjI3RTI0NjM5MDA1RUFGQzAgLyogV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcCAq
LzsgfTsKIAkJRTM4MTZCM0UyN0UyNDYzQTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVy
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTM4MTZCM0MyN0UyNDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5o
ICovOyB9OwogCQlFMzg2NkFFNTIzOTc0MDA0MDBGODhGRTkgLyogV2ViRGV2aWNlT3JpZW50YXRp
b25VcGRhdGVQcm92aWRlclByb3h5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTM4NjZBRTQyMzk3NDAwNDAwRjg4RkU5IC8qIFdlYkRldmljZU9yaWVu
dGF0aW9uVXBkYXRlUHJvdmlkZXJQcm94eS5tbSAqLzsgfTsKQEAgLTcxMDAsOSArNzEwMiwxMCBA
QAogCQlFMzQzOUI2MzIzNDU0NjNBMDAxMURFMEIgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25JbmZvLmg7IHBh
dGggPSBOZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbkluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTM0QjExMEMyN0M0NkJDNjAwNkQyRjJFIC8qIGxpYldlYkNvcmVU
ZXN0U2hpbS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IHBhdGggPSBsaWJXZWJDb3JlVGVzdFNoaW0u
ZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCUUzNEIxMTBGMjdD
NDZEMDkwMDZEMkYyRSAvKiBsaWJXZWJDb3JlVGVzdFN1cHBvcnQuZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHls
aWIiOyBwYXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwotCQlFMzYxMkZGMDI2RjkwODYyMDA3QjExNzUgLyogU2FuZGJv
eCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZvbGRl
cjsgcGF0aCA9IFNhbmRib3g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzNkQ3MDFB
MjdCNzA5RUQwMDY1MzFCNyAvKiBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJBdHRhY2htZW50RWxlbWVudENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMzZENzAxRDI3QjcxOEVGMDA2NTMxQjcgLyogV2ViQXR0YWNobWVudEVsZW1l
bnRDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQXR0YWNobWVudEVsZW1lbnRDbGll
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzZGRjAwMTI3RjM2RkJEMDA0
QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbmRib3hTdGF0ZVZhcmlhYmxlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFMzZGRjAwMjI3RjM2RkJEMDA0QkUyMUEgLyogcHJlZmVyZW5jZXMuc2IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gcHJlZmVyZW5jZXMuc2I7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzODE2QjNCMjdFMjQ2MzkwMDVFQUZDMCAvKiBXZWJNb2NrQ29udGVudEZpbHRlck1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViTW9ja0Nv
bnRlbnRGaWx0ZXJNYW5hZ2VyLmNwcDsgcGF0aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0
ZXJNYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM4MTZCM0MyN0Uy
NDYzOTAwNUVBRkMwIC8qIFdlYk1vY2tDb250ZW50RmlsdGVyTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJNb2NrQ29udGVudEZpbHRlck1hbmFnZXIuaDsgcGF0
aCA9IE5ldHdvcmsvV2ViTW9ja0NvbnRlbnRGaWx0ZXJNYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUzODY2QUU0MjM5NzQwMDQwMEY4OEZFOSAvKiBXZWJEZXZpY2VPcmll
bnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXZWJEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyUHJveHkubW07
IHBhdGggPSBpb3MvV2ViRGV2aWNlT3JpZW50YXRpb25VcGRhdGVQcm92aWRlclByb3h5Lm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzg4OCw3ICs3ODkxLDcgQEAKIAkJCQlCQzEx
MUI1QTExMkY2MjgyMDAzMzdCQUIgLyogbWFjICovLAogCQkJCTUxQUYxQjNEMjcxRjQ2QTYwMDE1
MzhFNiAvKiBOb3RpZmljYXRpb25zICovLAogCQkJCTJEMkUwNDc2MUY1QkVDNEYwMEJCMjVFRCAv
KiBSZW1vdGVMYXllclRyZWUgKi8sCi0JCQkJRTM2MTJGRjAyNkY5MDg2MjAwN0IxMTc1IC8qIFNh
bmRib3ggKi8sCisJCQkJRTM2RkVGRkUyN0YzNkYzNDAwNEJFMjFBIC8qIFNhbmRib3ggKi8sCiAJ
CQkJMUNCNzQ2NDUyNzQzNzlGMTAwRjE5ODc0IC8qIFdlYkdQVSAqLywKIAkJCQkxQUJGNDM3ODFB
MzY4MDM1MDAzRkIwRTYgLyogV2Vic2l0ZURhdGEgKi8sCiAJCQkJMTE4NTAyNjAyNjczQjBEQTAw
QTY0MjVFIC8qIFhSICovLApAQCAtMTM3MDAsNiArMTM3MDMsMTUgQEAKIAkJCW5hbWUgPSBQREY7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlFMzZGRUZGRTI3RjM2RjM0MDA0
QkUyMUEgLyogU2FuZGJveCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJRTM2RkYwMDIyN0YzNkZCRDAwNEJFMjFBIC8qIHByZWZlcmVuY2VzLnNiICovLAor
CQkJCUUzNkZGMDAxMjdGMzZGQkQwMDRCRTIxQSAvKiBTYW5kYm94U3RhdGVWYXJpYWJsZXMuaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gU2FuZGJveDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCUU0MDQ5MDZGMjFERTY1RDcwMDM3RjBEQiAvKiBtYWMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTQwMDAsMTMgKzE0MDEyLDcgQEAKIAkJ
CQkyREQ5RUIyRDFBNkYwMTI1MDBCQjEyNjcgLyogQVBJTmF2aWdhdGlvbkNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkNGNjlGQTIxMTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5RUVFRTFBNzg2RUFEMDBCNkNGQkUgLyogQVBJ
TmF2aWdhdGlvblJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKLQkJCQlERDREQjc4ODI4MEY5NDcx
MDAxNzAwRDQgLyogRW50ZXJGdWxsc2NyZWVuLmpzIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3
ODkyODBGOTQ3MTAwMTcwMEQ0IC8qIEZpbmROb2Rlcy5qcyBpbiBIZWFkZXJzICovLAotCQkJCURE
NERCNzhBMjgwRjk0NzEwMDE3MDBENCAvKiBGb3JtRWxlbWVudENsZWFyLmpzIGluIEhlYWRlcnMg
Ki8sCi0JCQkJREQ0REI3OEIyODBGOTQ3MTAwMTcwMEQ0IC8qIEZvcm1TdWJtaXQuanMgaW4gSGVh
ZGVycyAqLywKIAkJCQk3QTFFMkE4NTFFRUZFODkyMDAzN0EwRTAgLyogQVBJTm90aWZpY2F0aW9u
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCURENERCNzg3MjgwRjk0NUUwMDE3MDBENCAv
KiBFbGVtZW50RGlzcGxheWVkLmpzIGluIEhlYWRlcnMgKi8sCi0JCQkJREQ0REI3ODYyODBGOTQ1
QTAwMTcwMEQ0IC8qIEVsZW1lbnRBdHRyaWJ1dGUuanMgaW4gSGVhZGVycyAqLywKIAkJCQlCQzMz
REQ2ODEyMzg0NjQ2MDAzNjBGM0YgLyogQVBJTnVtYmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Qzg1N0ZCNTEyQjgzMEU2MDBFREVCMkUgLyogQVBJT3BlblBhbmVsUGFyYW1ldGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0M4OUQyOTgxQTY3NTNCMjAwM0E1RkRFIC8qIEFQSVBhZ2VDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTE0Mjc0LDggKzE0MjgwLDExIEBACiAJCQkJMkRB
NjczMUEyMEM3NTRCMTAwM0NCNDAxIC8qIER5bmFtaWNWaWV3cG9ydFNpemVVcGRhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxMDVGRTU0MThEN0I5REUwMDhGNTdBOCAvKiBFZGl0aW5nUmFuZ2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxQUI1MTJDMDJFQzQwMDJCRTY3QiAvKiBFZGl0b3JT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJREQ0REI3ODYyODBGOTQ1QTAwMTcwMEQ0IC8qIEVs
ZW1lbnRBdHRyaWJ1dGUuanMgaW4gSGVhZGVycyAqLywKKwkJCQlERDREQjc4NzI4MEY5NDVFMDAx
NzAwRDQgLyogRWxlbWVudERpc3BsYXllZC5qcyBpbiBIZWFkZXJzICovLAogCQkJCUJDMDMyREE4
MTBGNDM3RDEwMDU4QzE1QSAvKiBFbmNvZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRENEQzk5
RDI0OEZFOERBMDBBNjk1MjIgLyogRW5kb3dtZW50U3RhdGVUcmFja2VyLmggaW4gSGVhZGVycyAq
LywKKwkJCQlERDREQjc4ODI4MEY5NDcxMDAxNzAwRDQgLyogRW50ZXJGdWxsc2NyZWVuLmpzIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFCMTVBODUxMzg0M0EzOTAwMzIxQUQ4IC8qIEVudmlyb25tZW50
VXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE1NzVGQjE0OTZCNTI2MDBBNEVFMDYg
LyogRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzJFQkJENzI1MzdFQkFF
MDAwNTUyQjMgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCBpbiBIZWFkZXJzICovLApA
QCAtMTQyODYsOSArMTQyOTUsMTIgQEAKIAkJCQk5MzEyQkFENTI2RjMzQzI2MDBGRERGNUYgLyog
RmlsZVN5c3RlbVN0b3JhZ2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwMEI5NjYxQTE4
RTI1QUUxMDBDRTFGODggLyogRmluZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE5MEMx
RjQxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlERDREQjc4OTI4MEY5NDcxMDAxNzAwRDQgLyogRmluZE5vZGVzLmpzIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzU5QzRBNTkxOEI4MTE3NDAwN0JEQ0I2IC8qIEZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTgxRDhEMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOUJEOEFCNEEyNTgyMEU1MzAwNTM4NkY4IC8qIEZv
bnRSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCURENERCNzhBMjgwRjk0NzEwMDE3MDBE
NCAvKiBGb3JtRWxlbWVudENsZWFyLmpzIGluIEhlYWRlcnMgKi8sCisJCQkJREQ0REI3OEIyODBG
OTQ3MTAwMTcwMEQ0IC8qIEZvcm1TdWJtaXQuanMgaW4gSGVhZGVycyAqLywKIAkJCQkxQTE0RjhF
MjFENzRDODM0MDA2Q0JFQzYgLyogRnJhbWVJbmZvRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUFFMDBENjExODMxNzkyMTAwMDg3REQ3IC8qIEZyYW1lTG9hZFN0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzEyMUU4NDI0MTAyMDhEMDA0ODZGOUIgLyogRnJhbWVUcmVlTm9kZURhdGEuaCBp
biBIZWFkZXJzICovLApAQCAtMTQ2MTYsNiArMTQ2MjgsNyBAQAogCQkJCUJDMkQwMjE3MTJBQzQx
Q0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlh
bGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMzZGRjAwMzI3RjM2RkJE
MDA0QkUyMUEgLyogU2FuZGJveFN0YXRlVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QkFCMTExMDI1REQwMkIzMDA4RkM0NzkgLyogU2NvcGVkQWN0aXZlTWVzc2FnZVJlY2VpdmVRdWV1
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENTREMDQyMUYxRDcyRDAwN0UzQzM2IC8qIFNjcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKQEAgLTE0ODYxLDcgKzE0ODc0LDYgQEAKIAkJCQlC
Q0U0Njk1NDEyMTRFNkNCMDAwQjk4RUIgLyogV2ViRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRERBMEEyQjUyN0U1NUU0RTAwNUUwODZFIC8qIFdlYkZvcm1EZWxlZ2F0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRERBMEEzMDEyN0U1NUU0RTAwNUUwODZFIC8qIFdlYkZvcm1EZWxlZ2F0
ZVByaXZhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCTUxOURGQkU3MjgxMzg3QzEwMDNGRjZBRCAv
KiBXS05vdGlmaWNhdGlvblByaXZhdGVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTQ2OTU2
MTIxNEU2Q0IwMDBCOThFQiAvKiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUU1MjI3RDg0MjdBMTEyNjEwMDhFQUI1NyAvKiBXZWJGb3VuZFRleHRS
YW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTU1Q0ZENEUyNzlEMzFFNTAwMkYxMDIwIC8qIFdl
YkZvdW5kVGV4dFJhbmdlQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTM1MCw2ICsx
NTM2Miw3IEBACiAJCQkJMzE4QkUxNzkxNDc0M0U2RjAwQThGQkIyIC8qIFdLTm90aWZpY2F0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMThCRTE3MTE0NzQzREIxMDBBOEZCQjIgLyogV0tOb3Rp
ZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUEyRUM3NDE0OEQ1OUNBMDA4
MTBENzEgLyogV0tOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTE5REZCRTcyODEzODdDMTAwM0ZGNkFEIC8qIFdLTm90aWZpY2F0aW9uUHJpdmF0ZU1h
Yy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEyQzBDNEExNDZEREM4QTAwMTZDOTExIC8qIFdLTm90
aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QzRDMDk0MTgxNEIzQUYw
MDM2ODhCOSAvKiBXS05TQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0NFQUQ2MTg1NDE3
QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk3NSw2ICsxNTk4
OCw3IEBACiAJCQkJNkJFOTY5QzExRTU0RDQ1MjAwOEI3NDgzIC8qIGNvcmVQcmVkaWN0aW9uX21v
ZGVsIGluIFJlc291cmNlcyAqLywKIAkJCQk4REMyRUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5m
b1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovLAogCQkJCTNGQjA4RTQzMUY2MEIyNDAwMDVF
NTMxMiAvKiBpT1MueGNhc3NldHMgaW4gUmVzb3VyY2VzICovLAorCQkJCUUzNkZGMDA0MjdGMzZG
QkQwMDRCRTIxQSAvKiBwcmVmZXJlbmNlcy5zYiBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJNUM4QkM3
OTcyMThDQkI0ODAwODEzODg2IC8qIFNhZmVCcm93c2luZy54Y2Fzc2V0cyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2
aXNpb24gMjkzNTg4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1OSw2ICs0NTksMTEgQEAKIAogUmVmPFdlYlBhZ2U+
IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogeworICAgIGF1dG8gcGFnZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKKworICAgIGlmIChXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpKQorICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgpLT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOwor
CiAjaWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQogICAgIC8vIFRoaXMgY2FsbCBpcyBub3Qg
bWVhbnQgdG8gYWN0dWFsbHkgcmVhZCBhIHByZWZlcmVuY2UsIGJ1dCBpcyBvbmx5IGhlcmUgdG8g
dHJpZ2dlciBhIHNhbmRib3ggcnVsZSBpbiB0aGUKICAgICAvLyBXZWJDb250ZW50IHByb2Nlc3Ms
IHdoaWNoIHdpbGwgdG9nZ2xlIGEgc2FuZGJveCB2YXJpYWJsZSB1c2VkIHRvIGRldGVybWluZSBp
ZiB0aGUgV2ViQ29udGVudCBwcm9jZXNzCkBAIC00NjYsMTEgKzQ3MSw2IEBACiAgICAgQ0ZQcmVm
ZXJlbmNlc0dldEFwcEludGVnZXJWYWx1ZShDRlNUUigia2V5IiksIENGU1RSKCJjb20uYXBwbGUu
V2ViS2l0LldlYkNvbnRlbnQuTGF1bmNoIiksIG51bGxwdHIpOwogI2VuZGlmCiAKLSAgICBSZWY8
V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFy
YW1ldGVycykpKTsKLQotICAgIGlmIChXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1
bmRsZSgpKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5pbmplY3RlZEJ1bmRsZSgp
LT5kaWRDcmVhdGVQYWdlKHBhZ2UucHRyKCkpOwotCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29tLmFwcGxlLldlYlByb2Nl
c3Muc2IuaW4JKHJldmlzaW9uIDI5MzU4OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b20uYXBwbGUuV2ViUHJvY2Vzcy5zYi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA1NiwyNyArMjA1
Niw0MiBAQAogI2VuZGlmCiAKICNpZiBIQVZFKFNBTkRCT1hfTUVTU0FHRV9GSUxURVJJTkcpCi0o
aWYgKGFuZCAoZXF1YWw/IChwYXJhbSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAi
WUVTIikgKGRlZmluZWQ/ICdtYWNoLWJvb3RzdHJhcCkpCisoZGVmaW5lIChtYWNoLWJvb3RzdHJh
cC1tZXNzYWdlLW51bWJlcnMpCisgICAgKG1lc3NhZ2UtbnVtYmVyIDIwNCAyMDcgMzAxIDcxMSA4
MDAgODA0KSkKKworKGRlZmluZSAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1maWx0ZXIpCiAg
ICAgKGFsbG93IG1hY2gtYm9vdHN0cmFwCiAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgor
ICAgICAgICAgICAgKGRlbnkgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5KSkKKyAg
ICAgICAgICAgIChhbGxvdyBtYWNoLW1lc3NhZ2Utc2VuZAorICAgICAgICAgICAgICAgIChtYWNo
LWJvb3RzdHJhcC1tZXNzYWdlLW51bWJlcnMpKSkpKQorCisoaWYgKGFuZCAoZXF1YWw/IChwYXJh
bSAiRU5BQkxFX1NBTkRCT1hfTUVTU0FHRV9GSUxURVIiKSAiWUVTIikgKGRlZmluZWQ/ICdtYWNo
LWJvb3RzdHJhcCkpCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMjAw
MDAKLSAgICAgICAgICAgIChkZW55IG1hY2gtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkp
Ci0gICAgICAgICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKG1lc3NhZ2UtbnVtYmVyCisj
aWYgSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorICAgIChiZWdpbgorICAgICAgICAoaWYgKHJl
cXVpcmUtYW5jZXN0b3Itd2l0aC1lbnRpdGxlbWVudCAiY29tLmFwcGxlLnByaXZhdGUuc2VjdXJp
dHkuZW5hYmxlLXN0YXRlLWZsYWdzIikKKyAgICAgICAgICAgIChhbGxvdyBtYWNoLWJvb3RzdHJh
cAorICAgICAgICAgICAgICAgIChhcHBseS1tZXNzYWdlLWZpbHRlcgorICAgICAgICAgICAgICAg
ICAgICAoYWxsb3cgbWFjaC1tZXNzYWdlLXNlbmQgKHdpdGggdGVsZW1ldHJ5LWJhY2t0cmFjZSkp
KSkKKyAgICAgICAgOzsgZWxzZQorICAgICAgICAgICAgKGFsbG93LW1hY2gtYm9vdHN0cmFwLXdp
dGgtZmlsdGVyKSkKKworICAgICAgICAod2l0aC1maWx0ZXIKKyAgICAgICAgICAgIChyZXF1aXJl
LWFueQorICAgICAgICAgICAgICAgIChyZXF1aXJlLW5vdCAoc3RhdGUtZmxhZyAiV2ViQ29udGVu
dFByb2Nlc3NMYXVuY2hlZCIpKQorICAgICAgICAgICAgICAgIChzdGF0ZS1mbGFnICJFbmFibGVN
YWNoQm9vdHN0cmFwIikpCisgICAgICAgICAgICAoYWxsb3ctbWFjaC1ib290c3RyYXAtd2l0aC1m
aWx0ZXIpKSkpCiAjZWxzZQorICAgIChhbGxvdy1tYWNoLWJvb3RzdHJhcC13aXRoLWZpbHRlcikp
CisjZW5kaWYgLy8gSEFWRShTQU5EQk9YX1NUQVRFX0ZMQUdTKQorI2Vsc2UKKyAgICAoYWxsb3cg
bWFjaC1ib290c3RyYXAKKyAgICAgICAgKGFwcGx5LW1lc3NhZ2UtZmlsdGVyCiAgICAgICAgICAg
ICAoZGVueSB4cGMtbWVzc2FnZS1zZW5kICh3aXRoIHRlbGVtZXRyeSkpCi0gICAgICAgICAgICAo
YWxsb3cgeHBjLW1lc3NhZ2Utc2VuZCAobWVzc2FnZS1udW1iZXIKKyAgICAgICAgICAgIChhbGxv
dyB4cGMtbWVzc2FnZS1zZW5kCisgICAgICAgICAgICAgICAgKG1hY2gtYm9vdHN0cmFwLW1lc3Nh
Z2UtbnVtYmVycykpKSkpCiAjZW5kaWYKLSAgICAgICAgICAgICAgICAyMDQKLSAgICAgICAgICAg
ICAgICAyMDcKLSAgICAgICAgICAgICAgICAzMDEKLSAgICAgICAgICAgICAgICA3MTEKLSAgICAg
ICAgICAgICAgICA4MDAKLSAgICAgICAgICAgICAgICA4MDQKLSAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICApCi0gICAgICAgICkKLSAgICApCi0pCiAKIChpZiAoYW5kIChlcXVhbD8gKHBh
cmFtICJFTkFCTEVfU0FOREJPWF9NRVNTQUdFX0ZJTFRFUiIpICJZRVMiKSAoZGVmaW5lZD8gJ21h
Y2gta2VybmVsLWVuZHBvaW50KSkKICAgICAoYWxsb3cgbWFjaC1rZXJuZWwtZW5kcG9pbnQK
</data>

          </attachment>
      

    </bug>

</bugzilla>