<?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>228116</bug_id>
          
          <creation_ts>2021-07-20 11:45:52 -0700</creation_ts>
          <short_desc>REGRESSION (r278877) [Cocoa] WebAuthn stopped working for non-Safari browsers</short_desc>
          <delta_ts>2021-07-29 15:12:26 -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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jenner</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1778221</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-20 11:45:52 -0700</bug_when>
    <thetext>WebAuthn: webauthn.me/debugger &amp; webauthn.io doesn&apos;t load/work in default browsers (Chrome &amp; Firefox)

The standard iOS App Sandbox doesn’t allow us to use the API:

(1) Sandbox Violation:   deny(1) process-codesigning-status-get others [com.apple.WebKit(14180)]
Process:         Chrome [14153]

Thread 0 (id: 2724455, CrWebMain):
0   libsystem_kernel.dylib        	0x00000001b816a7f4 csops_audittoken + 8
1   Security                      	0x0000000189b38f6c SecTaskLoadEntitlements + 348
2   Security                      	0x0000000189b392dc SecTaskCopyValueForEntitlement + 76
3   JavaScriptCore                	0x000000018d31ae3c WTF::hasEntitlementValue(audit_token_t, char const*, char const*) + 124

(2) Sandbox Violation:   deny(1) process-codesigning-entitlements-der-blob-get others [com.apple.WebKit(14180)]
Process:         Chrome [14153]

Thread 0 (id: 2724455, CrWebMain):
0   libsystem_kernel.dylib        	0x00000001b816a7f4 csops_audittoken + 8
1   Security                      	0x0000000189b38e64 SecTaskLoadEntitlements + 84
2   Security                      	0x0000000189b392dc SecTaskCopyValueForEntitlement + 76
3   JavaScriptCore                	0x000000018d31ae3c WTF::hasEntitlementValue(audit_token_t, char const*, char const*) + 124

(3) Sandbox Violation:   deny(1) sysctl-read kern.proc.pid.14158
Process:         Chrome [14153]

Thread 0 (id: 2724455, CrWebMain):
0   libsystem_kernel.dylib        	0x00000001b816ab98 __sysctl + 8
1   Security                      	0x0000000189b3f47c SecTaskCopyDebugDescription + 180
2   Security                      	0x0000000189b38ff4 SecTaskLoadEntitlements + 484
3   Security                      	0x0000000189b392dc SecTaskCopyValueForEntitlement + 76
4   JavaScriptCore                	0x000000018d31ae3c WTF::hasEntitlementValue(audit_token_t, char const*, char const*) + 124

One or more of these failures prevent the PAC key from being read, so the process rejects the message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778222</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-20 11:46:27 -0700</bug_when>
    <thetext>I spoke with the Security and code signing teams. We should check that the WebContent process is apple-signed, and has the correct signing identity. The PAC key is not a good way to confirm this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778225</commentid>
    <comment_count>2</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-20 11:50:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/80693607&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778229</commentid>
    <comment_count>3</comment_count>
      <attachid>433888</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-20 12:04:22 -0700</bug_when>
    <thetext>Created attachment 433888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778589</commentid>
    <comment_count>4</comment_count>
      <attachid>433966</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-21 16:17:24 -0700</bug_when>
    <thetext>Created attachment 433966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778594</commentid>
    <comment_count>5</comment_count>
      <attachid>433968</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-21 16:23:33 -0700</bug_when>
    <thetext>Created attachment 433968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778602</commentid>
    <comment_count>6</comment_count>
      <attachid>433974</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-21 16:47:49 -0700</bug_when>
    <thetext>Created attachment 433974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778844</commentid>
    <comment_count>7</comment_count>
      <attachid>433974</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-22 14:52:54 -0700</bug_when>
    <thetext>Comment on attachment 433974
Patch

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

&gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:56
&gt; +                auto [signingIdentifier, isPlatformBinary] = codeSigningIdentifierAndPlatformBinaryStatus(connection.get());

@Per Arne: Do you think we should enable this check on all platforms (not just macOS)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778854</commentid>
    <comment_count>8</comment_count>
      <attachid>433974</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-07-22 15:05:06 -0700</bug_when>
    <thetext>Comment on attachment 433974
Patch

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

R=me.

&gt;&gt; Source/WebKit/Shared/Cocoa/XPCEndpoint.mm:56
&gt;&gt; +                auto [signingIdentifier, isPlatformBinary] = codeSigningIdentifierAndPlatformBinaryStatus(connection.get());
&gt; 
&gt; @Per Arne: Do you think we should enable this check on all platforms (not just macOS)?

Yes, I think that would be good. I am not sure why that was not done initially. If changing, you might need to test manually that this behaves correctly on iOS.

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:318
&gt;      auto auditToken = connection()-&gt;getAuditToken();
&gt;      if (!auditToken) {
&gt;          ASSERT_NOT_REACHED();

Can this be removed now?

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:327
&gt; +    if (!currentProcessIsPlatformBinary())
&gt; +        return true;

Should this return false? Or should it be &apos;return currentProcessIsPlatformBinary()&apos; to avoid executing the code below?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778860</commentid>
    <comment_count>9</comment_count>
      <attachid>433974</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-22 15:12:52 -0700</bug_when>
    <thetext>Comment on attachment 433974
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:327
&gt;&gt; +        return true;
&gt; 
&gt; Should this return false? Or should it be &apos;return currentProcessIsPlatformBinary()&apos; to avoid executing the code below?

No: Returning false causes WebAuthn to fail because I added this overall check to ensure the message is coming from a valid WebContent process. Because of the system sandbox rules, we cannot check this on non-Apple applications so we return early here as a &quot;success&quot; state.

When 80908833 is fixed, we can re-enable the entire test for all apps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778862</commentid>
    <comment_count>10</comment_count>
      <attachid>434040</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-22 15:16:40 -0700</bug_when>
    <thetext>Created attachment 434040
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778863</commentid>
    <comment_count>11</comment_count>
      <attachid>433974</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2021-07-22 15:17:42 -0700</bug_when>
    <thetext>Comment on attachment 433974
Patch

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

&gt;&gt; Source/WebKit/UIProcess/Cocoa/WebProcessProxyCocoa.mm:318
&gt;&gt;          ASSERT_NOT_REACHED();
&gt; 
&gt; Can this be removed now?

Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1778880</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-22 15:58:15 -0700</bug_when>
    <thetext>Committed r280205 (239893@main): &lt;https://commits.webkit.org/239893@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434040.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779165</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Jenner">jenner</who>
    <bug_when>2021-07-23 14:01:28 -0700</bug_when>
    <thetext>Reverted r280205 for reason:

Broke multiple WebAuthn tests.

Committed r280258 (239925@main): &lt;https://commits.webkit.org/239925@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779841</commentid>
    <comment_count>14</comment_count>
      <attachid>434318</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-27 14:32:25 -0700</bug_when>
    <thetext>Created attachment 434318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779846</commentid>
    <comment_count>15</comment_count>
      <attachid>434318</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-27 14:54:17 -0700</bug_when>
    <thetext>Comment on attachment 434318
Patch

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

&gt; Source/WebKit/Shared/Cocoa/CodeSigning.mm:66
&gt; +    bool isPlatformBinary = isRunningTest(WebCore::applicationBundleIdentifier()) || (SecTaskGetCodeSignStatus(task.get()) &amp; CS_PLATFORM_BINARY);

This is how I fixed the crashing tests. Potentially there is a more elegant way to mark WebKitTestRunner as being a platform binary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780098</commentid>
    <comment_count>16</comment_count>
      <attachid>434318</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-07-28 10:24:51 -0700</bug_when>
    <thetext>Comment on attachment 434318
Patch

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

&gt;&gt; Source/WebKit/Shared/Cocoa/CodeSigning.mm:66
&gt;&gt; +    bool isPlatformBinary = isRunningTest(WebCore::applicationBundleIdentifier()) || (SecTaskGetCodeSignStatus(task.get()) &amp; CS_PLATFORM_BINARY);
&gt; 
&gt; This is how I fixed the crashing tests. Potentially there is a more elegant way to mark WebKitTestRunner as being a platform binary?

I think we could move the check &apos;isRunningTest(WebCore::applicationBundleIdentifier())&apos; to the affected call site instead, since there are potentially many callers of this function who does not need the additional check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780125</commentid>
    <comment_count>17</comment_count>
      <attachid>434440</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-28 11:11:16 -0700</bug_when>
    <thetext>Created attachment 434440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780126</commentid>
    <comment_count>18</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-28 11:11:34 -0700</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #16)
&gt; Comment on attachment 434318 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434318&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit/Shared/Cocoa/CodeSigning.mm:66
&gt; &gt;&gt; +    bool isPlatformBinary = isRunningTest(WebCore::applicationBundleIdentifier()) || (SecTaskGetCodeSignStatus(task.get()) &amp; CS_PLATFORM_BINARY);
&gt; &gt; 
&gt; &gt; This is how I fixed the crashing tests. Potentially there is a more elegant way to mark WebKitTestRunner as being a platform binary?
&gt; 
&gt; I think we could move the check
&gt; &apos;isRunningTest(WebCore::applicationBundleIdentifier())&apos; to the affected call
&gt; site instead, since there are potentially many callers of this function who
&gt; does not need the additional check.

Good call. Fixed in the latest patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780508</commentid>
    <comment_count>19</comment_count>
      <attachid>434440</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-29 12:23:43 -0700</bug_when>
    <thetext>Comment on attachment 434440
Patch

Test failure seems quite unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780527</commentid>
    <comment_count>20</comment_count>
      <attachid>434440</attachid>
    <who name="Per Arne Vollan">pvollan</who>
    <bug_when>2021-07-29 13:09:14 -0700</bug_when>
    <thetext>Comment on attachment 434440
Patch

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

R=me.

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:6
&gt; +	objectVersion = 54;

Is this an intended change?

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-6003
&gt; -		F414CE2A269DDED100BD216A /* GPUProcessCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = GPUProcessCocoa.mm; path = cocoa/GPUProcessCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };

Ditto.

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-11726
&gt; -		F414CE27269DDE8000BD216A /* cocoa */ = {
&gt; -			isa = PBXGroup;
&gt; -			children = (
&gt; -				F414CE2A269DDED100BD216A /* GPUProcessCocoa.mm */,
&gt; -			);
&gt; -			name = cocoa;
&gt; -			sourceTree = &quot;&lt;group&gt;&quot;;
&gt; -		};

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780541</commentid>
    <comment_count>21</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-29 13:28:03 -0700</bug_when>
    <thetext>(In reply to Per Arne Vollan from comment #20)
&gt; Comment on attachment 434440 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=434440&amp;action=review
&gt; 
&gt; R=me.
&gt; 

Thanks!

&gt; &gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:6
&gt; &gt; +	objectVersion = 54;
&gt; 
&gt; Is this an intended change?
&gt; 
&gt; &gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-6003
&gt; &gt; -		F414CE2A269DDED100BD216A /* GPUProcessCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = GPUProcessCocoa.mm; path = cocoa/GPUProcessCocoa.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:-11726
&gt; &gt; -		F414CE27269DDE8000BD216A /* cocoa */ = {
&gt; &gt; -			isa = PBXGroup;
&gt; &gt; -			children = (
&gt; &gt; -				F414CE2A269DDED100BD216A /* GPUProcessCocoa.mm */,
&gt; &gt; -			);
&gt; &gt; -			name = cocoa;
&gt; &gt; -			sourceTree = &quot;&lt;group&gt;&quot;;
&gt; &gt; -		};
&gt; 
&gt; Ditto.

These were all in Brent&apos;s original patch that got rolled out, so I assumed they were necessary. Will try to remove before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780567</commentid>
    <comment_count>22</comment_count>
      <attachid>434572</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-07-29 14:13:44 -0700</bug_when>
    <thetext>Created attachment 434572
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1780591</commentid>
    <comment_count>23</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-07-29 15:12:23 -0700</bug_when>
    <thetext>Committed r280451 (240086@main): &lt;https://commits.webkit.org/240086@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 434572.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433888</attachid>
            <date>2021-07-20 12:04:22 -0700</date>
            <delta_ts>2021-07-21 16:17:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210720120421.patch</filename>
            <type>text/plain</type>
            <size>19880</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5OTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDc5OTRiMzliYjExOTU2MzZl
M2YwOWEwYWZiZDAzMDkyYTIxM2VlNDguLjNhOWU5ZTQ5YzIwMzc4M2U4MTc4ODc2NjA1Yzg1Yjgx
YjI1OGRhMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjEtMDctMjAgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3
NykgW0NvY29hXSBXZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3Nl
cnMgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgx
MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBub3QgYmUgdXNpbmcgdGhl
IFBBQyBrZXkgdG8gY29uZmlybSBhIHZhbGlkIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB0aGUgc291
cmNlIG9mCisgICAgICAgIFdlYkF1dGhuLXJlbGF0ZWQgbWVzc2FnZXMuIEluc3RlYWQsIHdlIHNo
b3VsZCBjb25maXJtIHRoZSBtZXNzYWdlIHNvdXJjZSBpcyBhbiBBcHBsZS1zaWduZWQKKyAgICAg
ICAgZXhlY3V0YWJsZSwgYW5kIHRoYXQgdGhlIHNpZ25pbmluZyBpZGVudGl0eSBpcyBmb3IgdGhl
IFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db2RlU2lnbmlu
Zy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgu
CisgICAgICAgICogU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tLgorICAgICAgICAoV2ViS2l0Ojpj
b2RlU2lnbmluZ0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lkZW50
aWZpZXJGb3JDdXJyZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRl
bnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKTogQWRkZWQuCisgICAgICAgICogU2hhcmVk
L0NvY29hL1hQQ0VuZHBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENFbmRwb2ludDo6WFBD
RW5kcG9pbnQpOiBVcGRhdGUgdG8gdXNlIG5ldyBtZXRob2QuCisgICAgICAgICogU291cmNlc0Nv
Y29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFs
aWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6V2ViUHJvY2Vzc1Byb3h5OjpnZXRXZWJBdXRoblByb2Nl
c3NDb25uZWN0aW9uKTogVXBkYXRlIGZvciBuZXcgbWVzc2FnZSBjaGVjayBuYW1lLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMS0wNy0xNCAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIEFkZCBuZXcgZW50aXRsZW1lbnQgdG8g
bGltaXQgcHJvY2VzcyB0byBhIHNpbmdsZSBKSVQgcmVnaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9Db2RlU2lnbmluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQ29kZVNpZ25pbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YWVmZGE5ZmM5MjVhYmFjNzU1N2IwODE2
MWVhYmRkNjJjMmVkZjJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQ29kZVNpZ25pbmcuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBUaGVzZSBmdW5j
dGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYgdGhlIHByb2Nlc3MgaXMgdW5zaWduZWQuCitT
dHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFByb2Nlc3MoKTsKK1N0cmluZyBj
b2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCk7CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNf
Y29ubmVjdGlvbl90KTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRiY2IwNWNhNDMxYTIwMWE4MWJj
NWViOWI0NjFmZGZhNWZiMWM5ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKworI2ltcG9ydCA8S2VybmVsL2tlcm4vY3NfYmxvYnMuaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
Kworc3RhdGljIFN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoU2VjVGFza1JlZiB0YXNrKQor
eworICAgIHJldHVybiBhZG9wdENGKFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIodGFzaywg
bnVsbHB0cikpLmdldCgpOworfQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3Vy
cmVudFByb2Nlc3MoKQoreworICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRD
RihTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpLmdldCgpKTsKK30K
KworU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rp
b24pCit7CisgICAgYXV0byBwYWlyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1C
aW5hcnlTdGF0dXMoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIHBhaXIuZmlyc3Q7Cit9CisKK3N0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmlu
YXJ5U3RhdHVzKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBhdWRpdF90b2tl
bl90IGF1ZGl0VG9rZW47CisgICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKGNvbm5l
Y3Rpb24sICZhdWRpdFRva2VuKTsKKyAgICBhdXRvIHRhc2sgPSBhZG9wdENGKFNlY1Rhc2tDcmVh
dGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdWRpdFRva2VuKSk7CisgICAg
Ym9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKHRhc2suZ2V0
KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworICAgIGF1dG8gc2lnbmluZ0lkZW50aWZpZXIgPSBj
b2RlU2lnbmluZ0lkZW50aWZpZXIodGFzay5nZXQoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9w
YWlyKHNpZ25pbmdJZGVudGlmaWVyLCBpc1BsYXRmb3JtQmluYXJ5KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0KaW5kZXggOGQ3ODZkN2ExMDM1NGEwY2JkY2UyY2Nj
ODUwYzljOTEyNzQ4NjRjYi4uZGQ1YzBiN2U2NmQ1OGMyZTE3Y2RkNGI2NmMxMDFjM2IyMzE3NmNh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0KQEAgLTMwLDkg
KzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0j
aW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAtNTUsMTAgKzUzLDcgQEAgWFBDRW5kcG9pbnQ6
OlhQQ0VuZHBvaW50KCkKICAgICAgICAgICAgIGlmIChwaWQgIT0gZ2V0cGlkKCkgJiYgIVdURjo6
aGFzRW50aXRsZW1lbnQoY29ubmVjdGlvbi5nZXQoKSwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC51c2UteHBjLWVuZHBvaW50IikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkF1
ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1lbnQgY29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
ICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwotICAgICAgICAgICAgICAgIHhw
Y19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLmdldCgpLCAmYXVkaXRUb2tl
bik7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gU2VjVGFza0dldENv
ZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSkgJiBDU19QTEFURk9STV9CSU5BUlk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9IGNvZGVTaWduaW5nSWRlbnRp
Zmllcihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIFtzaWduaW5nSWRl
bnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0
Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGlm
ICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2lnbmluZ0lkZW50aWZpZXIuc3RhcnRzV2l0aCgiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50IikpIHsKICAgICAgICAgICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJYUEMgZW5kcG9pbnQgZGVuaWVkIHRvIGNvbm5lY3Qgd2l0aCB1bmtub3duIGNsaWVu
dCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzZiOTEwNmE4ZmUxYjM1ZmM1MTgyMGNkYjhjZmQ3YTA1ZGQwMDlkMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi0vLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYgdGhlIHByb2Nl
c3MgaXMgdW5zaWduZWQuCi1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFBy
b2Nlc3MoKTsKLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCk7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWdu
aW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI2MzFmZjllYjgxMDQwZTQy
OTQ0ZTc1ZTY1YzUwNjYwYzJhYmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQotCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3
dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBTdHJpbmcgY29kZVNpZ25pbmdJZGVu
dGlmaWVyKFNlY1Rhc2tSZWYgdGFzaykKLXsKLSAgICByZXR1cm4gYWRvcHRDRihTZWNUYXNrQ29w
eVNpZ25pbmdJZGVudGlmaWVyKHRhc2ssIG51bGxwdHIpKS5nZXQoKTsKLX0KLQotU3RyaW5nIGNv
ZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCkKLXsKLSAgICByZXR1cm4gY29k
ZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9j
YXRvckRlZmF1bHQpKS5nZXQoKSk7Ci19Ci0KLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIo
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQotewotICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRU
b2tlbjsKLSAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1
ZGl0VG9rZW4pOwotICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRDRihTZWNU
YXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXRUb2tlbikp
LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjlmN2ZlMDdkYjY2YmRlMzBhNzE1YjU5
ZjcxZTRmMTNiYTU1MzM4My4uYjAwZGEwMmJiNjlmZjQ1NDliNjNiOGI4MTRhMTQxZjk5ZmFiOWZl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMTYxLDYgKzE2MSw3IEBAIFNoYXJlZC9Db2Nv
YS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KIFNoYXJlZC9Db2Nv
YS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0Nv
Y29hLm1tCitTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9Db2NvYS9Db21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLm1t
CiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMjA1LDcgKzIwNiw2IEBA
IFNoYXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCiBTaGFyZWQvaW9z
L1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5t
bQotU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlz
YWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFy
ZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggYzljYmQy
NTIyMjYzNjU1YmY2ODc3YjYzNGZjNGFiZmZiY2Y3NmVhYi4uODI2OTliZmNlMWU3MTJmNzA3YTg2
YzUyYzVlNDVmZTBkY2YxNjFlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBv
cnQgIldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQ
SS5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBvcnQgIkhpZ2hQZXJmb3JtYW5jZUdQ
VU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFw
aC5oIgpAQCAtMzAxLDE0ICszMDIsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRp
b0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgIH0pOwogfQogCi1ib29sIFdlYlByb2Nlc3NQ
cm94eTo6aGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpt
ZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCkKIHsKICAgICBpZiAoIWhhc0Nv
bm5lY3Rpb24oKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIEhBVkUoUEFDX1NIQVJFRF9SRUdJT05fSUQpCiAgICAg
YXV0byBhdWRpdFRva2VuID0gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7CiAgICAgaWYg
KCFhdWRpdFRva2VuKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMzE4LDEx
ICszMTgsMTIgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0NvcnJlY3RQQUNFbnRpdGxlbWVu
dCgpCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQogICAgIC8vIENvbmZpcm0gdGhhdCB0
aGUgY29ubmVjdGlvbiBpcyBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzOgotICAgIGlmICghV1RG
OjpoYXNFbnRpdGxlbWVudFZhbHVlKGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMu
c2hhcmVkX3JlZ2lvbl9pZCIsICJXZWJDb250ZW50IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJvY2VzcywgIlByb2Nlc3MgaXMgbm90IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJv
Y2Vzcy4gUHJvY2VzcyBzaGFyZWRfcmVnaW9uX2lkIGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRv
IFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50
aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KSk7CisKKyAgICBpZiAoIWlzUGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0
YXJ0c1dpdGgoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3MsICJQcm9jZXNzIGlzIG5vdCBhbiBlbnRpdGxlZCBXZWJDb250
ZW50IHByb2Nlc3MuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICNl
bmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAzMGZhNDIzN2NiZGU4ZjdjMDA2Mzg2ZjliNTczZDhlYWQ5MThk
OTU4Li4yMDlkYWNkYjVjZGNjNmU4MjYyMDYyYjlkNDM5MTc4NTk3ZTRjZDk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gcmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oaGFzQ29ycmVjdFBBQ0VudGl0bGVt
ZW50KCksIHJlcGx5KHsgfSkpOworICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihtZXNzYWdl
U291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCksIHJlcGx5KHsgfSkpOwogICAgIG1fcHJv
Y2Vzc1Bvb2wtPmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVw
bHkpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAppbmRleCA3OTBkNzY1OTRlYzVmYzVmNDNhZWZiM2UyMjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMw
Yjc4NjQ0MTJlMjI3Yjc2NDEyODlkMmVjMDU4Y2Y3MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTMxLDcgKzUzMSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVt
ZW50KCk7CisgICAgYm9vbCBtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7
CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNXZWFrIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjE4OWRjMWQy
NjQ0ZGM1MTAxMTQyMDk2MzU4ZmYxZjNmZjU2ZTVkNS4uZjQ0MWZkOGVmZTJiNTQ0Zjk4ZjhiMzA0
MWQxMGUyZDg5NmE1OGViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAlj
bGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1
NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LwpAQCAtNTk5MSw3ICs1OTkxLDYgQEAKIAkJRjQwQkJCNDAyNTdGRjQ2RTAwNjc0NjNBIC8qIEdQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2Nl
c3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBUElBdHRhY2htZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVQcm9jZXNzQ29jb2Eu
bW07IHBhdGggPSBjb2NvYS9HUFVQcm9jZXNzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MTRDRTJDMjY5REU2RUEwMEJEMjE2QSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAv
KiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzQwMjJBMEVGRDMwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3MvV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1
MCw2ICs4MzQ5LDggQEAKIAkJCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRD
b2RlcnNDb2NvYS5oICovLAogCQkJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLm1tICovLAogCQkJCTFBNjk4RjE3MUU0OTEwMjIwMDY0RTg4MSAvKiBBdXhp
bGlhcnlQcm9jZXNzQ29jb2EubW0gKi8sCisJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8q
IENvZGVTaWduaW5nLmggKi8sCisJCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLm1tICovLAogCQkJCTM3QkVDNERGMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmggKi8sCiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8q
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gKi8sCiAJCQkJMUM3MzlFODcyMzQ3QkQw
RjAwQzYyMUVDIC8qIENvcmVUZXh0SGVscGVycy5oICovLApAQCAtMTA1MTgsOCArMTA1MTksNiBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE1Nzk5QUMyNTg0NDMzMTAwNTI4MjM2IC8qIE1lZGlh
Rm9ybWF0UmVhZGVyICovLAogCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlh
cnlQcm9jZXNzTWFjLm1tICovLAotCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5oICovLAotCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmlu
Zy5tbSAqLywKIAkJCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRp
c2FibGVyTWFjLm1tICovLAogCQkJCTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVX
ZWJHZXN0dXJlRXZlbnRNYWMubW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8q
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0gKi8sCkBAIC0xMTcwMCwxNCArMTE2OTksNiBA
QAogCQkJcGF0aCA9IGNhY2hlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJ
RjQxNENFMjcyNjlEREU4MDAwQkQyMTZBIC8qIGNvY29hICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEgLyogR1BV
UHJvY2Vzc0NvY29hLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBjb2NvYTsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY2Mzg5NTVBMTMzQkY1N0QwMDg5NDFENSAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433966</attachid>
            <date>2021-07-21 16:17:24 -0700</date>
            <delta_ts>2021-07-21 16:23:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210721161723.patch</filename>
            <type>text/plain</type>
            <size>25727</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLjA1NjkwYmZmNjM4YWJjYmMzZTdmZjcwMmM4ODA0MzQ3NGJkNzgw
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0NvY29hXSBX
ZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgU1BJIGhlYWRlciBmb3IgY29kZSBzaWduaW5nIGZl
YXR1cmVzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEkuaDogQWRkZWQuCisKIDIwMjEtMDctMTYg
IEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KIAogICAgICAgICBbR1RL
XVtXUEVdIFN1cHBvcnQgY29sb3Itc2NoZW1lcyBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVj
YWU0OWNkZDYzNzI1YjdjYjgwMDFkMTYxMWY3YzZjNTkxNTI1MC4uODE1NjUzMWFjYzUyMzJkYzE2
ZWQxODcwZTlkOTIyMTJmNmRlMzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0w
Ny0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdS
RVNTSU9OIChyMjc4ODc3KSBbQ29jb2FdIFdlYkF1dGhuIHN0b3BwZWQgd29ya2luZyBmb3Igbm9u
LVNhZmFyaSBicm93c2VycyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODExNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA2OTM2MDc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5v
dCBiZSB1c2luZyB0aGUgUEFDIGtleSB0byBjb25maXJtIGEgdmFsaWQgV2ViQ29udGVudCBwcm9j
ZXNzIGlzIHRoZSBzb3VyY2Ugb2YKKyAgICAgICAgV2ViQXV0aG4tcmVsYXRlZCBtZXNzYWdlcy4g
SW5zdGVhZCwgd2Ugc2hvdWxkIGNvbmZpcm0gdGhlIG1lc3NhZ2Ugc291cmNlIGlzIGFuIEFwcGxl
LXNpZ25lZAorICAgICAgICBleGVjdXRhYmxlLCBhbmQgdGhhdCB0aGUgc2lnbmluaW5nIGlkZW50
aXR5IGlzIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0NvZGVTaWduaW5nLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
Q29kZVNpZ25pbmcuaC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0uCisgICAg
ICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OmNv
ZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
Y29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlTdGF0dXMpOiBBZGRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQ
Q0VuZHBvaW50OjpYUENFbmRwb2ludCk6IFVwZGF0ZSB0byB1c2UgbmV3IG1ldGhvZC4KKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptZXNz
YWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDpXZWJQcm9jZXNzUHJveHk6Omdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24pOiBVcGRhdGUgZm9yIG5ldyBtZXNzYWdlIGNoZWNr
IG5hbWUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU2lsZW5jZSB0
ZWxlbWV0cnkgb24gTVNDX21hY2hfd2FpdF91bnRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzVkODMyNjllYWY0NzNjMGI4NDEwZjhhMDE4MjE1MzQ0ZTg1
ODJhYi4uN2ZkNDA5ZmI1OGJmZThlMmQ3YTcyMDFjZDcyYTFkNmEyY2NlYzc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTEsNiArNDUxLDcgQEAKIAkJ
Nzk1MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbGVSb290R3JhcGguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0QxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTlZhbHVlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09OVmFsdWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E0RDRBQUIyNkE4REVGQzAwMTE4MkYx
IC8qIENvZGVTaWduU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNkVCQTMyMjA3NDZDMzMwMDRGOUM0NCAvKiBNYWNoU2Vu
ZFJpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hTZW5kUmlnaHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0
IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWFjaFNlbmRSaWdodC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRjAy
M0IzMjA2MUUxNkMwMEE4RUZENiAvKiBQcm9jZXNzUHJpdmlsZWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NQcml2aWxlZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1MjAsNiArMTUyMSw3IEBACiAJCUNFNzNFMDIzMTlEQ0I3QUIwMDU4MEQ1
QyAvKiBkYXJ3aW4gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTdBNEQ0QUFCMjZBOERFRkMwMDExODJGMSAvKiBDb2RlU2lnblNQSS5oICovLAogCQkJCTE0
OTMzRTIxMjI4QzIyREYwMEY3OUU0NiAvKiBEYXRhVmF1bHRTUEkuaCAqLywKIAkJCQlFNDMxQ0M0
QTIxMTg3QURCMDAwQzhBMDcgLyogRGlzcGF0Y2hTUEkuaCAqLywKIAkJCQk5M0RERTkzMTFDREMw
NTJEMDBGRDM0OTEgLyogZHlsZFNQSS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
c3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2Rl
U2lnblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiNWE5ZDE3ZTliYmM2MWZhMmE4ZjQ1OWFkMDJjNGY4OGEy
YjNiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0NvZGVT
aWduU1BJLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisKKyNpbmNsdWRlIDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgorCisjZWxzZQorCisjZGVmaW5l
IENTX1BMQVRGT1JNX0JJTkFSWSAgICAgICAgICAweDA0MDAwMDAwCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNjYwNGYxNzk1
NTJmYTNmMmFjODc0Yjk0NDNlNGM5NjI0NzVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlz
IHVuc2lnbmVkLgorU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNz
KCk7CitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QpOworYm9v
bCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKHhwY19jb25u
ZWN0aW9uX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQ29kZVNpZ25pbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkNWM1NDExOGM1NzBhYTVmNjIyNDc1
YmI5NzMyMjk1YWEwNjNmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0NvZGVTaWduaW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQ
SS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmIHRhc2sp
Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0NvcHlTaWduaW5nSWRlbnRpZmllcih0YXNr
LCBudWxscHRyKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JD
dXJyZW50UHJvY2VzcygpCit7CisgICAgcmV0dXJuIGNvZGVTaWduaW5nSWRlbnRpZmllcihhZG9w
dENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCkpOwor
fQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIHBhaXIgPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9y
bUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gcGFpci5maXJzdDsKK30KKwor
Ym9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKQoreworICAgIGF1dG8gdGFzayA9
IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAg
ICByZXR1cm4gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKHRhc2suZ2V0KCkpICYgQ1NfUExBVEZP
Uk1fQklOQVJZOworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb2RlU2lnbmluZ0lkZW50
aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24p
Cit7CisgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgIHhwY19jb25uZWN0aW9uX2dl
dF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgYXV0byB0YXNrID0g
YWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YXVkaXRUb2tlbikpOworICAgIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2Rl
U2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKKyAgICBhdXRvIHNp
Z25pbmdJZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHRhc2suZ2V0KCkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFy
eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCmluZGV4IDhkNzg2
ZDdhMTAzNTRhMGNiZGNlMmNjYzg1MGM5YzkxMjc0ODY0Y2IuLmRkNWMwYjdlNjZkNThjMmUxN2Nk
ZDRiNjZjMTAxYzNiMjMxNzZjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hQQ0VuZHBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0Vu
ZHBvaW50Lm1tCkBAIC0zMCw5ICszMCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0
ICJDb2RlU2lnbmluZy5oIgotI2ltcG9ydCA8S2VybmVsL2tlcm4vY3NfYmxvYnMuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogI2VuZGlmCiAKQEAgLTU1LDEwICs1
Myw3IEBAIFhQQ0VuZHBvaW50OjpYUENFbmRwb2ludCgpCiAgICAgICAgICAgICBpZiAocGlkICE9
IGdldHBpZCgpICYmICFXVEY6Omhhc0VudGl0bGVtZW50KGNvbm5lY3Rpb24uZ2V0KCksICJjb20u
YXBwbGUucHJpdmF0ZS53ZWJraXQudXNlLXhwYy1lbmRwb2ludCIpKSB7CiAgICAgICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJBdWRpdCB0b2tlbiBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0
bGVtZW50IGNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50Iik7CiAjaWYg
UExBVEZPUk0oTUFDKQotICAgICAgICAgICAgICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsK
LSAgICAgICAgICAgICAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlv
bi5nZXQoKSwgJmF1ZGl0VG9rZW4pOwotICAgICAgICAgICAgICAgIGJvb2wgaXNQbGF0Zm9ybUJp
bmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1cyhhZG9wdENGKFNlY1Rhc2tDcmVhdGVXaXRo
QXVkaXRUb2tlbihrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBhdWRpdFRva2VuKSkuZ2V0KCkpICYgQ1Nf
UExBVEZPUk1fQklOQVJZOwotICAgICAgICAgICAgICAgIGF1dG8gc2lnbmluZ0lkZW50aWZpZXIg
PSBjb2RlU2lnbmluZ0lkZW50aWZpZXIoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgYXV0byBbc2lnbmluZ0lkZW50aWZpZXIsIGlzUGxhdGZvcm1CaW5hcnldID0gY29kZVNpZ25p
bmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlTdGF0dXMoY29ubmVjdGlvbi5nZXQoKSk7CiAK
ICAgICAgICAgICAgICAgICBpZiAoIWlzUGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlm
aWVyLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiWFBDIGVuZHBvaW50IGRlbmllZCB0byBjb25uZWN0
IHdpdGggdW5rbm93biBjbGllbnQiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2RlU2lnbmluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5n
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YjkxMDZhOGZlMWIzNWZjNTE4MjBj
ZGI4Y2ZkN2EwNWRkMDA5ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgKKysrIC9kZXYv
bnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwg
c3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlzIHVuc2lnbmVkLgotU3RyaW5nIGNvZGVTaWduaW5nSWRl
bnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCk7Ci1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVy
KHhwY19jb25uZWN0aW9uX3QpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWYyNjMxZmY5ZWI4MTA0MGU0Mjk0NGU3NWU2NWM1MDY2MGMyYWJmNi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
Q29kZVNpZ25pbmcubW0KKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJDb2RlU2lnbmluZy5oIgotCi0jaWYgUExB
VEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLQotI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgotI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgU3Ry
aW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmIHRhc2spCi17Ci0gICAgcmV0dXJu
IGFkb3B0Q0YoU2VjVGFza0NvcHlTaWduaW5nSWRlbnRpZmllcih0YXNrLCBudWxscHRyKSkuZ2V0
KCk7Ci19Ci0KLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2Vzcygp
Ci17Ci0gICAgcmV0dXJuIGNvZGVTaWduaW5nSWRlbnRpZmllcihhZG9wdENGKFNlY1Rhc2tDcmVh
dGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCkpOwotfQotCi1TdHJpbmcgY29k
ZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKLXsKLSAgICBh
dWRpdF90b2tlbl90IGF1ZGl0VG9rZW47Ci0gICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rv
a2VuKGNvbm5lY3Rpb24sICZhdWRpdFRva2VuKTsKLSAgICByZXR1cm4gY29kZVNpZ25pbmdJZGVu
dGlmaWVyKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDI5Zjdm
ZTA3ZGI2NmJkZTMwYTcxNWI1OWY3MWU0ZjEzYmE1NTMzODMuLmIwMGRhMDJiYjY5ZmY0NTQ5YjYz
YjhiODE0YTE0MWY5OWZhYjlmZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE2MSw2ICsx
NjEsNyBAQCBTaGFyZWQvQ29jb2EvQVBJRGF0YUNvY29hLm1tCiBTaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCiBTaGFyZWQvQ29jb2EvQXJndW1lbnRDb2RlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29h
L0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbQorU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCiBT
aGFyZWQvQ29jb2EvQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbQogU2hhcmVkL0NvY29h
L0NvcmVUZXh0SGVscGVycy5tbQogU2hhcmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0K
QEAgLTIwNSw3ICsyMDYsNiBAQCBTaGFyZWQvaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVl
c0lPUy5tbQogU2hhcmVkL2lvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1
eGlsaWFyeVByb2Nlc3NNYWMubW0KLVNoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9t
YWMvSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1
cmVFdmVudE1hYy5tbQogU2hhcmVkL21hYy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNv
Y29hLm1tCmluZGV4IGVmNTUxOGFhZGIwMmQ1YmY1Y2JmMTY3ZTEyNDA3ZWU5MDc0NzE1ZTcuLmJi
MGEzMjQyMTY3NWI5ZWExZDg0YzM1NzU4MjEyZjgzNmQ1ODliMjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCAiQWNj
ZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIKKyNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCiAjaW1wb3J0
ICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5hZ2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1w
b3J0ICJPYmpDT2JqZWN0R3JhcGguaCIKQEAgLTMwNSwxNCArMzA2LDEzIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21wb25lbnRSZWdpc3RyYXRpb25zKCkKICAgICB9KTsKIH0K
IAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0NvcnJlY3RQQUNFbnRpdGxlbWVudCgpCitib29s
IFdlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcygp
CiB7CiAgICAgaWYgKCFoYXNDb25uZWN0aW9uKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSNpZiBIQVZFKFBBQ19TSEFS
RURfUkVHSU9OX0lEKQogICAgIGF1dG8gYXVkaXRUb2tlbiA9IGNvbm5lY3Rpb24oKS0+Z2V0QXVk
aXRUb2tlbigpOwogICAgIGlmICghYXVkaXRUb2tlbikgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKQEAgLTMyMSwxMiArMzIxLDE5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXND
b3JyZWN0UEFDRW50aXRsZW1lbnQoKQogICAgIH0KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FKHJkYXI6Ly84MDkwODgzMyk6IE9u
IGlPUywgd2UgY2FuIG9ubHkgcGVyZm9ybSB0aGUgYmVsb3cgY2hlY2tzIGZvciBwbGF0Zm9ybSBi
aW5hcmllcyB1bnRpbCByZGFyOi8vODA5MDg4MzMgaXMgZml4ZWQuCisgICAgaWYgKCFjdXJyZW50
UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KwogICAgIC8vIENvbmZpcm0gdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBmcm9tIGEgV2ViQ29udGVu
dCBwcm9jZXNzOgotICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudFZhbHVlKGF1ZGl0VG9rZW4u
dmFsdWUoKSwgImNvbS5hcHBsZS5wYWMuc2hhcmVkX3JlZ2lvbl9pZCIsICJXZWJDb250ZW50Iikp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIlByb2Nlc3MgaXMgbm90IGFu
IGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4gUHJvY2VzcyBzaGFyZWRfcmVnaW9uX2lkIGlz
IGluY29ycmVjdC4iKTsKKyAgICBhdXRvIFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJp
bmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25u
ZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSk7CisKKyAgICBpZiAoIWlzUGxhdGZvcm1CaW5hcnkg
fHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29u
dGVudCIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJQcm9jZXNzIGlz
IG5vdCBhbiBlbnRpdGxlZCBXZWJDb250ZW50IHByb2Nlc3MuIik7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMGZhNDIzN2NiZGU4
ZjdjMDA2Mzg2ZjliNTczZDhlYWQ5MThkOTU4Li4yMDlkYWNkYjVjZGNjNmU4MjYyMDYyYjlkNDM5
MTc4NTk3ZTRjZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vz
c0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogI2lmIEVOQUJMRShX
RUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVj
dGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJ
T04oaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCksIHJlcGx5KHsgfSkpOworICAgIE1FU1NBR0Vf
Q0hFQ0tfQ09NUExFVElPTihtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCks
IHJlcGx5KHsgfSkpOwogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5l
Y3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3OTBkNzY1OTRlYzVmYzVmNDNhZWZiM2Uy
MjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMwYjc4NjQ0MTJlMjI3Yjc2NDEyODlkMmVjMDU4Y2Y3MTc2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTMxLDcg
KzUzMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJv
b2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCk7CisgICAgYm9vbCBtZXNzYWdlU291cmNlSXNW
YWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNXZWFr
IHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9j
ZXNzUHJveHlNYWMubW0KaW5kZXggMzBmOTYwMzI2MzVkNWU2YjQ0MTMyODdiNWZlMzhmNGNkYzJl
OGMwZC4uNjljMGNiNTg3ZGM0MTY4YzgyOTExNTBlMzQ2Y2U1OTQyNzBjMDM3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0y
OSwxMSArMjksMTAgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQ29kZVNpZ25p
bmcuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgotI2ltcG9ydCA8
S2VybmVsL2tlcm4vY3NfYmxvYnMuaD4KICNpbXBvcnQgPHNpZ25hbC5oPgogI2ltcG9ydCA8d3Rm
L1Byb2Nlc3NQcml2aWxlZ2UuaD4KLSNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEku
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUyLDcgKzUxLDcgQEAgYm9vbCBXZWJQcm9j
ZXNzUHJveHk6OnNob3VsZEFsbG93Tm9uVmFsaWRJbmplY3RlZENvZGUoKSBjb25zdAogICAgIGlm
ICghaXNTeXN0ZW1XZWJLaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHN0YXRpYyBi
b29sIGlzUGxhdGZvcm1CaW5hcnkgPSBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXMoYWRvcHRDRihT
ZWNUYXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpLmdldCgpKSAmIENTX1BM
QVRGT1JNX0JJTkFSWTsKKyAgICBzdGF0aWMgYm9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gY3VycmVu
dFByb2Nlc3NJc1BsYXRmb3JtQmluYXJ5KCk7CiAgICAgaWYgKGlzUGxhdGZvcm1CaW5hcnkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0NjA2Y2M1ZTE1ZDE4MDhmNTU5MzIzNjE1OTkzNGQ5
NzFiMmY5Yi4uN2Q3NDExNGIwNDhiYjFmYjc1MGQ3OWUyNGQ0MzQ2OTExZmMzNjZlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcg
KzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0
VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtNTk5OCw3ICs1OTk4LDYgQEAK
IAkJRjQwQkJCNDAyNTdGRjQ2RTAwNjc0NjNBIC8qIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJn
dW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEw
MSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAv
KiBBUElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElBdHRhY2ht
ZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUY0MTRDRTJBMjY5RERF
RDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBHUFVQcm9jZXNzQ29jb2EubW07IHBhdGggPSBjb2NvYS9HUFVQcm9j
ZXNzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MTRDRTJDMjY5REU2
RUEwMEJEMjE2QSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3RhdGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MkQ2MzQwMjJBMEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlv
bkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRv
Y29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM1Nyw2ICs4MzU2LDggQEAKIAkJCQlBMTc1
QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovLAogCQkJCUEx
NzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLm1tICovLAogCQkJ
CTFBNjk4RjE3MUU0OTEwMjIwMDY0RTg4MSAvKiBBdXhpbGlhcnlQcm9jZXNzQ29jb2EubW0gKi8s
CisJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8sCisJCQkJ
Q0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAogCQkJCTM3QkVD
NERGMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLmggKi8s
CiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIubW0gKi8sCiAJCQkJMUM3MzlFODcyMzQ3QkQwRjAwQzYyMUVDIC8qIENvcmVUZXh0SGVs
cGVycy5oICovLApAQCAtMTA1MzAsOCArMTA1MzEsNiBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
QTE1Nzk5QUMyNTg0NDMzMTAwNTI4MjM2IC8qIE1lZGlhRm9ybWF0UmVhZGVyICovLAogCQkJCTlG
NTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlhcnlQcm9jZXNzTWFjLm1tICovLAotCQkJ
CUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAotCQkJCUNFMTFB
RDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLywKIAkJCQkxQUM3NUExQzFC
MzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRpc2FibGVyTWFjLm1tICovLAogCQkJCTJE
NTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZlbnRNYWMubW0gKi8s
CiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8qIE5hdGl2ZVdlYktleWJvYXJkRXZlbnRN
YWMubW0gKi8sCkBAIC0xMTcxMiwxNCArMTE3MTEsNiBAQAogCQkJcGF0aCA9IGNhY2hlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJRjQxNENFMjcyNjlEREU4MDAwQkQyMTZB
IC8qIGNvY29hICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEgLyogR1BVUHJvY2Vzc0NvY29hLm1tICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJ
CUY2Mzg5NTVBMTMzQkY1N0QwMDg5NDFENSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433968</attachid>
            <date>2021-07-21 16:23:33 -0700</date>
            <delta_ts>2021-07-21 16:51:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210721162332.patch</filename>
            <type>text/plain</type>
            <size>26571</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLjA1NjkwYmZmNjM4YWJjYmMzZTdmZjcwMmM4ODA0MzQ3NGJkNzgw
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDctMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0NvY29hXSBX
ZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgU1BJIGhlYWRlciBmb3IgY29kZSBzaWduaW5nIGZl
YXR1cmVzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEkuaDogQWRkZWQuCisKIDIwMjEtMDctMTYg
IEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFsZXhtQGdub21lLm9yZz4KIAogICAgICAgICBbR1RL
XVtXUEVdIFN1cHBvcnQgY29sb3Itc2NoZW1lcyBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVj
YWU0OWNkZDYzNzI1YjdjYjgwMDFkMTYxMWY3YzZjNTkxNTI1MC4uODE1NjUzMWFjYzUyMzJkYzE2
ZWQxODcwZTlkOTIyMTJmNmRlMzU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0w
Ny0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdS
RVNTSU9OIChyMjc4ODc3KSBbQ29jb2FdIFdlYkF1dGhuIHN0b3BwZWQgd29ya2luZyBmb3Igbm9u
LVNhZmFyaSBicm93c2VycyAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyODExNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA2OTM2MDc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugc2hvdWxkIG5v
dCBiZSB1c2luZyB0aGUgUEFDIGtleSB0byBjb25maXJtIGEgdmFsaWQgV2ViQ29udGVudCBwcm9j
ZXNzIGlzIHRoZSBzb3VyY2Ugb2YKKyAgICAgICAgV2ViQXV0aG4tcmVsYXRlZCBtZXNzYWdlcy4g
SW5zdGVhZCwgd2Ugc2hvdWxkIGNvbmZpcm0gdGhlIG1lc3NhZ2Ugc291cmNlIGlzIGFuIEFwcGxl
LXNpZ25lZAorICAgICAgICBleGVjdXRhYmxlLCBhbmQgdGhhdCB0aGUgc2lnbmluaW5nIGlkZW50
aXR5IGlzIGZvciB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgorCisgICAgICAgICogU2hhcmVkL0Nv
Y29hL0NvZGVTaWduaW5nLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
Q29kZVNpZ25pbmcuaC4KKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW06IFJl
bmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0uCisgICAg
ICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OmNv
ZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6
Y29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlTdGF0dXMpOiBBZGRlZC4KKyAg
ICAgICAgKiBTaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQ
Q0VuZHBvaW50OjpYUENFbmRwb2ludCk6IFVwZGF0ZSB0byB1c2UgbmV3IG1ldGhvZC4KKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjptZXNz
YWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDpXZWJQcm9jZXNzUHJveHk6Omdl
dFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24pOiBVcGRhdGUgZm9yIG5ldyBtZXNzYWdlIGNoZWNr
IG5hbWUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAq
IFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTIwICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU2lsZW5jZSB0
ZWxlbWV0cnkgb24gTVNDX21hY2hfd2FpdF91bnRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYzVkODMyNjllYWY0NzNjMGI4NDEwZjhhMDE4MjE1MzQ0ZTg1
ODJhYi4uN2ZkNDA5ZmI1OGJmZThlMmQ3YTcyMDFjZDcyYTFkNmEyY2NlYzc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTEsNiArNDUxLDcgQEAKIAkJ
Nzk1MjEyMDIxRjQyNTg4ODAwQkQ2NDIxIC8qIFNpbmdsZVJvb3RHcmFwaC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTaW5nbGVSb290R3JhcGguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0QxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPTlZhbHVlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTA1MDkzRTFGQjlEQ0M1MDBCMzNGQjggLyogSlNPTlZhbHVl
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09OVmFsdWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0E0RDRBQUIyNkE4REVGQzAwMTE4MkYx
IC8qIENvZGVTaWduU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTaWduU1BJLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNkVCQTMyMjA3NDZDMzMwMDRGOUM0NCAvKiBNYWNoU2Vu
ZFJpZ2h0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hY2hTZW5kUmlnaHQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2RUJBMzMyMDc0NkMzNDAwNEY5QzQ0
IC8qIE1hY2hTZW5kUmlnaHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWFjaFNlbmRSaWdodC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRjAy
M0IzMjA2MUUxNkMwMEE4RUZENiAvKiBQcm9jZXNzUHJpdmlsZWdlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2Nlc3NQcml2aWxlZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1MjAsNiArMTUyMSw3IEBACiAJCUNFNzNFMDIzMTlEQ0I3QUIwMDU4MEQ1
QyAvKiBkYXJ3aW4gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTdBNEQ0QUFCMjZBOERFRkMwMDExODJGMSAvKiBDb2RlU2lnblNQSS5oICovLAogCQkJCTE0
OTMzRTIxMjI4QzIyREYwMEY3OUU0NiAvKiBEYXRhVmF1bHRTUEkuaCAqLywKIAkJCQlFNDMxQ0M0
QTIxMTg3QURCMDAwQzhBMDcgLyogRGlzcGF0Y2hTUEkuaCAqLywKIAkJCQk5M0RERTkzMTFDREMw
NTJEMDBGRDM0OTEgLyogZHlsZFNQSS5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
c3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2Rl
U2lnblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZGYwMTcyMTExYTM0ZTYwOGMyMmNjMGVlODU0ZGFkM2Mw
ZTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0NvZGVT
aWduU1BJLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisKKyNpbmNsdWRlIDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgorCisjZWxzZQorCisjZGVmaW5l
IENTX1BMQVRGT1JNX0JJTkFSWSAgICAgICAgICAweDA0MDAwMDAwCisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNjYwNGYxNzk1
NTJmYTNmMmFjODc0Yjk0NDNlNGM5NjI0NzVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlz
IHVuc2lnbmVkLgorU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNz
KCk7CitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QpOworYm9v
bCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKHhwY19jb25u
ZWN0aW9uX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQ29kZVNpZ25pbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkNWM1NDExOGM1NzBhYTVmNjIyNDc1
YmI5NzMyMjk1YWEwNjNmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0NvZGVTaWduaW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKKworI2lmIFBMQVRG
T1JNKENPQ09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQ
SS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitzdGF0aWMgU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmIHRhc2sp
Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0NvcHlTaWduaW5nSWRlbnRpZmllcih0YXNr
LCBudWxscHRyKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JD
dXJyZW50UHJvY2VzcygpCit7CisgICAgcmV0dXJuIGNvZGVTaWduaW5nSWRlbnRpZmllcihhZG9w
dENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCkpOwor
fQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikKK3sKKyAgICBhdXRvIHBhaXIgPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9y
bUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gcGFpci5maXJzdDsKK30KKwor
Ym9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKQoreworICAgIGF1dG8gdGFzayA9
IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAg
ICByZXR1cm4gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKHRhc2suZ2V0KCkpICYgQ1NfUExBVEZP
Uk1fQklOQVJZOworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb2RlU2lnbmluZ0lkZW50
aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24p
Cit7CisgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgIHhwY19jb25uZWN0aW9uX2dl
dF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgYXV0byB0YXNrID0g
YWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwg
YXVkaXRUb2tlbikpOworICAgIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2Rl
U2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKKyAgICBhdXRvIHNp
Z25pbmdJZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHRhc2suZ2V0KCkpOworICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFy
eSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09D
T0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCmluZGV4IDhkNzg2
ZDdhMTAzNTRhMGNiZGNlMmNjYzg1MGM5YzkxMjc0ODY0Y2IuLjk1YTVlYjVmMjQ4NGYwNzY3OTlm
ZGFmMmU0YTIzNDc2Njk5YmU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hQQ0VuZHBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0Vu
ZHBvaW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTMwLDkgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkNv
ZGVTaWduaW5nLmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgog
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAtNTUsMTAgKzUzLDcg
QEAgWFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKICAgICAgICAgICAgIGlmIChwaWQgIT0gZ2V0
cGlkKCkgJiYgIVdURjo6aGFzRW50aXRsZW1lbnQoY29ubmVjdGlvbi5nZXQoKSwgImNvbS5hcHBs
ZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKICAgICAgICAgICAgICAgICBX
VEZMb2dBbHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1l
bnQgY29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKTsKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwotICAg
ICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLmdl
dCgpLCAmYXVkaXRUb2tlbik7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1BsYXRmb3JtQmluYXJ5
ID0gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRp
dFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSkgJiBDU19QTEFU
Rk9STV9CSU5BUlk7Ci0gICAgICAgICAgICAgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9IGNv
ZGVTaWduaW5nSWRlbnRpZmllcihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBh
dXRvIFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lk
ZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uLmdldCgpKTsKIAogICAg
ICAgICAgICAgICAgIGlmICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2lnbmluZ0lkZW50aWZpZXIu
c3RhcnRzV2l0aCgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IikpIHsKICAgICAgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCJYUEMgZW5kcG9pbnQgZGVuaWVkIHRvIGNvbm5lY3Qgd2l0
aCB1bmtub3duIGNsaWVudCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvZGVTaWduaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiOTEwNmE4ZmUxYjM1ZmM1MTgyMGNkYjhj
ZmQ3YTA1ZGQwMDlkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaAorKysgL2Rldi9udWxs
CkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+Ci0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJp
bmcgaWYgdGhlIHByb2Nlc3MgaXMgdW5zaWduZWQuCi1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlm
aWVyRm9yQ3VycmVudFByb2Nlc3MoKTsKLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBj
X2Nvbm5lY3Rpb25fdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvZGVTaWduaW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI2
MzFmZjllYjgxMDQwZTQyOTQ0ZTc1ZTY1YzUwNjYwYzJhYmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2Rl
U2lnbmluZy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0KLSNpZiBQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+Ci0jaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBTdHJpbmcg
Y29kZVNpZ25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYgdGFzaykKLXsKLSAgICByZXR1cm4gYWRv
cHRDRihTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKHRhc2ssIG51bGxwdHIpKS5nZXQoKTsK
LX0KLQotU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCkKLXsK
LSAgICByZXR1cm4gY29kZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZy
b21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKS5nZXQoKSk7Ci19Ci0KLVN0cmluZyBjb2RlU2ln
bmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQotewotICAgIGF1ZGl0
X3Rva2VuX3QgYXVkaXRUb2tlbjsKLSAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4o
Y29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOwotICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZp
ZXIoYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVs
dCwgYXVkaXRUb2tlbikpLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjlmN2ZlMDdk
YjY2YmRlMzBhNzE1YjU5ZjcxZTRmMTNiYTU1MzM4My4uNzhmYjQyNDEyMjNiMDMyNzVhOTY2ZDlm
NzVhYzAwZmNhNDlhN2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAK
LS8vIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDYgKzE2MSw3IEBA
IFNoYXJlZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0K
IFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQXV4aWxp
YXJ5UHJvY2Vzc0NvY29hLm1tCitTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9D
b2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvQ29yZVRl
eHRIZWxwZXJzLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMjA1
LDcgKzIwNiw2IEBAIFNoYXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1t
CiBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5
UHJvY2Vzc01hYy5tbQotU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogU2hhcmVkL21hYy9IYW5n
RGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50
TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0K
aW5kZXggZWY1NTE4YWFkYjAyZDViZjVjYmYxNjdlMTI0MDdlZTkwNzQ3MTVlNy4uYmIwYTMyNDIx
Njc1YjllYTFkODRjMzU3NTgyMTJmODM2ZDU4OWIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI3LDYgKzI3
LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW1wb3J0ICJBY2Nlc3NpYmls
aXR5U3VwcG9ydFNQSS5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBvcnQgIkhpZ2hQ
ZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9i
akNPYmplY3RHcmFwaC5oIgpAQCAtMzA1LDE0ICszMDYsMTMgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgIH0pOwogfQogCi1ib29s
IFdlYlByb2Nlc3NQcm94eTo6aGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCkKK2Jvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjptZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCkKIHsKICAg
ICBpZiAoIWhhc0Nvbm5lY3Rpb24oKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIEhBVkUoUEFDX1NIQVJFRF9SRUdJ
T05fSUQpCiAgICAgYXV0byBhdWRpdFRva2VuID0gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2Vu
KCk7CiAgICAgaWYgKCFhdWRpdFRva2VuKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtMzIxLDEyICszMjEsMTkgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc0NvcnJlY3RQ
QUNFbnRpdGxlbWVudCgpCiAgICAgfQogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNp
ZiBQTEFURk9STShJT1MpCisgICAgLy8gRklYTUUocmRhcjovLzgwOTA4ODMzKTogT24gaU9TLCB3
ZSBjYW4gb25seSBwZXJmb3JtIHRoZSBiZWxvdyBjaGVja3MgZm9yIHBsYXRmb3JtIGJpbmFyaWVz
IHVudGlsIHJkYXI6Ly84MDkwODgzMyBpcyBmaXhlZC4KKyAgICBpZiAoIWN1cnJlbnRQcm9jZXNz
SXNQbGF0Zm9ybUJpbmFyeSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAg
Ly8gQ29uZmlybSB0aGF0IHRoZSBjb25uZWN0aW9uIGlzIGZyb20gYSBXZWJDb250ZW50IHByb2Nl
c3M6Ci0gICAgaWYgKCFXVEY6Omhhc0VudGl0bGVtZW50VmFsdWUoYXVkaXRUb2tlbi52YWx1ZSgp
LCAiY29tLmFwcGxlLnBhYy5zaGFyZWRfcmVnaW9uX2lkIiwgIldlYkNvbnRlbnQiKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiUHJvY2VzcyBpcyBub3QgYW4gZW50aXRs
ZWQgV2ViQ29udGVudCBwcm9jZXNzLiBQcm9jZXNzIHNoYXJlZF9yZWdpb25faWQgaXMgaW5jb3Jy
ZWN0LiIpOworICAgIGF1dG8gW3NpZ25pbmdJZGVudGlmaWVyLCBpc1BsYXRmb3JtQmluYXJ5XSA9
IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKGNvbm5lY3Rpb24o
KS0+eHBjQ29ubmVjdGlvbigpKTsKKworICAgIGlmICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2ln
bmluZ0lkZW50aWZpZXIuc3RhcnRzV2l0aCgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50Iikp
IHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIlByb2Nlc3MgaXMgbm90IGFu
IGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KLSNlbmRpZgogI2VuZGlmCiAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDMwZmE0MjM3Y2JkZThmN2MwMDYz
ODZmOWI1NzNkOGVhZDkxOGQ5NTguLjIwOWRhY2RiNWNkY2M2ZTgyNjIwNjJiOWQ0MzkxNzg1OTdl
NGNkOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApA
QCAtODI1LDcgKzgyNSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpncHVQcm9jZXNzRXhpdGVk
KEdQVVByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiAjaWYgRU5BQkxFKFdFQl9BVVRI
TikKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb246OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihoYXND
b3JyZWN0UEFDRW50aXRsZW1lbnQoKSwgcmVwbHkoeyB9KSk7CisgICAgTUVTU0FHRV9DSEVDS19D
T01QTEVUSU9OKG1lc3NhZ2VTb3VyY2VJc1ZhbGlkV2ViQ29udGVudFByb2Nlc3MoKSwgcmVwbHko
eyB9KSk7CiAgICAgbV9wcm9jZXNzUG9vbC0+Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbigq
dGhpcywgV1RGTW92ZShyZXBseSkpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDc5MGQ3NjU5NGVjNWZjNWY0M2FlZmIzZTIyNGE0OTJk
NDY1OGU1MzYuLmY0MWJlMzBiNzg2NDQxMmUyMjdiNzY0MTI4OWQyZWMwNThjZjcxNzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC01MzEsNyArNTMxLDcg
QEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgYm9vbCBoYXND
b3JyZWN0UEFDRW50aXRsZW1lbnQoKTsKKyAgICBib29sIG1lc3NhZ2VTb3VyY2VJc1ZhbGlkV2Vi
Q29udGVudFByb2Nlc3MoKTsKICNlbmRpZgogCiAgICAgZW51bSBjbGFzcyBJc1dlYWsgeyBObywg
WWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94
eU1hYy5tbQppbmRleCAzMGY5NjAzMjYzNWQ1ZTZiNDQxMzI4N2I1ZmUzOGY0Y2RjMmU4YzBkLi42
MmExZGU3OWVhNjlkZTE1ZDhjNzNhZGEyYmI1MmQ4MGFhOTBiNTU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksMTEgKzI5LDEw
IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCiAjaW1w
b3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIKLSNpbXBvcnQgPEtlcm5lbC9rZXJu
L2NzX2Jsb2JzLmg+CiAjaW1wb3J0IDxzaWduYWwuaD4KICNpbXBvcnQgPHd0Zi9Qcm9jZXNzUHJp
dmlsZWdlLmg+Ci0jaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCkBAIC01Miw3ICs1MSw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpz
aG91bGRBbGxvd05vblZhbGlkSW5qZWN0ZWRDb2RlKCkgY29uc3QKICAgICBpZiAoIWlzU3lzdGVt
V2ViS2l0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBzdGF0aWMgYm9vbCBpc1BsYXRm
b3JtQmluYXJ5ID0gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0
ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKS5nZXQoKSkgJiBDU19QTEFURk9STV9CSU5B
Ulk7CisgICAgc3RhdGljIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IGN1cnJlbnRQcm9jZXNzSXNQ
bGF0Zm9ybUJpbmFyeSgpOwogICAgIGlmIChpc1BsYXRmb3JtQmluYXJ5KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDIyNDYwNmNjNWUxNWQxODA4ZjU1OTMyMzYxNTk5MzRkOTcxYjJmOWIuLjdk
NzQxMTRiMDQ4YmIxZmI3NTBkNzllMjRkNDM0NjkxMWZjMzY2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAKIAlh
cmNoaXZlVmVyc2lvbiA9IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24gPSA1
MjsKKwlvYmplY3RWZXJzaW9uID0gNTQ7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdn
cmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTU5OTgsNyArNTk5OCw2IEBACiAJCUY0MEJCQjQw
MjU3RkY0NkUwMDY3NDYzQSAvKiBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2ODIyMEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0
b2NvcnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIxMzA2OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNo
bWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJQXR0YWNobWVudENvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEg
LyogR1BVUHJvY2Vzc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gR1BVUHJvY2Vzc0NvY29hLm1tOyBwYXRoID0gY29jb2EvR1BVUHJvY2Vzc0NvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE0Q0UyQzI2OURFNkVBMDBCRDIxNkEg
LyogUmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJl
bmRlcmluZ0JhY2tlbmRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJE
NjMzRjIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oOyBwYXRoID0g
aW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNTcsNiArODM1Niw4IEBACiAJCQkJQTE3NUM0NDkyMUFBMzE3
MDAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLywKIAkJCQlBMTc1QzQ0QjIxQUEz
MzFCMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywKIAkJCQkxQTY5OEYxNzFF
NDkxMDIyMDA2NEU4ODEgLyogQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNFMTFB
RDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAorCQkJCUNFMTFBRDRGMUNC
QzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLywKIAkJCQkzN0JFQzRERjE5NDkxNDg2
MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oICovLAogCQkJCTM3QkVD
NERFMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICov
LAogCQkJCTFDNzM5RTg3MjM0N0JEMEYwMEM2MjFFQyAvKiBDb3JlVGV4dEhlbHBlcnMuaCAqLywK
QEAgLTEwNTMwLDggKzEwNTMxLDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExNTc5OUFDMjU4
NDQzMzEwMDUyODIzNiAvKiBNZWRpYUZvcm1hdFJlYWRlciAqLywKIAkJCQk5RjU0Rjg4RTE2NDg4
RTg3MDA3REY4MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKLQkJCQlDRTExQUQ1MTFD
QkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKLQkJCQlDRTExQUQ0RjFDQkM0N0Y4
MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3
NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3
OTNGMDBFMjBCQjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJG
RjFEMTI1MTUwMkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLApA
QCAtMTE3MTIsMTQgKzExNzExLDYgQEAKIAkJCXBhdGggPSBjYWNoZTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07Ci0JCUY0MTRDRTI3MjY5RERFODAwMEJEMjE2QSAvKiBjb2NvYSAq
LyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRjQxNENFMkEy
NjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAqLywKLQkJCSk7Ci0JCQluYW1l
ID0gY29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlGNjM4OTU1QTEz
M0JGNTdEMDA4OTQxRDUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgK
</data>
<flag name="commit-queue"
          id="456350"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433974</attachid>
            <date>2021-07-21 16:47:49 -0700</date>
            <delta_ts>2021-07-22 15:16:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210721164748.patch</filename>
            <type>text/plain</type>
            <size>28321</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLjQ3NWQzNjJlMDgxM2RjNWIxOGRkZWU4MTM2N2Q0NjdjZWI2M2Mx
ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDctMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0NvY29hXSBX
ZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgU1BJIGhlYWRlciBmb3IgY29kZSBzaWduaW5nIGZl
YXR1cmVzLgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oOiBNb3ZlIHNvbWUgU2VjVGFzayBjYWxs
cyBvdXQgb2YgUExBVEZPUk0oTUFDKS4KKyAgICAgICAgKiB3dGYvc3BpL2Rhcndpbi9Db2RlU2ln
blNQSS5oOiBBZGRlZC4KKwogMjAyMS0wNy0xNiAgQWxleGFuZGVyIE1pa2hheWxlbmtvICA8YWxl
eG1AZ25vbWUub3JnPgogCiAgICAgICAgIFtHVEtdW1dQRV0gU3VwcG9ydCBjb2xvci1zY2hlbWVz
IENTUyBwcm9wZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4ZWNhZTQ5Y2RkNjM3MjViN2NiODAwMWQxNjExZjdj
NmM1OTE1MjUwLi44MTU2NTMxYWNjNTIzMmRjMTZlZDE4NzBlOWQ5MjIxMmY2ZGUzNTljIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTA3LTIwICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2Vi
QXV0aG4gc3RvcHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTE2CisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS84MDY5MzYwNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXZSBzaG91bGQgbm90IGJlIHVzaW5nIHRoZSBQQUMga2V5IHRvIGNv
bmZpcm0gYSB2YWxpZCBXZWJDb250ZW50IHByb2Nlc3MgaXMgdGhlIHNvdXJjZSBvZgorICAgICAg
ICBXZWJBdXRobi1yZWxhdGVkIG1lc3NhZ2VzLiBJbnN0ZWFkLCB3ZSBzaG91bGQgY29uZmlybSB0
aGUgbWVzc2FnZSBzb3VyY2UgaXMgYW4gQXBwbGUtc2lnbmVkCisgICAgICAgIGV4ZWN1dGFibGUs
IGFuZCB0aGF0IHRoZSBzaWduaW5pbmcgaWRlbnRpdHkgaXMgZm9yIHRoZSBXZWJDb250ZW50IHBy
b2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5oLgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9Db2RlU2lnbmluZy5tbTogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9Db2RlU2lnbmluZy5tbS4KKyAgICAgICAgKFdlYktpdDo6Y29kZVNpZ25pbmdJZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6Y29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVu
dFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0
Zm9ybUJpbmFyeVN0YXR1cyk6IEFkZGVkLgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9YUENFbmRw
b2ludC5tbToKKyAgICAgICAgKFdlYktpdDo6WFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KTogVXBk
YXRlIHRvIHVzZSBuZXcgbWV0aG9kLgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6Om1lc3NhZ2VTb3VyY2VJc1ZhbGlkV2ViQ29udGVudFBy
b2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OldlYlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbik6
IFVwZGF0ZSBmb3IgbmV3IG1lc3NhZ2UgY2hlY2sgbmFtZS4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisKIDIwMjEtMDctMjAgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0NvY29hXSBTaWxlbmNlIHRlbGVtZXRyeSBvbiBNU0NfbWFjaF93YWl0X3Vu
dGlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNWQ4MzI2
OWVhZjQ3M2MwYjg0MTBmOGEwMTgyMTUzNDRlODU4MmFiLi43ZmQ0MDlmYjU4YmZlOGUyZDdhNzIw
MWNkNzJhMWQ2YTJjY2VjNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ1MSw2ICs0NTEsNyBAQAogCQk3OTUyMTIwMjFGNDI1ODg4MDBCRDY0MjEgLyog
U2luZ2xlUm9vdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNpbmds
ZVJvb3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTA1MDkzRDFGQjlE
Q0M1MDBCMzNGQjggLyogSlNPTlZhbHVlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU09OVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMDUwOTNF
MUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTT05WYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QTRENEFBQjI2QThERUZDMDAxMTgyRjEgLyogQ29kZVNpZ25TUEkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29kZVNpZ25TUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0E2RUJB
MzIyMDc0NkMzMzAwNEY5QzQ0IC8qIE1hY2hTZW5kUmlnaHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFjaFNlbmRSaWdodC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QTZFQkEzMzIwNzQ2QzM0MDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYWNoU2VuZFJpZ2h0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGMDIzQjMyMDYxRTE2QzAwQThFRkQ2IC8qIFByb2Nl
c3NQcml2aWxlZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJvY2Vzc1By
aXZpbGVnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMCw2ICsxNTIxLDcg
QEAKIAkJQ0U3M0UwMjMxOURDQjdBQjAwNTgwRDVDIC8qIGRhcndpbiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJN0E0RDRBQUIyNkE4REVGQzAwMTE4MkYx
IC8qIENvZGVTaWduU1BJLmggKi8sCiAJCQkJMTQ5MzNFMjEyMjhDMjJERjAwRjc5RTQ2IC8qIERh
dGFWYXVsdFNQSS5oICovLAogCQkJCUU0MzFDQzRBMjExODdBREIwMDBDOEEwNyAvKiBEaXNwYXRj
aFNQSS5oICovLAogCQkJCTkzRERFOTMxMUNEQzA1MkQwMEZEMzQ5MSAvKiBkeWxkU1BJLmggKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaCBiL1Nv
dXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oCmluZGV4IDEwMDQxNjdkMDI1OGQ2
OGYyNzZmOTZhZDliOTM2MmI4NTg5NzkzMDMuLmExNmM3YWNhMTgwYWY2YzkwMDFlZjkxZTRkZGY0
M2ZmNTRmZDhiNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0
eVNQSS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NzYsNyArNzYsOSBAQCBXVEZfRVhURVJOX0NfQkVHSU4KIAogU2VjVGFza1JlZiBTZWNUYXNrQ3Jl
YXRlV2l0aEF1ZGl0VG9rZW4oQ0ZBbGxvY2F0b3JSZWYsIGF1ZGl0X3Rva2VuX3QpOwogU2VjVGFz
a1JlZiBTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoQ0ZBbGxvY2F0b3JSZWYpOworQ0ZTdHJpbmdSZWYg
U2VjVGFza0NvcHlTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmLCBDRkVycm9yUmVmICopOwog
Q0ZUeXBlUmVmIFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudChTZWNUYXNrUmVmLCBDRlN0
cmluZ1JlZiBlbnRpdGxlbWVudCwgQ0ZFcnJvclJlZiopOwordWludDMyX3QgU2VjVGFza0dldENv
ZGVTaWduU3RhdHVzKFNlY1Rhc2tSZWYpOwogU2VjSWRlbnRpdHlSZWYgU2VjSWRlbnRpdHlDcmVh
dGUoQ0ZBbGxvY2F0b3JSZWYsIFNlY0NlcnRpZmljYXRlUmVmLCBTZWNLZXlSZWYpOwogU2VjQWNj
ZXNzQ29udHJvbFJlZiBTZWNBY2Nlc3NDb250cm9sQ3JlYXRlRnJvbURhdGEoQ0ZBbGxvY2F0b3JS
ZWYsIENGRGF0YVJlZiwgQ0ZFcnJvclJlZiopOwogQ0ZEYXRhUmVmIFNlY0FjY2Vzc0NvbnRyb2xD
b3B5RGF0YShTZWNBY2Nlc3NDb250cm9sUmVmKTsKQEAgLTg1LDEyICs4NywxMCBAQCBDRkRhdGFS
ZWYgU2VjS2V5Q29weVN1YmplY3RQdWJsaWNLZXlJbmZvKFNlY0tleVJlZik7CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8U2VjdXJpdHkvU2VjQXNuMVR5cGVzLmg+Ci1DRlN0cmluZ1Jl
ZiBTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgogZXh0ZXJuIGNvbnN0IFNlY0Fz
bjFUZW1wbGF0ZSBrU2VjQXNuMUFsZ29yaXRobUlEVGVtcGxhdGVbXTsKIGV4dGVybiBjb25zdCBT
ZWNBc24xVGVtcGxhdGUga1NlY0FzbjFTdWJqZWN0UHVibGljS2V5SW5mb1RlbXBsYXRlW107CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLXVpbnQzMl90IFNlY1Rhc2tHZXRDb2Rl
U2lnblN0YXR1cyhTZWNUYXNrUmVmKTsKICNlbmRpZgogCiAjaWYgSEFWRShTRUNfVFJVU1RfU0VS
SUFMSVpBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vQ29kZVNp
Z25TUEkuaCBiL1NvdXJjZS9XVEYvd3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEkuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNGRmMDE3MjExMWEzNGU2MDhjMjJjYzBlZTg1NGRhZDNjMGU1ODMyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oCkBAIC0wLDAg
KzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworI3By
YWdtYSBvbmNlCisKKyNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorCisjaW5jbHVkZSA8S2Vy
bmVsL2tlcm4vY3NfYmxvYnMuaD4KKworI2Vsc2UKKworI2RlZmluZSBDU19QTEFURk9STV9CSU5B
UlkgICAgICAgICAgMHgwNDAwMDAwMAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Db2RlU2lnbmluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlMzY2MDRmMTc5NTUyZmEzZjJhYzg3NGI5NDQz
ZTRjOTYyNDc1YzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Db2RlU2lnbmluZy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rh
cndpbi9YUENTUEkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFRoZXNlIGZ1bmN0aW9u
cyByZXR1cm4gYSBudWxsIHN0cmluZyBpZiB0aGUgcHJvY2VzcyBpcyB1bnNpZ25lZC4KK1N0cmlu
ZyBjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2VzcygpOworU3RyaW5nIGNvZGVT
aWduaW5nSWRlbnRpZmllcih4cGNfY29ubmVjdGlvbl90KTsKK2Jvb2wgY3VycmVudFByb2Nlc3NJ
c1BsYXRmb3JtQmluYXJ5KCk7CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb2RlU2lnbmluZ0lk
ZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNfY29ubmVjdGlvbl90KTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9Db2RlU2lnbmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5n
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjZkZDVjNTQxMThjNTcwYWE1ZjYyMjQ3NWJiOTczMjI5NWFhMDYzZjIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9Db2RlU2lnbmlu
Zy5tbQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCisKKyNpZiBQTEFURk9STShDT0NPQSkKKworI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQ
SS5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEkuaD4KKyNpbXBvcnQgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFN0cmlu
ZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoU2VjVGFza1JlZiB0YXNrKQoreworICAgIHJldHVybiBh
ZG9wdENGKFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIodGFzaywgbnVsbHB0cikpLmdldCgp
OworfQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFByb2Nlc3MoKQor
eworICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRDRihTZWNUYXNrQ3JlYXRl
RnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpLmdldCgpKTsKK30KKworU3RyaW5nIGNvZGVT
aWduaW5nSWRlbnRpZmllcih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgYXV0
byBwYWlyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlTdGF0dXMoY29u
bmVjdGlvbik7CisgICAgcmV0dXJuIHBhaXIuZmlyc3Q7Cit9CisKK2Jvb2wgY3VycmVudFByb2Nl
c3NJc1BsYXRmb3JtQmluYXJ5KCkKK3sKKyAgICBhdXRvIHRhc2sgPSBhZG9wdENGKFNlY1Rhc2tD
cmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CisgICAgcmV0dXJuIFNlY1Rhc2tH
ZXRDb2RlU2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKK30KKwor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1C
aW5hcnlTdGF0dXMoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAgIGF1ZGl0X3Rv
a2VuX3QgYXVkaXRUb2tlbjsKKyAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29u
bmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0Ny
ZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKTsKKyAg
ICBib29sIGlzUGxhdGZvcm1CaW5hcnkgPSBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXModGFzay5n
ZXQoKSkgJiBDU19QTEFURk9STV9CSU5BUlk7CisgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9
IGNvZGVTaWduaW5nSWRlbnRpZmllcih0YXNrLmdldCgpKTsKKyAgICByZXR1cm4gc3RkOjptYWtl
X3BhaXIoc2lnbmluZ0lkZW50aWZpZXIsIGlzUGxhdGZvcm1CaW5hcnkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvWFBDRW5kcG9pbnQubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5tbQppbmRleCA4ZDc4NmQ3YTEwMzU0YTBjYmRjZTJj
Y2M4NTBjOWM5MTI3NDg2NGNiLi45NWE1ZWI1ZjI0ODRmMDc2Nzk5ZmRhZjJlNGEyMzQ3NjY5OWJl
ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5tbQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw5ICsz
MCw3IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgotI2lt
cG9ydCA8S2VybmVsL2tlcm4vY3NfYmxvYnMuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogI2VuZGlmCiAKQEAgLTU1LDEwICs1Myw3IEBAIFhQQ0VuZHBvaW50OjpY
UENFbmRwb2ludCgpCiAgICAgICAgICAgICBpZiAocGlkICE9IGdldHBpZCgpICYmICFXVEY6Omhh
c0VudGl0bGVtZW50KGNvbm5lY3Rpb24uZ2V0KCksICJjb20uYXBwbGUucHJpdmF0ZS53ZWJraXQu
dXNlLXhwYy1lbmRwb2ludCIpKSB7CiAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJBdWRp
dCB0b2tlbiBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGVudGl0bGVtZW50IGNvbS5hcHBsZS5wcml2
YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50Iik7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAg
ICAgICAgICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKLSAgICAgICAgICAgICAgICB4cGNf
Y29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbi5nZXQoKSwgJmF1ZGl0VG9rZW4p
OwotICAgICAgICAgICAgICAgIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2Rl
U2lnblN0YXR1cyhhZG9wdENGKFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBhdWRpdFRva2VuKSkuZ2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOwotICAg
ICAgICAgICAgICAgIGF1dG8gc2lnbmluZ0lkZW50aWZpZXIgPSBjb2RlU2lnbmluZ0lkZW50aWZp
ZXIoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgYXV0byBbc2lnbmluZ0lkZW50
aWZpZXIsIGlzUGxhdGZvcm1CaW5hcnldID0gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZv
cm1CaW5hcnlTdGF0dXMoY29ubmVjdGlvbi5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICBpZiAo
IWlzUGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0YXJ0c1dpdGgoImNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CiAgICAgICAgICAgICAgICAgICAgIFdURkxvZ0Fs
d2F5cygiWFBDIGVuZHBvaW50IGRlbmllZCB0byBjb25uZWN0IHdpdGggdW5rbm93biBjbGllbnQi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDc2YjkxMDZhOGZlMWIzNWZjNTE4MjBjZGI4Y2ZkN2EwNWRkMDA5ZDEuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBwcm9jZXNz
IGlzIHVuc2lnbmVkLgotU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9j
ZXNzKCk7Ci1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QpOwot
Ci19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2RlU2lnbmluZy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmlu
Zy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyNjMxZmY5ZWI4MTA0MGU0Mjk0
NGU3NWU2NWM1MDY2MGMyYWJmNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KKysrIC9k
ZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgi
Ci0jaW1wb3J0ICJDb2RlU2lnbmluZy5oIgotCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKLQotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3Rm
L3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1zdGF0aWMgU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRp
ZmllcihTZWNUYXNrUmVmIHRhc2spCi17Ci0gICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0NvcHlT
aWduaW5nSWRlbnRpZmllcih0YXNrLCBudWxscHRyKSkuZ2V0KCk7Ci19Ci0KLVN0cmluZyBjb2Rl
U2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2VzcygpCi17Ci0gICAgcmV0dXJuIGNvZGVT
aWduaW5nSWRlbnRpZmllcihhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0
b3JEZWZhdWx0KSkuZ2V0KCkpOwotfQotCi1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKLXsKLSAgICBhdWRpdF90b2tlbl90IGF1ZGl0VG9r
ZW47Ci0gICAgeHBjX2Nvbm5lY3Rpb25fZ2V0X2F1ZGl0X3Rva2VuKGNvbm5lY3Rpb24sICZhdWRp
dFRva2VuKTsKLSAgICByZXR1cm4gY29kZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFz
a0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5n
ZXQoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gUExBVEZPUk0o
TUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDI5ZjdmZTA3ZGI2NmJkZTMwYTcxNWI1OWY3
MWU0ZjEzYmE1NTMzODMuLjc4ZmI0MjQxMjIzYjAzMjc1YTk2NmQ5Zjc1YWMwMGZjYTQ5YTdmNmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTEsNCArMSw0IEBACi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MSw2ICsxNjEsNyBAQCBTaGFyZWQvQ29jb2EvQVBJ
RGF0YUNvY29hLm1tCiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCiBTaGFyZWQvQ29jb2EvQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbQogU2hhcmVkL0NvY29hL0F1eGlsaWFyeVByb2Nlc3NDb2NvYS5t
bQorU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCiBTaGFyZWQvQ29jb2EvQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5tbQogU2hhcmVkL0NvY29hL0NvcmVUZXh0SGVscGVycy5tbQogU2hh
cmVkL0NvY29hL0RhdGFEZXRlY3Rpb25SZXN1bHQubW0KQEAgLTIwNSw3ICsyMDYsNiBAQCBTaGFy
ZWQvaW9zL1dlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0lPUy5tbQogU2hhcmVkL2lvcy9XZWJU
b3VjaEV2ZW50SU9TLmNwcAogCiBTaGFyZWQvbWFjL0F1eGlsaWFyeVByb2Nlc3NNYWMubW0KLVNo
YXJlZC9tYWMvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9tYWMvSGFuZ0RldGVjdGlvbkRpc2FibGVy
TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbQogU2hhcmVkL21h
Yy9OYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCmluZGV4IGVmNTUxOGFhZGIw
MmQ1YmY1Y2JmMTY3ZTEyNDA3ZWU5MDc0NzE1ZTcuLmJiMGEzMjQyMTY3NWI5ZWExZDg0YzM1NzU4
MjEyZjgzNmQ1ODliMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJX
ZWJQcm9jZXNzUHJveHkuaCIKIAogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVN1cHBvcnRTUEkuaCIK
KyNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCiAjaW1wb3J0ICJIaWdoUGVyZm9ybWFuY2VHUFVNYW5h
Z2VyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGguaCIK
QEAgLTMwNSwxNCArMzA2LDEzIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kQXVkaW9Db21w
b25lbnRSZWdpc3RyYXRpb25zKCkKICAgICB9KTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6
Omhhc0NvcnJlY3RQQUNFbnRpdGxlbWVudCgpCitib29sIFdlYlByb2Nlc3NQcm94eTo6bWVzc2Fn
ZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2VzcygpCiB7CiAgICAgaWYgKCFoYXNDb25uZWN0
aW9uKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSNpZiBIQVZFKFBBQ19TSEFSRURfUkVHSU9OX0lEKQogICAgIGF1dG8g
YXVkaXRUb2tlbiA9IGNvbm5lY3Rpb24oKS0+Z2V0QXVkaXRUb2tlbigpOwogICAgIGlmICghYXVk
aXRUb2tlbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTMyMSwxMiArMzIx
LDE5IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNDb3JyZWN0UEFDRW50aXRsZW1lbnQoKQog
ICAgIH0KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZPUk0oSU9TKQor
ICAgIC8vIEZJWE1FKHJkYXI6Ly84MDkwODgzMyk6IE9uIGlPUywgd2UgY2FuIG9ubHkgcGVyZm9y
bSB0aGUgYmVsb3cgY2hlY2tzIGZvciBwbGF0Zm9ybSBiaW5hcmllcyB1bnRpbCByZGFyOi8vODA5
MDg4MzMgaXMgZml4ZWQuCisgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnko
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIC8vIENvbmZpcm0gdGhhdCB0
aGUgY29ubmVjdGlvbiBpcyBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzOgotICAgIGlmICghV1RG
OjpoYXNFbnRpdGxlbWVudFZhbHVlKGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMu
c2hhcmVkX3JlZ2lvbl9pZCIsICJXZWJDb250ZW50IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoUHJvY2VzcywgIlByb2Nlc3MgaXMgbm90IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJv
Y2Vzcy4gUHJvY2VzcyBzaGFyZWRfcmVnaW9uX2lkIGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRv
IFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50
aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KSk7CisKKyAgICBpZiAoIWlzUGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0
YXJ0c1dpdGgoImNvbS5hcHBsZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CisgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFByb2Nlc3MsICJQcm9jZXNzIGlzIG5vdCBhbiBlbnRpdGxlZCBXZWJDb250
ZW50IHByb2Nlc3MuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICNl
bmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCAzMGZhNDIzN2NiZGU4ZjdjMDA2Mzg2ZjliNTczZDhlYWQ5MThk
OTU4Li4yMDlkYWNkYjVjZGNjNmU4MjYyMDYyYjlkNDM5MTc4NTk3ZTRjZDk5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24gcmVhc29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04oaGFzQ29ycmVjdFBBQ0VudGl0bGVt
ZW50KCksIHJlcGx5KHsgfSkpOworICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihtZXNzYWdl
U291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCksIHJlcGx5KHsgfSkpOwogICAgIG1fcHJv
Y2Vzc1Bvb2wtPmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVw
bHkpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAppbmRleCA3OTBkNzY1OTRlYzVmYzVmNDNhZWZiM2UyMjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMw
Yjc4NjQ0MTJlMjI3Yjc2NDEyODlkMmVjMDU4Y2Y3MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTMxLDcgKzUzMSw3IEBAIHByaXZhdGU6CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGJvb2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVt
ZW50KCk7CisgICAgYm9vbCBtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7
CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNXZWFrIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KaW5kZXggMzBm
OTYwMzI2MzVkNWU2YjQ0MTMyODdiNWZlMzhmNGNkYzJlOGMwZC4uNjJhMWRlNzllYTY5ZGUxNWQ4
YzczYWRhMmJiNTJkODBhYTkwYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMCBAQAogCiAjaWYgUExBVEZP
Uk0oTUFDKQogCisjaW1wb3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9h
cmRBY2Nlc3NXYXRjaGVyLmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2lt
cG9ydCA8c2lnbmFsLmg+CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgotI2ltcG9y
dCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNTIsNyArNTEsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2hvdWxkQWxsb3dOb25WYWxp
ZEluamVjdGVkQ29kZSgpIGNvbnN0CiAgICAgaWYgKCFpc1N5c3RlbVdlYktpdCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rh
c2tHZXRDb2RlU2lnblN0YXR1cyhhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0KSkuZ2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworICAgIHN0YXRpYyBi
b29sIGlzUGxhdGZvcm1CaW5hcnkgPSBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsK
ICAgICBpZiAoaXNQbGF0Zm9ybUJpbmFyeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMjQ2
MDZjYzVlMTVkMTgwOGY1NTkzMjM2MTU5OTM0ZDk3MWIyZjliLi43ZDc0MTE0YjA0OGJiMWZiNzUw
ZDc5ZTI0ZDQzNDY5MTFmYzM2NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAx
OwogCWNsYXNzZXMgPSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lv
biA9IDU0OwogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCkBAIC01OTk4LDcgKzU5OTgsNiBAQAogCQlGNDBCQkI0MDI1N0ZGNDZFMDA2NzQ2M0Eg
LyogR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlv
cy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJRjQxNENFMkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVByb2Nlc3ND
b2NvYS5tbTsgcGF0aCA9IGNvY29hL0dQVVByb2Nlc3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQxNENFMkMyNjlERTZFQTAwQkQyMTZBIC8qIFJlbW90ZVJlbmRlcmlu
Z0JhY2tlbmRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3Rh
dGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzM0YyMkEwRUZEMzAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVj
dGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzNDAyMkEwRUZE
MzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlv
cy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04MzU3LDYgKzgzNTYsOCBAQAogCQkJCUExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1
bWVudENvZGVyc0NvY29hLmggKi8sCiAJCQkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFy
Z3VtZW50Q29kZXJzQ29jb2EubW0gKi8sCiAJCQkJMUE2OThGMTcxRTQ5MTAyMjAwNjRFODgxIC8q
IEF1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbSAqLywKKwkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFF
RTUgLyogQ29kZVNpZ25pbmcuaCAqLywKKwkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyog
Q29kZVNpZ25pbmcubW0gKi8sCiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBs
ZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQy
ODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKIAkJCQkxQzczOUU4NzIz
NDdCRDBGMDBDNjIxRUMgLyogQ29yZVRleHRIZWxwZXJzLmggKi8sCkBAIC0xMDUzMCw4ICsxMDUz
MSw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBMTU3OTlBQzI1ODQ0MzMxMDA1MjgyMzYgLyog
TWVkaWFGb3JtYXRSZWFkZXIgKi8sCiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1
eGlsaWFyeVByb2Nlc3NNYWMubW0gKi8sCi0JCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8q
IENvZGVTaWduaW5nLmggKi8sCi0JCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLm1tICovLAogCQkJCTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0
aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5h
dGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywKIAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NC
RUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1hYy5tbSAqLywKQEAgLTExNzEyLDE0ICsxMTcx
MSw2IEBACiAJCQlwYXRoID0gY2FjaGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OwotCQlGNDE0Q0UyNzI2OURERTgwMDBCRDIxNkEgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQ
QlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAv
KiBHUFVQcm9jZXNzQ29jb2EubW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGNvY29hOwotCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJRjYzODk1NUExMzNCRjU3RDAwODk0MUQ1IC8q
IG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434040</attachid>
            <date>2021-07-22 15:16:40 -0700</date>
            <delta_ts>2021-07-27 14:32:19 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228116-20210722151639.patch</filename>
            <type>text/plain</type>
            <size>28360</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDFlOGIyNjIzNTI2ZDI1YzNkNjI3ZTlh
MzE0MWM3NDdlNGI0MmQyOTQuLjM2NmNjZDNiNTJmZGI3YTFkYTNmZWQ4YjkwNzdjZjUyMmMzOWIw
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjEtMDctMjEgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0NvY29hXSBX
ZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFJldmlld2VkIGJ5IFBlciBBcm5l
IFZvbGxhbi4KKworICAgICAgICBBZGQgbmV3IFNQSSBoZWFkZXIgZm9yIGNvZGUgc2lnbmluZyBm
ZWF0dXJlcy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaDogTW92ZSBzb21lIFNlY1Rhc2sgY2Fs
bHMgb3V0IG9mIFBMQVRGT1JNKE1BQykuCisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vQ29kZVNp
Z25TUEkuaDogQWRkZWQuCisKIDIwMjEtMDctMTYgIEFsZXhhbmRlciBNaWtoYXlsZW5rbyAgPGFs
ZXhtQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXVtXUEVdIFN1cHBvcnQgY29sb3Itc2NoZW1l
cyBDU1MgcHJvcGVydHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggOGVjYWU0OWNkZDYzNzI1YjdjYjgwMDFkMTYxMWY3
YzZjNTkxNTI1MC4uZmFhZjY2NjZlZTk3ZDdjODM5NDNiMDIzZGY4MGVmZDFlY2JmZWViZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMS0wNy0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjc4ODc3KSBbQ29jb2FdIFdl
YkF1dGhuIHN0b3BwZWQgd29ya2luZyBmb3Igbm9uLVNhZmFyaSBicm93c2VycyAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODExNgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vODA2OTM2MDc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGVyIEFybmUg
Vm9sbGFuLgorCisgICAgICAgIFdlIHNob3VsZCBub3QgYmUgdXNpbmcgdGhlIFBBQyBrZXkgdG8g
Y29uZmlybSBhIHZhbGlkIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB0aGUgc291cmNlIG9mCisgICAg
ICAgIFdlYkF1dGhuLXJlbGF0ZWQgbWVzc2FnZXMuIEluc3RlYWQsIHdlIHNob3VsZCBjb25maXJt
IHRoZSBtZXNzYWdlIHNvdXJjZSBpcyBhbiBBcHBsZS1zaWduZWQKKyAgICAgICAgZXhlY3V0YWJs
ZSwgYW5kIHRoYXQgdGhlIHNpZ25pbmluZyBpZGVudGl0eSBpcyBmb3IgdGhlIFdlYkNvbnRlbnQg
cHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db2RlU2lnbmluZy5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmguCisgICAgICAgICog
U2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tLgorICAgICAgICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lk
ZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JDdXJy
ZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBs
YXRmb3JtQmluYXJ5U3RhdHVzKTogQWRkZWQuCisgICAgICAgICogU2hhcmVkL0NvY29hL1hQQ0Vu
ZHBvaW50Lm1tOgorICAgICAgICAoV2ViS2l0OjpYUENFbmRwb2ludDo6WFBDRW5kcG9pbnQpOiBV
cGRhdGUgdG8gdXNlIG5ldyBtZXRob2QuCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6V2ViUHJvY2Vzc1Byb3h5OjpnZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9u
KTogVXBkYXRlIGZvciBuZXcgbWVzc2FnZSBjaGVjayBuYW1lLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKwogMjAyMS0wNy0yMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbQ29jb2FdIFNpbGVuY2UgdGVsZW1ldHJ5IG9uIE1TQ19tYWNoX3dhaXRf
dW50aWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1ZDgz
MjY5ZWFmNDczYzBiODQxMGY4YTAxODIxNTM0NGU4NTgyYWIuLjdmZDQwOWZiNThiZmU4ZTJkN2E3
MjAxY2Q3MmExZDZhMmNjZWM3NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNDUxLDYgKzQ1MSw3IEBACiAJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAv
KiBTaW5nbGVSb290R3JhcGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2lu
Z2xlUm9vdEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMDUwOTNEMUZC
OURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTT05WYWx1ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EwNTA5
M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNPTlZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdBNEQ0QUFCMjZBOERFRkMwMDExODJGMSAvKiBDb2RlU2lnblNQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb2RlU2lnblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTZF
QkEzMjIwNzQ2QzMzMDA0RjlDNDQgLyogTWFjaFNlbmRSaWdodC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNYWNoU2VuZFJpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY2hTZW5kUmlnaHQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUYwMjNCMzIwNjFFMTZDMDBBOEVGRDYgLyogUHJv
Y2Vzc1ByaXZpbGVnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNz
UHJpdmlsZWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIwLDYgKzE1MjEs
NyBAQAogCQlDRTczRTAyMzE5RENCN0FCMDA1ODBENUMgLyogZGFyd2luICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QTRENEFBQjI2QThERUZDMDAxMTgy
RjEgLyogQ29kZVNpZ25TUEkuaCAqLywKIAkJCQkxNDkzM0UyMTIyOEMyMkRGMDBGNzlFNDYgLyog
RGF0YVZhdWx0U1BJLmggKi8sCiAJCQkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3Bh
dGNoU1BJLmggKi8sCiAJCQkJOTNEREU5MzExQ0RDMDUyRDAwRkQzNDkxIC8qIGR5bGRTUEkuaCAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oIGIv
U291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKaW5kZXggMTAwNDE2N2QwMjU4
ZDY4ZjI3NmY5NmFkOWI5MzYyYjg1ODk3OTMwMy4uYTE2YzdhY2ExODBhZjZjOTAwMWVmOTFlNGRk
ZjQzZmY1NGZkOGI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmgKKysrIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03Niw3ICs3Niw5IEBAIFdURl9FWFRFUk5fQ19CRUdJTgogCiBTZWNUYXNrUmVmIFNlY1Rhc2tD
cmVhdGVXaXRoQXVkaXRUb2tlbihDRkFsbG9jYXRvclJlZiwgYXVkaXRfdG9rZW5fdCk7CiBTZWNU
YXNrUmVmIFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihDRkFsbG9jYXRvclJlZik7CitDRlN0cmluZ1Jl
ZiBTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7
CiBDRlR5cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENG
U3RyaW5nUmVmIGVudGl0bGVtZW50LCBDRkVycm9yUmVmKik7Cit1aW50MzJfdCBTZWNUYXNrR2V0
Q29kZVNpZ25TdGF0dXMoU2VjVGFza1JlZik7CiBTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNy
ZWF0ZShDRkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CiBTZWNB
Y2Nlc3NDb250cm9sUmVmIFNlY0FjY2Vzc0NvbnRyb2xDcmVhdGVGcm9tRGF0YShDRkFsbG9jYXRv
clJlZiwgQ0ZEYXRhUmVmLCBDRkVycm9yUmVmKik7CiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJv
bENvcHlEYXRhKFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwpAQCAtODUsMTIgKzg3LDEwIEBAIENGRGF0
YVJlZiBTZWNLZXlDb3B5U3ViamVjdFB1YmxpY0tleUluZm8oU2VjS2V5UmVmKTsKIAogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDxTZWN1cml0eS9TZWNBc24xVHlwZXMuaD4KLUNGU3RyaW5n
UmVmIFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIoU2VjVGFza1JlZiwgQ0ZFcnJvclJlZiAq
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCiBleHRlcm4gY29uc3QgU2Vj
QXNuMVRlbXBsYXRlIGtTZWNBc24xQWxnb3JpdGhtSURUZW1wbGF0ZVtdOwogZXh0ZXJuIGNvbnN0
IFNlY0FzbjFUZW1wbGF0ZSBrU2VjQXNuMVN1YmplY3RQdWJsaWNLZXlJbmZvVGVtcGxhdGVbXTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotdWludDMyX3QgU2VjVGFza0dldENv
ZGVTaWduU3RhdHVzKFNlY1Rhc2tSZWYpOwogI2VuZGlmCiAKICNpZiBIQVZFKFNFQ19UUlVTVF9T
RVJJQUxJWkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2Rl
U2lnblNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM0ZGYwMTcyMTExYTM0ZTYwOGMyMmNjMGVlODU0ZGFkM2MwZTU4MzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFyd2luL0NvZGVTaWduU1BJLmgKQEAgLTAs
MCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxL
ZXJuZWwva2Vybi9jc19ibG9icy5oPgorCisjZWxzZQorCisjZGVmaW5lIENTX1BMQVRGT1JNX0JJ
TkFSWSAgICAgICAgICAweDA0MDAwMDAwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0NvZGVTaWduaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUzNjYwNGYxNzk1NTJmYTNmMmFjODc0Yjk0
NDNlNGM5NjI0NzVjNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0NvZGVTaWduaW5nLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9zcGkv
ZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlc2UgZnVuY3Rp
b25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlzIHVuc2lnbmVkLgorU3Ry
aW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCk7CitTdHJpbmcgY29k
ZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QpOworYm9vbCBjdXJyZW50UHJvY2Vz
c0lzUGxhdGZvcm1CaW5hcnkoKTsKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvZGVTaWduaW5n
SWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKHhwY19jb25uZWN0aW9uX3QpOworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25p
bmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmRkNWM1NDExOGM1NzBhYTVmNjIyNDc1YmI5NzMyMjk1YWEwNjNm
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWdu
aW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZp
Zy5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oPgorI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3Ry
aW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNrUmVmIHRhc2spCit7CisgICAgcmV0dXJu
IGFkb3B0Q0YoU2VjVGFza0NvcHlTaWduaW5nSWRlbnRpZmllcih0YXNrLCBudWxscHRyKSkuZ2V0
KCk7Cit9CisKK1N0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2Vzcygp
Cit7CisgICAgcmV0dXJuIGNvZGVTaWduaW5nSWRlbnRpZmllcihhZG9wdENGKFNlY1Rhc2tDcmVh
dGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCkpOworfQorCitTdHJpbmcgY29k
ZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBh
dXRvIHBhaXIgPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhj
b25uZWN0aW9uKTsKKyAgICByZXR1cm4gcGFpci5maXJzdDsKK30KKworYm9vbCBjdXJyZW50UHJv
Y2Vzc0lzUGxhdGZvcm1CaW5hcnkoKQoreworICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFz
a0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICByZXR1cm4gU2VjVGFz
a0dldENvZGVTaWduU3RhdHVzKHRhc2suZ2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworfQor
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9y
bUJpbmFyeVN0YXR1cyh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgYXVkaXRf
dG9rZW5fdCBhdWRpdFRva2VuOworICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihj
b25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgYXV0byB0YXNrID0gYWRvcHRDRihTZWNUYXNr
Q3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXRUb2tlbikpOwor
ICAgIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1cyh0YXNr
LmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKKyAgICBhdXRvIHNpZ25pbmdJZGVudGlmaWVy
ID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHRhc2suZ2V0KCkpOworICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5tbSBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCmluZGV4IDhkNzg2ZDdhMTAzNTRhMGNiZGNl
MmNjYzg1MGM5YzkxMjc0ODY0Y2IuLjk1YTVlYjVmMjQ4NGYwNzY3OTlmZGFmMmU0YTIzNDc2Njk5
YmU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDkg
KzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0j
aW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAtNTUsMTAgKzUzLDcgQEAgWFBDRW5kcG9pbnQ6
OlhQQ0VuZHBvaW50KCkKICAgICAgICAgICAgIGlmIChwaWQgIT0gZ2V0cGlkKCkgJiYgIVdURjo6
aGFzRW50aXRsZW1lbnQoY29ubmVjdGlvbi5nZXQoKSwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC51c2UteHBjLWVuZHBvaW50IikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkF1
ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1lbnQgY29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAg
ICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwotICAgICAgICAgICAgICAgIHhw
Y19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLmdldCgpLCAmYXVkaXRUb2tl
bik7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gU2VjVGFza0dldENv
ZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9j
YXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSkgJiBDU19QTEFURk9STV9CSU5BUlk7Ci0g
ICAgICAgICAgICAgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9IGNvZGVTaWduaW5nSWRlbnRp
Zmllcihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIFtzaWduaW5nSWRl
bnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0
Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGlm
ICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2lnbmluZ0lkZW50aWZpZXIuc3RhcnRzV2l0aCgiY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50IikpIHsKICAgICAgICAgICAgICAgICAgICAgV1RGTG9n
QWx3YXlzKCJYUEMgZW5kcG9pbnQgZGVuaWVkIHRvIGNvbm5lY3Qgd2l0aCB1bmtub3duIGNsaWVu
dCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzZiOTEwNmE4ZmUxYjM1ZmM1MTgyMGNkYjhjZmQ3YTA1ZGQwMDlkMS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
Ci0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi0vLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYgdGhlIHByb2Nl
c3MgaXMgdW5zaWduZWQuCi1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFBy
b2Nlc3MoKTsKLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCk7
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWdu
aW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI2MzFmZjllYjgxMDQwZTQy
OTQ0ZTc1ZTY1YzUwNjYwYzJhYmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcu
aCIKLSNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQotCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3
dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBTdHJpbmcgY29kZVNpZ25pbmdJZGVu
dGlmaWVyKFNlY1Rhc2tSZWYgdGFzaykKLXsKLSAgICByZXR1cm4gYWRvcHRDRihTZWNUYXNrQ29w
eVNpZ25pbmdJZGVudGlmaWVyKHRhc2ssIG51bGxwdHIpKS5nZXQoKTsKLX0KLQotU3RyaW5nIGNv
ZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCkKLXsKLSAgICByZXR1cm4gY29k
ZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9j
YXRvckRlZmF1bHQpKS5nZXQoKSk7Ci19Ci0KLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIo
eHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQotewotICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRU
b2tlbjsKLSAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1
ZGl0VG9rZW4pOwotICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRDRihTZWNU
YXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXRUb2tlbikp
LmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjlmN2ZlMDdkYjY2YmRlMzBhNzE1YjU5
ZjcxZTRmMTNiYTU1MzM4My4uNzhmYjQyNDEyMjNiMDMyNzVhOTY2ZDlmNzVhYzAwZmNhNDlhN2Y2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAo
QykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDYgKzE2MSw3IEBAIFNoYXJlZC9Db2NvYS9B
UElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9B
cmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29h
Lm1tCitTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9Db2NvYS9Db21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLm1tCiBT
aGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMjA1LDcgKzIwNiw2IEBAIFNo
YXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCiBTaGFyZWQvaW9zL1dl
YlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQot
U2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJs
ZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQv
bWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggZWY1NTE4YWFk
YjAyZDViZjVjYmYxNjdlMTI0MDdlZTkwNzQ3MTVlNy4uZjdmMzg1ZDg0NDI2MWIzZTVjYmM0OWI5
MDA1NTYxMzQ1OGFjNGZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5o
IgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBvcnQgIkhpZ2hQZXJmb3JtYW5jZUdQVU1h
bmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5o
IgpAQCAtMzA1LDI4ICszMDYsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0Nv
bXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgIH0pOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94
eTo6aGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjptZXNz
YWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCkKIHsKICAgICBpZiAoIWhhc0Nvbm5l
Y3Rpb24oKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotI2lmIEhBVkUoUEFDX1NIQVJFRF9SRUdJT05fSUQpCi0gICAgYXV0
byBhdWRpdFRva2VuID0gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7Ci0gICAgaWYgKCFh
dWRpdFRva2VuKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihQcm9jZXNzLCAiVW5hYmxlIHRvIGdldCBwYXJlbnQgd2ViIHByb2Nlc3Mg
YXVkaXQgdG9rZW4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogI2lmIFVTRShB
UFBMRV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FKHJkYXI6
Ly84MDkwODgzMyk6IE9uIGlPUywgd2UgY2FuIG9ubHkgcGVyZm9ybSB0aGUgYmVsb3cgY2hlY2tz
IGZvciBwbGF0Zm9ybSBiaW5hcmllcyB1bnRpbCByZGFyOi8vODA5MDg4MzMgaXMgZml4ZWQuCisg
ICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisjZW5kaWYKKwogICAgIC8vIENvbmZpcm0gdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBm
cm9tIGEgV2ViQ29udGVudCBwcm9jZXNzOgotICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudFZh
bHVlKGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMuc2hhcmVkX3JlZ2lvbl9pZCIs
ICJXZWJDb250ZW50IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIlBy
b2Nlc3MgaXMgbm90IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4gUHJvY2VzcyBzaGFy
ZWRfcmVnaW9uX2lkIGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRvIFtzaWduaW5nSWRlbnRpZmll
ciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJp
bmFyeVN0YXR1cyhjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSk7CisKKyAgICBpZiAoIWlz
UGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0YXJ0c1dpdGgoImNvbS5hcHBs
ZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nl
c3MsICJQcm9jZXNzIGlzIG5vdCBhbiBlbnRpdGxlZCBXZWJDb250ZW50IHByb2Nlc3MuIik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCAzMGZhNDIzN2NiZGU4ZjdjMDA2Mzg2ZjliNTczZDhlYWQ5MThkOTU4Li4yMDlkYWNkYjVjZGNj
NmU4MjYyMDYyYjlkNDM5MTc4NTk3ZTRjZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29u
KQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0
aG5Qcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRXZWJBdXRo
blByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBNRVNTQUdF
X0NIRUNLX0NPTVBMRVRJT04oaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCksIHJlcGx5KHsgfSkp
OworICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNv
bnRlbnRQcm9jZXNzKCksIHJlcGx5KHsgfSkpOwogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFdlYkF1
dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3OTBkNzY1OTRl
YzVmYzVmNDNhZWZiM2UyMjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMwYjc4NjQ0MTJlMjI3Yjc2NDEy
ODlkMmVjMDU4Y2Y3MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaApAQCAtNTMxLDcgKzUzMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIGJvb2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCk7CisgICAgYm9vbCBt
ZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAgIGVu
dW0gY2xhc3MgSXNXZWFrIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KaW5kZXggMzBmOTYwMzI2MzVkNWU2YjQ0MTMy
ODdiNWZlMzhmNGNkYzJlOGMwZC4uNjJhMWRlNzllYTY5ZGUxNWQ4YzczYWRhMmJiNTJkODBhYTkw
YjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1By
b3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI5LDExICsyOSwxMCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0
ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgi
Ci0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8c2lnbmFsLmg+CiAj
aW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTIsNyArNTEsNyBAQCBi
b29sIFdlYlByb2Nlc3NQcm94eTo6c2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgpIGNv
bnN0CiAgICAgaWYgKCFpc1N5c3RlbVdlYktpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgc3RhdGljIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1
cyhhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0
KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworICAgIHN0YXRpYyBib29sIGlzUGxhdGZvcm1CaW5h
cnkgPSBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKICAgICBpZiAoaXNQbGF0Zm9y
bUJpbmFyeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMjQ2MDZjYzVlMTVkMTgwOGY1NTkz
MjM2MTU5OTM0ZDk3MWIyZjliLi43ZDc0MTE0YjA0OGJiMWZiNzUwZDc5ZTI0ZDQzNDY5MTFmYzM2
NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7CiAJ
fTsKLQlvYmplY3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVjdHMg
PSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC01OTk4LDcg
KzU5OTgsNiBAQAogCQlGNDBCQkI0MDI1N0ZGNDZFMDA2NzQ2M0EgLyogR1BVUHJvY2Vzc1dha2V1
cE1lc3NhZ2VBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vzc1dha2V1cE1lc3Nh
Z2VBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBC
REMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5
QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQx
NENFMkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVByb2Nlc3NDb2NvYS5tbTsgcGF0aCA9IGNv
Y29hL0dQVVByb2Nlc3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQx
NENFMkMyNjlERTZFQTAwQkQyMTZBIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29y
cmVjdGlvbkRhdGEuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1
dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlv
bkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzU3LDYgKzgzNTYsOCBA
QAogCQkJCUExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmgg
Ki8sCiAJCQkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0gKi8sCiAJCQkJMUE2OThGMTcxRTQ5MTAyMjAwNjRFODgxIC8qIEF1eGlsaWFyeVByb2Nlc3ND
b2NvYS5tbSAqLywKKwkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcu
aCAqLywKKwkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8s
CiAJCQkJMzdCRUM0REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXIuaCAqLywKIAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhh
bmRsZXJDYWxsQ2hlY2tlci5tbSAqLywKIAkJCQkxQzczOUU4NzIzNDdCRDBGMDBDNjIxRUMgLyog
Q29yZVRleHRIZWxwZXJzLmggKi8sCkBAIC0xMDUzMCw4ICsxMDUzMSw2IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBMTU3OTlBQzI1ODQ0MzMxMDA1MjgyMzYgLyogTWVkaWFGb3JtYXRSZWFkZXIg
Ki8sCiAJCQkJOUY1NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMu
bW0gKi8sCi0JCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8s
Ci0JCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAogCQkJ
CTFBQzc1QTFDMUIzMzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0g
Ki8sCiAJCQkJMkQ1MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVu
dE1hYy5tbSAqLywKIAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5
Ym9hcmRFdmVudE1hYy5tbSAqLywKQEAgLTExNzEyLDE0ICsxMTcxMSw2IEBACiAJCQlwYXRoID0g
Y2FjaGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlGNDE0Q0UyNzI2OURE
RTgwMDBCRDIxNkEgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxk
cmVuID0gKAotCQkJCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2Eu
bW0gKi8sCi0JCQkpOwotCQkJbmFtZSA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKLQkJfTsKIAkJRjYzODk1NUExMzNCRjU3RDAwODk0MUQ1IC8qIG1hYyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434318</attachid>
            <date>2021-07-27 14:32:25 -0700</date>
            <delta_ts>2021-07-28 11:11:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210727143224.patch</filename>
            <type>text/plain</type>
            <size>28544</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NGEzZjBlYmEwYjlhOWFkNmMxYjIx
YTlmYTUzYzAwMDJmZTRlODIuLmQ1ZWNhNDNlMzJhMDQzMjAzNzRjZWFmZDJjZWViMjk3NWNhMmJi
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjcgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0Nv
Y29hXSBXZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFBhdGNoIGJ5IEJyZW50
IEZ1bGdoYW0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBTUEkgaGVhZGVyIGZvciBjb2RlIHNpZ25pbmcgZmVhdHVyZXMuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg6CisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEku
aDogQWRkZWQuCisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5Mwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiYzhlYzczMzU5ZjZkZTMwM2MyMDA2ZmJlYmRkYWJjY2Y1MTdlOTZmLi4zN2Fj
NThhMTU4YjdkZWM5NWQzNGUzZmZkMDI3YzNmYTYxZmVjNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDIxLTA3LTI3ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2ViQXV0aG4gc3Rv
cHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MDY5MzYwNz4KKworICAgICAgICBQYXRjaCBieSBCcmVudCBGdWxnaGFtLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBub3Qg
YmUgdXNpbmcgdGhlIFBBQyBrZXkgdG8gY29uZmlybSBhIHZhbGlkIFdlYkNvbnRlbnQgcHJvY2Vz
cyBpcyB0aGUgc291cmNlIG9mCisgICAgICAgIFdlYkF1dGhuLXJlbGF0ZWQgbWVzc2FnZXMuIElu
c3RlYWQsIHdlIHNob3VsZCBjb25maXJtIHRoZSBtZXNzYWdlIHNvdXJjZSBpcyBhbiBBcHBsZS1z
aWduZWQKKyAgICAgICAgZXhlY3V0YWJsZSwgYW5kIHRoYXQgdGhlIHNpZ25pbmluZyBpZGVudGl0
eSBpcyBmb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9Db2RlU2lnbmluZy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
ZGVTaWduaW5nLmguCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tLgorICAgICAg
ICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0Ojpjb2Rl
U2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmN1
cnJlbnRQcm9jZXNzSXNQbGF0Zm9ybUJpbmFyeSk6CisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWdu
aW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKToKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvWFBDRW5kcG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ0VuZHBvaW50OjpYUENF
bmRwb2ludCk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTA3LTI3ICBTYWFnYXIgSmhhICA8c2FhZ2FyQHNhYWdhcmpoYS5jb20+
CiAKICAgICAgICAgRml4IFdlYlByb2Nlc3Mgc2FuZGJveCBwcm9maWxlIHdoZW4gRU5BQkxFX1NB
TkRCT1hfTUVTU0FHRV9GSUxURVIgaXMgZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGM1ZDgzMjY5ZWFmNDczYzBiODQxMGY4YTAxODIxNTM0NGU4
NTgyYWIuLjdmZDQwOWZiNThiZmU4ZTJkN2E3MjAxY2Q3MmExZDZhMmNjZWM3NTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDUxLDYgKzQ1MSw3IEBACiAJ
CTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdBMDUwOTNEMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05WYWx1ZXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1
ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTlZhbHVlcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNEQ0QUFCMjZBOERFRkMwMDExODJG
MSAvKiBDb2RlU2lnblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU2lnblNQSS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QTZFQkEzMjIwNzQ2QzMzMDA0RjlDNDQgLyogTWFjaFNl
bmRSaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNoU2VuZFJpZ2h0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0
NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1hY2hTZW5kUmlnaHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUYw
MjNCMzIwNjFFMTZDMDBBOEVGRDYgLyogUHJvY2Vzc1ByaXZpbGVnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzUHJpdmlsZWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTIwLDYgKzE1MjEsNyBAQAogCQlDRTczRTAyMzE5RENCN0FCMDA1ODBE
NUMgLyogZGFyd2luICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk3QTRENEFBQjI2QThERUZDMDAxMTgyRjEgLyogQ29kZVNpZ25TUEkuaCAqLywKIAkJCQkx
NDkzM0UyMTIyOEMyMkRGMDBGNzlFNDYgLyogRGF0YVZhdWx0U1BJLmggKi8sCiAJCQkJRTQzMUND
NEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJLmggKi8sCiAJCQkJOTNEREU5MzExQ0RD
MDUyRDAwRkQzNDkxIC8qIGR5bGRTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmgKaW5kZXggMTAwNDE2N2QwMjU4ZDY4ZjI3NmY5NmFkOWI5MzYyYjg1ODk3OTMwMy4u
YTE2YzdhY2ExODBhZjZjOTAwMWVmOTFlNGRkZjQzZmY1NGZkOGI1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKKysrIGIvU291cmNlL1dURi93dGYv
c3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw3ICs3Niw5IEBAIFdURl9FWFRFUk5fQ19C
RUdJTgogCiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihDRkFsbG9jYXRv
clJlZiwgYXVkaXRfdG9rZW5fdCk7CiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihD
RkFsbG9jYXRvclJlZik7CitDRlN0cmluZ1JlZiBTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVy
KFNlY1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7CiBDRlR5cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZv
ckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0bGVtZW50LCBDRkVycm9y
UmVmKik7Cit1aW50MzJfdCBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXMoU2VjVGFza1JlZik7CiBT
ZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgU2VjQ2VydGlm
aWNhdGVSZWYsIFNlY0tleVJlZik7CiBTZWNBY2Nlc3NDb250cm9sUmVmIFNlY0FjY2Vzc0NvbnRy
b2xDcmVhdGVGcm9tRGF0YShDRkFsbG9jYXRvclJlZiwgQ0ZEYXRhUmVmLCBDRkVycm9yUmVmKik7
CiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlEYXRhKFNlY0FjY2Vzc0NvbnRyb2xSZWYp
OwpAQCAtODUsMTIgKzg3LDEwIEBAIENGRGF0YVJlZiBTZWNLZXlDb3B5U3ViamVjdFB1YmxpY0tl
eUluZm8oU2VjS2V5UmVmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxTZWN1cml0
eS9TZWNBc24xVHlwZXMuaD4KLUNGU3RyaW5nUmVmIFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZp
ZXIoU2VjVGFza1JlZiwgQ0ZFcnJvclJlZiAqKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOCiBleHRlcm4gY29uc3QgU2VjQXNuMVRlbXBsYXRlIGtTZWNBc24xQWxnb3JpdGht
SURUZW1wbGF0ZVtdOwogZXh0ZXJuIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBrU2VjQXNuMVN1Ympl
Y3RQdWJsaWNLZXlJbmZvVGVtcGxhdGVbXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAotdWludDMyX3QgU2VjVGFza0dldENvZGVTaWduU3RhdHVzKFNlY1Rhc2tSZWYpOwogI2Vu
ZGlmCiAKICNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJQUxJWkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oIGIvU291cmNlL1dURi93dGYvc3Bp
L2Rhcndpbi9Db2RlU2lnblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZGYwMTcyMTExYTM0ZTYwOGMyMmNj
MGVlODU0ZGFkM2MwZTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkv
ZGFyd2luL0NvZGVTaWduU1BJLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9J
TlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgorCisjZWxz
ZQorCisjZGVmaW5lIENTX1BMQVRGT1JNX0JJTkFSWSAgICAgICAgICAweDA0MDAwMDAwCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NWUzNjYwNGYxNzk1NTJmYTNmMmFjODc0Yjk0NDNlNGM5NjI0NzVjNQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKQEAgLTAsMCArMSwz
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRo
ZSBwcm9jZXNzIGlzIHVuc2lnbmVkLgorU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1
cnJlbnRQcm9jZXNzKCk7CitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0
aW9uX3QpOworYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKK3N0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3Rh
dHVzKHhwY19jb25uZWN0aW9uX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjJjNjk1ZWMzMmY0
OThhNGM5ZWQ1ZDc3MTYzOTA2MjQ5ZjA2NWFlOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIK
KworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJEZWZhdWx0V2ViQnJvd3NlckNoZWNr
cy5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9T
ZWN1cml0eVNQSS5oPgorI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEkuaD4KKyNp
bXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3Rh
dGljIFN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoU2VjVGFza1JlZiB0YXNrKQoreworICAg
IHJldHVybiBhZG9wdENGKFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIodGFzaywgbnVsbHB0
cikpLmdldCgpOworfQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFBy
b2Nlc3MoKQoreworICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRDRihTZWNU
YXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9yRGVmYXVsdCkpLmdldCgpKTsKK30KKworU3Ry
aW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcih4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7
CisgICAgYXV0byBwYWlyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5kUGxhdGZvcm1CaW5hcnlT
dGF0dXMoY29ubmVjdGlvbik7CisgICAgcmV0dXJuIHBhaXIuZmlyc3Q7Cit9CisKK2Jvb2wgY3Vy
cmVudFByb2Nlc3NJc1BsYXRmb3JtQmluYXJ5KCkKK3sKKyAgICBhdXRvIHRhc2sgPSBhZG9wdENG
KFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSk7CisgICAgcmV0dXJu
IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFS
WTsKK30KKworc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29kZVNpZ25pbmdJZGVudGlmaWVyQW5k
UGxhdGZvcm1CaW5hcnlTdGF0dXMoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQoreworICAg
IGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKKyAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRf
dG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOworICAgIGF1dG8gdGFzayA9IGFkb3B0Q0Yo
U2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9r
ZW4pKTsKKyAgICBib29sIGlzUGxhdGZvcm1CaW5hcnkgPSBpc1J1bm5pbmdUZXN0KFdlYkNvcmU6
OmFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcigpKSB8fCAoU2VjVGFza0dldENvZGVTaWduU3Rh
dHVzKHRhc2suZ2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZKTsKKyAgICBhdXRvIHNpZ25pbmdJ
ZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHRhc2suZ2V0KCkpOworICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENFbmRwb2ludC5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCmluZGV4IDhkNzg2ZDdhMTAz
NTRhMGNiZGNlMmNjYzg1MGM5YzkxMjc0ODY0Y2IuLjk1YTVlYjVmMjQ4NGYwNzY3OTlmZGFmMmU0
YTIzNDc2Njk5YmU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQ
Q0VuZHBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50
Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTMwLDkgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQgIkNvZGVTaWdu
aW5nLmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAtNTUsMTAgKzUzLDcgQEAgWFBD
RW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKICAgICAgICAgICAgIGlmIChwaWQgIT0gZ2V0cGlkKCkg
JiYgIVdURjo6aGFzRW50aXRsZW1lbnQoY29ubmVjdGlvbi5nZXQoKSwgImNvbS5hcHBsZS5wcml2
YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dB
bHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1lbnQgY29t
LmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKTsKICNpZiBQTEFURk9STShN
QUMpCi0gICAgICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOwotICAgICAgICAg
ICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLmdldCgpLCAm
YXVkaXRUb2tlbik7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gU2Vj
VGFza0dldENvZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2Vu
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSkgJiBDU19QTEFURk9STV9C
SU5BUlk7Ci0gICAgICAgICAgICAgICAgYXV0byBzaWduaW5nSWRlbnRpZmllciA9IGNvZGVTaWdu
aW5nSWRlbnRpZmllcihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIFtz
aWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZp
ZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uLmdldCgpKTsKIAogICAgICAgICAg
ICAgICAgIGlmICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2lnbmluZ0lkZW50aWZpZXIuc3RhcnRz
V2l0aCgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IikpIHsKICAgICAgICAgICAgICAgICAg
ICAgV1RGTG9nQWx3YXlzKCJYUEMgZW5kcG9pbnQgZGVuaWVkIHRvIGNvbm5lY3Qgd2l0aCB1bmtu
b3duIGNsaWVudCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVT
aWduaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiOTEwNmE4ZmUxYjM1ZmM1MTgyMGNkYjhjZmQ3YTA1
ZGQwMDlkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0x
LDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi0vLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYg
dGhlIHByb2Nlc3MgaXMgdW5zaWduZWQuCi1TdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9y
Q3VycmVudFByb2Nlc3MoKTsKLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5l
Y3Rpb25fdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L0NvZGVTaWduaW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI2MzFmZjll
YjgxMDQwZTQyOTQ0ZTc1ZTY1YzUwNjYwYzJhYmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmlu
Zy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0KLSNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCi0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0j
aW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRpYyBTdHJpbmcgY29kZVNp
Z25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYgdGFzaykKLXsKLSAgICByZXR1cm4gYWRvcHRDRihT
ZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKHRhc2ssIG51bGxwdHIpKS5nZXQoKTsKLX0KLQot
U3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCkKLXsKLSAgICBy
ZXR1cm4gY29kZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxm
KGtDRkFsbG9jYXRvckRlZmF1bHQpKS5nZXQoKSk7Ci19Ci0KLVN0cmluZyBjb2RlU2lnbmluZ0lk
ZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQotewotICAgIGF1ZGl0X3Rva2Vu
X3QgYXVkaXRUb2tlbjsKLSAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVj
dGlvbiwgJmF1ZGl0VG9rZW4pOwotICAgIHJldHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRv
cHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVk
aXRUb2tlbikpLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjlmN2ZlMDdkYjY2YmRl
MzBhNzE1YjU5ZjcxZTRmMTNiYTU1MzM4My4uNzhmYjQyNDEyMjNiMDMyNzVhOTY2ZDlmNzVhYzAw
ZmNhNDlhN2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDYgKzE2MSw3IEBAIFNoYXJl
ZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KIFNoYXJl
ZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJv
Y2Vzc0NvY29hLm1tCitTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KIFNoYXJlZC9Db2NvYS9D
b21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxw
ZXJzLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5tbQpAQCAtMjA1LDcgKzIw
Niw2IEBAIFNoYXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCiBTaGFy
ZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vz
c01hYy5tbQotU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0
aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1t
CiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXgg
ZWY1NTE4YWFkYjAyZDViZjVjYmYxNjdlMTI0MDdlZTkwNzQ3MTVlNy4uNjgzYzhjZDg0MTg5ZGE4
YmQ0N2VlOTQ5MzlhZDdkMDIyZDVmYmZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3Vw
cG9ydFNQSS5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBvcnQgIkhpZ2hQZXJmb3Jt
YW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmpl
Y3RHcmFwaC5oIgpAQCAtMzA1LDI4ICszMDYsMjcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNl
bmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgIH0pOwogfQogCi1ib29sIFdlYlBy
b2Nlc3NQcm94eTo6aGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCkKK2Jvb2wgV2ViUHJvY2Vzc1By
b3h5OjptZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCkKIHsKICAgICBpZiAo
IWhhc0Nvbm5lY3Rpb24oKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIEhBVkUoUEFDX1NIQVJFRF9SRUdJT05fSUQp
Ci0gICAgYXV0byBhdWRpdFRva2VuID0gY29ubmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7Ci0g
ICAgaWYgKCFhdWRpdFRva2VuKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiVW5hYmxlIHRvIGdldCBwYXJlbnQgd2Vi
IHByb2Nlc3MgYXVkaXQgdG9rZW4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQog
I2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJ
WE1FKHJkYXI6Ly84MDkwODgzMyk6IE9uIGlPUywgd2UgY2FuIG9ubHkgcGVyZm9ybSB0aGUgYmVs
b3cgY2hlY2tzIGZvciBwbGF0Zm9ybSBiaW5hcmllcyB1bnRpbCByZGFyOi8vODA5MDg4MzMgaXMg
Zml4ZWQuCisgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIC8vIENvbmZpcm0gdGhhdCB0aGUgY29ubmVj
dGlvbiBpcyBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzOgotICAgIGlmICghV1RGOjpoYXNFbnRp
dGxlbWVudFZhbHVlKGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMuc2hhcmVkX3Jl
Z2lvbl9pZCIsICJXZWJDb250ZW50IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJv
Y2VzcywgIlByb2Nlc3MgaXMgbm90IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4gUHJv
Y2VzcyBzaGFyZWRfcmVnaW9uX2lkIGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRvIFtzaWduaW5n
SWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQ
bGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSk7CisgICAg
CisgICAgaWYgKCFpc1BsYXRmb3JtQmluYXJ5IHx8ICFzaWduaW5nSWRlbnRpZmllci5zdGFydHNX
aXRoKCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiKSkgeworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUihQcm9jZXNzLCAiUHJvY2VzcyBpcyBub3QgYW4gZW50aXRsZWQgV2ViQ29udGVudCBw
cm9jZXNzLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotI2VuZGlmCiAjZW5kaWYK
IAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggMzFkOTJjNjNkN2NmZjEzMGRmYTBkNDBlYzM0MDczNDc3ODg4ODUwNC4u
MWQ2YjlkYTBkZmEzZDg0OGFhZjVjMjQ1MGVmMzQ4NWI2NDBmOTYyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC04MjUsNyArODI1LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmdwdVByb2Nlc3NFeGl0ZWQoR1BVUHJvY2Vzc1Rlcm1pbmF0aW9u
UmVhc29uIHJlYXNvbikKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmdldFdlYkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
Ci0gICAgTUVTU0FHRV9DSEVDS19DT01QTEVUSU9OKGhhc0NvcnJlY3RQQUNFbnRpdGxlbWVudCgp
LCByZXBseSh7IH0pKTsKKyAgICBNRVNTQUdFX0NIRUNLX0NPTVBMRVRJT04obWVzc2FnZVNvdXJj
ZUlzVmFsaWRXZWJDb250ZW50UHJvY2VzcygpLCByZXBseSh7IH0pKTsKICAgICBtX3Byb2Nlc3NQ
b29sLT5nZXRXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uKCp0aGlzLCBXVEZNb3ZlKHJlcGx5KSk7
CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5k
ZXggNzkwZDc2NTk0ZWM1ZmM1ZjQzYWVmYjNlMjI0YTQ5MmQ0NjU4ZTUzNi4uZjQxYmUzMGI3ODY0
NDEyZTIyN2I3NjQxMjg5ZDJlYzA1OGNmNzE3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTUzMSw3ICs1MzEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBib29sIGhhc0NvcnJlY3RQQUNFbnRpdGxlbWVudCgp
OworICAgIGJvb2wgbWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2VzcygpOwogI2Vu
ZGlmCiAKICAgICBlbnVtIGNsYXNzIElzV2VhayB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDMwZjk2MDMy
NjM1ZDVlNmI0NDEzMjg3YjVmZTM4ZjRjZGMyZThjMGQuLjYyYTFkZTc5ZWE2OWRlMTVkOGM3M2Fk
YTJiYjUyZDgwYWE5MGI1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDExLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMTAgQEAKIAogI2lmIFBMQVRGT1JNKE1B
QykKIAorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBvcnQgIldLRnVsbEtleWJvYXJkQWNj
ZXNzV2F0Y2hlci5oIgotI2ltcG9ydCA8S2VybmVsL2tlcm4vY3NfYmxvYnMuaD4KICNpbXBvcnQg
PHNpZ25hbC5oPgogI2ltcG9ydCA8d3RmL1Byb2Nlc3NQcml2aWxlZ2UuaD4KLSNpbXBvcnQgPHd0
Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTUy
LDcgKzUxLDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJveHk6OnNob3VsZEFsbG93Tm9uVmFsaWRJbmpl
Y3RlZENvZGUoKSBjb25zdAogICAgIGlmICghaXNTeXN0ZW1XZWJLaXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIHN0YXRpYyBib29sIGlzUGxhdGZvcm1CaW5hcnkgPSBTZWNUYXNrR2V0
Q29kZVNpZ25TdGF0dXMoYWRvcHRDRihTZWNUYXNrQ3JlYXRlRnJvbVNlbGYoa0NGQWxsb2NhdG9y
RGVmYXVsdCkpLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKKyAgICBzdGF0aWMgYm9vbCBp
c1BsYXRmb3JtQmluYXJ5ID0gY3VycmVudFByb2Nlc3NJc1BsYXRmb3JtQmluYXJ5KCk7CiAgICAg
aWYgKGlzUGxhdGZvcm1CaW5hcnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzNlYjAyODJm
ZGE3ZmQ5MjI5ZWQ0ZmI1ZTEzZWMwMjYyYTExNWZiZC4uYWFhYzUwZTdjN2IwM2Y2ZTU0MjQyYThm
NmJjN2JjZmUxNTg0ZGY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAlj
bGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1
NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LwpAQCAtNjAwMCw3ICs2MDAwLDYgQEAKIAkJRjQwQkJCNDAyNTdGRjQ2RTAwNjc0NjNBIC8qIEdQ
VVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdQVVByb2Nl
c3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHBhdGggPSBpb3MvV2Vi
QXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29jb2EubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBBUElBdHRhY2htZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVQcm9jZXNzQ29jb2Eu
bW07IHBhdGggPSBjb2NvYS9HUFVQcm9jZXNzQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MTRDRTJDMjY5REU2RUEwMEJEMjE2QSAvKiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzNGMjJBMEVGRDMwMEQyRkIzQSAv
KiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmg7IHBhdGggPSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25E
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzQwMjJBMEVGRDMwMEQy
RkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGggPSBpb3MvV2Vi
QXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM2
MSw2ICs4MzYwLDggQEAKIAkJCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRD
b2RlcnNDb2NvYS5oICovLAogCQkJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLm1tICovLAogCQkJCTFBNjk4RjE3MUU0OTEwMjIwMDY0RTg4MSAvKiBBdXhp
bGlhcnlQcm9jZXNzQ29jb2EubW0gKi8sCisJCQkJQ0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8q
IENvZGVTaWduaW5nLmggKi8sCisJCQkJQ0UxMUFENEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVT
aWduaW5nLm1tICovLAogCQkJCTM3QkVDNERGMTk0OTE0ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmggKi8sCiAJCQkJMzdCRUM0REUxOTQ5MTQ4NjAwOEI0Mjg2IC8q
IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIubW0gKi8sCiAJCQkJMUM3MzlFODcyMzQ3QkQw
RjAwQzYyMUVDIC8qIENvcmVUZXh0SGVscGVycy5oICovLApAQCAtMTA1MzQsOCArMTA1MzUsNiBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE1Nzk5QUMyNTg0NDMzMTAwNTI4MjM2IC8qIE1lZGlh
Rm9ybWF0UmVhZGVyICovLAogCQkJCTlGNTRGODhFMTY0ODhFODcwMDdERjgxQSAvKiBBdXhpbGlh
cnlQcm9jZXNzTWFjLm1tICovLAotCQkJCUNFMTFBRDUxMUNCQzQ4MkYwMDY4MUVFNSAvKiBDb2Rl
U2lnbmluZy5oICovLAotCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4MUVFNSAvKiBDb2RlU2lnbmlu
Zy5tbSAqLywKIAkJCQkxQUM3NUExQzFCMzM2OTVFMDA1Njc0NUIgLyogSGFuZ0RldGVjdGlvbkRp
c2FibGVyTWFjLm1tICovLAogCQkJCTJENTAzNjVEMUJDQzc5M0YwMEUyMEJCMyAvKiBOYXRpdmVX
ZWJHZXN0dXJlRXZlbnRNYWMubW0gKi8sCiAJCQkJQzAyQkZGMUQxMjUxNTAyRTAwOUNDQkVBIC8q
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0gKi8sCkBAIC0xMTcxNiwxNCArMTE3MTUsNiBA
QAogCQkJcGF0aCA9IGNhY2hlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJ
RjQxNENFMjcyNjlEREU4MDAwQkQyMTZBIC8qIGNvY29hICovID0gewotCQkJaXNhID0gUEJYR3Jv
dXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEgLyogR1BV
UHJvY2Vzc0NvY29hLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBjb2NvYTsKLQkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY2Mzg5NTVBMTMzQkY1N0QwMDg5NDFENSAvKiBtYWMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434440</attachid>
            <date>2021-07-28 11:11:16 -0700</date>
            <delta_ts>2021-07-29 14:13:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-228116-20210728111115.patch</filename>
            <type>text/plain</type>
            <size>28633</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ1NGEzZjBlYmEwYjlhOWFkNmMxYjIx
YTlmYTUzYzAwMDJmZTRlODIuLjVjNDE0OTlmZGU4MzA2OTU3YTEzYzI5NWQyMzdlMGY3NDJiYTU5
MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjggIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0Nv
Y29hXSBXZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFBhdGNoIGJ5IEJyZW50
IEZ1bGdoYW0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIG5ldyBTUEkgaGVhZGVyIGZvciBjb2RlIHNpZ25pbmcgZmVhdHVyZXMuCisKKyAgICAg
ICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvc3BpL2Nv
Y29hL1NlY3VyaXR5U1BJLmg6CisgICAgICAgICogd3RmL3NwaS9kYXJ3aW4vQ29kZVNpZ25TUEku
aDogQWRkZWQuCisKIDIwMjEtMDctMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KIAogICAgICAgICBVbnJldmlld2VkLCBzcGVjdWxhdGl2ZSByZXZlcnQgb2YgcjI4MDE5Mwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCA0OGFkOGNmODRjMWU2NmNhZjk0YzE2OTI2YmE0ZWVjNjhjMzI2Y2ZkLi44ZWNi
YjYxZmEwYzQ1ODI5Zjk5NzZlYTE3MTExMjhhZTE0YjgxZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDIxLTA3LTI4ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNzg4NzcpIFtDb2NvYV0gV2ViQXV0aG4gc3Rv
cHBlZCB3b3JraW5nIGZvciBub24tU2FmYXJpIGJyb3dzZXJzIAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI4MTE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS84MDY5MzYwNz4KKworICAgICAgICBQYXRjaCBieSBCcmVudCBGdWxnaGFtLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHNob3VsZCBub3Qg
YmUgdXNpbmcgdGhlIFBBQyBrZXkgdG8gY29uZmlybSBhIHZhbGlkIFdlYkNvbnRlbnQgcHJvY2Vz
cyBpcyB0aGUgc291cmNlIG9mCisgICAgICAgIFdlYkF1dGhuLXJlbGF0ZWQgbWVzc2FnZXMuIElu
c3RlYWQsIHdlIHNob3VsZCBjb25maXJtIHRoZSBtZXNzYWdlIHNvdXJjZSBpcyBhbiBBcHBsZS1z
aWduZWQKKyAgICAgICAgZXhlY3V0YWJsZSwgYW5kIHRoYXQgdGhlIHNpZ25pbmluZyBpZGVudGl0
eSBpcyBmb3IgdGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Db2Nv
YS9Db2RlU2lnbmluZy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0Nv
ZGVTaWduaW5nLmguCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tLgorICAgICAg
ICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0Ojpjb2Rl
U2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmN1
cnJlbnRQcm9jZXNzSXNQbGF0Zm9ybUJpbmFyeSk6CisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWdu
aW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKToKKyAgICAgICAgKiBTaGFyZWQv
Q29jb2EvWFBDRW5kcG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ0VuZHBvaW50OjpYUENF
bmRwb2ludCk6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UHJvY2Vzc1Byb3h5TWFjLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIxLTA3LTI4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgV2ViU29ja2V0OiBTYWZhcmkgb24gaU9TIDE1IGJldGEgMyBp
cyBzZW5kaW5nIGludmFsaWQgY2xvc2UgZnJhbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGM1ZDgzMjY5ZWFmNDczYzBiODQxMGY4YTAxODIxNTM0NGU4NTgy
YWIuLjdmZDQwOWZiNThiZmU4ZTJkN2E3MjAxY2Q3MmExZDZhMmNjZWM3NTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDUxLDYgKzQ1MSw3IEBACiAJCTc5
NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTdBMDUwOTNEMUZCOURDQzUwMEIzM0ZCOCAvKiBKU09OVmFsdWVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05WYWx1ZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4IC8qIEpTT05WYWx1ZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNPTlZhbHVlcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNEQ0QUFCMjZBOERFRkMwMDExODJGMSAv
KiBDb2RlU2lnblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU2lnblNQSS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QTZFQkEzMjIwNzQ2QzMzMDA0RjlDNDQgLyogTWFjaFNlbmRS
aWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYWNoU2VuZFJpZ2h0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNkVCQTMzMjA3NDZDMzQwMDRGOUM0NCAv
KiBNYWNoU2VuZFJpZ2h0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE1hY2hTZW5kUmlnaHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUYwMjNC
MzIwNjFFMTZDMDBBOEVGRDYgLyogUHJvY2Vzc1ByaXZpbGVnZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQcm9jZXNzUHJpdmlsZWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTIwLDYgKzE1MjEsNyBAQAogCQlDRTczRTAyMzE5RENCN0FCMDA1ODBENUMg
LyogZGFyd2luICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk3QTRENEFBQjI2QThERUZDMDAxMTgyRjEgLyogQ29kZVNpZ25TUEkuaCAqLywKIAkJCQkxNDkz
M0UyMTIyOEMyMkRGMDBGNzlFNDYgLyogRGF0YVZhdWx0U1BJLmggKi8sCiAJCQkJRTQzMUNDNEEy
MTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJLmggKi8sCiAJCQkJOTNEREU5MzExQ0RDMDUy
RDAwRkQzNDkxIC8qIGR5bGRTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5
U1BJLmgKaW5kZXggMTAwNDE2N2QwMjU4ZDY4ZjI3NmY5NmFkOWI5MzYyYjg1ODk3OTMwMy4uYTE2
YzdhY2ExODBhZjZjOTAwMWVmOTFlNGRkZjQzZmY1NGZkOGI1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKKysrIGIvU291cmNlL1dURi93dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw3ICs3Niw5IEBAIFdURl9FWFRFUk5fQ19CRUdJ
TgogCiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tlbihDRkFsbG9jYXRvclJl
ZiwgYXVkaXRfdG9rZW5fdCk7CiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihDRkFs
bG9jYXRvclJlZik7CitDRlN0cmluZ1JlZiBTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKFNl
Y1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7CiBDRlR5cGVSZWYgU2VjVGFza0NvcHlWYWx1ZUZvckVu
dGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0bGVtZW50LCBDRkVycm9yUmVm
Kik7Cit1aW50MzJfdCBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXMoU2VjVGFza1JlZik7CiBTZWNJ
ZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShDRkFsbG9jYXRvclJlZiwgU2VjQ2VydGlmaWNh
dGVSZWYsIFNlY0tleVJlZik7CiBTZWNBY2Nlc3NDb250cm9sUmVmIFNlY0FjY2Vzc0NvbnRyb2xD
cmVhdGVGcm9tRGF0YShDRkFsbG9jYXRvclJlZiwgQ0ZEYXRhUmVmLCBDRkVycm9yUmVmKik7CiBD
RkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlEYXRhKFNlY0FjY2Vzc0NvbnRyb2xSZWYpOwpA
QCAtODUsMTIgKzg3LDEwIEBAIENGRGF0YVJlZiBTZWNLZXlDb3B5U3ViamVjdFB1YmxpY0tleUlu
Zm8oU2VjS2V5UmVmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxTZWN1cml0eS9T
ZWNBc24xVHlwZXMuaD4KLUNGU3RyaW5nUmVmIFNlY1Rhc2tDb3B5U2lnbmluZ0lkZW50aWZpZXIo
U2VjVGFza1JlZiwgQ0ZFcnJvclJlZiAqKTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiBleHRlcm4gY29uc3QgU2VjQXNuMVRlbXBsYXRlIGtTZWNBc24xQWxnb3JpdGhtSURU
ZW1wbGF0ZVtdOwogZXh0ZXJuIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBrU2VjQXNuMVN1YmplY3RQ
dWJsaWNLZXlJbmZvVGVtcGxhdGVbXTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VO
RAotdWludDMyX3QgU2VjVGFza0dldENvZGVTaWduU3RhdHVzKFNlY1Rhc2tSZWYpOwogI2VuZGlm
CiAKICNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJQUxJWkFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oIGIvU291cmNlL1dURi93dGYvc3BpL2Rh
cndpbi9Db2RlU2lnblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZGYwMTcyMTExYTM0ZTYwOGMyMmNjMGVl
ODU0ZGFkM2MwZTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9zcGkvZGFy
d2luL0NvZGVTaWduU1BJLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBUFBMRV9JTlRF
Uk5BTF9TREspCisKKyNpbmNsdWRlIDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgorCisjZWxzZQor
CisjZGVmaW5lIENTX1BMQVRGT1JNX0JJTkFSWSAgICAgICAgICAweDA0MDAwMDAwCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUz
NjYwNGYxNzk1NTJmYTNmMmFjODc0Yjk0NDNlNGM5NjI0NzVjNQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwgc3RyaW5nIGlmIHRoZSBw
cm9jZXNzIGlzIHVuc2lnbmVkLgorU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJl
bnRQcm9jZXNzKCk7CitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9u
X3QpOworYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKK3N0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVz
KHhwY19jb25uZWN0aW9uX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRkNWM1NDExOGM1NzBh
YTVmNjIyNDc1YmI5NzMyMjk1YWEwNjNmMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKKwor
I2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9D
b2RlU2lnblNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitzdGF0aWMgU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllcihTZWNUYXNr
UmVmIHRhc2spCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0NvcHlTaWduaW5nSWRlbnRp
Zmllcih0YXNrLCBudWxscHRyKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBjb2RlU2lnbmluZ0lkZW50
aWZpZXJGb3JDdXJyZW50UHJvY2VzcygpCit7CisgICAgcmV0dXJuIGNvZGVTaWduaW5nSWRlbnRp
ZmllcihhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSku
Z2V0KCkpOworfQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKHhwY19jb25uZWN0aW9u
X3QgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIHBhaXIgPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJB
bmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKTsKKyAgICByZXR1cm4gcGFpci5maXJz
dDsKK30KKworYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKQoreworICAgIGF1
dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1
bHQpKTsKKyAgICByZXR1cm4gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKHRhc2suZ2V0KCkpICYg
Q1NfUExBVEZPUk1fQklOQVJZOworfQorCitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb2RlU2ln
bmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24pCit7CisgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2VuOworICAgIHhwY19jb25u
ZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRUb2tlbik7CisgICAgYXV0
byB0YXNrID0gYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2NhdG9y
RGVmYXVsdCwgYXVkaXRUb2tlbikpOworICAgIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rh
c2tHZXRDb2RlU2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRGT1JNX0JJTkFSWTsKKyAg
ICBhdXRvIHNpZ25pbmdJZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVudGlmaWVyKHRhc2suZ2V0
KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0
Zm9ybUJpbmFyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExB
VEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9YUENF
bmRwb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCmlu
ZGV4IDhkNzg2ZDdhMTAzNTRhMGNiZGNlMmNjYzg1MGM5YzkxMjc0ODY0Y2IuLjk1YTVlYjVmMjQ4
NGYwNzY3OTlmZGFmMmU0YTIzNDc2Njk5YmU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Nv
Y29hL1hQQ0VuZHBvaW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDkgKzMwLDcgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKICNp
bXBvcnQgIkNvZGVTaWduaW5nLmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0
eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjZW5kaWYKIApAQCAtNTUs
MTAgKzUzLDcgQEAgWFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKICAgICAgICAgICAgIGlmIChw
aWQgIT0gZ2V0cGlkKCkgJiYgIVdURjo6aGFzRW50aXRsZW1lbnQoY29ubmVjdGlvbi5nZXQoKSwg
ImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50IikpIHsKICAgICAgICAg
ICAgICAgICBXVEZMb2dBbHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQg
ZW50aXRsZW1lbnQgY29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14cGMtZW5kcG9pbnQiKTsK
ICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRv
a2VuOwotICAgICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25u
ZWN0aW9uLmdldCgpLCAmYXVkaXRUb2tlbik7Ci0gICAgICAgICAgICAgICAgYm9vbCBpc1BsYXRm
b3JtQmluYXJ5ID0gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKGFkb3B0Q0YoU2VjVGFza0NyZWF0
ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0VG9rZW4pKS5nZXQoKSkg
JiBDU19QTEFURk9STV9CSU5BUlk7Ci0gICAgICAgICAgICAgICAgYXV0byBzaWduaW5nSWRlbnRp
ZmllciA9IGNvZGVTaWduaW5nSWRlbnRpZmllcihjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2Rl
U2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uLmdldCgp
KTsKIAogICAgICAgICAgICAgICAgIGlmICghaXNQbGF0Zm9ybUJpbmFyeSB8fCAhc2lnbmluZ0lk
ZW50aWZpZXIuc3RhcnRzV2l0aCgiY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50IikpIHsKICAg
ICAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJYUEMgZW5kcG9pbnQgZGVuaWVkIHRvIGNv
bm5lY3Qgd2l0aCB1bmtub3duIGNsaWVudCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvbWFjL0NvZGVTaWduaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNp
Z25pbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiOTEwNmE4ZmUxYjM1ZmM1
MTgyMGNkYjhjZmQ3YTA1ZGQwMDlkMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29kZVNpZ25pbmcuaAorKysg
L2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJ
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIGEg
bnVsbCBzdHJpbmcgaWYgdGhlIHByb2Nlc3MgaXMgdW5zaWduZWQuCi1TdHJpbmcgY29kZVNpZ25p
bmdJZGVudGlmaWVyRm9yQ3VycmVudFByb2Nlc3MoKTsKLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50
aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCk7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAxZjI2MzFmZjllYjgxMDQwZTQyOTQ0ZTc1ZTY1YzUwNjYwYzJhYmY2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L21hYy9Db2RlU2lnbmluZy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0KLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotCi0jaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+Ci0jaW1w
b3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXN0YXRp
YyBTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYgdGFzaykKLXsKLSAgICBy
ZXR1cm4gYWRvcHRDRihTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVyKHRhc2ssIG51bGxwdHIp
KS5nZXQoKTsKLX0KLQotU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmllckZvckN1cnJlbnRQcm9j
ZXNzKCkKLXsKLSAgICByZXR1cm4gY29kZVNpZ25pbmdJZGVudGlmaWVyKGFkb3B0Q0YoU2VjVGFz
a0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKS5nZXQoKSk7Ci19Ci0KLVN0cmlu
ZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQotewot
ICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKLSAgICB4cGNfY29ubmVjdGlvbl9nZXRfYXVk
aXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOwotICAgIHJldHVybiBjb2RlU2lnbmlu
Z0lkZW50aWZpZXIoYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9rZW4oa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgYXVkaXRUb2tlbikpLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXgg
MjlmN2ZlMDdkYjY2YmRlMzBhNzE1YjU5ZjcxZTRmMTNiYTU1MzM4My4uNzhmYjQyNDEyMjNiMDMy
NzVhOTY2ZDlmNzVhYzAwZmNhNDlhN2Y2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0
ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTYxLDYg
KzE2MSw3IEBAIFNoYXJlZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNoYXJlZC9Db2NvYS9BUElP
YmplY3QubW0KIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29hLm1tCiBTaGFyZWQvQ29j
b2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tCitTaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0K
IFNoYXJlZC9Db2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tCiBTaGFyZWQvQ29j
b2EvQ29yZVRleHRIZWxwZXJzLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURldGVjdGlvblJlc3VsdC5t
bQpAQCAtMjA1LDcgKzIwNiw2IEBAIFNoYXJlZC9pb3MvV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFs
dWVzSU9TLm1tCiBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3BwCiAKIFNoYXJlZC9tYWMv
QXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQotU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQogU2hhcmVk
L21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9tYWMvTmF0aXZlV2ViR2Vz
dHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJvYXJkRXZlbnRNYWMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQcm94
eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KaW5kZXggZWY1NTE4YWFkYjAyZDViZjVjYmYxNjdlMTI0MDdlZTkwNzQ3MTVlNy4u
YmUzMjI3MDg2YjViYzU4OTFlODdhYWJjZDE3NzE2YTAyOTViYTViNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KQEAg
LTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogCiAjaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgorI2ltcG9ydCAiQ29kZVNpZ25pbmcuaCIKICNpbXBv
cnQgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNp
bXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgpAQCAtMzA1LDI4ICszMDYsMzEgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlvbnMoKQogICAgIH0pOwog
fQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCkKK2Jv
b2wgV2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNz
KCkKIHsKICAgICBpZiAoIWhhc0Nvbm5lY3Rpb24oKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotI2lmIEhBVkUoUEFDX1NI
QVJFRF9SRUdJT05fSUQpCi0gICAgYXV0byBhdWRpdFRva2VuID0gY29ubmVjdGlvbigpLT5nZXRB
dWRpdFRva2VuKCk7Ci0gICAgaWYgKCFhdWRpdFRva2VuKSB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiVW5hYmxlIHRv
IGdldCBwYXJlbnQgd2ViIHByb2Nlc3MgYXVkaXQgdG9rZW4iKTsKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaWYgUExBVEZPUk0o
SU9TKQorICAgIC8vIEZJWE1FKHJkYXI6Ly84MDkwODgzMyk6IE9uIGlPUywgd2UgY2FuIG9ubHkg
cGVyZm9ybSB0aGUgYmVsb3cgY2hlY2tzIGZvciBwbGF0Zm9ybSBiaW5hcmllcyB1bnRpbCByZGFy
Oi8vODA5MDg4MzMgaXMgZml4ZWQuCisgICAgaWYgKCFjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1C
aW5hcnkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKworICAgIC8vIFdlYktpdFRl
c3RSdW5uZXIgZG9lcyBub3QgcGFzcyB0aGUgaXNQbGF0Zm9ybUJpbmFyeSBjaGVjaywgd2Ugc2hv
dWxkIHJldHVybiBlYXJseSBpbiB0aGlzIGNhc2UuCisgICAgaWYgKGlzUnVubmluZ1Rlc3QoV2Vi
Q29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKwogICAgIC8vIENvbmZpcm0gdGhhdCB0aGUgY29ubmVjdGlvbiBpcyBmcm9tIGEgV2ViQ29u
dGVudCBwcm9jZXNzOgotICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVudFZhbHVlKGF1ZGl0VG9r
ZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMuc2hhcmVkX3JlZ2lvbl9pZCIsICJXZWJDb250ZW50
IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIlByb2Nlc3MgaXMgbm90
IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4gUHJvY2VzcyBzaGFyZWRfcmVnaW9uX2lk
IGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRvIFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9y
bUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhj
b25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSk7CisKKyAgICBpZiAoIWlzUGxhdGZvcm1CaW5h
cnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0YXJ0c1dpdGgoImNvbS5hcHBsZS5XZWJLaXQuV2Vi
Q29udGVudCIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJQcm9jZXNz
IGlzIG5vdCBhbiBlbnRpdGxlZCBXZWJDb250ZW50IHByb2Nlc3MuIik7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzMWQ5MmM2M2Q3
Y2ZmMTMwZGZhMGQ0MGVjMzQwNzM0Nzc4ODg4NTA0Li4xZDZiOWRhMGRmYTNkODQ4YWFmNWMyNDUw
ZWYzNDg1YjY0MGY5NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z3B1UHJv
Y2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVhc29uKQogI2lmIEVOQUJM
RShXRUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29u
bmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRXZWJBdXRoblByb2Nlc3NDb25u
ZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBNRVNTQUdFX0NIRUNLX0NPTVBM
RVRJT04oaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCksIHJlcGx5KHsgfSkpOworICAgIE1FU1NB
R0VfQ0hFQ0tfQ09NUExFVElPTihtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNz
KCksIHJlcGx5KHsgfSkpOwogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFdlYkF1dGhuUHJvY2Vzc0Nv
bm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3OTBkNzY1OTRlYzVmYzVmNDNhZWZi
M2UyMjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMwYjc4NjQ0MTJlMjI3Yjc2NDEyODlkMmVjMDU4Y2Y3
MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNTMx
LDcgKzUzMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAg
IGJvb2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCk7CisgICAgYm9vbCBtZXNzYWdlU291cmNl
SXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAgIGVudW0gY2xhc3MgSXNX
ZWFrIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQ
cm9jZXNzUHJveHlNYWMubW0KaW5kZXggMzBmOTYwMzI2MzVkNWU2YjQ0MTMyODdiNWZlMzhmNGNk
YzJlOGMwZC4uNjJhMWRlNzllYTY5ZGUxNWQ4YzczYWRhMmJiNTJkODBhYTkwYjU1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5
LDExICsyOSwxMCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJDb2RlU2lnbmlu
Zy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCi0jaW1wb3J0IDxL
ZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8c2lnbmFsLmg+CiAjaW1wb3J0IDx3dGYv
UHJvY2Vzc1ByaXZpbGVnZS5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTIsNyArNTEsNyBAQCBib29sIFdlYlByb2Nl
c3NQcm94eTo6c2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgpIGNvbnN0CiAgICAgaWYg
KCFpc1N5c3RlbVdlYktpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIGJv
b2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1cyhhZG9wdENGKFNl
Y1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSkuZ2V0KCkpICYgQ1NfUExB
VEZPUk1fQklOQVJZOworICAgIHN0YXRpYyBib29sIGlzUGxhdGZvcm1CaW5hcnkgPSBjdXJyZW50
UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKICAgICBpZiAoaXNQbGF0Zm9ybUJpbmFyeSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA3M2ViMDI4MmZkYTdmZDkyMjllZDRmYjVlMTNlYzAyNjJh
MTE1ZmJkLi5hYWFjNTBlN2M3YjAzZjZlNTQyNDJhOGY2YmM3YmNmZTE1ODRkZjlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMsNyAr
Myw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7CiAJfTsKLQlvYmplY3RW
ZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVjdHMgPSB7CiAKIC8qIEJl
Z2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC02MDAwLDcgKzYwMDAsNiBAQAog
CQlGNDBCQkI0MDI1N0ZGNDZFMDA2NzQ2M0EgLyogR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1
bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAx
IC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29y
cmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8q
IEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1l
bnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQxNENFMkEyNjlEREVE
MTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEdQVVByb2Nlc3NDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0dQVVByb2Nl
c3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxNENFMkMyNjlERTZF
QTAwQkQyMTZBIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRTdGF0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEu
aDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9u
RGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkF1dG9j
b3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MzYxLDYgKzgzNjAsOCBAQAogCQkJCUExNzVD
NDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi8sCiAJCQkJQTE3
NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EubW0gKi8sCiAJCQkJ
MUE2OThGMTcxRTQ5MTAyMjAwNjRFODgxIC8qIEF1eGlsaWFyeVByb2Nlc3NDb2NvYS5tbSAqLywK
KwkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKKwkJCQlD
RTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUgLyogQ29kZVNpZ25pbmcubW0gKi8sCiAJCQkJMzdCRUM0
REYxOTQ5MTQ4NjAwOEI0Mjg2IC8qIENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCAqLywK
IAkJCQkzN0JFQzRERTE5NDkxNDg2MDA4QjQyODYgLyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlci5tbSAqLywKIAkJCQkxQzczOUU4NzIzNDdCRDBGMDBDNjIxRUMgLyogQ29yZVRleHRIZWxw
ZXJzLmggKi8sCkBAIC0xMDUzNCw4ICsxMDUzNSw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlB
MTU3OTlBQzI1ODQ0MzMxMDA1MjgyMzYgLyogTWVkaWFGb3JtYXRSZWFkZXIgKi8sCiAJCQkJOUY1
NEY4OEUxNjQ4OEU4NzAwN0RGODFBIC8qIEF1eGlsaWFyeVByb2Nlc3NNYWMubW0gKi8sCi0JCQkJ
Q0UxMUFENTExQ0JDNDgyRjAwNjgxRUU1IC8qIENvZGVTaWduaW5nLmggKi8sCi0JCQkJQ0UxMUFE
NEYxQ0JDNDdGODAwNjgxRUU1IC8qIENvZGVTaWduaW5nLm1tICovLAogCQkJCTFBQzc1QTFDMUIz
MzY5NUUwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0gKi8sCiAJCQkJMkQ1
MDM2NUQxQkNDNzkzRjAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudE1hYy5tbSAqLywK
IAkJCQlDMDJCRkYxRDEyNTE1MDJFMDA5Q0NCRUEgLyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudE1h
Yy5tbSAqLywKQEAgLTExNzE2LDE0ICsxMTcxNSw2IEBACiAJCQlwYXRoID0gY2FjaGU7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlGNDE0Q0UyNzI2OURERTgwMDBCRDIxNkEg
LyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAotCQkJ
CUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2EubW0gKi8sCi0JCQkp
OwotCQkJbmFtZSA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsKIAkJ
RjYzODk1NUExMzNCRjU3RDAwODk0MUQ1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434572</attachid>
            <date>2021-07-29 14:13:44 -0700</date>
            <delta_ts>2021-07-29 15:12:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-228116-20210729141343.patch</filename>
            <type>text/plain</type>
            <size>26609</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwNDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhhNWZhY2E3YTEwMTUzNDYyNTliMmYz
NDFjOGQ5OWU2NWU2MzJjZjUuLjhhMjA5MzQ1MzY1YzhmYzcwZjQ4ZDgzM2JlMWUyNzk2ZTkzNmFm
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDctMjkgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0Nv
Y29hXSBXZWJBdXRobiBzdG9wcGVkIHdvcmtpbmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkzNjA3PgorCisgICAgICAgIFBhdGNoIGJ5IEJyZW50
IEZ1bGdoYW0uCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGVyIEFybmUgVm9sbGFuLgorCisgICAg
ICAgIEFkZCBuZXcgU1BJIGhlYWRlciBmb3IgY29kZSBzaWduaW5nIGZlYXR1cmVzLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL3NwaS9j
b2NvYS9TZWN1cml0eVNQSS5oOgorICAgICAgICAqIHd0Zi9zcGkvZGFyd2luL0NvZGVTaWduU1BJ
Lmg6IEFkZGVkLgorCiAyMDIxLTA3LTI5ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlA
YXBwbGUuY29tPgogCiAgICAgICAgIEdldElkZW50aWZpZXJTdHJpbmdGb3JQcmVmZXJyZWRWb2lj
ZUluTGlzdFdpdGhMb2NhbGUoKSBpcyBkZXByZWNhdGVkIGluIE1vbnRlcmV5CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IDFhM2JkNjU4MGI3YWIzMjNmY2U4MjMzMWZkZTZkYzhiMDAxOTg2NjUuLjk3YmE2ZDc5OWIxODI1
NjZiZThjMDBjNmZjOWYxNzk0ZGZiN2NhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIw
MjEtMDctMjkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjI3ODg3NykgW0NvY29hXSBXZWJBdXRobiBzdG9wcGVkIHdvcmtp
bmcgZm9yIG5vbi1TYWZhcmkgYnJvd3NlcnMgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjgxMTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwNjkz
NjA3PgorCisgICAgICAgIFBhdGNoIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgUGVyIEFybmUgVm9sbGFuLgorCisgICAgICAgIFdlIHNob3VsZCBub3QgYmUgdXNpbmcg
dGhlIFBBQyBrZXkgdG8gY29uZmlybSBhIHZhbGlkIFdlYkNvbnRlbnQgcHJvY2VzcyBpcyB0aGUg
c291cmNlIG9mCisgICAgICAgIFdlYkF1dGhuLXJlbGF0ZWQgbWVzc2FnZXMuIEluc3RlYWQsIHdl
IHNob3VsZCBjb25maXJtIHRoZSBtZXNzYWdlIHNvdXJjZSBpcyBhbiBBcHBsZS1zaWduZWQKKyAg
ICAgICAgZXhlY3V0YWJsZSwgYW5kIHRoYXQgdGhlIHNpZ25pbmluZyBpZGVudGl0eSBpcyBmb3Ig
dGhlIFdlYkNvbnRlbnQgcHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Db2NvYS9Db2RlU2ln
bmluZy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5n
LmguCisgICAgICAgICogU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tLgorICAgICAgICAoV2ViS2l0
Ojpjb2RlU2lnbmluZ0lkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0Ojpjb2RlU2lnbmluZ0lk
ZW50aWZpZXJGb3JDdXJyZW50UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OmN1cnJlbnRQcm9j
ZXNzSXNQbGF0Zm9ybUJpbmFyeSk6CisgICAgICAgIChXZWJLaXQ6OmNvZGVTaWduaW5nSWRlbnRp
ZmllckFuZFBsYXRmb3JtQmluYXJ5U3RhdHVzKToKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvWFBD
RW5kcG9pbnQubW06CisgICAgICAgIChXZWJLaXQ6OlhQQ0VuZHBvaW50OjpYUENFbmRwb2ludCk6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6bWVzc2FnZVNvdXJjZUlzVmFsaWRXZWJDb250ZW50UHJvY2Vzcyk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6Z2V0V2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1By
b3h5TWFjLm1tOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTA3LTI5ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBsZS5jb20+CiAKICAgICAgICAg
VGhlIGJ1bmRsZSBwYXRoIG9mIGRvd25sZXZlbCBTYWZhcmkgaXMgd3JvbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1ZDgzMjY5ZWFmNDczYzBiODQxMGY4
YTAxODIxNTM0NGU4NTgyYWIuLjdmZDQwOWZiNThiZmU4ZTJkN2E3MjAxY2Q3MmExZDZhMmNjZWM3
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDUxLDYg
KzQ1MSw3IEBACiAJCTc5NTIxMjAyMUY0MjU4ODgwMEJENjQyMSAvKiBTaW5nbGVSb290R3JhcGgu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2luZ2xlUm9vdEdyYXBoLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBMDUwOTNEMUZCOURDQzUwMEIzM0ZCOCAvKiBK
U09OVmFsdWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT05WYWx1ZXMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0EwNTA5M0UxRkI5RENDNTAwQjMzRkI4
IC8qIEpTT05WYWx1ZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNPTlZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBNEQ0QUFCMjZB
OERFRkMwMDExODJGMSAvKiBDb2RlU2lnblNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU2lnblNQ
SS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTZFQkEzMjIwNzQ2QzMzMDA0RjlD
NDQgLyogTWFjaFNlbmRSaWdodC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
YWNoU2VuZFJpZ2h0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBNkVCQTMzMjA3
NDZDMzQwMDRGOUM0NCAvKiBNYWNoU2VuZFJpZ2h0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1hY2hTZW5kUmlnaHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QUYwMjNCMzIwNjFFMTZDMDBBOEVGRDYgLyogUHJvY2Vzc1ByaXZpbGVnZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzUHJpdmlsZWdlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIwLDYgKzE1MjEsNyBAQAogCQlDRTczRTAyMzE5
RENCN0FCMDA1ODBENUMgLyogZGFyd2luICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQk3QTRENEFBQjI2QThERUZDMDAxMTgyRjEgLyogQ29kZVNpZ25TUEku
aCAqLywKIAkJCQkxNDkzM0UyMTIyOEMyMkRGMDBGNzlFNDYgLyogRGF0YVZhdWx0U1BJLmggKi8s
CiAJCQkJRTQzMUNDNEEyMTE4N0FEQjAwMEM4QTA3IC8qIERpc3BhdGNoU1BJLmggKi8sCiAJCQkJ
OTNEREU5MzExQ0RDMDUyRDAwRkQzNDkxIC8qIGR5bGRTUEkuaCAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oIGIvU291cmNlL1dURi93dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmgKaW5kZXggMTAwNDE2N2QwMjU4ZDY4ZjI3NmY5NmFkOWI5MzYy
Yjg1ODk3OTMwMy4uYTE2YzdhY2ExODBhZjZjOTAwMWVmOTFlNGRkZjQzZmY1NGZkOGI1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKKysrIGIvU291
cmNlL1dURi93dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03Niw3ICs3Niw5IEBAIFdU
Rl9FWFRFUk5fQ19CRUdJTgogCiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVhdGVXaXRoQXVkaXRUb2tl
bihDRkFsbG9jYXRvclJlZiwgYXVkaXRfdG9rZW5fdCk7CiBTZWNUYXNrUmVmIFNlY1Rhc2tDcmVh
dGVGcm9tU2VsZihDRkFsbG9jYXRvclJlZik7CitDRlN0cmluZ1JlZiBTZWNUYXNrQ29weVNpZ25p
bmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYsIENGRXJyb3JSZWYgKik7CiBDRlR5cGVSZWYgU2VjVGFz
a0NvcHlWYWx1ZUZvckVudGl0bGVtZW50KFNlY1Rhc2tSZWYsIENGU3RyaW5nUmVmIGVudGl0bGVt
ZW50LCBDRkVycm9yUmVmKik7Cit1aW50MzJfdCBTZWNUYXNrR2V0Q29kZVNpZ25TdGF0dXMoU2Vj
VGFza1JlZik7CiBTZWNJZGVudGl0eVJlZiBTZWNJZGVudGl0eUNyZWF0ZShDRkFsbG9jYXRvclJl
ZiwgU2VjQ2VydGlmaWNhdGVSZWYsIFNlY0tleVJlZik7CiBTZWNBY2Nlc3NDb250cm9sUmVmIFNl
Y0FjY2Vzc0NvbnRyb2xDcmVhdGVGcm9tRGF0YShDRkFsbG9jYXRvclJlZiwgQ0ZEYXRhUmVmLCBD
RkVycm9yUmVmKik7CiBDRkRhdGFSZWYgU2VjQWNjZXNzQ29udHJvbENvcHlEYXRhKFNlY0FjY2Vz
c0NvbnRyb2xSZWYpOwpAQCAtODUsMTIgKzg3LDEwIEBAIENGRGF0YVJlZiBTZWNLZXlDb3B5U3Vi
amVjdFB1YmxpY0tleUluZm8oU2VjS2V5UmVmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNs
dWRlIDxTZWN1cml0eS9TZWNBc24xVHlwZXMuaD4KLUNGU3RyaW5nUmVmIFNlY1Rhc2tDb3B5U2ln
bmluZ0lkZW50aWZpZXIoU2VjVGFza1JlZiwgQ0ZFcnJvclJlZiAqKTsKIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0JFR0lOCiBleHRlcm4gY29uc3QgU2VjQXNuMVRlbXBsYXRlIGtTZWNB
c24xQWxnb3JpdGhtSURUZW1wbGF0ZVtdOwogZXh0ZXJuIGNvbnN0IFNlY0FzbjFUZW1wbGF0ZSBr
U2VjQXNuMVN1YmplY3RQdWJsaWNLZXlJbmZvVGVtcGxhdGVbXTsKIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0VORAotdWludDMyX3QgU2VjVGFza0dldENvZGVTaWduU3RhdHVzKFNlY1Rh
c2tSZWYpOwogI2VuZGlmCiAKICNpZiBIQVZFKFNFQ19UUlVTVF9TRVJJQUxJWkFUSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oIGIvU291cmNl
L1dURi93dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM0ZGYwMTcyMTEx
YTM0ZTYwOGMyMmNjMGVlODU0ZGFkM2MwZTU4MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9zcGkvZGFyd2luL0NvZGVTaWduU1BJLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisjcHJhZ21hIG9uY2UKKworI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisKKyNpbmNsdWRlIDxLZXJuZWwva2Vybi9jc19ibG9i
cy5oPgorCisjZWxzZQorCisjZGVmaW5lIENTX1BMQVRGT1JNX0JJTkFSWSAgICAgICAgICAweDA0
MDAwMDAwCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
Q29kZVNpZ25pbmcuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWUzNjYwNGYxNzk1NTJmYTNmMmFjODc0Yjk0NDNlNGM5NjI0NzVjNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLmgK
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhlc2UgZnVuY3Rpb25zIHJldHVybiBhIG51bGwg
c3RyaW5nIGlmIHRoZSBwcm9jZXNzIGlzIHVuc2lnbmVkLgorU3RyaW5nIGNvZGVTaWduaW5nSWRl
bnRpZmllckZvckN1cnJlbnRQcm9jZXNzKCk7CitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVy
KHhwY19jb25uZWN0aW9uX3QpOworYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnko
KTsKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvZGVTaWduaW5nSWRlbnRpZmllckFuZFBsYXRm
b3JtQmluYXJ5U3RhdHVzKHhwY19jb25uZWN0aW9uX3QpOworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQ29kZVNpZ25pbmcubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmRkNWM1NDExOGM1NzBhYTVmNjIyNDc1YmI5NzMyMjk1YWEwNjNmMgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0NvZGVTaWduaW5nLm1tCkBAIC0wLDAgKzEs
NzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQ29k
ZVNpZ25pbmcuaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0IDx3dGYvUmV0YWlu
UHRyLmg+CisjaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3VyaXR5U1BJLmg+CisjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9Db2RlU2lnblNQSS5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3RyaW5nIGNvZGVTaWduaW5nSWRl
bnRpZmllcihTZWNUYXNrUmVmIHRhc2spCit7CisgICAgcmV0dXJuIGFkb3B0Q0YoU2VjVGFza0Nv
cHlTaWduaW5nSWRlbnRpZmllcih0YXNrLCBudWxscHRyKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBj
b2RlU2lnbmluZ0lkZW50aWZpZXJGb3JDdXJyZW50UHJvY2VzcygpCit7CisgICAgcmV0dXJuIGNv
ZGVTaWduaW5nSWRlbnRpZmllcihhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxv
Y2F0b3JEZWZhdWx0KSkuZ2V0KCkpOworfQorCitTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVy
KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBhdXRvIHBhaXIgPSBjb2RlU2ln
bmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKTsKKyAgICBy
ZXR1cm4gcGFpci5maXJzdDsKK30KKworYm9vbCBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5h
cnkoKQoreworICAgIGF1dG8gdGFzayA9IGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtD
RkFsbG9jYXRvckRlZmF1bHQpKTsKKyAgICByZXR1cm4gU2VjVGFza0dldENvZGVTaWduU3RhdHVz
KHRhc2suZ2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworfQorCitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyh4cGNf
Y29ubmVjdGlvbl90IGNvbm5lY3Rpb24pCit7CisgICAgYXVkaXRfdG9rZW5fdCBhdWRpdFRva2Vu
OworICAgIHhwY19jb25uZWN0aW9uX2dldF9hdWRpdF90b2tlbihjb25uZWN0aW9uLCAmYXVkaXRU
b2tlbik7CisgICAgYXV0byB0YXNrID0gYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0VG9r
ZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXRUb2tlbikpOworICAgIGJvb2wgaXNQbGF0Zm9y
bUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0YXR1cyh0YXNrLmdldCgpKSAmIENTX1BMQVRG
T1JNX0JJTkFSWTsKKyAgICBhdXRvIHNpZ25pbmdJZGVudGlmaWVyID0gY29kZVNpZ25pbmdJZGVu
dGlmaWVyKHRhc2suZ2V0KCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihzaWduaW5nSWRl
bnRpZmllciwgaXNQbGF0Zm9ybUJpbmFyeSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9YUENFbmRwb2ludC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQ
Q0VuZHBvaW50Lm1tCmluZGV4IDhkNzg2ZDdhMTAzNTRhMGNiZGNlMmNjYzg1MGM5YzkxMjc0ODY0
Y2IuLjk1YTVlYjVmMjQ4NGYwNzY3OTlmZGFmMmU0YTIzNDc2Njk5YmU4NDggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL1hQQ0VuZHBvaW50Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDkgKzMwLDcgQEAKIAogI2lmIFBM
QVRGT1JNKE1BQykKICNpbXBvcnQgIkNvZGVTaWduaW5nLmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vy
bi9jc19ibG9icy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgotI2ltcG9ydCA8d3RmL3Nw
aS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAj
ZW5kaWYKIApAQCAtNTUsMTAgKzUzLDcgQEAgWFBDRW5kcG9pbnQ6OlhQQ0VuZHBvaW50KCkKICAg
ICAgICAgICAgIGlmIChwaWQgIT0gZ2V0cGlkKCkgJiYgIVdURjo6aGFzRW50aXRsZW1lbnQoY29u
bmVjdGlvbi5nZXQoKSwgImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC51c2UteHBjLWVuZHBvaW50
IikpIHsKICAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkF1ZGl0IHRva2VuIGRvZXMgbm90
IGhhdmUgcmVxdWlyZWQgZW50aXRsZW1lbnQgY29tLmFwcGxlLnByaXZhdGUud2Via2l0LnVzZS14
cGMtZW5kcG9pbnQiKTsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgICAgICAgICAgYXVkaXRf
dG9rZW5fdCBhdWRpdFRva2VuOwotICAgICAgICAgICAgICAgIHhwY19jb25uZWN0aW9uX2dldF9h
dWRpdF90b2tlbihjb25uZWN0aW9uLmdldCgpLCAmYXVkaXRUb2tlbik7Ci0gICAgICAgICAgICAg
ICAgYm9vbCBpc1BsYXRmb3JtQmluYXJ5ID0gU2VjVGFza0dldENvZGVTaWduU3RhdHVzKGFkb3B0
Q0YoU2VjVGFza0NyZWF0ZVdpdGhBdWRpdFRva2VuKGtDRkFsbG9jYXRvckRlZmF1bHQsIGF1ZGl0
VG9rZW4pKS5nZXQoKSkgJiBDU19QTEFURk9STV9CSU5BUlk7Ci0gICAgICAgICAgICAgICAgYXV0
byBzaWduaW5nSWRlbnRpZmllciA9IGNvZGVTaWduaW5nSWRlbnRpZmllcihjb25uZWN0aW9uLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIFtzaWduaW5nSWRlbnRpZmllciwgaXNQbGF0Zm9y
bUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9ybUJpbmFyeVN0YXR1cyhj
b25uZWN0aW9uLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIGlmICghaXNQbGF0Zm9ybUJpbmFy
eSB8fCAhc2lnbmluZ0lkZW50aWZpZXIuc3RhcnRzV2l0aCgiY29tLmFwcGxlLldlYktpdC5XZWJD
b250ZW50IikpIHsKICAgICAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCJYUEMgZW5kcG9p
bnQgZGVuaWVkIHRvIGNvbm5lY3Qgd2l0aCB1bmtub3duIGNsaWVudCIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvQ29kZVNpZ25pbmcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZi
OTEwNmE4ZmUxYjM1ZmM1MTgyMGNkYjhjZmQ3YTA1ZGQwMDlkMS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvQ29k
ZVNpZ25pbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL3Nw
aS9kYXJ3aW4vWFBDU1BJLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi0vLyBUaGVzZSBmdW5j
dGlvbnMgcmV0dXJuIGEgbnVsbCBzdHJpbmcgaWYgdGhlIHByb2Nlc3MgaXMgdW5zaWduZWQuCi1T
dHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyRm9yQ3VycmVudFByb2Nlc3MoKTsKLVN0cmluZyBj
b2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCk7Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5n
Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL0NvZGVTaWduaW5nLm1tCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxZjI2MzFmZjllYjgxMDQwZTQyOTQ0ZTc1ZTY1YzUwNjYwYzJh
YmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9Db2RlU2lnbmluZy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDU2
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkNvZGVT
aWduaW5nLmgiCi0KLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQot
Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW1wb3J0IDx3dGYvc3BpL2NvY29hL1NlY3Vy
aXR5U1BJLmg+Ci0jaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YktpdCB7Ci0KLXN0YXRpYyBTdHJpbmcgY29kZVNpZ25pbmdJZGVudGlmaWVyKFNlY1Rhc2tSZWYg
dGFzaykKLXsKLSAgICByZXR1cm4gYWRvcHRDRihTZWNUYXNrQ29weVNpZ25pbmdJZGVudGlmaWVy
KHRhc2ssIG51bGxwdHIpKS5nZXQoKTsKLX0KLQotU3RyaW5nIGNvZGVTaWduaW5nSWRlbnRpZmll
ckZvckN1cnJlbnRQcm9jZXNzKCkKLXsKLSAgICByZXR1cm4gY29kZVNpZ25pbmdJZGVudGlmaWVy
KGFkb3B0Q0YoU2VjVGFza0NyZWF0ZUZyb21TZWxmKGtDRkFsbG9jYXRvckRlZmF1bHQpKS5nZXQo
KSk7Ci19Ci0KLVN0cmluZyBjb2RlU2lnbmluZ0lkZW50aWZpZXIoeHBjX2Nvbm5lY3Rpb25fdCBj
b25uZWN0aW9uKQotewotICAgIGF1ZGl0X3Rva2VuX3QgYXVkaXRUb2tlbjsKLSAgICB4cGNfY29u
bmVjdGlvbl9nZXRfYXVkaXRfdG9rZW4oY29ubmVjdGlvbiwgJmF1ZGl0VG9rZW4pOwotICAgIHJl
dHVybiBjb2RlU2lnbmluZ0lkZW50aWZpZXIoYWRvcHRDRihTZWNUYXNrQ3JlYXRlV2l0aEF1ZGl0
VG9rZW4oa0NGQWxsb2NhdG9yRGVmYXVsdCwgYXVkaXRUb2tlbikpLmdldCgpKTsKLX0KLQotfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMjlmN2ZlMDdkYjY2YmRlMzBhNzE1YjU5ZjcxZTRmMTNiYTU1MzM4My4u
NzhmYjQyNDEyMjNiMDMyNzVhOTY2ZDlmNzVhYzAwZmNhNDlhN2Y2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMTYxLDYgKzE2MSw3IEBAIFNoYXJlZC9Db2NvYS9BUElEYXRhQ29jb2EubW0KIFNo
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KIFNoYXJlZC9Db2NvYS9Bcmd1bWVudENvZGVyc0NvY29h
Lm1tCiBTaGFyZWQvQ29jb2EvQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tCitTaGFyZWQvQ29jb2Ev
Q29kZVNpZ25pbmcubW0KIFNoYXJlZC9Db2NvYS9Db21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2Vy
Lm1tCiBTaGFyZWQvQ29jb2EvQ29yZVRleHRIZWxwZXJzLm1tCiBTaGFyZWQvQ29jb2EvRGF0YURl
dGVjdGlvblJlc3VsdC5tbQpAQCAtMjA1LDcgKzIwNiw2IEBAIFNoYXJlZC9pb3MvV2ViUHJlZmVy
ZW5jZXNEZWZhdWx0VmFsdWVzSU9TLm1tCiBTaGFyZWQvaW9zL1dlYlRvdWNoRXZlbnRJT1MuY3Bw
CiAKIFNoYXJlZC9tYWMvQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbQotU2hhcmVkL21hYy9Db2RlU2ln
bmluZy5tbQogU2hhcmVkL21hYy9IYW5nRGV0ZWN0aW9uRGlzYWJsZXJNYWMubW0KIFNoYXJlZC9t
YWMvTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tCiBTaGFyZWQvbWFjL05hdGl2ZVdlYktleWJv
YXJkRXZlbnRNYWMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViUHJvY2Vzc1Byb3h5Q29jb2EubW0KaW5kZXggZWIyY2Q4MjZkMzczYWU1YWQ5ODM0MDM1OGJk
OWNmYWIyOGRiNGMzZi4uODEyN2JhYWJmZmYwN2JjM2YxZDc4MzFlYzE1Y2IwYTc1MWRlNmUyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Byb3h5
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1By
b3h5Q29jb2EubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5o
IgogCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U3VwcG9ydFNQSS5oIgorI2ltcG9ydCAiQ29kZVNp
Z25pbmcuaCIKICNpbXBvcnQgIkhpZ2hQZXJmb3JtYW5jZUdQVU1hbmFnZXIuaCIKICNpbXBvcnQg
IkxvZ2dpbmcuaCIKICNpbXBvcnQgIk9iakNPYmplY3RHcmFwaC5oIgpAQCAtMzA5LDI4ICszMTAs
MzEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRBdWRpb0NvbXBvbmVudFJlZ2lzdHJhdGlv
bnMoKQogICAgIH0pOwogfQogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzQ29ycmVjdFBBQ0Vu
dGl0bGVtZW50KCkKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjptZXNzYWdlU291cmNlSXNWYWxpZFdl
YkNvbnRlbnRQcm9jZXNzKCkKIHsKICAgICBpZiAoIWhhc0Nvbm5lY3Rpb24oKSkgewogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
I2lmIEhBVkUoUEFDX1NIQVJFRF9SRUdJT05fSUQpCi0gICAgYXV0byBhdWRpdFRva2VuID0gY29u
bmVjdGlvbigpLT5nZXRBdWRpdFRva2VuKCk7Ci0gICAgaWYgKCFhdWRpdFRva2VuKSB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9j
ZXNzLCAiVW5hYmxlIHRvIGdldCBwYXJlbnQgd2ViIHByb2Nlc3MgYXVkaXQgdG9rZW4iKTsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREsp
CisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIEZJWE1FKHJkYXI6Ly84MDkwODgzMyk6IE9uIGlP
Uywgd2UgY2FuIG9ubHkgcGVyZm9ybSB0aGUgYmVsb3cgY2hlY2tzIGZvciBwbGF0Zm9ybSBiaW5h
cmllcyB1bnRpbCByZGFyOi8vODA5MDg4MzMgaXMgZml4ZWQuCisgICAgaWYgKCFjdXJyZW50UHJv
Y2Vzc0lzUGxhdGZvcm1CaW5hcnkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwor
ICAgIC8vIFdlYktpdFRlc3RSdW5uZXIgZG9lcyBub3QgcGFzcyB0aGUgaXNQbGF0Zm9ybUJpbmFy
eSBjaGVjaywgd2Ugc2hvdWxkIHJldHVybiBlYXJseSBpbiB0aGlzIGNhc2UuCisgICAgaWYgKGlz
UnVubmluZ1Rlc3QoV2ViQ29yZTo6YXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKCkpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIC8vIENvbmZpcm0gdGhhdCB0aGUgY29ubmVjdGlvbiBp
cyBmcm9tIGEgV2ViQ29udGVudCBwcm9jZXNzOgotICAgIGlmICghV1RGOjpoYXNFbnRpdGxlbWVu
dFZhbHVlKGF1ZGl0VG9rZW4udmFsdWUoKSwgImNvbS5hcHBsZS5wYWMuc2hhcmVkX3JlZ2lvbl9p
ZCIsICJXZWJDb250ZW50IikpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vzcywg
IlByb2Nlc3MgaXMgbm90IGFuIGVudGl0bGVkIFdlYkNvbnRlbnQgcHJvY2Vzcy4gUHJvY2VzcyBz
aGFyZWRfcmVnaW9uX2lkIGlzIGluY29ycmVjdC4iKTsKKyAgICBhdXRvIFtzaWduaW5nSWRlbnRp
ZmllciwgaXNQbGF0Zm9ybUJpbmFyeV0gPSBjb2RlU2lnbmluZ0lkZW50aWZpZXJBbmRQbGF0Zm9y
bUJpbmFyeVN0YXR1cyhjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24oKSk7CisKKyAgICBpZiAo
IWlzUGxhdGZvcm1CaW5hcnkgfHwgIXNpZ25pbmdJZGVudGlmaWVyLnN0YXJ0c1dpdGgoImNvbS5h
cHBsZS5XZWJLaXQuV2ViQ29udGVudCIpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFBy
b2Nlc3MsICJQcm9jZXNzIGlzIG5vdCBhbiBlbnRpdGxlZCBXZWJDb250ZW50IHByb2Nlc3MuIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0jZW5kaWYKICNlbmRpZgogCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAzMWQ5MmM2M2Q3Y2ZmMTMwZGZhMGQ0MGVjMzQwNzM0Nzc4ODg4NTA0Li4xZDZiOWRhMGRm
YTNkODQ4YWFmNWMyNDUwZWYzNDg1YjY0MGY5NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTgyNSw3ICs4MjUsNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6Z3B1UHJvY2Vzc0V4aXRlZChHUFVQcm9jZXNzVGVybWluYXRpb25SZWFzb24gcmVh
c29uKQogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0V2Vi
QXV0aG5Qcm9jZXNzQ29ubmVjdGlvbihNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRXZWJB
dXRoblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBNRVNT
QUdFX0NIRUNLX0NPTVBMRVRJT04oaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCksIHJlcGx5KHsg
fSkpOworICAgIE1FU1NBR0VfQ0hFQ0tfQ09NUExFVElPTihtZXNzYWdlU291cmNlSXNWYWxpZFdl
YkNvbnRlbnRQcm9jZXNzKCksIHJlcGx5KHsgfSkpOwogICAgIG1fcHJvY2Vzc1Bvb2wtPmdldFdl
YkF1dGhuUHJvY2Vzc0Nvbm5lY3Rpb24oKnRoaXMsIFdURk1vdmUocmVwbHkpKTsKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3OTBkNzY1
OTRlYzVmYzVmNDNhZWZiM2UyMjRhNDkyZDQ2NThlNTM2Li5mNDFiZTMwYjc4NjQ0MTJlMjI3Yjc2
NDEyODlkMmVjMDU4Y2Y3MTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UHJveHkuaApAQCAtNTMxLDcgKzUzMSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgIGJvb2wgaGFzQ29ycmVjdFBBQ0VudGl0bGVtZW50KCk7CisgICAgYm9v
bCBtZXNzYWdlU291cmNlSXNWYWxpZFdlYkNvbnRlbnRQcm9jZXNzKCk7CiAjZW5kaWYKIAogICAg
IGVudW0gY2xhc3MgSXNXZWFrIHsgTm8sIFllcyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KaW5kZXggMzBmOTYwMzI2MzVkNWU2YjQ0
MTMyODdiNWZlMzhmNGNkYzJlOGMwZC4uNjJhMWRlNzllYTY5ZGUxNWQ4YzczYWRhMmJiNTJkODBh
YTkwYjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI5LDExICsyOSwxMCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJDb2RlU2lnbmluZy5oIgogI2ltcG9ydCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
LmgiCi0jaW1wb3J0IDxLZXJuZWwva2Vybi9jc19ibG9icy5oPgogI2ltcG9ydCA8c2lnbmFsLmg+
CiAjaW1wb3J0IDx3dGYvUHJvY2Vzc1ByaXZpbGVnZS5oPgotI2ltcG9ydCA8d3RmL3NwaS9jb2Nv
YS9TZWN1cml0eVNQSS5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTIsNyArNTEsNyBA
QCBib29sIFdlYlByb2Nlc3NQcm94eTo6c2hvdWxkQWxsb3dOb25WYWxpZEluamVjdGVkQ29kZSgp
IGNvbnN0CiAgICAgaWYgKCFpc1N5c3RlbVdlYktpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgc3RhdGljIGJvb2wgaXNQbGF0Zm9ybUJpbmFyeSA9IFNlY1Rhc2tHZXRDb2RlU2lnblN0
YXR1cyhhZG9wdENGKFNlY1Rhc2tDcmVhdGVGcm9tU2VsZihrQ0ZBbGxvY2F0b3JEZWZhdWx0KSku
Z2V0KCkpICYgQ1NfUExBVEZPUk1fQklOQVJZOworICAgIHN0YXRpYyBib29sIGlzUGxhdGZvcm1C
aW5hcnkgPSBjdXJyZW50UHJvY2Vzc0lzUGxhdGZvcm1CaW5hcnkoKTsKICAgICBpZiAoaXNQbGF0
Zm9ybUJpbmFyeSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3M2ViMDI4MmZkYTdmZDkyMjll
ZDRmYjVlMTNlYzAyNjJhMTE1ZmJkLi4zYzU4NmNiMDYzNjA3MTdiNGEyNWRhMDQ1MmEwNTliODc3
ODkyYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTgzNjEsNiArODM2MSw4IEBACiAJCQkJQTE3NUM0NDkyMUFBMzE3MDAwMDAzN0Qw
IC8qIEFyZ3VtZW50Q29kZXJzQ29jb2EuaCAqLywKIAkJCQlBMTc1QzQ0QjIxQUEzMzFCMDAwMDM3
RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5tbSAqLywKIAkJCQkxQTY5OEYxNzFFNDkxMDIyMDA2
NEU4ODEgLyogQXV4aWxpYXJ5UHJvY2Vzc0NvY29hLm1tICovLAorCQkJCUNFMTFBRDUxMUNCQzQ4
MkYwMDY4MUVFNSAvKiBDb2RlU2lnbmluZy5oICovLAorCQkJCUNFMTFBRDRGMUNCQzQ3RjgwMDY4
MUVFNSAvKiBDb2RlU2lnbmluZy5tbSAqLywKIAkJCQkzN0JFQzRERjE5NDkxNDg2MDA4QjQyODYg
LyogQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oICovLAogCQkJCTM3QkVDNERFMTk0OTE0
ODYwMDhCNDI4NiAvKiBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyLm1tICovLAogCQkJCTFD
NzM5RTg3MjM0N0JEMEYwMEM2MjFFQyAvKiBDb3JlVGV4dEhlbHBlcnMuaCAqLywKQEAgLTEwNTM0
LDggKzEwNTM2LDYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUExNTc5OUFDMjU4NDQzMzEwMDUy
ODIzNiAvKiBNZWRpYUZvcm1hdFJlYWRlciAqLywKIAkJCQk5RjU0Rjg4RTE2NDg4RTg3MDA3REY4
MUEgLyogQXV4aWxpYXJ5UHJvY2Vzc01hYy5tbSAqLywKLQkJCQlDRTExQUQ1MTFDQkM0ODJGMDA2
ODFFRTUgLyogQ29kZVNpZ25pbmcuaCAqLywKLQkJCQlDRTExQUQ0RjFDQkM0N0Y4MDA2ODFFRTUg
LyogQ29kZVNpZ25pbmcubW0gKi8sCiAJCQkJMUFDNzVBMUMxQjMzNjk1RTAwNTY3NDVCIC8qIEhh
bmdEZXRlY3Rpb25EaXNhYmxlck1hYy5tbSAqLywKIAkJCQkyRDUwMzY1RDFCQ0M3OTNGMDBFMjBC
QjMgLyogTmF0aXZlV2ViR2VzdHVyZUV2ZW50TWFjLm1tICovLAogCQkJCUMwMkJGRjFEMTI1MTUw
MkUwMDlDQ0JFQSAvKiBOYXRpdmVXZWJLZXlib2FyZEV2ZW50TWFjLm1tICovLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>