<?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>232262</bug_id>
          
          <creation_ts>2021-10-25 13:21:46 -0700</creation_ts>
          <short_desc>Add helper classes and messaging infrastructure to launch webpushd and round trip a message to it</short_desc>
          <delta_ts>2021-10-26 12:35:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1808552</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 13:21:46 -0700</bug_when>
    <thetext>Add helper classes and messaging infrastructure to launch webpushd and round trip a message to it

Helpful as a standalone patch before we start using it for things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808678</commentid>
    <comment_count>1</comment_count>
      <attachid>442439</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 17:05:27 -0700</bug_when>
    <thetext>Created attachment 442439
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808705</commentid>
    <comment_count>2</comment_count>
      <attachid>442442</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 18:29:36 -0700</bug_when>
    <thetext>Created attachment 442442
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808717</commentid>
    <comment_count>3</comment_count>
      <attachid>442446</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 18:46:16 -0700</bug_when>
    <thetext>Created attachment 442446
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808721</commentid>
    <comment_count>4</comment_count>
      <attachid>442446</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-25 18:56:43 -0700</bug_when>
    <thetext>Comment on attachment 442446
Patch v3

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

&gt; Source/WebKit/NetworkProcess/Notifications/Cocoa/WebPushDaemonConnectionCocoa.mm:39
&gt; +namespace WebKit {
&gt; +namespace WebPushD {

namespace WebKit::WebPushD
Isn&apos;t C++17 great?

&gt; Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:41
&gt; +    printf(&quot;Created new NetworkNotificationManager with webPushMachServiceName: %s\n&quot;, webPushMachServiceName.utf8().data());

Please omit

&gt; Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:373
&gt; +;; FIXME: Settle on real name
&gt; +(allow mach-lookup (with telemetry) (global-name &quot;org.webkit.webpushtestdaemon.service&quot;))

This name is already in the plist:
com.apple.webkit.webpushd.service</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808722</commentid>
    <comment_count>5</comment_count>
      <attachid>442448</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 18:59:59 -0700</bug_when>
    <thetext>Created attachment 442448
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808729</commentid>
    <comment_count>6</comment_count>
      <attachid>442451</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 19:30:25 -0700</bug_when>
    <thetext>Created attachment 442451
Patch v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808731</commentid>
    <comment_count>7</comment_count>
      <attachid>442453</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-25 19:34:30 -0700</bug_when>
    <thetext>Created attachment 442453
Patch v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808907</commentid>
    <comment_count>8</comment_count>
      <attachid>442453</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-10-26 09:49:54 -0700</bug_when>
    <thetext>Comment on attachment 442453
Patch v6

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

&gt; Source/WebKit/NetworkProcess/Notifications/Cocoa/WebPushDaemonConnectionCocoa.mm:38
&gt; +using Daemon::EncodedMessage;
&gt; +
&gt; +namespace WebKit::WebPushD { 

put using inside the namespace scope to avoid future source unification problems

&gt; Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:108
&gt; +template&lt;WebPushD::MessageType messageType, typename... Args, typename... ReplyArgs&gt;
&gt; +void NetworkNotificationManager::sendMessageWithReply(CompletionHandler&lt;void(ReplyArgs...)&gt;&amp;&amp; completionHandler, Args&amp;&amp;... args) const

You will probably want this in the header so you won&apos;t need to explicitly instantiate each template instance.

&gt; Source/WebKit/NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:373
&gt; +(allow mach-lookup (with telemetry) (global-name &quot;org.webkit.webpushtestdaemon.service&quot;))

We should eventually use a sandbox extension handle instead of putting this in the production sandbox, but this follows an existing pattern.  Maybe add a FIXME comment to remove all of them.

&gt; Source/WebKit/Shared/WebPushDaemonConstants.h:42
&gt; +inline bool messageTypeSendsReply(MessageType messageType)

This doesn&apos;t need to be inline but can.

&gt; Source/WebKit/webpushd/WebPushDaemon.mm:98
&gt; +    // FIXME: Verify the connection is known

I don&apos;t think this is necessary.  It&apos;s impossible to receive from a connection you haven&apos;t been informed of.  But you will need to keep track of connections, as noted below.

&gt; Tools/MiniBrowser/mac/AppDelegate.m:104
&gt; +        // [configuration setWebPushMachServiceName:@&quot;org.webkit.webpushtestdaemon.service&quot;];

I don&apos;t think we&apos;ll want this code here.  You can use it locally for your testing, but not in everyone&apos;s MiniBrowser.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:219
&gt; +    NSLog(@&quot;Granting notifications permission to origin %@&quot;, securityOrigin);
&gt; +    decisionHandler(YES);

Are you sure you don&apos;t want a dialog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808946</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-26 11:15:11 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 442453 [details]
&gt; Patch v6
&gt; 
&gt; &gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:219
&gt; &gt; +    NSLog(@&quot;Granting notifications permission to origin %@&quot;, securityOrigin);
&gt; &gt; +    decisionHandler(YES);
&gt; 
&gt; Are you sure you don&apos;t want a dialog?

Would require adding a (at least in-memory) permissions manager to support that.

Added a FIXME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808962</commentid>
    <comment_count>10</comment_count>
      <attachid>442513</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-10-26 11:38:12 -0700</bug_when>
    <thetext>Created attachment 442513
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808983</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-26 12:34:39 -0700</bug_when>
    <thetext>Committed r284887 (243564@main): &lt;https://commits.webkit.org/243564@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 442513.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1808984</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-10-26 12:35:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/84676890&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442439</attachid>
            <date>2021-10-25 17:05:27 -0700</date>
            <delta_ts>2021-10-25 18:29:36 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>54860</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGMwNjNiY2RlYjJmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCit1c2luZyBE
YWVtb246OkVuY29kZWRNZXNzYWdlOworCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK3N0YXRpYyB2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGlj
dGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFy
eSkKK3sKKyAgICBBU1NFUlQoeHBjX2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgV2Vi
UHVzaEQ6OnByb3RvY29sVmVyc2lvbktleSwgV2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvblZhbHVl
KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgV2ViUHVzaEQ6OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIHZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2Up
KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6bmV3Q29ubmVjdGlvbldhc0luaXRpYWxp
emVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBpZiAobmV0d29y
a1Nlc3Npb24oKS5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogVHJhY2sgY29ubmVjdGlvbiBzdGF0ZQorfQorCit2b2lkIENvbm5lY3Rp
b246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAor
eworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkK
KyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAg
IGlmICghZGVidWdNZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2
ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3NhZ2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3Vp
bnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5KSk7CisgICAgbmV0d29y
a1Nlc3Npb24oKS5uZXR3b3JrUHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdv
cmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7Cit9
CisKK1JldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rpb246OmRpY3Rpb25hcnlGcm9tTWVz
c2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSBj
b25zdAoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3Nh
Z2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1lc3Nh
Z2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKKyAgICByZXR1
cm4gZGljdGlvbmFyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYTI4OGEyMThkMTIwLi44ZmUxZGMx
Zjg5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjgsMjggKzI4LDk0IEBACiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKIAorI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVy
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgU3RyaW5nJikKK05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSkKICAgICA6IG1fbmV0d29ya1Nlc3Npb24obmV0d29y
a1Nlc3Npb24pCiB7CisgICAgcHJpbnRmKCJDcmVhdGVkIG5ldyBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlciB3aXRoIHdlYlB1c2hNYWNoU2VydmljZU5hbWU6ICVzXG4iLCB3ZWJQdXNoTWFjaFNl
cnZpY2VOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbi5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpICYmICF3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgbV9jb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlv
bj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCksICp0aGlzKTsKIH0KIAogdm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKy8vICAgICBG
SVhNRTogV2hpbGUgd2UgZG9uJ3Qgbm9ybWFsbHkgbGFuZCBjb21tZW50ZWQtb3V0IGNvZGUgaW4g
dGhlIHRyZWUsCisvLyAgICAgdGhpcyBpcyBhIG5pY2UgYm9va21hcmsgZm9yIGEgZGV2ZWxvcG1l
bnQgbWlsZXN0b25lOyBSb3VuZHRyaXAgY29tbXVuaWNhdGlvbiB3aXRoIHdlYnB1c2hkCisvLyAg
ICAgV2lsbCBtYWtlIG5leHQgZGV2ZWxvcG1lbnQgc3RlcHMgb2J2aW91cy4KKy8vCisvLyAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSAo
U3RyaW5nIHJlcGx5KSB7CisvLyAgICAgICAgcHJpbnRmKCJHb3QgcmVwbHk6ICVzXG4iLCByZXBs
eS51dGY4KCkuZGF0YSgpKTsKKy8vICAgIH07CisvLworLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVw
bHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCiB2b2lk
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qp
CiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBO
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24odWludDY0X3QpCiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKK30KKworCit0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVz
c2FnZShBcmdzJiYuLi4gYXJncykgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5l
Y3Rpb24pOworICAgIERhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2Rl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1l
c3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0cnVjdCBSZXBseUNhbGxlcjsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2Fs
bGVyPD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29kZXImJiBkZWNv
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFl
bW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0
eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpz
ZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAoreworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29ubmVjdGlvbik7CisKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsK
KyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZFdpdGhSZXBseShtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVy
KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIERhZW1vbjo6RGVjb2RlciBkZWNvZGVy
KFdURk1vdmUocmVwbHlCdWZmZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4u
Pjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDQxYzgyOThjMTE5Yi4uNmZhODc1Njg0
Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAt
MjgsMTYgKzI4LDI0IEBACiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKICNp
bmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCituYW1lc3BhY2UgV2ViUHVzaEQgeworZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3Q7Cit9CisKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKK3B1YmxpYzoKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24oKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
IHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCkBAIC00Nyw2ICs1NSwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkg
ZmluYWw7CiAKICAgICBOZXR3b3JrU2Vzc2lvbiYgbV9uZXR3b3JrU2Vzc2lvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHVzaEQ6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIHRl
bXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLikgY29uc3Q7CisgICAgdGVtcGxhdGU8
V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBl
bmFtZS4uLiBSZXBseUFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzFiNWVk
YTNhZDE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlB1c2hEYWVt
b25Db25uZWN0aW9uLmgiCisKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAi
RGFlbW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bihDU3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciYg
bWFuYWdlcikKKyAgICA6IERhZW1vbjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlv
blRyYWl0cz4oV1RGTW92ZShtYWNoU2VydmljZU5hbWUpKQorICAgICwgbV9ub3RpZmljYXRpb25N
YW5hZ2VyKG1hbmFnZXIpCit7CisgICAgTE9HKFB1c2gsICJDcmVhdGluZyBXZWJQdXNoRCBjb25u
ZWN0aW9uIHRvIG1hY2ggc2VydmljZTogJXMiLCB0aGlzLT5tYWNoU2VydmljZU5hbWUoKS5kYXRh
KCkpOworfQorCitOZXR3b3JrU2Vzc2lvbiYgQ29ubmVjdGlvbjo6bmV0d29ya1Nlc3Npb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXIubmV0d29ya1Nlc3Npb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
YlB1c2hEYWVtb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLjYwOTQ0YTc0ZjhjZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29u
bmVjdGlvbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkRhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29u
c3RhbnRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCituYW1lc3BhY2UgV2ViUHVzaEQg
eworCitzdHJ1Y3QgQ29ubmVjdGlvblRyYWl0cyB7CisgICAgdXNpbmcgTWVzc2FnZVR5cGUgPSBX
ZWJQdXNoRDo6TWVzc2FnZVR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBw
cm90b2NvbFZlcnNpb25LZXkgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uS2V5IH07CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IFdlYlB1c2hE
Ojpwcm90b2NvbFZlcnNpb25WYWx1ZSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgY2hh
ciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7IFdlYlB1c2hEOjpwcm90b2NvbEVuY29kZWRN
ZXNzYWdlS2V5IH07Cit9OworCitjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIERhZW1vbjo6Q29u
bmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0cz4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENvbm5lY3Rpb24oQ1N0cmluZyYmIG1hY2hTZXJ2
aWNlTmFtZSwgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImKTsKKworcHJpdmF0ZToKKyAgICB2
b2lkIG5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlGcm9tTWVz
c2FnZShNZXNzYWdlVHlwZSwgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZSYmKSBjb25zdCBmaW5hbDsK
KyAgICB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCkgY29uc3QgZmlu
YWw7CisjZW5kaWYKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdlSWZOZWNl
c3NhcnkoKSBjb25zdDsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbigpIGNv
bnN0OworCisgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImIG1fbm90aWZpY2F0aW9uTWFu
YWdlcjsKKworICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4u
LiBBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uKSBjb25zdDsKKyAgICB0ZW1w
bGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlwZW5hbWUu
Li4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3Jr
UHJvY2Vzcy5zYi5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5hcHBs
ZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KaW5kZXggYzkxMjJmNmJmOGQyLi4xYWM0YWFh
ZDUzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5pbgpAQCAt
MzY5LDYgKzM2OSw5IEBACiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggdGVsZW1ldHJ5KSAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS53ZWJraXQuYWRhdHRyaWJ1dGlvbmQuc2VydmljZSIpKQogKGFs
bG93IG1hY2gtbG9va3VwICh3aXRoIHRlbGVtZXRyeSkgKGdsb2JhbC1uYW1lICJvcmcud2Via2l0
LnBjbXRlc3RkYWVtb24uc2VydmljZSIpKQogCis7OyBGSVhNRTogU2V0dGxlIG9uIHJlYWwgbmFt
ZQorKGFsbG93IG1hY2gtbG9va3VwICh3aXRoIHRlbGVtZXRyeSkgKGdsb2JhbC1uYW1lICJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiKSkKKwogKHdpdGgtZmlsdGVyICh1aWQg
MCkKICAgICAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggdGVsZW1ldHJ5KQogICAgICAgICAoZ2xv
YmFsLW5hbWUgImNvbS5hcHBsZS5EaXNrQXJiaXRyYXRpb24uZGlza2FyYml0cmF0aW9uZCIpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwCmluZGV4
IDVlZTM5NWM3Mjg1Mi4uZWJlYzMyNTg5Njc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IkRhZW1vbkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50
Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgiCiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC00Niw2ICs0Nyw3IEBAIHZvaWQgQ29ubmVjdGlvblRvTWFj
aFNlcnZpY2U8VHJhaXRzPjo6c2VuZFdpdGhSZXBseSh0eXBlbmFtZSBUcmFpdHM6Ok1lc3NhZ2VU
eXBlCiB9CiAKIHRlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6Q29u
bmVjdGlvblRyYWl0cz47Cit0ZW1wbGF0ZSBjbGFzcyBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxX
ZWJQdXNoRDo6Q29ubmVjdGlvblRyYWl0cz47CiAKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmgKaW5kZXggNzViMTA0ZjgzMzJkLi5kYmU4
NTgzMGVlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0
aW9uLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0
aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKICNlbmRpZgogCisgICAg
Y29uc3QgQ1N0cmluZyYgbWFjaFNlcnZpY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWNoU2Vy
dmljZU5hbWU7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZO
ZWVkZWQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvY29jb2EvRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCmluZGV4IGQwMzU3MDlkNGUzZC4uYWE5
ZmM4ZmFhZDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9E
YWVtb25Db25uZWN0aW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMv
Y29jb2EvRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBv
cnQgIkRhZW1vbkVuY29kZXIuaCIKICNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29u
bmVjdGlvbi5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMTExLDYgKzEx
Miw3IEBAIHZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8VHJhaXRzPjo6c2VuZFdpdGhSZXBs
eSh0eXBlbmFtZSBUcmFpdHM6Ok1lc3NhZ2VUeXBlCiB9CiAKIHRlbXBsYXRlIGNsYXNzIENvbm5l
Y3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6Q29ubmVjdGlvblRyYWl0cz47Cit0ZW1wbGF0ZSBjbGFz
cyBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxXZWJQdXNoRDo6Q29ubmVjdGlvblRyYWl0cz47CiAK
IH0gLy8gbmFtZXNwYWNlIERhZW1vbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGM5
ZWNhOGMyODFiMi4uYTgzMjY4Yjk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAt
ODcsNiArODcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAg
ICAgTShQcm9jZXNzU3dhcHBpbmcpIFwKICAgICBNKFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKKyAg
ICBNKFB1c2gpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAg
ICAgTShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40ZGEwYjM3NzBjMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJQdXNo
RCB7CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJvdG9j
b2wgdmVyc2lvbiI7Citjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgPSAx
OworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5j
b2RlZCBtZXNzYWdlIjsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNz
YWdlS2V5IHsgImRlYnVnIG1lc3NhZ2UiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9j
b2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSB7ICJkZWJ1ZyBtZXNzYWdlIGxldmVsIiB9OworCitjb25z
dGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUi
IH07CitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CisgICAgRWNob1R3aWNlID0g
MSwKK307CisKK2lubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNz
YWdlVHlwZTo6RWNob1R3aWNlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJQdXNoRAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmMTk5OGE2
MGM2MzEuLjE0MjdlN2UzYmJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC05OCw2ICs5OCw3IEBAIE5ldHdv
cmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAKIAogTmV0d29ya1Byb2Nl
c3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJ
bXBsLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyMDk2
OTNlNGIzMjkuLjczZGY5NWM4MDg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDEsNiAr
NDEsOCBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQog
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9uRW50cnlQb2ludC5t
bQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2
aWNlRW50cnlQb2ludC5tbQogCitOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dl
YlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KKwogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29j
b2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0
aWxpdGllcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4
IDUwYzA2Y2FlNjk2ZS4uYzBmNGI1MWIxNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNv
bmZpZ3VyYXRpb24uY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0
CiAgICAgY29weS0+bV9lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZyA9IHRoaXMt
Pm1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3Rpbmc7CiAgICAgY29weS0+bV9hbGxv
d3NIU1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSA9IHRoaXMtPm1fYWxsb3dzSFNUU1dp
dGhVbnRydXN0ZWRSb290Q2VydGlmaWNhdGU7CiAgICAgY29weS0+bV9wY21NYWNoU2VydmljZU5h
bWUgPSB0aGlzLT5tX3BjbU1hY2hTZXJ2aWNlTmFtZTsKKyAgICBjb3B5LT5tX3dlYlB1c2hNYWNo
U2VydmljZU5hbWUgPSB0aGlzLT5tX3dlYlB1c2hNYWNoU2VydmljZU5hbWU7CiAjaWYgUExBVEZP
Uk0oQ09DT0EpCiAgICAgaWYgKG1fcHJveHlDb25maWd1cmF0aW9uKQogICAgICAgICBjb3B5LT5t
X3Byb3h5Q29uZmlndXJhdGlvbiA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weShudWxs
cHRyLCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ2ZWU2NDYxNzZkLi4z
ODZiMDk1ZTJkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTAzNSw2ICsxMDM1LDEwIEBACiAJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0
QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0
TWVudUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVk
QnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJNTEyOUVCMTIyM0QwREU3QjAw
QUYxQ0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOUVCMTEyM0QwREU3ODAwQUYxQ0Q3IC8qIENvbnRlbnRX
b3JsZFNoYXJlZC5oICovOyB9OworCQk1MTJDRDY5ODI3MjFFRkM4MDBGN0Y4RUMgLyogV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVj
dGlvbi5oICovOyB9OworCQk1MTJDRDY5QTI3MjFGMEE5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1v
bkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAq
LzsgfTsKKwkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjlEMjcyMzM5
M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggKi87IH07CisJCTUxMkNENkEwMjcyMzM5M0Ew
MEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyQ0Q2OUUyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVt
b24ubW0gKi87IH07CiAJCTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUx
MkVDQzM1MjcxOTZBREIwMDA4OUI2NiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjkz
MEZFMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
aCAqLzsgfTsKIAkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmggKi87IH07CkBAIC0xMDU1LDEyICsxMDU5LDEyIEBACiAJCTUxM0U0NjJEMUFEODM3NTYw
MDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0U0NjJCMUFEODM3NTYwMDE2MjM0
QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNTEzRkZCOTEy
MDE0NTlDNjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGRkI4RjIwMTQ1OUMy
MDAyNTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgfTsKIAkJNTE0
MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OTIxQzY0Mjgx
MDAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovOyB9OworCQk1MTQ1MjZF
RDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYw
MDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ1MjZG
RjI3MUZCN0VDMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZGRTI3
MUZCN0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi87
IH07CiAJCTUxNDUyNzAzMjcxRkJBM0EwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDIyNzFGQkEzNjAwMDQ2N0I2IC8qIE5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUx
NDUyNzA0MjcxRkJBNDAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDUyNzAwMjcxRkJBMzQwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJNTE0NTI3MDUyNzFGQkE0
MDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjcwMTI3
MUZCQTM1MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJNTE0NTI3MDgyNzFGQkVDNjAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0NTI3MDcyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovOyB9OwotCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3
QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ4OUNDMzIzNzBEQkZBMDA0NEU2
OEEgLyogV0tGaW5kUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTQ4OUNDNzIz
NzIzNzgwMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAv
KiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovOyB9OwogCQk1MTRBQjlGMDIzNjBEMkE5MDBFREMz
OTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0QUI5RUYyMzVGQTU5QjAwRURDMzk2IC8qIFdLRmluZENvbmZp
Z3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07
CkBAIC00MTMzLDYgKzQxMzcsMTIgQEAKIAkJNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIElu
amVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTM1RTIxMjg4RDk3ODAwQTRCNjk1
IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjlFQjExMjNEMERFNzgwMEFGMUNENyAv
KiBDb250ZW50V29ybGRTaGFyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udGVudFdvcmxkU2hhcmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNE
Njk2MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjk3MjcyMUVGQzMwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjlDMjcyMjNBMDgwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8q
IFdlYlB1c2hEYWVtb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHVz
aERhZW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5RTI3MjMzOTNB
MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlB1c2hEYWVtb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxMkY1ODhFMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJG
NTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODkwMTJBODgzODgwMDYy
OTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjcsNiArNDE3Nyw4IEBACiAJCTUx
NDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAv
KiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBO
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1
MjZGQzI3MUZCN0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVy
Lm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0NTI2RkUyNzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3
MDAyNzFGQkEzNDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1l
c3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzQsOCArNDE4Niw2IEBACiAJCTUxNDUyNzAyMjcxRkJBMzYw
MDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjcwNzI3MUZCRUMxMDAwNDY3QjYgLyogV2ViTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
LQkJNTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzEy
MzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0ZpbmRSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRmluZFJlc3VsdC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3Vs
dEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZFJlc3Vs
dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM4LDYgKzcxNDgs
NyBAQAogCQkJCUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCAqLywKIAkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzky
NCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovLAorCQkJCTUxMkNENjk5Mjcy
MUYwNDkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggKi8sCiAJCQkJNUM4REQz
N0YxRkU0NTE5MjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oICovLAogCQkJCTVD
OEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlRdWlyay5oICovLAogCQkJ
CTUxMUY3RDNGMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5j
cHAgKi8sCkBAIC05MDM1LDYgKzkwNDYsMTQgQEAKIAkJCXBhdGggPSBEYXRhYmFzZXM7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTJDRDY5QjI3MjIzOUU0MDBGN0Y4RUMg
LyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTUxMkNENjlDMjcyMjNBMDgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29h
Lm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MDU1LDggKzkw
NzQsMTEgQEAKIAkJNTE0NTI2RUEyNzFFMTYxMDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbnMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkNENjlCMjcy
MjM5RTQwMEY3RjhFQyAvKiBDb2NvYSAqLywKIAkJCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYg
LyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxNDUyNkVCMjcxRTE2
MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovLAorCQkJCTUxMkNE
Njk2MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8sCisJ
CQkJNTEyQ0Q2OTcyNzIxRUZDMzAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgg
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IE5vdGlmaWNhdGlvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtOTU3OCw2ICs5NjAwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDQkI2
RDREMjcxRjY3Q0MwMEZEMUE1RCAvKiBjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnBsaXN0ICov
LAogCQkJCTVDMTU3QTBCMjcxN0NBMUMwMEVENTI4MCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSAq
LywKKwkJCQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLAor
CQkJCTUxMkNENjlFMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSB3ZWJwdXNoZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
MjEwMCw2ICsxMjEyNCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJ
ZmlsZXMgPSAoCiAJCQkJNUMxNTc5RkMyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI4MTgsNiArMTI4NDMsNyBAQAogCQkJCTkz
QUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1l
TWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQUI5QjREMjU3NTY3REMwMDk4QjEw
RSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVj
b2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2
Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJl
Y29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNG
RUNBMjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMjkwNSw2ICsxMjkzMSw3IEBACiAJCQkJOTkwRDM5RjUyNDNCRTY0ODAwMTk5Mzg4
IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNl
c3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNENjk4MjcyMUVGQzgwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5
NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1NDFDOEZGREZCMDBGRTBF
QkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywK
QEAgLTE0NjYwLDYgKzE0Njg3LDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxMkNE
NkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNUMxNTdBMDEyNzE3QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25F
bmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5NGVkZDRlMzI5
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5j
bHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViUHVzaEQ6
Ok1lc3NhZ2VUeXBlOworCituYW1lc3BhY2UgV2ViUHVzaEQgeworCit1c2luZyBFbmNvZGVkTWVz
c2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKworY2xhc3MgRGFlbW9uIHsKKyAgICBmcmllbmQgY2xh
c3MgV1RGOjpOZXZlckRlc3Ryb3llZDxEYWVtb24+OworcHVibGljOgorICAgIHN0YXRpYyBEYWVt
b24mIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19v
YmplY3RfdCk7CisgICAgdm9pZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCk7Cisg
ICAgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KTsKKworICAgIC8vIE1l
c3NhZ2UgaGFuZGxlcnMKKyAgICB2b2lkIGVjaG9Ud2ljZShjb25zdCBTdHJpbmcmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKTsKKworcHJpdmF0
ZToKKyAgICBEYWVtb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEVuY29kZWRNZXNzYWdlJiYpPiBjcmVhdGVSZXBseVNlbmRlcihNZXNzYWdlVHlwZSwgT1NPYmpl
Y3RQdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpOworICAgIHZvaWQgZGVjb2RlQW5kSGFuZGxl
TWVzc2FnZShNZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9X
ZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ5NzgwMDVlYTFjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1t
CkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXZWJQdXNoRGFlbW9uLmgiCisKKyNpbXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKKyNpbXBv
cnQgIkRhZW1vbkVuY29kZXIuaCIKKyNpbXBvcnQgIkRhZW1vblV0aWxpdGllcy5oIgorI2ltcG9y
dCAiSGFuZGxlTWVzc2FnZS5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgor
CisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NwYW4uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDo6V2ViUHVzaEQ7CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK25hbWVzcGFjZSBNZXNzYWdl
SW5mbyB7CisKKyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRpYyBjb25zdGV4
cHIgYXV0byBNZW1iZXJGdW5jdGlvbiA9ICZXZWJQdXNoRDo6RGFlbW9uOjptZjsKKyNkZWZpbmUg
QVJHVU1FTlRTKC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz47
CisjZGVmaW5lIFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KF9fVkFfQVJHU19fKT47IFwKKyAgICBzdGF0aWMgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVu
Y29kZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07CisKK0ZVTkNUSU9OKGVjaG9U
d2ljZSkKK0FSR1VNRU5UUyhTdHJpbmcpCitSRVBMWShTdHJpbmcpCitFTkQKKworI3VuZGVmIEZV
TkNUSU9OCisjdW5kZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQKKworV2Vi
UHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5
KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8
PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIE1lc3NhZ2VJbmZvCisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRs
ZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSYmKT4m
JiByZXBseVNlbmRlcikKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RGVjb2RlciBkZWNvZGVyKGVu
Y29kZWRNZXNzYWdlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1
cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElL
RUxZKCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJbmZvOjpS
ZXBseSBjb21wbGV0aW9uSGFuZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5k
ZXIpXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRlcihJbmZv
OjplbmNvZGVSZXBseShhcmdzLi4uKSk7CisgICAgfSB9OworCisgICAgSVBDOjpjYWxsTWVtYmVy
RnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
ICZXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOwor
fQorCitEYWVtb24mIERhZW1vbjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8RGFlbW9uPiBkYWVtb247CisgICAgcmV0dXJuIGRhZW1vbjsKK30KKwordm9pZCBEYWVt
b246OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCit7CisgICAg
aWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogVmVyaWZ5IHRoZSBjb25uZWN0aW9uIGlzIGtub3du
CisgICAgCisgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9j
b2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICBOU0xvZyhA
IlJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNp
b24iKTsKKyAgICAgICAgLy8gRklYTUU6IEN1dCBvZmYgdGhpcyBjb25uZWN0aW9uCisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8TWVz
c2FnZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xNZXNz
YWdlVHlwZUtleSkpIH07CisgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZv
aWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBwcm90b2NvbEVuY29k
ZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2Rl
ZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07
CisgICAgCisgICAgZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShtZXNzYWdlVHlwZSwgZW5jb2RlZE1l
c3NhZ2UsIGNyZWF0ZVJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3Zv
aWQgRGFlbW9uOjpjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3sKKyAgICAvLyBG
SVhNRTogVHJhY2sgY29ubmVjdGlvbnMKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25SZW1v
dmVkKHhwY19jb25uZWN0aW9uX3QpCit7CisgICAgLy8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb25z
Cit9CisKK0NvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6
Y3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhw
Y19vYmplY3RfdD4mJiByZXF1ZXN0KQoreworICAgIGlmICghbWVzc2FnZVR5cGVTZW5kc1JlcGx5
KG1lc3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW3Jl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7Cisg
ICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShy
ZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkuZ2V0KCkp
ID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWlu
dDY0KHJlcGx5LmdldCgpLCBwcm90b2NvbFZlcnNpb25LZXksIHByb3RvY29sVmVyc2lvblZhbHVl
KTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKHJlcGx5LmdldCgpLCBwcm90b2Nv
bEVuY29kZWRNZXNzYWdlS2V5LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3Nh
Z2UpKS5nZXQoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGlj
dGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgp
KTsKKyAgICB9OworfQorCit2b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNz
YWdlVHlwZSBtZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikK
K3sKKyAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJl
cGx5U2VuZGVyKTsKKworICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpFY2hvVHdpY2U6CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBs
eTxNZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNl
bmRlcikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgRGFlbW9uOjplY2hvVHdp
Y2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcobWVz
c2FnZSwgbWVzc2FnZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbSBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KaW5kZXggMjRhM2IyMTYxNGJiLi5h
Y2NjYjU2ODY2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERh
ZW1vbk1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbQpAQCAtMjgsNzcgKzI4LDI5IEBACiAjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1w
b3J0ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBv
cnQgIldlYlB1c2hEYWVtb24uaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgog
I2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9TcGFuLmg+CiAjaW1wb3J0
IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotbmFtZXNwYWNlIFdlYlB1c2hEIHsKLQotY29u
c3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVyc2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9u
IjsKLWNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSA9IDE7Ci1jb25zdGV4
cHIgY29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSA9ICJtZXNzYWdlIHR5cGUiOwot
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2Rl
ZCBtZXNzYWdlIjsKLWVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKLSAgICBFY2hv
VHdpY2UgPSAxCi19OwotCi1zdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWlu
dDhfdD4mJik+IHJlcGx5U2VuZGVyKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkK
LXsKLSAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoVmVjdG9yPHVpbnQ4
X3Q+JiYgbWVzc2FnZSkgewotICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlv
bmFyeV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOwotICAgICAgICBBU1NFUlQoeHBjX2dl
dF90eXBlKHJlcGx5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKLSAgICAgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChyZXBseS5nZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBw
cm90b2NvbFZlcnNpb25WYWx1ZSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShy
ZXBseS5nZXQoKSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQ
Q0RhdGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOwotICAgICAgICB4cGNfY29ubmVjdGlvbl9z
ZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3Qu
Z2V0KCkpLCByZXBseS5nZXQoKSk7Ci0gICAgfTsKLX0KLQotc3RhdGljIHZvaWQgZWNob1R3aWNl
KFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQotewotICAgIFdlYktpdDo6RGFl
bW9uOjpEZWNvZGVyIGRlY29kZXIoZW5jb2RlZE1lc3NhZ2UpOwotICAgIHN0ZDo6b3B0aW9uYWw8
U3RyaW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcp
Ci0gICAgICAgIHJldHVybjsKK3VzaW5nIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsK
K3VzaW5nIFdlYlB1c2hEOjpEYWVtb247CiAKLSAgICBhdXRvIHJlcGx5ID0gbWFrZVN0cmluZygq
c3RyaW5nLCAqc3RyaW5nKTsKLSAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOwot
ICAgIGVuY29kZXIgPDwgcmVwbHk7Ci0gICAgcmVwbHlTZW5kZXIoZW5jb2Rlci50YWtlQnVmZmVy
KCkpOwotfQotCi1zdGF0aWMgdm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KE1lc3NhZ2VU
eXBlIG1lc3NhZ2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsK
LSAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3
aWNlOgotICAgICAgICBlY2hvVHdpY2UoZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5k
ZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KK25hbWVzcGFjZSBXZWJQdXNoRCB7CiAK
IHN0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3Qp
CiB7Ci0gICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZ
KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVx
dWVzdCwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgewotICAg
ICAgICBOU0xvZyhAIlJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHBy
b3RvY29sIHZlcnNpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gbWVz
c2FnZVR5cGUgeyBzdGF0aWNfY2FzdDxNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3Vp
bnQ2NChyZXF1ZXN0LCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKLSAgICBzaXplX3QgZGF0
YVNpemUgeyAwIH07Ci0gICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9k
YXRhKHJlcXVlc3QsIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7Ci0gICAg
U3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVp
bnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKLSAgICBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5
KG1lc3NhZ2VUeXBlLCBlbmNvZGVkTWVzc2FnZSwgcmVwbHlTZW5kZXIocmVxdWVzdCkpOworICAg
IERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkV2ZW50SGFuZGxlcihyZXF1ZXN0KTsKIH0K
IAotc3RhdGljIHZvaWQgY29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QpCitzdGF0aWMg
dm9pZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAg
IERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkFkZGVkKGNvbm5lY3Rpb24pOwogfQogCi1z
dGF0aWMgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KQorc3RhdGljIHZv
aWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAg
IERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvblJlbW92ZWQoY29ubmVjdGlvbik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9U
b29scy9DaGFuZ2VMb2cKaW5kZXggMGI2ZGZhNThjYWI2Li44NmI2NzNkMTc5MGEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0xMC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGhlbHBlciBjbGFzc2VzIGFuZCBtZXNzYWdpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gbGF1
bmNoIHdlYnB1c2hkIGFuZCByb3VuZCB0cmlwIGEgbWVzc2FnZSB0byBpdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMjYyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUubToKKyAgICAgICAgKHBlcnNpc3RlbnREYXRhU3RvcmUpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtX
SzJCcm93c2VyV2luZG93Q29udHJvbGxlciBfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVy
bWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAyMS0xMC0y
NSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJr
aXRweTogQWRkIGFuIGV4cGxpY2l0IEltYWdlRGlmZlJlc3VsdC5wYXNzZWQgcmF0aGVyIHRoYW4g
cmVseWluZyBvbiBkaWZmX2ltYWdlIGJlaW5nIG5vbi1Ob25lCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBE
ZWxlZ2F0ZS5tCmluZGV4IDc1ZDY5MWRlMjZiZi4uOGEzMmJkOTI4ZTFhIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysgYi9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubQpAQCAtOTgsNiArOTgsMTEgQEAgLSAodm9pZClhd2FrZUZyb21O
aWIKICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgICAgIGNvbmZpZ3VyYXRpb24u
bmV0d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IFlFUzsKKworICAgICAg
ICAvLyBGSVhNRTogV2hlbiBidWlsdC1pbiBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkLCBXZWJL
aXQgZG9lc24ndCB5ZXQgZ3JhY2VmdWxseSBoYW5kbGUgYSBtaXNzaW5nIHdlYnB1c2hkIHNlcnZp
Y2UKKyAgICAgICAgLy8gVW50aWwgaXQgZG9lcywgdW5jb21tZW50IHRoaXMgbGluZSB3aGVuIHRo
ZSBzZXJ2aWNlIGlzIGtub3duIHRvIGJlIGluc3RhbGxlZC4KKyAgICAgICAgLy8gW2NvbmZpZ3Vy
YXRpb24gc2V0V2ViUHVzaE1hY2hTZXJ2aWNlTmFtZTpAIm9yZy53ZWJraXQud2VicHVzaHRlc3Rk
YWVtb24uc2VydmljZSJdOworCiAgICAgICAgIGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwogICAgIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0KaW5kZXggM2M0MzU2MDhhNDdiLi4wY2UwMDFhMzA3M2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0yMTIs
NiArMjEyLDEzIEBAIC0gKENHRmxvYXQpdmlld1NjYWxlRm9yTWVudUl0ZW1UYWc6KE5TSW50ZWdl
cil0YWcKICAgICByZXR1cm4gMTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOihX
S1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkIChe
KShCT09MKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICAvLyBGb3IgdGVzdGluZywgZ3JhbnQgbm90
aWZpY2F0aW9uIHBlcm1pc3Npb24gdG8gYWxsIG9yaWdpbnMuCisgICAgTlNMb2coQCJHcmFudGlu
ZyBub3RpZmljYXRpb25zIHBlcm1pc3Npb24gdG8gb3JpZ2luICVAIiwgc2VjdXJpdHlPcmlnaW4p
OworICAgIGRlY2lzaW9uSGFuZGxlcihZRVMpOworfQorCiAtIChJQkFjdGlvbilzZXRWaWV3U2Nh
bGU6KGlkKXNlbmRlcgogewogICAgIENHRmxvYXQgc2NhbGUgPSBbc2VsZiB2aWV3U2NhbGVGb3JN
ZW51SXRlbVRhZzpbc2VuZGVyIHRhZ11dOwo=
</data>
<flag name="commit-queue"
          id="466941"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442442</attachid>
            <date>2021-10-25 18:29:36 -0700</date>
            <delta_ts>2021-10-25 18:54:54 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55402</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGMwNjNiY2RlYjJmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCit1c2luZyBE
YWVtb246OkVuY29kZWRNZXNzYWdlOworCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK3N0YXRpYyB2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGlj
dGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFy
eSkKK3sKKyAgICBBU1NFUlQoeHBjX2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgV2Vi
UHVzaEQ6OnByb3RvY29sVmVyc2lvbktleSwgV2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvblZhbHVl
KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgV2ViUHVzaEQ6OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIHZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2Up
KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6bmV3Q29ubmVjdGlvbldhc0luaXRpYWxp
emVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBpZiAobmV0d29y
a1Nlc3Npb24oKS5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogVHJhY2sgY29ubmVjdGlvbiBzdGF0ZQorfQorCit2b2lkIENvbm5lY3Rp
b246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAor
eworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkK
KyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAg
IGlmICghZGVidWdNZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2
ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3NhZ2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3Vp
bnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5KSk7CisgICAgbmV0d29y
a1Nlc3Npb24oKS5uZXR3b3JrUHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdv
cmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7Cit9
CisKK1JldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rpb246OmRpY3Rpb25hcnlGcm9tTWVz
c2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSBj
b25zdAoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3Nh
Z2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1lc3Nh
Z2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKKyAgICByZXR1
cm4gZGljdGlvbmFyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYTI4OGEyMThkMTIwLi44ZmUxZGMx
Zjg5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjgsMjggKzI4LDk0IEBACiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKIAorI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVy
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgU3RyaW5nJikKK05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSkKICAgICA6IG1fbmV0d29ya1Nlc3Npb24obmV0d29y
a1Nlc3Npb24pCiB7CisgICAgcHJpbnRmKCJDcmVhdGVkIG5ldyBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlciB3aXRoIHdlYlB1c2hNYWNoU2VydmljZU5hbWU6ICVzXG4iLCB3ZWJQdXNoTWFjaFNl
cnZpY2VOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbi5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpICYmICF3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgbV9jb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlv
bj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCksICp0aGlzKTsKIH0KIAogdm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKy8vICAgICBG
SVhNRTogV2hpbGUgd2UgZG9uJ3Qgbm9ybWFsbHkgbGFuZCBjb21tZW50ZWQtb3V0IGNvZGUgaW4g
dGhlIHRyZWUsCisvLyAgICAgdGhpcyBpcyBhIG5pY2UgYm9va21hcmsgZm9yIGEgZGV2ZWxvcG1l
bnQgbWlsZXN0b25lOyBSb3VuZHRyaXAgY29tbXVuaWNhdGlvbiB3aXRoIHdlYnB1c2hkCisvLyAg
ICAgV2lsbCBtYWtlIG5leHQgZGV2ZWxvcG1lbnQgc3RlcHMgb2J2aW91cy4KKy8vCisvLyAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSAo
U3RyaW5nIHJlcGx5KSB7CisvLyAgICAgICAgcHJpbnRmKCJHb3QgcmVwbHk6ICVzXG4iLCByZXBs
eS51dGY4KCkuZGF0YSgpKTsKKy8vICAgIH07CisvLworLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVw
bHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCiB2b2lk
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qp
CiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBO
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24odWludDY0X3QpCiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKK30KKworCit0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVz
c2FnZShBcmdzJiYuLi4gYXJncykgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5l
Y3Rpb24pOworICAgIERhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2Rl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1l
c3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0cnVjdCBSZXBseUNhbGxlcjsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2Fs
bGVyPD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29kZXImJiBkZWNv
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFl
bW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0
eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpz
ZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAoreworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29ubmVjdGlvbik7CisKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsK
KyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZFdpdGhSZXBseShtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVy
KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIERhZW1vbjo6RGVjb2RlciBkZWNvZGVy
KFdURk1vdmUocmVwbHlCdWZmZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4u
Pjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDQxYzgyOThjMTE5Yi4uNmZhODc1Njg0
Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAt
MjgsMTYgKzI4LDI0IEBACiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKICNp
bmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCituYW1lc3BhY2UgV2ViUHVzaEQgeworZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3Q7Cit9CisKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKK3B1YmxpYzoKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24oKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
IHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCkBAIC00Nyw2ICs1NSwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkg
ZmluYWw7CiAKICAgICBOZXR3b3JrU2Vzc2lvbiYgbV9uZXR3b3JrU2Vzc2lvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHVzaEQ6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIHRl
bXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLikgY29uc3Q7CisgICAgdGVtcGxhdGU8
V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBl
bmFtZS4uLiBSZXBseUFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ4MWZh
NmUzMWQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlB1c2hEYWVt
b25Db25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKwor
I2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3Bh
Y2UgV2ViUHVzaEQgeworCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKENTdHJpbmcmJiBtYWNoU2Vy
dmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDogRGFl
bW9uOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZTxDb25uZWN0aW9uVHJhaXRzPihXVEZNb3ZlKG1h
Y2hTZXJ2aWNlTmFtZSkpCisgICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobWFuYWdlcikKK3sK
KyAgICBMT0coUHVzaCwgIkNyZWF0aW5nIFdlYlB1c2hEIGNvbm5lY3Rpb24gdG8gbWFjaCBzZXJ2
aWNlOiAlcyIsIHRoaXMtPm1hY2hTZXJ2aWNlTmFtZSgpLmRhdGEoKSk7Cit9CisKK05ldHdvcmtT
ZXNzaW9uJiBDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbm90aWZpY2F0aW9uTWFuYWdlci5uZXR3b3JrU2Vzc2lvbigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJQdXNoRAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZDA5OGJlNDdk
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKKworI2luY2x1ZGUgIkRhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCituYW1lc3BhY2UgV2Vi
UHVzaEQgeworCitzdHJ1Y3QgQ29ubmVjdGlvblRyYWl0cyB7CisgICAgdXNpbmcgTWVzc2FnZVR5
cGUgPSBXZWJQdXNoRDo6TWVzc2FnZVR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uS2V5IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IFdl
YlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7IFdlYlB1c2hEOjpwcm90b2NvbEVu
Y29kZWRNZXNzYWdlS2V5IH07Cit9OworCitjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIERhZW1v
bjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0cz4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENvbm5lY3Rpb24oQ1N0cmluZyYmIG1h
Y2hTZXJ2aWNlTmFtZSwgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIG5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlG
cm9tTWVzc2FnZShNZXNzYWdlVHlwZSwgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZSYmKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCkgY29u
c3QgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdl
SWZOZWNlc3NhcnkoKSBjb25zdDsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lv
bigpIGNvbnN0OworCisgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImIG1fbm90aWZpY2F0
aW9uTWFuYWdlcjsKKworICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlw
ZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlm
IC8vIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGNkNTQ3ZGViOTVjNy4uMzA5YmFiNDI1
N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApA
QCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQog
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Ry
dWN0IFNlc3Npb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5p
bgppbmRleCBjOTEyMmY2YmY4ZDIuLjFhYzRhYWFkNTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5z
Yi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNjksNiArMzY5LDkgQEAKIChhbGxvdyBtYWNo
LWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmtpdC5h
ZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggdGVsZW1l
dHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1vbi5zZXJ2aWNlIikpCiAK
Kzs7IEZJWE1FOiBTZXR0bGUgb24gcmVhbCBuYW1lCisoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGgg
dGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2Vy
dmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxvdyBtYWNoLWxvb2t1cCAo
d2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJp
dHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggNWVlMzk1YzcyODUyLi5lYmVjMzI1ODk2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGFlbW9uQ29ubmVjdGlvbi5oIgogCiAjaW5j
bHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDYg
KzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxUcmFpdHM+OjpzZW5kV2l0aFJl
cGx5KHR5cGVuYW1lIFRyYWl0czo6TWVzc2FnZVR5cGUKIH0KIAogdGVtcGxhdGUgY2xhc3MgQ29u
bmVjdGlvblRvTWFjaFNlcnZpY2U8UENNOjpDb25uZWN0aW9uVHJhaXRzPjsKK3RlbXBsYXRlIGNs
YXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0aW9uVHJhaXRzPjsK
IAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1v
bkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rp
b24uaAppbmRleCA3NWIxMDRmODMzMmQuLmRiZTg1ODMwZWU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaApAQCAtNzEsNiArNzEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3Rf
dCkgY29uc3QgPSAwOwogI2VuZGlmCiAKKyAgICBjb25zdCBDU3RyaW5nJiBtYWNoU2VydmljZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21hY2hTZXJ2aWNlTmFtZTsgfQorCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29j
b2EubW0KaW5kZXggZDAzNTcwOWQ0ZTNkLi5hYTlmYzhmYWFkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29jb2Eu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgogI2ltcG9y
dCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogCkBAIC0xMTEsNiArMTEyLDcgQEAgdm9pZCBDb25uZWN0aW9uVG9NYWNo
U2VydmljZTxUcmFpdHM+OjpzZW5kV2l0aFJlcGx5KHR5cGVuYW1lIFRyYWl0czo6TWVzc2FnZVR5
cGUKIH0KIAogdGVtcGxhdGUgY2xhc3MgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8UENNOjpDb25u
ZWN0aW9uVHJhaXRzPjsKK3RlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdl
YlB1c2hEOjpDb25uZWN0aW9uVHJhaXRzPjsKIAogfSAvLyBuYW1lc3BhY2UgRGFlbW9uCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9Mb2dnaW5nLmgKaW5kZXggYzllY2E4YzI4MWIyLi5hODMyNjhiOTgwNzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCkBAIC04Nyw2ICs4Nyw3IEBAIGV4dGVybiAiQyIgewog
ICAgIE0oUHJvY2Vzc1N1c3BlbnNpb24pIFwKICAgICBNKFByb2Nlc3NTd2FwcGluZykgXAogICAg
IE0oUHJveGltaXR5TmV0d29ya2luZykgXAorICAgIE0oUHVzaCkgXAogICAgIE0oUmVtb3RlTGF5
ZXJUcmVlKSBcCiAgICAgTShSZXNpemUpIFwKICAgICBNKFJlc291cmNlTG9hZFN0YXRpc3RpY3Mp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFu
dHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRkYTBiMzc3MGMxMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMu
aApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworY29uc3RleHByIGNvbnN0IGNoYXIq
IHByb3RvY29sVmVyc2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9uIjsKK2NvbnN0ZXhwciB1aW50
NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSA9IDE7Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJv
dG9jb2xFbmNvZGVkTWVzc2FnZUtleSA9ICJlbmNvZGVkIG1lc3NhZ2UiOworCitjb25zdGV4cHIg
Y29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkgeyAiZGVidWcgbWVzc2FnZSIgfTsK
K2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5IHsgImRl
YnVnIG1lc3NhZ2UgbGV2ZWwiIH07CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1l
c3NhZ2VUeXBlS2V5IHsgIm1lc3NhZ2UgdHlwZSIgfTsKK2VudW0gY2xhc3MgTWVzc2FnZVR5cGUg
OiB1aW50OF90IHsKKyAgICBFY2hvVHdpY2UgPSAxLAorfTsKKworaW5saW5lIGJvb2wgbWVzc2Fn
ZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQoreworICAgIHN3aXRjaCAo
bWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CmluZGV4IGYxOTk4YTYwYzYzMS4uMTQyN2U3ZTNiYmNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKQEAgLTk4LDYgKzk4LDcgQEAgTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudC5jcHAKIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCitOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25D
b25uZWN0aW9uLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudENsaWVudEltcGwuY3BwCiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDIwOTY5M2U0YjMyOS4uNzNkZjk1YzgwODUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CkBAIC00MSw2ICs0MSw4IEBAIE5ldHdvcmtQcm9jZXNzL0Rvd25s
b2Fkcy9jb2NvYS9Eb3dubG9hZENvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L0Nv
Y29hL0RhZW1vbi9EYWVtb25FbnRyeVBvaW50Lm1tCiBOZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50
L0NvY29hL1hQQ1NlcnZpY2UvTmV0d29ya1NlcnZpY2VFbnRyeVBvaW50Lm1tCiAKK05ldHdvcmtQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5t
bQorCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb25Db2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnROZXR3b3JrTG9h
ZGVyQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29h
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50WFBDVXRpbGl0aWVzLm1tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggNTBjMDZjYWU2OTZlLi5jMGY0YjUxYjE2MDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKQEAgLTEwNSw2ICsx
MDUsNyBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24+IFdlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uOjpjb3B5KCkgY29uc3QKICAgICBjb3B5LT5tX2VuYWJsZUluQXBwQnJv
d3NlclByaXZhY3lGb3JUZXN0aW5nID0gdGhpcy0+bV9lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
Rm9yVGVzdGluZzsKICAgICBjb3B5LT5tX2FsbG93c0hTVFNXaXRoVW50cnVzdGVkUm9vdENlcnRp
ZmljYXRlID0gdGhpcy0+bV9hbGxvd3NIU1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZTsK
ICAgICBjb3B5LT5tX3BjbU1hY2hTZXJ2aWNlTmFtZSA9IHRoaXMtPm1fcGNtTWFjaFNlcnZpY2VO
YW1lOworICAgIGNvcHktPm1fd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSA9IHRoaXMtPm1fd2ViUHVz
aE1hY2hTZXJ2aWNlTmFtZTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAobV9wcm94eUNv
bmZpZ3VyYXRpb24pCiAgICAgICAgIGNvcHktPm1fcHJveHlDb25maWd1cmF0aW9uID0gYWRvcHRD
RihDRkRpY3Rpb25hcnlDcmVhdGVDb3B5KG51bGxwdHIsIHRoaXMtPm1fcHJveHlDb25maWd1cmF0
aW9uLmdldCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA2NDZlZTY0NjE3NmQuLjM4NmIwOTVlMmQ0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDM1LDYgKzEwMzUs
MTAgQEAKIAkJNTEyOTM1RDgxMjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RDYx
Mjg4RDE5NDAwQTRCNjk1IC8qIFdlYkNvbnRleHRNZW51SXRlbS5oICovOyB9OwogCQk1MTI5MzVF
NDEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUUy
MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
ICovOyB9OwogCQk1MTI5RUIxMjIzRDBERTdCMDBBRjFDRDcgLyogQ29udGVudFdvcmxkU2hhcmVk
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5RUIx
MTIzRDBERTc4MDBBRjFDRDcgLyogQ29udGVudFdvcmxkU2hhcmVkLmggKi87IH07CisJCTUxMkNE
Njk4MjcyMUVGQzgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQ0Q2OTcyNzIxRUZDMzAw
RjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmggKi87IH07CisJCTUxMkNENjlBMjcy
MUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMg
LyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oICovOyB9OworCQk1MTJDRDY5RjI3MjMzOTNBMDBG
N0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24u
aCAqLzsgfTsKKwkJNTEyQ0Q2QTAyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJDRDY5RTI3
MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSAqLzsgfTsKIAkJNTEyRTM0RTUxMzBC
NEQwNTAwQUJEMTlBIC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0EzM0I0MTMwQjMwOEMwMEY4MENC
NSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTEyRUNDMzUyNzE5NkFEQjAwMDg5QjY2IC8qIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCOTMwRkUyNkU4MDIxNjAwMzJCMUMwIC8qIFByaXZh
dGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oICovOyB9OwogCQk1MTJGNTg5NzEyQTg4Mzg4
MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCAqLzsgfTsKQEAgLTEwNTUsMTIgKzEw
NTksMTIgQEAKIAkJNTEzRTQ2MkQxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQ
aWNrZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEzRTQ2MkIxQUQ4Mzc1NjAwMTYyMzRBIC8qIFdLU2hhcmluZ1NlcnZpY2VQaWNrZXJE
ZWxlZ2F0ZS5oICovOyB9OwogCQk1MTNGRkI5MTIwMTQ1OUM2MDAyNTk2RUEgLyogV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxM0ZGQjhGMjAxNDU5QzIwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oICovOyB9OwogCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQgLyogV2Vi
SURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmggKi87IH07CisJCTUxNDUyNkVEMjcxRTE2NDcwMDA0NjdCNiAvKiBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0NTI2RUIyNzFFMTYyNjAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmggKi87IH07CiAJCTUxNDUyNkZGMjcxRkI3RUMwMDA0NjdCNiAvKiBOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkZFMjcxRkI3RTgwMDA0NjdCNiAvKiBOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgfTsKIAkJNTE0NTI3MDMyNzFGQkEzQTAwMDQ2
N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1Mjcw
MjI3MUZCQTM2MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE0NTI3MDQyNzFGQkE0MDAwMDQ2N0I2IC8qIE5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDAyNzFGQkEzNDAw
MDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzUmVwbGll
cy5oICovOyB9OwogCQk1MTQ1MjcwNTI3MUZCQTQwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNzAxMjcxRkJBMzUwMDA0NjdCNiAvKiBOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlcy5oICovOyB9OwogCQk1MTQ1MjcwODI3MUZC
RUM2MDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjcwNzI3MUZC
RUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi87
IH07Ci0JCTUxNDUyNkVEMjcxRTE2NDcwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
NTI2RUIyNzFFMTYyNjAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggKi87
IH07CiAJCTUxNDg5Q0MzMjM3MERCRkEwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0MxMjM3MERBQ0Mw
MDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CiAJCTUxNDg5Q0M3MjM3MjM3ODAwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1
bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi87
IH07CiAJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRBQjlFRjIz
NUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKQEAgLTQxMzMsNiArNDEzNywxMiBAQAogCQk1
MTI5MzVFMTEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVD
bGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4
dE1lbnVDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5qZWN0ZWRC
dW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEyOUVCMTEyM0QwREU3ODAwQUYxQ0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50V29ybGRTaGFyZWQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OTYyNzIxRUZDMjAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb25Db25uZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTEyQ0Q2OTcyNzIxRUZDMzAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlB1c2hEYWVtb25Db25uZWN0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjk5MjcyMUYwNDkwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlB1c2hEYWVtb25Db25zdGFudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTEyQ0Q2OUMyNzIyM0EwODAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0
aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQ
dXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFlbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMkNENjlFMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaERhZW1vbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyRjU4OEUxMkE4ODM4ODAwNjI5NTMw
IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEyRjU4OTAxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uRGVjaXNp
b25MaXN0ZW5lci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRo
ZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDE2Nyw2ICs0MTc3LDggQEAKIAkJNTE0MTI5OTIxQzY0MjgxMDAwNTlFNzE0IC8qIFdl
YklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYg
LyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQVBJSWNvbkxvYWRpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTE0NTI2RUIyNzFFMTYyNjAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDUyNkVDMjcxRTE2MjcwMDA0
NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDUyNkZDMjcxRkI3RTgwMDA0NjdCNiAvKiBOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjZGRTI3MUZCN0U4MDAwNDY3QjYgLyog
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjcwMDI3MUZCQTM0MDAwNDY3QjYgLyogTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1l
c3NhZ2VzUmVwbGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDE3NCw4ICs0
MTg2LDYgQEAKIAkJNTE0NTI3MDIyNzFGQkEzNjAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjcwNjI3MUZC
RUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDUy
NzA3MjcxRkJFQzEwMDA0NjdCNiAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNDUy
NkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYg
LyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVz
dWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZFJlc3VsdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4OUNDMjIzNzBEQUNDMDA0NEU2OEEgLyog
V0tGaW5kUmVzdWx0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tGaW5kUmVzdWx0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ4OUNDNjIz
NzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kUmVzdWx0SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTcxMzgsNiArNzE0OCw3IEBACiAJCQkJQkMzMDY4MjMxMjVBNkI5NDAw
RTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwICovLAogCQkJCUJDMzA2
ODIyMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggKi8s
CiAJCQkJNDY3RTQzRTcyMjQzRkY2RDAwQjEzOTI0IC8qIFdlYlByb2Nlc3NEYXRhU3RvcmVQYXJh
bWV0ZXJzLmggKi8sCisJCQkJNTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVt
b25Db25zdGFudHMuaCAqLywKIAkJCQk1QzhERDM3RjFGRTQ1MTkyMDBGMkE1NTYgLyogV2Vic2l0
ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJNUM4REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdl
YnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCiAJCQkJNTExRjdEM0YxRUIxQkNFRTAwRTQ3QjgzIC8q
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCAqLywKQEAgLTkwMzUsNiArOTA0NiwxNCBA
QAogCQkJcGF0aCA9IERhdGFiYXNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCTUxMkNENjlCMjcyMjM5RTQwMEY3RjhFQyAvKiBDb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTEyQ0Q2OUMyNzIyM0EwODAwRjdGOEVDIC8q
IFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IENv
Y29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJNTEyRjU4OEQxMkE4ODM2
RjAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTkwNTUsOCArOTA3NCwxMSBAQAogCQk1MTQ1MjZFQTI3MUUxNjEw
MDAwNDY3QjYgLyogTm90aWZpY2F0aW9ucyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNTEyQ0Q2OUIyNzIyMzlFNDAwRjdGOEVDIC8qIENvY29hICovLAog
CQkJCTUxNDUyNkVDMjcxRTE2MjcwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAgKi8sCiAJCQkJNTE0NTI2RUIyNzFFMTYyNjAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmggKi8sCisJCQkJNTEyQ0Q2OTYyNzIxRUZDMjAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb25Db25uZWN0aW9uLmNwcCAqLywKKwkJCQk1MTJDRDY5NzI3MjFFRkMzMDBGN0Y4RUMg
LyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gTm90aWZp
Y2F0aW9uczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05NTc4LDYgKzk2MDAsOCBA
QAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUNCQjZENEQyNzFGNjdDQzAwRkQxQTVEIC8qIGNvbS5h
cHBsZS53ZWJraXQud2VicHVzaGQucGxpc3QgKi8sCiAJCQkJNUMxNTdBMEIyNzE3Q0ExQzAwRUQ1
MjgwIC8qIFdlYlB1c2hEYWVtb25NYWluLm1tICovLAorCQkJCTUxMkNENjlEMjcyMzM5M0EwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggKi8sCisJCQkJNTEyQ0Q2OUUyNzIzMzkzQTAwRjdGOEVD
IC8qIFdlYlB1c2hEYWVtb24ubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IHdlYnB1c2hkOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyMTAwLDYgKzEyMTI0LDcgQEAKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1QzE1NzlGQzI3MTdB
RjUwMDBFRDUyODAgLyogRGFlbW9uVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJD
RDY5RjI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBA
IC0xMjgxOCw2ICsxMjg0Myw3IEBACiAJCQkJOTNBQjlCNEUyNTc1NjdFMjAwOThCMTBFIC8qIFNw
ZWVjaFJlY29nbml0aW9uUmVtb3RlUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNBQjlCNEQyNTc1NjdEQzAwOThCMTBFIC8qIFNwZWVjaFJlY29nbml0aW9uUmVtb3Rl
UmVhbHRpbWVNZWRpYVNvdXJjZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzcy
MjU0QkI1MTkwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTEyQ0Q2OUEyNzIxRjBBOTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFu
dHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg0MjU0Q0NEMEUwMDU4REQzQSAvKiBTcGVl
Y2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4
NTI1NENDRDQzMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlc1JlcGxp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBM0ZFQ0EyMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9y
YWdlQWNjZXNzU3RhdHVzLmggaW4gSGVhZGVycyAqLywKQEAgLTEyOTA1LDYgKzEyOTMxLDcgQEAK
IAkJCQk5OTBEMzlGNTI0M0JFNjQ4MDAxOTkzODggLyogV2ViQXV0b21hdGlvbkRPTVdpbmRvd09i
c2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyog
V2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5QzNBRTJEMURBREE2
QUQwMEFGNUMxNiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1hY3Jvcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEyQ0Q2OTgyNzIxRUZDODAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1ODFDOTAwNjhGMDBGRTBFQkIgLyogV2ViQXV0
b21hdGlvblNlc3Npb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NDcxQzhG
RjFBODAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDMEExOTU0MUM4RkZERkIwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTQ2NjAsNiArMTQ2ODcsNyBAQAogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTEyQ0Q2QTAyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzE1N0EwMTI3MTdCN0ZCMDBFRDUyODAg
LyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5RkYyNzE3QjZE
MjAwRUQ1MjgwIC8qIERhZW1vbkRlY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTc5
RkUyNzE3QjZDMTAwRUQ1MjgwIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYTk0ZWRkNGUzMjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+
CisjaW5jbHVkZSA8d3RmL1NwYW4uaD4KKyNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9YUENTUEku
aD4KKwordXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6TWVzc2FnZVR5cGU7CisKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK3VzaW5nIEVuY29kZWRNZXNzYWdlID0gVmVjdG9yPHVpbnQ4X3Q+OworCitj
bGFzcyBEYWVtb24geworICAgIGZyaWVuZCBjbGFzcyBXVEY6Ok5ldmVyRGVzdHJveWVkPERhZW1v
bj47CitwdWJsaWM6CisgICAgc3RhdGljIERhZW1vbiYgc2luZ2xldG9uKCk7CisKKyAgICB2b2lk
IGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90KTsKKyAgICB2b2lkIGNvbm5lY3Rp
b25BZGRlZCh4cGNfY29ubmVjdGlvbl90KTsKKyAgICB2b2lkIGNvbm5lY3Rpb25SZW1vdmVkKHhw
Y19jb25uZWN0aW9uX3QpOworCisgICAgLy8gTWVzc2FnZSBoYW5kbGVycworICAgIHZvaWQgZWNo
b1R3aWNlKGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgcmVwbHlTZW5kZXIpOworCitwcml2YXRlOgorICAgIERhZW1vbigpID0gZGVmYXVsdDsK
KworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IGNyZWF0ZVJl
cGx5U2VuZGVyKE1lc3NhZ2VUeXBlLCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVz
dCk7CisgICAgdm9pZCBkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKE1lc3NhZ2VUeXBlLCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29k
ZWRNZXNzYWdlJiYpPiYmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi5jNDk3ODAwNWVhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb24uaCIKKworI2lt
cG9ydCAiRGFlbW9uRGVjb2Rlci5oIgorI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgorI2ltcG9y
dCAiRGFlbW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJIYW5kbGVNZXNzYWdlLmgiCisjaW1wb3J0
ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisKKyNpbXBvcnQgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW1wb3J0IDx3dGYvU3Bh
bi5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRDsKKworbmFtZXNwYWNlIFdl
YlB1c2hEIHsKKworbmFtZXNwYWNlIE1lc3NhZ2VJbmZvIHsKKworI2RlZmluZSBGVU5DVElPTiht
Zikgc3RydWN0IG1mIHsgc3RhdGljIGNvbnN0ZXhwciBhdXRvIE1lbWJlckZ1bmN0aW9uID0gJldl
YlB1c2hEOjpEYWVtb246Om1mOworI2RlZmluZSBBUkdVTUVOVFMoLi4uKSB1c2luZyBBcmdzVHVw
bGUgPSBzdGQ6OnR1cGxlPF9fVkFfQVJHU19fPjsKKyNkZWZpbmUgUkVQTFkoLi4uKSB1c2luZyBS
ZXBseSA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoX19WQV9BUkdTX18pPjsgXAorICAgIHN0YXRp
YyBXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgZW5jb2RlUmVwbHkoX19WQV9BUkdTX18pOworI2Rl
ZmluZSBFTkQgfTsKKworRlVOQ1RJT04oZWNob1R3aWNlKQorQVJHVU1FTlRTKFN0cmluZykKK1JF
UExZKFN0cmluZykKK0VORAorCisjdW5kZWYgRlVOQ1RJT04KKyN1bmRlZiBBUkdVTUVOVFMKKyN1
bmRlZiBSRVBMWQorI3VuZGVmIEVORAorCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgZWNob1R3
aWNlOjplbmNvZGVSZXBseShTdHJpbmcgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVu
Y29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KKwordGVtcGxh
dGU8dHlwZW5hbWUgSW5mbz4KK3ZvaWQgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5KFNw
YW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIFdlYktp
dDo6RGFlbW9uOjpEZWNvZGVyIGRlY29kZXIoZW5jb2RlZE1lc3NhZ2UpOworCisgICAgc3RkOjpv
cHRpb25hbDx0eXBlbmFtZSBJbmZvOjpBcmdzVHVwbGU+IGFyZ3VtZW50czsKKyAgICBkZWNvZGVy
ID4+IGFyZ3VtZW50czsKKyAgICBpZiAoVU5MSUtFTFkoIWFyZ3VtZW50cykpCisgICAgICAgIHJl
dHVybjsKKworICAgIHR5cGVuYW1lIEluZm86OlJlcGx5IGNvbXBsZXRpb25IYW5kbGVyIHsgW3Jl
cGx5U2VuZGVyID0gV1RGTW92ZShyZXBseVNlbmRlcildIChhdXRvJiYuLi4gYXJncykgbXV0YWJs
ZSB7CisgICAgICAgIHJlcGx5U2VuZGVyKEluZm86OmVuY29kZVJlcGx5KGFyZ3MuLi4pKTsKKyAg
ICB9IH07CisKKyAgICBJUEM6OmNhbGxNZW1iZXJGdW5jdGlvbihXVEZNb3ZlKCphcmd1bWVudHMp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgJldlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRv
bigpLCBJbmZvOjpNZW1iZXJGdW5jdGlvbik7Cit9CisKK0RhZW1vbiYgRGFlbW9uOjpzaW5nbGV0
b24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxEYWVtb24+IGRhZW1vbjsKKyAgICBy
ZXR1cm4gZGFlbW9uOworfQorCit2b2lkIERhZW1vbjo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcih4
cGNfb2JqZWN0X3QgcmVxdWVzdCkKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3QpICE9
IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBW
ZXJpZnkgdGhlIGNvbm5lY3Rpb24gaXMga25vd24KKyAgICAKKyAgICBpZiAoeHBjX2RpY3Rpb25h
cnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbFZlcnNpb25LZXkpICE9IHByb3RvY29sVmVy
c2lvblZhbHVlKSB7CisgICAgICAgIE5TTG9nKEAiUmVjZWl2ZWQgcmVxdWVzdCB0aGF0IHdhcyBu
b3QgdGhlIGN1cnJlbnQgcHJvdG9jb2wgdmVyc2lvbiIpOworICAgICAgICAvLyBGSVhNRTogQ3V0
IG9mZiB0aGlzIGNvbm5lY3Rpb24KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8g
bWVzc2FnZVR5cGUgeyBzdGF0aWNfY2FzdDxNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0
X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKKyAgICBzaXplX3Qg
ZGF0YVNpemUgeyAwIH07CisgICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dl
dF9kYXRhKHJlcXVlc3QsIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7Cisg
ICAgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0
IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKKyAgICAKKyAgICBkZWNvZGVBbmRIYW5kbGVN
ZXNzYWdlKG1lc3NhZ2VUeXBlLCBlbmNvZGVkTWVzc2FnZSwgY3JlYXRlUmVwbHlTZW5kZXIobWVz
c2FnZVR5cGUsIHJlcXVlc3QpKTsKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25BZGRlZCh4
cGNfY29ubmVjdGlvbl90KQoreworICAgIC8vIEZJWE1FOiBUcmFjayBjb25uZWN0aW9ucworfQor
Cit2b2lkIERhZW1vbjo6Y29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3sKKyAg
ICAvLyBGSVhNRTogVHJhY2sgY29ubmVjdGlvbnMKK30KKworQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChFbmNvZGVkTWVzc2FnZSYmKT4gRGFlbW9uOjpjcmVhdGVSZXBseVNlbmRlcihNZXNzYWdlVHlw
ZSBtZXNzYWdlVHlwZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpCit7Cisg
ICAgaWYgKCFtZXNzYWdlVHlwZVNlbmRzUmVwbHkobWVzc2FnZVR5cGUpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBbcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldIChF
bmNvZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIHsKKyAgICAgICAgYXV0byByZXBseSA9IGFkb3B0TlMo
eHBjX2RpY3Rpb25hcnlfY3JlYXRlX3JlcGx5KHJlcXVlc3QuZ2V0KCkpKTsKKyAgICAgICAgQVNT
RVJUKHhwY19nZXRfdHlwZShyZXBseS5nZXQoKSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7Cisg
ICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQocmVwbHkuZ2V0KCksIHByb3RvY29sVmVy
c2lvbktleSwgcHJvdG9jb2xWZXJzaW9uVmFsdWUpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdmFsdWUocmVwbHkuZ2V0KCksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdlYktpdDo6
dmVjdG9yVG9YUENEYXRhKFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKKyAgICAgICAgeHBjX2Nv
bm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlv
bihyZXF1ZXN0LmdldCgpKSwgcmVwbHkuZ2V0KCkpOworICAgIH07Cit9CisKK3ZvaWQgRGFlbW9u
OjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBTcGFuPGNv
bnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29k
ZWRNZXNzYWdlJiYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIEFTU0VSVChtZXNzYWdlVHlwZVNl
bmRzUmVwbHkobWVzc2FnZVR5cGUpID09ICEhcmVwbHlTZW5kZXIpOworCisgICAgc3dpdGNoICht
ZXNzYWdlVHlwZSkgeworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToKKyAgICAgICAg
aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjplY2hvVHdpY2U+KGVu
Y29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KK30KKwordm9pZCBEYWVtb246OmVjaG9Ud2ljZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgcmVwbHlTZW5kZXIpCit7Cisg
ICAgcmVwbHlTZW5kZXIobWFrZVN0cmluZyhtZXNzYWdlLCBtZXNzYWdlKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dl
YlB1c2hEYWVtb25NYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
TWFpbi5tbQppbmRleCAyNGEzYjIxNjE0YmIuLmFjY2NiNTY4NjYyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCkBAIC0yOCw3NyArMjgsMjkgQEAKICNp
bXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKICNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIKICNpbXBv
cnQgIkRhZW1vblV0aWxpdGllcy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbi5oIgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgot
I2ltcG9ydCA8d3RmL1NwYW4uaD4KICNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgog
Ci1uYW1lc3BhY2UgV2ViUHVzaEQgewotCi1jb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xW
ZXJzaW9uS2V5ID0gInByb3RvY29sIHZlcnNpb24iOwotY29uc3RleHByIHVpbnQ2NF90IHByb3Rv
Y29sVmVyc2lvblZhbHVlID0gMTsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbE1lc3Nh
Z2VUeXBlS2V5ID0gIm1lc3NhZ2UgdHlwZSI7Ci1jb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9j
b2xFbmNvZGVkTWVzc2FnZUtleSA9ICJlbmNvZGVkIG1lc3NhZ2UiOwotZW51bSBjbGFzcyBNZXNz
YWdlVHlwZSA6IHVpbnQ4X3QgewotICAgIEVjaG9Ud2ljZSA9IDEKLX07Ci0KLXN0YXRpYyBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4gcmVwbHlTZW5kZXIoUmV0YWlu
UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQotewotICAgIHJldHVybiBbcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCldIChWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlKSB7Ci0gICAgICAgIGF1
dG8gcmVwbHkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1ZXN0Lmdl
dCgpKSk7Ci0gICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkuZ2V0KCkpID09IFhQQ19U
WVBFX0RJQ1RJT05BUlkpOwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KHJlcGx5
LmdldCgpLCBwcm90b2NvbFZlcnNpb25LZXksIHByb3RvY29sVmVyc2lvblZhbHVlKTsKLSAgICAg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKHJlcGx5LmdldCgpLCBwcm90b2NvbEVuY29kZWRN
ZXNzYWdlS2V5LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQo
KSk7Ci0gICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFyeV9n
ZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgpKTsKLSAgICB9
OwotfQotCi1zdGF0aWMgdm9pZCBlY2hvVHdpY2UoU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVk
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgcmVw
bHlTZW5kZXIpCi17Ci0gICAgV2ViS2l0OjpEYWVtb246OkRlY29kZXIgZGVjb2RlcihlbmNvZGVk
TWVzc2FnZSk7Ci0gICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKLSAgICBkZWNvZGVy
ID4+IHN0cmluZzsKLSAgICBpZiAoIXN0cmluZykKLSAgICAgICAgcmV0dXJuOwordXNpbmcgV2Vi
S2l0OjpEYWVtb246OkVuY29kZWRNZXNzYWdlOwordXNpbmcgV2ViUHVzaEQ6OkRhZW1vbjsKIAot
ICAgIGF1dG8gcmVwbHkgPSBtYWtlU3RyaW5nKCpzdHJpbmcsICpzdHJpbmcpOwotICAgIFdlYktp
dDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7Ci0gICAgZW5jb2RlciA8PCByZXBseTsKLSAgICBy
ZXBseVNlbmRlcihlbmNvZGVyLnRha2VCdWZmZXIoKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRlY29k
ZU1lc3NhZ2VBbmRTZW5kUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNwYW48Y29uc3Qg
dWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVp
bnQ4X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQotewotICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsK
LSAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6Ci0gICAgICAgIGVjaG9Ud2ljZShlbmNv
ZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotfQorbmFtZXNwYWNlIFdlYlB1c2hEIHsKIAogc3RhdGljIHZvaWQgY29ubmVjdGlvbkV2ZW50
SGFuZGxlcih4cGNfb2JqZWN0X3QgcmVxdWVzdCkKIHsKLSAgICBpZiAoeHBjX2dldF90eXBlKHJl
cXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAo
eHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbFZlcnNpb25LZXkpICE9
IHByb3RvY29sVmVyc2lvblZhbHVlKSB7Ci0gICAgICAgIE5TTG9nKEAiUmVjZWl2ZWQgcmVxdWVz
dCB0aGF0IHdhcyBub3QgdGhlIGN1cnJlbnQgcHJvdG9jb2wgdmVyc2lvbiIpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRpY19jYXN0PE1lc3Nh
Z2VUeXBlPih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sTWVzc2Fn
ZVR5cGVLZXkpKSB9OwotICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKLSAgICBjb25zdCB2b2lk
KiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgcHJvdG9jb2xFbmNvZGVk
TWVzc2FnZUtleSwgJmRhdGFTaXplKTsKLSAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRN
ZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9Owot
ICAgIGRlY29kZU1lc3NhZ2VBbmRTZW5kUmVwbHkobWVzc2FnZVR5cGUsIGVuY29kZWRNZXNzYWdl
LCByZXBseVNlbmRlcihyZXF1ZXN0KSk7CisgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uRXZlbnRIYW5kbGVyKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgdm9pZCBjb25uZWN0aW9uQWRk
ZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpb25BZGRlZCh4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CisgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uQWRkZWQoY29ubmVjdGlvbik7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbm5lY3Rpb25SZW1vdmVk
KHhwY19jb25uZWN0aW9uX3QpCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24pCiB7CisgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5jb25uZWN0
aW9uUmVtb3ZlZChjb25uZWN0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwYjZkZmE1
OGNhYjYuLjg2YjY3M2QxNzkwYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTEwLTI1ICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgaGVscGVyIGNsYXNzZXMgYW5kIG1l
c3NhZ2luZyBpbmZyYXN0cnVjdHVyZSB0byBsYXVuY2ggd2VicHVzaGQgYW5kIHJvdW5kIHRyaXAg
YSBtZXNzYWdlIHRvIGl0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzIyNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAocGVyc2lz
dGVudERhdGFTdG9yZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIF93
ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVj
aXNpb25IYW5kbGVyOl0pOgorCiAyMDIxLTEwLTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBBZGQgYW4gZXhwbGljaXQgSW1hZ2VE
aWZmUmVzdWx0LnBhc3NlZCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGRpZmZfaW1hZ2UgYmVpbmcg
bm9uLU5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5t
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KaW5kZXggNzVkNjkxZGUyNmJm
Li44YTMyYmQ5MjhlMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCkBAIC05OCw2
ICs5OCwxMSBAQCAtICh2b2lkKWF3YWtlRnJvbU5pYgogICAgIGlmICghZGF0YVN0b3JlKSB7CiAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKICAgICAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkID0gWUVTOworCisgICAgICAgIC8vIEZJWE1FOiBXaGVuIGJ1aWx0LWluIG5v
dGlmaWNhdGlvbnMgYXJlIGVuYWJsZWQsIFdlYktpdCBkb2Vzbid0IHlldCBncmFjZWZ1bGx5IGhh
bmRsZSBhIG1pc3Npbmcgd2VicHVzaGQgc2VydmljZQorICAgICAgICAvLyBVbnRpbCBpdCBkb2Vz
LCB1bmNvbW1lbnQgdGhpcyBsaW5lIHdoZW4gdGhlIHNlcnZpY2UgaXMga25vd24gdG8gYmUgaW5z
dGFsbGVkLgorICAgICAgICAvLyBbY29uZmlndXJhdGlvbiBzZXRXZWJQdXNoTWFjaFNlcnZpY2VO
YW1lOkAib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIl07CisKICAgICAgICAg
ZGF0YVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl07CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCAzYzQzNTYwOGE0N2Iu
LjBjZTAwMWEzMDczZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTIxMiw2ICsyMTIsMTMgQEAgLSAoQ0dGbG9hdCl2aWV3
U2NhbGVGb3JNZW51SXRlbVRhZzooTlNJbnRlZ2VyKXRhZwogICAgIHJldHVybiAxOwogfQogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9y
aWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgorewor
ICAgIC8vIEZvciB0ZXN0aW5nLCBncmFudCBub3RpZmljYXRpb24gcGVybWlzc2lvbiB0byBhbGwg
b3JpZ2lucy4KKyAgICBOU0xvZyhAIkdyYW50aW5nIG5vdGlmaWNhdGlvbnMgcGVybWlzc2lvbiB0
byBvcmlnaW4gJUAiLCBzZWN1cml0eU9yaWdpbik7CisgICAgZGVjaXNpb25IYW5kbGVyKFlFUyk7
Cit9CisKIC0gKElCQWN0aW9uKXNldFZpZXdTY2FsZTooaWQpc2VuZGVyCiB7CiAgICAgQ0dGbG9h
dCBzY2FsZSA9IFtzZWxmIHZpZXdTY2FsZUZvck1lbnVJdGVtVGFnOltzZW5kZXIgdGFnXV07Cg==
</data>
<flag name="commit-queue"
          id="466948"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442446</attachid>
            <date>2021-10-25 18:46:16 -0700</date>
            <delta_ts>2021-10-25 19:13:34 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55469</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGMwNjNiY2RlYjJmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKKyNpbXBvcnQgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCit1c2luZyBE
YWVtb246OkVuY29kZWRNZXNzYWdlOworCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBX
ZWJQdXNoRCB7CisKK3N0YXRpYyB2b2lkIGFkZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGlj
dGlvbmFyeShWZWN0b3I8dWludDhfdD4mJiBtZXNzYWdlLCB4cGNfb2JqZWN0X3QgZGljdGlvbmFy
eSkKK3sKKyAgICBBU1NFUlQoeHBjX2dldF90eXBlKGRpY3Rpb25hcnkpID09IFhQQ19UWVBFX0RJ
Q1RJT05BUlkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeSwgV2Vi
UHVzaEQ6OnByb3RvY29sVmVyc2lvbktleSwgV2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvblZhbHVl
KTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUoZGljdGlvbmFyeSwgV2ViUHVzaEQ6OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIHZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2Up
KS5nZXQoKSk7Cit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6bmV3Q29ubmVjdGlvbldhc0luaXRpYWxp
emVkKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBpZiAobmV0d29y
a1Nlc3Npb24oKS5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBGSVhNRTogVHJhY2sgY29ubmVjdGlvbiBzdGF0ZQorfQorCit2b2lkIENvbm5lY3Rp
b246OmNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCByZXF1ZXN0KSBjb25zdAor
eworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkK
KyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IGNoYXIqIGRlYnVnTWVzc2FnZSA9IHhwY19kaWN0
aW9uYXJ5X2dldF9zdHJpbmcocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3NhZ2VLZXkpOworICAg
IGlmICghZGVidWdNZXNzYWdlKQorICAgICAgICByZXR1cm47CisgICAgYXV0byBtZXNzYWdlTGV2
ZWwgPSBzdGF0aWNfY2FzdDxKU0M6Ok1lc3NhZ2VMZXZlbD4oeHBjX2RpY3Rpb25hcnlfZ2V0X3Vp
bnQ2NChyZXF1ZXN0LCBwcm90b2NvbERlYnVnTWVzc2FnZUxldmVsS2V5KSk7CisgICAgbmV0d29y
a1Nlc3Npb24oKS5uZXR3b3JrUHJvY2VzcygpLmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG5ldHdv
cmtTZXNzaW9uKCkuc2Vzc2lvbklEKCksIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50LCBtZXNzYWdlTGV2ZWwsIFN0cmluZzo6ZnJvbVVURjgoZGVidWdNZXNzYWdlKSk7Cit9
CisKK1JldGFpblB0cjx4cGNfb2JqZWN0X3Q+IENvbm5lY3Rpb246OmRpY3Rpb25hcnlGcm9tTWVz
c2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSBj
b25zdAoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3Nh
Z2VUb0RpY3Rpb25hcnkoV1RGTW92ZShtZXNzYWdlKSwgZGljdGlvbmFyeS5nZXQoKSk7CisgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBwcm90b2NvbE1lc3Nh
Z2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWVzc2FnZVR5cGUpKTsKKyAgICByZXR1
cm4gZGljdGlvbmFyeTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggYTI4OGEyMThkMTIwLi44ZmUxZGMx
Zjg5NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cApAQCAtMjgsMjggKzI4LDk0IEBACiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKIAorI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVy
LmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
Y29uc3QgU3RyaW5nJikKK05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmlu
ZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSkKICAgICA6IG1fbmV0d29ya1Nlc3Npb24obmV0d29y
a1Nlc3Npb24pCiB7CisgICAgcHJpbnRmKCJDcmVhdGVkIG5ldyBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlciB3aXRoIHdlYlB1c2hNYWNoU2VydmljZU5hbWU6ICVzXG4iLCB3ZWJQdXNoTWFjaFNl
cnZpY2VOYW1lLnV0ZjgoKS5kYXRhKCkpOworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbi5zZXNz
aW9uSUQoKS5pc0VwaGVtZXJhbCgpICYmICF3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lLmlzRW1wdHko
KSkKKyAgICAgICAgbV9jb25uZWN0aW9uID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlv
bj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCksICp0aGlzKTsKIH0KIAogdm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90
KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CisKKy8vICAgICBG
SVhNRTogV2hpbGUgd2UgZG9uJ3Qgbm9ybWFsbHkgbGFuZCBjb21tZW50ZWQtb3V0IGNvZGUgaW4g
dGhlIHRyZWUsCisvLyAgICAgdGhpcyBpcyBhIG5pY2UgYm9va21hcmsgZm9yIGEgZGV2ZWxvcG1l
bnQgbWlsZXN0b25lOyBSb3VuZHRyaXAgY29tbXVuaWNhdGlvbiB3aXRoIHdlYnB1c2hkCisvLyAg
ICAgV2lsbCBtYWtlIG5leHQgZGV2ZWxvcG1lbnQgc3RlcHMgb2J2aW91cy4KKy8vCisvLyAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSAo
U3RyaW5nIHJlcGx5KSB7CisvLyAgICAgICAgcHJpbnRmKCJHb3QgcmVwbHk6ICVzXG4iLCByZXBs
eS51dGY4KCkuZGF0YSgpKTsKKy8vICAgIH07CisvLworLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVw
bHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBEbyB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCiB2b2lk
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3Qp
CiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBO
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mKQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmlj
YXRpb24odWludDY0X3QpCiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVy
bjsKK30KKworCit0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVz
c2FnZShBcmdzJiYuLi4gYXJncykgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5l
Y3Rpb24pOworICAgIERhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2Rl
KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1l
c3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VCdWZmZXIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
Li4uIEFyZ3M+IHN0cnVjdCBSZXBseUNhbGxlcjsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2Fs
bGVyPD4geworICAgIHN0YXRpYyB2b2lkIGNhbGxSZXBseShEYWVtb246OkRlY29kZXImJiBkZWNv
ZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFl
bW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOworICAgICAgICBkZWNvZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJp
bmcpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0
eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpz
ZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+
JiYgY29tcGxldGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAoreworICAgIFJFTEVB
U0VfQVNTRVJUKG1fY29ubmVjdGlvbik7CisKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsK
KyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZFdpdGhSZXBseShtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVy
KCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0
byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7CisgICAgICAgIERhZW1vbjo6RGVjb2RlciBkZWNvZGVy
KFdURk1vdmUocmVwbHlCdWZmZXIpKTsKKyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4u
Pjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVjb2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9O
ZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCmluZGV4IDQxYzgyOThjMTE5Yi4uNmZhODc1Njg0
Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAt
MjgsMTYgKzI4LDI0IEBACiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKICNp
bmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9u
RGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCituYW1lc3BhY2UgV2ViUHVzaEQgeworZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3Q7Cit9CisKIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlciA6IHB1YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKK3B1YmxpYzoKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24oKSBjb25zdCB7IHJldHVybiBtX25ldHdvcmtTZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcm
IHdlYlB1c2hNYWNoU2VydmljZU5hbWUpOwogCkBAIC00Nyw2ICs1NSwxMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkRGVzdHJveU5vdGlmaWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkg
ZmluYWw7CiAKICAgICBOZXR3b3JrU2Vzc2lvbiYgbV9uZXR3b3JrU2Vzc2lvbjsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViUHVzaEQ6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIHRl
bXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLikgY29uc3Q7CisgICAgdGVtcGxhdGU8
V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBl
bmFtZS4uLiBSZXBseUFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDQ4MWZh
NmUzMWQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlB1c2hEYWVt
b25Db25uZWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKwor
I2luY2x1ZGUgIkRhZW1vbkRlY29kZXIuaCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCisj
aW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3Bh
Y2UgV2ViUHVzaEQgeworCitDb25uZWN0aW9uOjpDb25uZWN0aW9uKENTdHJpbmcmJiBtYWNoU2Vy
dmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJiBtYW5hZ2VyKQorICAgIDogRGFl
bW9uOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZTxDb25uZWN0aW9uVHJhaXRzPihXVEZNb3ZlKG1h
Y2hTZXJ2aWNlTmFtZSkpCisgICAgLCBtX25vdGlmaWNhdGlvbk1hbmFnZXIobWFuYWdlcikKK3sK
KyAgICBMT0coUHVzaCwgIkNyZWF0aW5nIFdlYlB1c2hEIGNvbm5lY3Rpb24gdG8gbWFjaCBzZXJ2
aWNlOiAlcyIsIHRoaXMtPm1hY2hTZXJ2aWNlTmFtZSgpLmRhdGEoKSk7Cit9CisKK05ldHdvcmtT
ZXNzaW9uJiBDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbm90aWZpY2F0aW9uTWFuYWdlci5uZXR3b3JrU2Vzc2lvbigpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJQdXNoRAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBFTkFCTEUo
QlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0
aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZDA5OGJlNDdk
N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDczIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKKworI2luY2x1ZGUgIkRhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCituYW1lc3BhY2UgV2Vi
UHVzaEQgeworCitzdHJ1Y3QgQ29ubmVjdGlvblRyYWl0cyB7CisgICAgdXNpbmcgTWVzc2FnZVR5
cGUgPSBXZWJQdXNoRDo6TWVzc2FnZVR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uS2V5IH07
CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSB7IFdl
YlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7IFdlYlB1c2hEOjpwcm90b2NvbEVu
Y29kZWRNZXNzYWdlS2V5IH07Cit9OworCitjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIERhZW1v
bjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0cz4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENvbm5lY3Rpb24oQ1N0cmluZyYmIG1h
Y2hTZXJ2aWNlTmFtZSwgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImKTsKKworcHJpdmF0ZToK
KyAgICB2b2lkIG5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFsOworI2lm
IFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rpb25hcnlG
cm9tTWVzc2FnZShNZXNzYWdlVHlwZSwgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZSYmKSBjb25zdCBm
aW5hbDsKKyAgICB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3RfdCkgY29u
c3QgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRNZXNzYWdl
SWZOZWNlc3NhcnkoKSBjb25zdDsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lv
bigpIGNvbnN0OworCisgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImIG1fbm90aWZpY2F0
aW9uTWFuYWdlcjsKKworICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBl
bmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uKSBjb25zdDsKKyAg
ICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlw
ZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0OworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorI2VuZGlm
IC8vIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGNkNTQ3ZGViOTVjNy4uMzA5YmFiNDI1
N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaApA
QCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAjZWxzZQog
CisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3Ry
dWN0IFNlc3Npb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5zYi5p
bgppbmRleCBjOTEyMmY2YmY4ZDIuLjFhYzRhYWFkNTM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vzcy5z
Yi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNjksNiArMzY5LDkgQEAKIChhbGxvdyBtYWNo
LWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndlYmtpdC5h
ZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGggdGVsZW1l
dHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1vbi5zZXJ2aWNlIikpCiAK
Kzs7IEZJWE1FOiBTZXR0bGUgb24gcmVhbCBuYW1lCisoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGgg
dGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2Vy
dmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxvdyBtYWNoLWxvb2t1cCAo
d2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRpc2tBcmJp
dHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggNWVlMzk1YzcyODUyLi5lYmVjMzI1ODk2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGFlbW9uQ29ubmVjdGlvbi5oIgogCiAjaW5j
bHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTQ2LDYg
KzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxUcmFpdHM+OjpzZW5kV2l0aFJl
cGx5KHR5cGVuYW1lIFRyYWl0czo6TWVzc2FnZVR5cGUKIH0KIAogdGVtcGxhdGUgY2xhc3MgQ29u
bmVjdGlvblRvTWFjaFNlcnZpY2U8UENNOjpDb25uZWN0aW9uVHJhaXRzPjsKK3RlbXBsYXRlIGNs
YXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0aW9uVHJhaXRzPjsK
IAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1v
bkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rp
b24uaAppbmRleCA3NWIxMDRmODMzMmQuLmRiZTg1ODMwZWU4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaApAQCAtNzEsNiArNzEsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3Rf
dCkgY29uc3QgPSAwOwogI2VuZGlmCiAKKyAgICBjb25zdCBDU3RyaW5nJiBtYWNoU2VydmljZU5h
bWUoKSBjb25zdCB7IHJldHVybiBtX21hY2hTZXJ2aWNlTmFtZTsgfQorCiBwcml2YXRlOgogICAg
IHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29j
b2EubW0KaW5kZXggZDAzNTcwOWQ0ZTNkLi42YjA5ZmM4YmRlYzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29jb2Eu
bW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgogI2ltcG9y
dCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3
dGYvUnVuTG9vcC5oPgogCkBAIC0xMTIsNiArMTEzLDEwIEBAIHZvaWQgQ29ubmVjdGlvblRvTWFj
aFNlcnZpY2U8VHJhaXRzPjo6c2VuZFdpdGhSZXBseSh0eXBlbmFtZSBUcmFpdHM6Ok1lc3NhZ2VU
eXBlCiAKIHRlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6Q29ubmVj
dGlvblRyYWl0cz47CiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKK3RlbXBs
YXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0aW9uVHJh
aXRzPjsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBEYWVtb24KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGM5ZWNhOGMyODFiMi4uYTgzMjY4
Yjk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtODcsNiArODcsNyBAQCBleHRl
cm4gIkMiIHsKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAgICAgTShQcm9jZXNzU3dhcHBp
bmcpIFwKICAgICBNKFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKKyAgICBNKFB1c2gpIFwKICAgICBN
KFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAgICAgTShSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZGEwYjM3NzBj
MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9u
Q29uc3RhbnRzLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK2NvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJvdG9jb2wgdmVyc2lvbiI7Citjb25z
dGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgPSAxOworY29uc3RleHByIGNvbnN0
IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2RlZCBtZXNzYWdlIjsKKwor
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlS2V5IHsgImRlYnVnIG1l
c3NhZ2UiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZl
bEtleSB7ICJkZWJ1ZyBtZXNzYWdlIGxldmVsIiB9OworCitjb25zdGV4cHIgY29uc3QgY2hhciog
cHJvdG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CitlbnVtIGNsYXNzIE1l
c3NhZ2VUeXBlIDogdWludDhfdCB7CisgICAgRWNob1R3aWNlID0gMSwKK307CisKK2lubGluZSBi
b29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNl
OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRAorfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmMTk5OGE2MGM2MzEuLjE0MjdlN2UzYmJj
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CkBAIC05OCw2ICs5OCw3IEBAIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQ
dXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAKIAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcAogTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyMDk2OTNlNGIzMjkuLjczZGY5NWM4
MDg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDEsNiArNDEsOCBAQCBOZXR3b3JrUHJv
Y2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvRW50
cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9uRW50cnlQb2ludC5tbQogTmV0d29ya1Byb2Nlc3Mv
RW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQog
CitOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0
aW9uQ29jb2EubW0KKwogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29j
b2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2EubW0KIE5ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50
TmV0d29ya0xvYWRlckNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDUwYzA2Y2FlNjk2ZS4uYzBm
NGI1MWIxNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBA
IC0xMDUsNiArMTA1LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9lbmFi
bGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZyA9IHRoaXMtPm1fZW5hYmxlSW5BcHBCcm93
c2VyUHJpdmFjeUZvclRlc3Rpbmc7CiAgICAgY29weS0+bV9hbGxvd3NIU1RTV2l0aFVudHJ1c3Rl
ZFJvb3RDZXJ0aWZpY2F0ZSA9IHRoaXMtPm1fYWxsb3dzSFNUU1dpdGhVbnRydXN0ZWRSb290Q2Vy
dGlmaWNhdGU7CiAgICAgY29weS0+bV9wY21NYWNoU2VydmljZU5hbWUgPSB0aGlzLT5tX3BjbU1h
Y2hTZXJ2aWNlTmFtZTsKKyAgICBjb3B5LT5tX3dlYlB1c2hNYWNoU2VydmljZU5hbWUgPSB0aGlz
LT5tX3dlYlB1c2hNYWNoU2VydmljZU5hbWU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYg
KG1fcHJveHlDb25maWd1cmF0aW9uKQogICAgICAgICBjb3B5LT5tX3Byb3h5Q29uZmlndXJhdGlv
biA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weShudWxscHRyLCB0aGlzLT5tX3Byb3h5
Q29uZmlndXJhdGlvbi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ2ZWU2NDYxNzZkLi4zODZiMDk1ZTJkNDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAz
NSw2ICsxMDM1LDEwIEBACiAJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0
TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLzsgfTsK
IAkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRN
ZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1l
bnVDbGllbnQuaCAqLzsgfTsKIAkJNTEyOUVCMTIyM0QwREU3QjAwQUYxQ0Q3IC8qIENvbnRlbnRX
b3JsZFNoYXJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTEyOUVCMTEyM0QwREU3ODAwQUYxQ0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oICovOyB9
OworCQk1MTJDRDY5ODI3MjFFRkM4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjk3
MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovOyB9OworCQk1
MTJDRDY5QTI3MjFGMEE5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQ0Q2OTkyNzIxRjA0
OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAqLzsgfTsKKwkJNTEyQ0Q2OUYy
NzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjlEMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQ
dXNoRGFlbW9uLmggKi87IH07CisJCTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNo
RGFlbW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyQ0Q2OUUyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24ubW0gKi87IH07CiAJCTUx
MkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBMzNCNDEzMEIz
MDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMkVDQzM1MjcxOTZBREIwMDA4
OUI2NiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjkzMEZFMjZFODAyMTYwMDMyQjFD
MCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTEyRjU4
OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODhGMTJBODgz
ODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggKi87IH07CkBAIC0x
MDU1LDEyICsxMDU5LDEyIEBACiAJCTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJp
bmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2
aWNlUGlja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNTEzRkZCOTEyMDE0NTlDNjAwMjU5NkVBIC8q
IFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGRkI4RjIwMTQ1OUMyMDAyNTk2RUEgLyogV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgfTsKIAkJNTE0MTI5OTQxQzY0MjhCQjAwNTlF
NzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OTIxQzY0MjgxMDAwNTlFNzE0IC8qIFdlYklE
QkNvbm5lY3Rpb25Ub1NlcnZlci5oICovOyB9OworCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYg
LyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ1MjZGRjI3MUZCN0VDMDAwNDY3QjYg
LyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZGRTI3MUZCN0U4MDAwNDY3QjYgLyog
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi87IH07CiAJCTUxNDUyNzAzMjcx
RkJBM0EwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0NTI3MDIyNzFGQkEzNjAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNDUyNzA0MjcxRkJBNDAwMDA0
NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNzAw
MjcxRkJBMzQwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNz
YWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJNTE0NTI3MDUyNzFGQkE0MDAwMDQ2N0I2IC8qIE5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjcwMTI3MUZCQTM1MDAwNDY3QjYgLyog
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE0
NTI3MDgyNzFGQkVDNjAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
NTI3MDcyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5oICovOyB9OwotCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oICovOyB9OwogCQk1MTQ4OUNDMzIzNzBEQkZBMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ4OUND
MTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTQ4OUNDNzIzNzIzNzgwMDA0NEU2OEEgLyog
V0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRl
cm5hbC5oICovOyB9OwogCQk1MTRBQjlGMDIzNjBEMkE5MDBFREMzOTYgLyogV0tGaW5kQ29uZmln
dXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE0QUI5RUYyMzVGQTU5QjAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBAIC00MTMzLDYgKzQxMzcs
MTIgQEAKIAkJNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTEyOTM1RTIxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxMjlFQjExMjNEMERFNzgwMEFGMUNENyAvKiBDb250ZW50V29ybGRTaGFy
ZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFdvcmxkU2hhcmVk
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjk2MjcyMUVGQzIwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9u
Q29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFl
bW9uQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5OTI3
MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjlDMjcyMjNBMDgwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5RTI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVz
aERhZW1vbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1
c2hEYWVtb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODhFMTJBODgz
ODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHku
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJGNTg4RjEyQTg4Mzg4MDA2Mjk1
MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODkwMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNh
dGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQxNjcsNiArNDE3Nyw4IEBACiAJCTUxNDEyOTkyMUM2NDI4MTAwMDU5
RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0Rl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ljb25Mb2FkaW5n
RGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNjExREREMERB
MDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQ1MjZFQzI3
MUUxNjI3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjZGQzI3MUZCN0U4MDAwNDY3
QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNz
YWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI2RkUyNzFGQjdFODAw
MDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDAyNzFGQkEzNDAwMDQ2N0I2
IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzUmVwbGllcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTQxNzQsOCArNDE4Niw2IEBACiAJCTUxNDUyNzAyMjcxRkJBMzYwMDA0NjdCNiAvKiBOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFu
ZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTQ1MjcwNzI3MUZCRUMxMDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0NTI2RUMyNzFFMTYy
NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8q
IFdLRmluZFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRS
ZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzIyMzcwREFDQzAw
NDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdLRmluZFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZFJlc3VsdEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM4LDYgKzcxNDgsNyBAQAogCQkJCUJDMzA2ODIz
MTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywK
IAkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oICovLAogCQkJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0
YVN0b3JlUGFyYW1ldGVycy5oICovLAorCQkJCTUxMkNENjk5MjcyMUYwNDkwMEY3RjhFQyAvKiBX
ZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggKi8sCiAJCQkJNUM4REQzN0YxRkU0NTE5MjAwRjJBNTU2
IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oICovLAogCQkJCTVDOEREMzgxMUZFNDU1Q0EwMEYy
QTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlRdWlyay5oICovLAogCQkJCTUxMUY3RDNGMUVCMUJDRUUw
MEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAgKi8sCkBAIC05MDM1LDYg
KzkwNDYsMTQgQEAKIAkJCXBhdGggPSBEYXRhYmFzZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk1MTJDRDY5QjI3MjIzOUU0MDBGN0Y4RUMgLyogQ29jb2EgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkNENjlDMjcyMjNBMDgw
MEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovLAorCQkJKTsKKwkJ
CXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxMkY1
ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MDU1LDggKzkwNzQsMTEgQEAKIAkJNTE0NTI2
RUEyNzFFMTYxMDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkNENjlCMjcyMjM5RTQwMEY3RjhFQyAvKiBD
b2NvYSAqLywKIAkJCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovLAorCQkJCTUxMkNENjk2MjcyMUVGQzIwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJNTEyQ0Q2OTcyNzIxRUZD
MzAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0
aCA9IE5vdGlmaWNhdGlvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU3OCw2
ICs5NjAwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDQkI2RDREMjcxRjY3Q0MwMEZEMUE1
RCAvKiBjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnBsaXN0ICovLAogCQkJCTVDMTU3QTBCMjcx
N0NBMUMwMEVENTI4MCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSAqLywKKwkJCQk1MTJDRDY5RDI3
MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLAorCQkJCTUxMkNENjlFMjcyMzM5
M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJw
dXNoZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjEwMCw2ICsxMjEyNCw3IEBA
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNUMx
NTc5RkMyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwpAQCAtMTI4MTgsNiArMTI4NDMsNyBAQAogCQkJCTkzQUI5QjRFMjU3NTY3RTIwMDk4
QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzQUI5QjREMjU3NTY3REMwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OERE
M0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVz
c2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNGRUNBMjIxRjdDMDk3MDBGMjY3
Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkwNSw2ICsx
MjkzMSw3IEBACiAJCQkJOTkwRDM5RjUyNDNCRTY0ODAwMTk5Mzg4IC8qIFdlYkF1dG9tYXRpb25E
T01XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5ODBDMjAw
RUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUMz
QUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxMkNENjk4MjcyMUVGQzgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9u
Q29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJC
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFD
MEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQzBBMTk1NDFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjYwLDYgKzE0Njg3
LDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxMkNENkEwMjcyMzM5M0EwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTdBMDEyNzE3QjdG
QjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3
OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
LmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5NGVkZDRlMzI5ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC0wLDAgKzEsNTkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PU09i
amVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3
aW4vWFBDU1BJLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOworCitu
YW1lc3BhY2UgV2ViUHVzaEQgeworCit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50
OF90PjsKKworY2xhc3MgRGFlbW9uIHsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ry
b3llZDxEYWVtb24+OworcHVibGljOgorICAgIHN0YXRpYyBEYWVtb24mIHNpbmdsZXRvbigpOwor
CisgICAgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCk7CisgICAgdm9p
ZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCk7CisgICAgdm9pZCBjb25uZWN0aW9u
UmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KTsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKKyAg
ICB2b2lkIGVjaG9Ud2ljZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKTsKKworcHJpdmF0ZToKKyAgICBEYWVtb24oKSA9
IGRlZmF1bHQ7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYp
PiBjcmVhdGVSZXBseVNlbmRlcihNZXNzYWdlVHlwZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90
PiYmIHJlcXVlc3QpOworICAgIHZvaWQgZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNzYWdlVHlw
ZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNo
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ5NzgwMDVlYTFjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0wLDAgKzEsMTU0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9u
LmgiCisKKyNpbXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKKyNpbXBvcnQgIkRhZW1vbkVuY29kZXIu
aCIKKyNpbXBvcnQgIkRhZW1vblV0aWxpdGllcy5oIgorI2ltcG9ydCAiSGFuZGxlTWVzc2FnZS5o
IgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgorCisjaW1wb3J0IDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9y
dCA8d3RmL1NwYW4uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQ7CisKK25h
bWVzcGFjZSBXZWJQdXNoRCB7CisKK25hbWVzcGFjZSBNZXNzYWdlSW5mbyB7CisKKyNkZWZpbmUg
RlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBNZW1iZXJGdW5j
dGlvbiA9ICZXZWJQdXNoRDo6RGFlbW9uOjptZjsKKyNkZWZpbmUgQVJHVU1FTlRTKC4uLikgdXNp
bmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz47CisjZGVmaW5lIFJFUExZKC4u
LikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKF9fVkFfQVJHU19fKT47IFwK
KyAgICBzdGF0aWMgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVuY29kZVJlcGx5KF9fVkFfQVJH
U19fKTsKKyNkZWZpbmUgRU5EIH07CisKK0ZVTkNUSU9OKGVjaG9Ud2ljZSkKK0FSR1VNRU5UUyhT
dHJpbmcpCitSRVBMWShTdHJpbmcpCitFTkQKKworI3VuZGVmIEZVTkNUSU9OCisjdW5kZWYgQVJH
VU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQKKworV2ViUHVzaEQ6OkVuY29kZWRNZXNz
YWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQoreworICAgIFdlYktpdDo6
RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1
cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZv
CisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdp
dGhSZXBseShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sK
KyAgICBXZWJLaXQ6OkRhZW1vbjo6RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdlKTsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7Cisg
ICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQor
ICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJbmZvOjpSZXBseSBjb21wbGV0aW9uSGFu
ZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIpXSAoYXV0byYmLi4uIGFy
Z3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRlcihJbmZvOjplbmNvZGVSZXBseShhcmdz
Li4uKSk7CisgICAgfSB9OworCisgICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgq
YXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksICZXZWJQdXNoRDo6RGFlbW9u
OjpzaW5nbGV0b24oKSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQorCitEYWVtb24mIERhZW1v
bjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGFlbW9uPiBkYWVt
b247CisgICAgcmV0dXJuIGRhZW1vbjsKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25FdmVu
dEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShy
ZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogVmVyaWZ5IHRoZSBjb25uZWN0aW9uIGlzIGtub3duCisgICAgCisgICAgaWYgKHhw
Y19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBw
cm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICBOU0xvZyhAIlJlY2VpdmVkIHJlcXVlc3Qg
dGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsKKyAgICAgICAgLy8g
RklYTUU6IEN1dCBvZmYgdGhpcyBjb25uZWN0aW9uCisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5cGU+KHhwY19kaWN0
aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07Cisg
ICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGlj
dGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0
YVNpemUpOworICAgIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNf
Y2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07CisgICAgCisgICAgZGVjb2Rl
QW5kSGFuZGxlTWVzc2FnZShtZXNzYWdlVHlwZSwgZW5jb2RlZE1lc3NhZ2UsIGNyZWF0ZVJlcGx5
U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpjb25uZWN0
aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3sKKyAgICAvLyBGSVhNRTogVHJhY2sgY29ubmVj
dGlvbnMKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9u
X3QpCit7CisgICAgLy8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb25zCit9CisKK0NvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6Y3JlYXRlUmVwbHlTZW5kZXIo
TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1
ZXN0KQoreworICAgIGlmICghbWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3QpXSAoRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7CisgICAgICAgIGF1dG8gcmVwbHkg
PSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1ZXN0LmdldCgpKSk7Cisg
ICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkuZ2V0KCkpID09IFhQQ19UWVBFX0RJQ1RJ
T05BUlkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KHJlcGx5LmdldCgpLCBw
cm90b2NvbFZlcnNpb25LZXksIHByb3RvY29sVmVyc2lvblZhbHVlKTsKKyAgICAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3ZhbHVlKHJlcGx5LmdldCgpLCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5
LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7CisgICAg
ICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3Rl
X2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgpKTsKKyAgICB9OworfQorCit2
b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBBU1NFUlQobWVz
c2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsKKworICAg
IHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6
CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6ZWNo
b1R3aWNlPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKK3ZvaWQgRGFlbW9uOjplY2hvVHdpY2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2Vu
ZGVyKQoreworICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcobWVzc2FnZSwgbWVzc2FnZSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbk1haW4ubW0KaW5kZXggMjRhM2IyMTYxNGJiLi5hY2NjYjU2ODY2MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQpAQCAtMjgsNzcgKzI4
LDI5IEBACiAjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCiAjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb24u
aCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5U
aHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9TcGFuLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KIAotbmFtZXNwYWNlIFdlYlB1c2hEIHsKLQotY29uc3RleHByIGNvbnN0IGNoYXIq
IHByb3RvY29sVmVyc2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9uIjsKLWNvbnN0ZXhwciB1aW50
NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSA9IDE7Ci1jb25zdGV4cHIgY29uc3QgY2hhciogcHJv
dG9jb2xNZXNzYWdlVHlwZUtleSA9ICJtZXNzYWdlIHR5cGUiOwotY29uc3RleHByIGNvbnN0IGNo
YXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2RlZCBtZXNzYWdlIjsKLWVudW0g
Y2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKLSAgICBFY2hvVHdpY2UgPSAxCi19OwotCi1z
dGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+IHJlcGx5U2Vu
ZGVyKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gW3Jl
cXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSkgewot
ICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHko
cmVxdWVzdC5nZXQoKSkpOwotICAgICAgICBBU1NFUlQoeHBjX2dldF90eXBlKHJlcGx5LmdldCgp
KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3Vp
bnQ2NChyZXBseS5nZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBwcm90b2NvbFZlcnNpb25WYWx1
ZSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5nZXQoKSwgcHJvdG9j
b2xFbmNvZGVkTWVzc2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQQ0RhdGEoV1RGTW92ZShtZXNz
YWdlKSkuZ2V0KCkpOwotICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2Rp
Y3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkpLCByZXBseS5nZXQo
KSk7Ci0gICAgfTsKLX0KLQotc3RhdGljIHZvaWQgZWNob1R3aWNlKFNwYW48Y29uc3QgdWludDhf
dD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+
JiYpPiYmIHJlcGx5U2VuZGVyKQotewotICAgIFdlYktpdDo6RGFlbW9uOjpEZWNvZGVyIGRlY29k
ZXIoZW5jb2RlZE1lc3NhZ2UpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0g
ICAgZGVjb2RlciA+PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybjsK
K3VzaW5nIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsKK3VzaW5nIFdlYlB1c2hEOjpE
YWVtb247CiAKLSAgICBhdXRvIHJlcGx5ID0gbWFrZVN0cmluZygqc3RyaW5nLCAqc3RyaW5nKTsK
LSAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgcmVw
bHk7Ci0gICAgcmVwbHlTZW5kZXIoZW5jb2Rlci50YWtlQnVmZmVyKCkpOwotfQotCi1zdGF0aWMg
dm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBT
cGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsKLSAgICBzd2l0Y2ggKG1lc3Nh
Z2VUeXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNlOgotICAgICAgICBlY2hv
VHdpY2UoZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLX0KK25hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2b2lkIGNvbm5l
Y3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCiB7Ci0gICAgaWYgKHhwY19n
ZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQotICAgICAgICByZXR1cm47
Ci0gICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xWZXJz
aW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgewotICAgICAgICBOU0xvZyhAIlJlY2Vp
dmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gbWVzc2FnZVR5cGUgeyBzdGF0aWNf
Y2FzdDxNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90
b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKLSAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07Ci0gICAg
Y29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcXVlc3QsIHByb3Rv
Y29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7Ci0gICAgU3Bhbjxjb25zdCB1aW50OF90
PiBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0
YVNpemUgfTsKLSAgICBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KG1lc3NhZ2VUeXBlLCBlbmNv
ZGVkTWVzc2FnZSwgcmVwbHlTZW5kZXIocmVxdWVzdCkpOworICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbkV2ZW50SGFuZGxlcihyZXF1ZXN0KTsKIH0KIAotc3RhdGljIHZvaWQgY29u
bmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QpCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uQWRk
ZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvbkFkZGVkKGNvbm5lY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBjb25uZWN0
aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KQorc3RhdGljIHZvaWQgY29ubmVjdGlvblJlbW92
ZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERhZW1vbjo6c2luZ2xldG9u
KCkuY29ubmVjdGlvblJlbW92ZWQoY29ubmVjdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YlB1c2hECmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMGI2ZGZhNThjYWI2Li44NmI2NzNkMTc5MGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGhlbHBlciBjbGFz
c2VzIGFuZCBtZXNzYWdpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gbGF1bmNoIHdlYnB1c2hkIGFuZCBy
b3VuZCB0cmlwIGEgbWVzc2FnZSB0byBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAg
ICAgKHBlcnNpc3RlbnREYXRhU3RvcmUpOgorICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlciBfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5
T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAyMS0xMC0yNSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogQWRkIGFuIGV4cGxp
Y2l0IEltYWdlRGlmZlJlc3VsdC5wYXNzZWQgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBkaWZmX2lt
YWdlIGJlaW5nIG5vbi1Ob25lCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBw
RGVsZWdhdGUubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCmluZGV4IDc1
ZDY5MWRlMjZiZi4uOGEzMmJkOTI4ZTFhIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUu
bQpAQCAtOTgsNiArOTgsMTEgQEAgLSAodm9pZClhd2FrZUZyb21OaWIKICAgICBpZiAoIWRhdGFT
dG9yZSkgewogICAgICAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqY29uZmln
dXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSBhdXRvcmVsZWFzZV07CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IFlFUzsKKworICAgICAgICAvLyBGSVhNRTogV2hlbiBi
dWlsdC1pbiBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkLCBXZWJLaXQgZG9lc24ndCB5ZXQgZ3Jh
Y2VmdWxseSBoYW5kbGUgYSBtaXNzaW5nIHdlYnB1c2hkIHNlcnZpY2UKKyAgICAgICAgLy8gVW50
aWwgaXQgZG9lcywgdW5jb21tZW50IHRoaXMgbGluZSB3aGVuIHRoZSBzZXJ2aWNlIGlzIGtub3du
IHRvIGJlIGluc3RhbGxlZC4KKyAgICAgICAgLy8gW2NvbmZpZ3VyYXRpb24gc2V0V2ViUHVzaE1h
Y2hTZXJ2aWNlTmFtZTpAIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSJdOwor
CiAgICAgICAgIGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdp
dGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KaW5kZXggM2M0
MzU2MDhhNDdiLi4wY2UwMDFhMzA3M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0yMTIsNiArMjEyLDEzIEBAIC0gKENH
RmxvYXQpdmlld1NjYWxlRm9yTWVudUl0ZW1UYWc6KE5TSW50ZWdlcil0YWcKICAgICByZXR1cm4g
MTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXF1ZXN0Tm90
aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICop
c2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShCT09MKSlkZWNpc2lvbkhh
bmRsZXIKK3sKKyAgICAvLyBGb3IgdGVzdGluZywgZ3JhbnQgbm90aWZpY2F0aW9uIHBlcm1pc3Np
b24gdG8gYWxsIG9yaWdpbnMuCisgICAgTlNMb2coQCJHcmFudGluZyBub3RpZmljYXRpb25zIHBl
cm1pc3Npb24gdG8gb3JpZ2luICVAIiwgc2VjdXJpdHlPcmlnaW4pOworICAgIGRlY2lzaW9uSGFu
ZGxlcihZRVMpOworfQorCiAtIChJQkFjdGlvbilzZXRWaWV3U2NhbGU6KGlkKXNlbmRlcgogewog
ICAgIENHRmxvYXQgc2NhbGUgPSBbc2VsZiB2aWV3U2NhbGVGb3JNZW51SXRlbVRhZzpbc2VuZGVy
IHRhZ11dOwo=
</data>
<flag name="commit-queue"
          id="466951"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442448</attachid>
            <date>2021-10-25 18:59:59 -0700</date>
            <delta_ts>2021-10-25 19:35:08 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55541</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzI2MTE4MTE0OGQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKKworI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgorI2ltcG9ydCAiRGFlbW9uVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwordXNpbmcgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViUHVzaEQgeworCitzdGF0aWMgdm9p
ZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7CisgICAgQVNTRVJUKHhwY19n
ZXRfdHlwZShkaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25L
ZXksIFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5
LCB2ZWN0b3JUb1hQQ0RhdGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENv
bm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fY29ubmVjdGlvbik7CisgICAgaWYgKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRyYWNrIGNv
bm5lY3Rpb24gc3RhdGUKK30KKwordm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCh4cGNfb2JqZWN0X3QgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoeHBjX2dldF90eXBl
KHJlcXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKyAgICBj
b25zdCBjaGFyKiBkZWJ1Z01lc3NhZ2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcXVl
c3QsIHByb3RvY29sRGVidWdNZXNzYWdlS2V5KTsKKyAgICBpZiAoIWRlYnVnTWVzc2FnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpN
ZXNzYWdlTGV2ZWw+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xE
ZWJ1Z01lc3NhZ2VMZXZlbEtleSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nl
c3MoKS5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgp
LCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBT
dHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2FnZSkpOworfQorCitSZXRhaW5QdHI8eHBjX29iamVj
dF90PiBDb25uZWN0aW9uOjpkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBhdXRvIGRpY3Rp
b25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAw
KSk7CisgICAgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUo
bWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50
NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGEyODhhMjE4
ZDEyMC4uOGZlMWRjMWY4OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKQEAgLTI4LDI4ICsyOCw5NCBAQAogCiAjaWYgRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCiAKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAi
RGFlbW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0
d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYpCitOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpCiAgICAgOiBtX25ldHdvcmtT
ZXNzaW9uKG5ldHdvcmtTZXNzaW9uKQogeworICAgIHByaW50ZigiQ3JlYXRlZCBuZXcgTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIgd2l0aCB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lOiAlc1xuIiwg
d2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1fbmV0d29y
a1Nlc3Npb24uc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSAmJiAhd2ViUHVzaE1hY2hTZXJ2aWNl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG1fY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViUHVz
aEQ6OkNvbm5lY3Rpb24+KHdlYlB1c2hNYWNoU2VydmljZU5hbWUudXRmOCgpLCAqdGhpcyk7CiB9
CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJp
bmcmLCB1aW50NjRfdCkKIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisvLyAgICAgRklYTUU6IFdoaWxlIHdlIGRvbid0IG5vcm1hbGx5IGxhbmQgY29tbWVudGVk
LW91dCBjb2RlIGluIHRoZSB0cmVlLAorLy8gICAgIHRoaXMgaXMgYSBuaWNlIGJvb2ttYXJrIGZv
ciBhIGRldmVsb3BtZW50IG1pbGVzdG9uZTsgUm91bmR0cmlwIGNvbW11bmljYXRpb24gd2l0aCB3
ZWJwdXNoZAorLy8gICAgIFdpbGwgbWFrZSBuZXh0IGRldmVsb3BtZW50IHN0ZXBzIG9idmlvdXMu
CisvLworLy8gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25I
YW5kbGVyID0gW10gKFN0cmluZyByZXBseSkgeworLy8gICAgICAgIHByaW50ZigiR290IHJlcGx5
OiAlc1xuIiwgcmVwbHkudXRmOCgpLmRhdGEoKSk7CisvLyAgICB9OworLy8KKy8vICAgIHNlbmRN
ZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6RWNob1R3aWNlPihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgU3RyaW5nKCJGSVhNRTogRG8gdXNlZnVsIHdvcmsgaGVyZSIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0
aW9uKHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOwogfQogCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47Cit9CisKKwordGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBl
bmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpE
ZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8U3RyaW5nPiB7CisgICAgc3RhdGljIHZvaWQg
Y2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAg
ICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnN0cmluZykpOworICAgIH0K
K307CisKK3RlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5h
bWUuLi4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgordm9pZCBOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXBseUFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJncykgY29uc3QK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb24pOworCisgICAgRGFlbW9uOjpFbmNv
ZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoUmVwbHkobWVzc2FnZVR5cGUsIGVuY29k
ZXIudGFrZUJ1ZmZlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8gcmVwbHlCdWZmZXIpIG11dGFibGUgeworICAgICAgICBEYWVtb246OkRl
Y29kZXIgZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7CisgICAgICAgIFJlcGx5Q2FsbGVy
PFJlcGx5QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29kZXIpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA0MWM4Mjk4YzEx
OWIuLjZmYTg3NTY4NGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmgKQEAgLTI4LDE2ICsyOCwyNCBAQAogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgi
CisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorbmFtZXNwYWNlIFdlYlB1c2hEIHsKK2VudW0gY2xh
c3MgTWVzc2FnZVR5cGUgOiB1aW50OF90OworfQorCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAog
Y2xhc3MgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb247CitwdWJsaWM6CisgICAgTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU2Vzc2lvbjsgfQorCiBw
cml2YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwg
Y29uc3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKIApAQCAtNDcsNiArNTUsMTIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgTmV0d29ya1Nlc3Npb24mIG1fbmV0d29ya1Nlc3Np
b247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlB1c2hEOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisKKyAgICB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZShBcmdzJiYuLi4pIGNvbnN0Owor
ICAgIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUu
Li4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4p
IGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1
c2hEYWVtb25Db25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ0ODFmYTZlMzFkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElG
SUNBVElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAiRGFlbW9u
RW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3Ry
aW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciYgbWFuYWdl
cikKKyAgICA6IERhZW1vbjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0
cz4oV1RGTW92ZShtYWNoU2VydmljZU5hbWUpKQorICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
KG1hbmFnZXIpCit7CisgICAgTE9HKFB1c2gsICJDcmVhdGluZyBXZWJQdXNoRCBjb25uZWN0aW9u
IHRvIG1hY2ggc2VydmljZTogJXMiLCB0aGlzLT5tYWNoU2VydmljZU5hbWUoKS5kYXRhKCkpOwor
fQorCitOZXR3b3JrU2Vzc2lvbiYgQ29ubmVjdGlvbjo6bmV0d29ya1Nlc3Npb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXIubmV0d29ya1Nlc3Npb24oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDU2M2YzYTE0NDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25Db25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKKwor
bmFtZXNwYWNlIFdlYlB1c2hEIHsKKworc3RydWN0IENvbm5lY3Rpb25UcmFpdHMgeworICAgIHVz
aW5nIE1lc3NhZ2VUeXBlID0gV2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgV2ViUHVzaEQ6OnByb3RvY29s
VmVyc2lvbktleSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJz
aW9uVmFsdWUgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgeyBXZWJQdXNo
RDo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB9OworfTsKKworY2xhc3MgQ29ubmVjdGlvbiA6
IHB1YmxpYyBEYWVtb246OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPENvbm5lY3Rpb25UcmFpdHM+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDb25uZWN0aW9u
KENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJik7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBuZXdDb25uZWN0aW9uV2FzSW5pdGlhbGl6ZWQoKSBjb25z
dCBmaW5hbDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8eHBjX29iamVjdF90
PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUsIERhZW1vbjo6RW5jb2RlZE1lc3Nh
Z2UmJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNf
b2JqZWN0X3QpIGNvbnN0IGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBzZW5kRGVidWdNb2RlSXNF
bmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5KCkgY29uc3Q7CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24oKSBjb25zdDsKKworICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
JiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7CisKKyAgICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4u
LikgY29uc3Q7CisgICAgdGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1l
Li4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlV2l0
aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiwgQXJncyYmLi4u
KSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGNkNTQ3ZGVi
OTVjNy4uMzA5YmFiNDI1N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlNvY2tldFRhc2suaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tT
b3VwLmgiCiAjZWxzZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RydWN0IFNlc3Npb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3
b3JrUHJvY2Vzcy5zYi5pbgppbmRleCBjOTEyMmY2YmY4ZDIuLjFhYzRhYWFkNTM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5O
ZXR3b3JrUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNjksNiArMzY5LDkg
QEAKIChhbGxvdyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCiAoYWxsb3cgbWFjaC1sb29r
dXAgKHdpdGggdGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1v
bi5zZXJ2aWNlIikpCiAKKzs7IEZJWE1FOiBTZXR0bGUgb24gcmVhbCBuYW1lCisoYWxsb3cgbWFj
aC1sb29rdXAgKHdpdGggdGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQud2VicHVz
aHRlc3RkYWVtb24uc2VydmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxv
dyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggNWVlMzk1YzcyODUy
Li5lYmVjMzI1ODk2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rh
ZW1vbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1v
bkNvbm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGFlbW9uQ29ubmVj
dGlvbi5oIgogCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTQ2LDYgKzQ3LDcgQEAgdm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxUcmFp
dHM+OjpzZW5kV2l0aFJlcGx5KHR5cGVuYW1lIFRyYWl0czo6TWVzc2FnZVR5cGUKIH0KIAogdGVt
cGxhdGUgY2xhc3MgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8UENNOjpDb25uZWN0aW9uVHJhaXRz
PjsKK3RlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25u
ZWN0aW9uVHJhaXRzPjsKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhZW1vbkNvbm5lY3Rpb24uaAppbmRleCA3NWIxMDRmODMzMmQuLmRiZTg1ODMwZWU4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaApAQCAtNzEs
NiArNzEsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2
ZW50KHhwY19vYmplY3RfdCkgY29uc3QgPSAwOwogI2VuZGlmCiAKKyAgICBjb25zdCBDU3RyaW5n
JiBtYWNoU2VydmljZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hY2hTZXJ2aWNlTmFtZTsgfQor
CiBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25D
b25uZWN0aW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVt
b25Db25uZWN0aW9uQ29jb2EubW0KaW5kZXggZDAzNTcwOWQ0ZTNkLi42YjA5ZmM4YmRlYzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0RhZW1vbkNvbm5lY3Rp
b25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25D
b25uZWN0aW9uQ29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiRGFlbW9uRW5j
b2Rlci5oIgogI2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisj
aW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRy
Lmg+CiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC0xMTIsNiArMTEzLDEwIEBAIHZvaWQg
Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8VHJhaXRzPjo6c2VuZFdpdGhSZXBseSh0eXBlbmFtZSBU
cmFpdHM6Ok1lc3NhZ2VUeXBlCiAKIHRlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2
aWNlPFBDTTo6Q29ubmVjdGlvblRyYWl0cz47CiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKK3RlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hE
OjpDb25uZWN0aW9uVHJhaXRzPjsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBEYWVtb24KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGM5ZWNh
OGMyODFiMi4uYTgzMjY4Yjk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0xvZ2dpbmcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtODcs
NiArODcsNyBAQCBleHRlcm4gIkMiIHsKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAgICAg
TShQcm9jZXNzU3dhcHBpbmcpIFwKICAgICBNKFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKKyAgICBN
KFB1c2gpIFwKICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAgICAg
TShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
dXNoRGFlbW9uQ29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi40ZGEwYjM3NzBjMTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKK25hbWVzcGFjZSBXZWJQdXNoRCB7
CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJvdG9jb2wg
dmVyc2lvbiI7Citjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgPSAxOwor
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2Rl
ZCBtZXNzYWdlIjsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdl
S2V5IHsgImRlYnVnIG1lc3NhZ2UiIH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xE
ZWJ1Z01lc3NhZ2VMZXZlbEtleSB7ICJkZWJ1ZyBtZXNzYWdlIGxldmVsIiB9OworCitjb25zdGV4
cHIgY29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07
CitlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CisgICAgRWNob1R3aWNlID0gMSwK
K307CisKK2lubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSkKK3sKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RWNob1R3aWNlOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJQdXNoRAorfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCBmMTk5OGE2MGM2
MzEuLjE0MjdlN2UzYmJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC05OCw2ICs5OCw3IEBAIE5ldHdvcmtQ
cm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9DbGllbnQuY3BwCiBOZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAKIAogTmV0d29ya1Byb2Nlc3Mv
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDbGllbnRJbXBs
LmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyMDk2OTNl
NGIzMjkuLjczZGY5NWM4MDg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtNDEsNiArNDEs
OCBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2EvRG93bmxvYWRDb2NvYS5tbQogTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9EYWVtb24vRGFlbW9uRW50cnlQb2ludC5tbQog
TmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENTZXJ2aWNlL05ldHdvcmtTZXJ2aWNl
RW50cnlQb2ludC5tbQogCitOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1
c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KKwogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uQ29jb2Eu
bW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFhQQ1V0aWxp
dGllcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDUw
YzA2Y2FlNjk2ZS4uYzBmNGI1MWIxNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgUmVmPFdlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbjo6Y29weSgpIGNvbnN0CiAg
ICAgY29weS0+bV9lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5Rm9yVGVzdGluZyA9IHRoaXMtPm1f
ZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3Rpbmc7CiAgICAgY29weS0+bV9hbGxvd3NI
U1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSA9IHRoaXMtPm1fYWxsb3dzSFNUU1dpdGhV
bnRydXN0ZWRSb290Q2VydGlmaWNhdGU7CiAgICAgY29weS0+bV9wY21NYWNoU2VydmljZU5hbWUg
PSB0aGlzLT5tX3BjbU1hY2hTZXJ2aWNlTmFtZTsKKyAgICBjb3B5LT5tX3dlYlB1c2hNYWNoU2Vy
dmljZU5hbWUgPSB0aGlzLT5tX3dlYlB1c2hNYWNoU2VydmljZU5hbWU7CiAjaWYgUExBVEZPUk0o
Q09DT0EpCiAgICAgaWYgKG1fcHJveHlDb25maWd1cmF0aW9uKQogICAgICAgICBjb3B5LT5tX3By
b3h5Q29uZmlndXJhdGlvbiA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlQ29weShudWxscHRy
LCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjQ2ZWU2NDYxNzZkLi4zODZi
MDk1ZTJkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTAzNSw2ICsxMDM1LDEwIEBACiAJCTUxMjkzNUQ4MTI4OEQxOTQwMEE0QjY5
NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVu
dUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVu
ZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBBNEI2OTUgLyogSW5qZWN0ZWRCdW5k
bGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJNTEyOUVCMTIyM0QwREU3QjAwQUYx
Q0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTEyOUVCMTEyM0QwREU3ODAwQUYxQ0Q3IC8qIENvbnRlbnRXb3Js
ZFNoYXJlZC5oICovOyB9OworCQk1MTJDRDY5ODI3MjFFRkM4MDBGN0Y4RUMgLyogV2ViUHVzaERh
ZW1vbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlv
bi5oICovOyB9OworCQk1MTJDRDY5QTI3MjFGMEE5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNv
bnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAqLzsg
fTsKKwkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjlEMjcyMzM5M0Ew
MEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggKi87IH07CisJCTUxMkNENkEwMjcyMzM5M0EwMEY3
RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyQ0Q2OUUyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24u
bW0gKi87IH07CiAJCTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5QSAvKiBXS0FwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxMkVD
QzM1MjcxOTZBREIwMDA4OUI2NiAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjkzMEZF
MjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCAq
LzsgfTsKIAkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmggKi87IH07CkBAIC0xMDU1LDEyICsxMDU5LDEyIEBACiAJCTUxM0U0NjJEMUFEODM3NTYwMDE2
MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0U0NjJCMUFEODM3NTYwMDE2MjM0QSAv
KiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAqLzsgfTsKIAkJNTEzRkZCOTEyMDE0
NTlDNjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGRkI4RjIwMTQ1OUMyMDAy
NTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLzsgfTsKIAkJNTE0MTI5
OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0MTI5OTIxQzY0MjgxMDAw
NTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovOyB9OworCQk1MTQ1MjZFRDI3
MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYwMDA0
NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ1MjZGRjI3
MUZCN0VDMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZGRTI3MUZC
N0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi87IH07
CiAJCTUxNDUyNzAzMjcxRkJBM0EwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDIyNzFGQkEzNjAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxNDUy
NzA0MjcxRkJBNDAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJN
ZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNDUyNzAwMjcxRkJBMzQwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsKIAkJNTE0NTI3MDUyNzFGQkE0MDAw
MDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjcwMTI3MUZC
QTM1MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXMu
aCAqLzsgfTsKIAkJNTE0NTI3MDgyNzFGQkVDNjAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE0NTI3MDcyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5oICovOyB9OwotCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYg
LyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ4OUNDMzIzNzBEQkZBMDA0NEU2OEEg
LyogV0tGaW5kUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTQ4OUNDNzIzNzIz
NzgwMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBX
S0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovOyB9OwogCQk1MTRBQjlGMDIzNjBEMkE5MDBFREMzOTYg
LyogV0tGaW5kQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE0QUI5RUYyMzVGQTU5QjAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3Vy
YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CkBA
IC00MTMzLDYgKzQxMzcsMTIgQEAKIAkJNTEyOTM1RTExMjg4RDk3ODAwQTRCNjk1IC8qIEluamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTM1RTIxMjg4RDk3ODAwQTRCNjk1IC8q
IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjlFQjExMjNEMERFNzgwMEFGMUNENyAvKiBD
b250ZW50V29ybGRTaGFyZWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGVudFdvcmxkU2hhcmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjk2
MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAv
KiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjlDMjcyMjNBMDgwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8qIFdl
YlB1c2hEYWVtb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHVzaERh
ZW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5RTI3MjMzOTNBMDBG
N0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYlB1c2hEYWVtb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMkY1ODhFMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJGNTg4
RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODkwMTJBODgzODgwMDYyOTUz
MCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjcsNiArNDE3Nyw4IEBACiAJCTUxNDEy
OTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBf
V0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjZG
QzI3MUZCN0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLm1l
c3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
NTI2RkUyNzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDAy
NzFGQkEzNDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3Nh
Z2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb3RpZmljYXRp
b25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTQxNzQsOCArNDE4Niw2IEBACiAJCTUxNDUyNzAyMjcxRkJBMzYwMDA0
NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjcwNzI3MUZCRUMxMDAwNDY3QjYgLyogV2ViTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
NTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzEyMzcw
REFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0ZpbmRSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0
ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRmluZFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdElu
dGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZFJlc3VsdElu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MTM4LDYgKzcxNDgsNyBA
QAogCQkJCUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcCAqLywKIAkJCQlCQzMwNjgyMjEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAv
KiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovLAorCQkJCTUxMkNENjk5MjcyMUYw
NDkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggKi8sCiAJCQkJNUM4REQzN0Yx
RkU0NTE5MjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBvbGljeS5oICovLAogCQkJCTVDOERE
MzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlRdWlyay5oICovLAogCQkJCTUx
MUY3RDNGMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycy5jcHAg
Ki8sCkBAIC05MDM1LDYgKzkwNDYsMTQgQEAKIAkJCXBhdGggPSBEYXRhYmFzZXM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTJDRDY5QjI3MjIzOUU0MDBGN0Y4RUMgLyog
Q29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTUx
MkNENjlDMjcyMjNBMDgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1t
ICovLAorCQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CiAJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbiAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC05MDU1LDggKzkwNzQs
MTEgQEAKIAkJNTE0NTI2RUEyNzFFMTYxMDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbnMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxMkNENjlCMjcyMjM5
RTQwMEY3RjhFQyAvKiBDb2NvYSAqLywKIAkJCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYgLyog
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovLAogCQkJCTUxNDUyNkVCMjcxRTE2MjYw
MDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovLAorCQkJCTUxMkNENjk2
MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgKi8sCisJCQkJ
NTEyQ0Q2OTcyNzIxRUZDMzAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmggKi8s
CiAJCQkpOwogCQkJcGF0aCA9IE5vdGlmaWNhdGlvbnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtOTU3OCw2ICs5NjAwLDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTVDQkI2RDRE
MjcxRjY3Q0MwMEZEMUE1RCAvKiBjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnBsaXN0ICovLAog
CQkJCTVDMTU3QTBCMjcxN0NBMUMwMEVENTI4MCAvKiBXZWJQdXNoRGFlbW9uTWFpbi5tbSAqLywK
KwkJCQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovLAorCQkJ
CTUxMkNENjlFMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tICovLAogCQkJKTsK
IAkJCXBhdGggPSB3ZWJwdXNoZDsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjEw
MCw2ICsxMjEyNCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmls
ZXMgPSAoCiAJCQkJNUMxNTc5RkMyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hE
YWVtb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI4MTgsNiArMTI4NDMsNyBAQAogCQkJCTkzQUI5
QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQUI5QjREMjU3NTY3REMwMDk4QjEwRSAv
KiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2VNYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1OEREM0EgLyogU3BlZWNoUmVjb2du
aXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNENjlBMjcyMUYwQTkwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc4
NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXJNZXNzYWdlcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAwNThERDNBIC8qIFNwZWVjaFJlY29n
bml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTNGRUNB
MjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0xMjkwNSw2ICsxMjkzMSw3IEBACiAJCQkJOTkwRDM5RjUyNDNCRTY0ODAwMTk5Mzg4IC8q
IFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk1
NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYgLyogV2ViQXV0b21hdGlvblNlc3Np
b25NYWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNENjk4MjcyMUVGQzgwMEY3RjhFQyAv
KiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NTgx
QzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uTWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk1NDFDOEZGREZCMDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKQEAg
LTE0NjYwLDYgKzE0Njg3LDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxMkNENkEw
MjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUMxNTdBMDEyNzE3QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAvKiBEYWVtb25EZWNvZGVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZFMjcxN0I2QzEwMEVENTI4MCAvKiBEYWVtb25FbmNv
ZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmE5NGVkZDRlMzI5Zgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUgPHd0Zi9TcGFuLmg+CisjaW5jbHVk
ZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK3VzaW5nIFdlYktpdDo6V2ViUHVzaEQ6Ok1l
c3NhZ2VUeXBlOworCituYW1lc3BhY2UgV2ViUHVzaEQgeworCit1c2luZyBFbmNvZGVkTWVzc2Fn
ZSA9IFZlY3Rvcjx1aW50OF90PjsKKworY2xhc3MgRGFlbW9uIHsKKyAgICBmcmllbmQgY2xhc3Mg
V1RGOjpOZXZlckRlc3Ryb3llZDxEYWVtb24+OworcHVibGljOgorICAgIHN0YXRpYyBEYWVtb24m
IHNpbmdsZXRvbigpOworCisgICAgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmpl
Y3RfdCk7CisgICAgdm9pZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCk7CisgICAg
dm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KTsKKworICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMKKyAgICB2b2lkIGVjaG9Ud2ljZShjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKTsKKworcHJpdmF0ZToK
KyAgICBEYWVtb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVu
Y29kZWRNZXNzYWdlJiYpPiBjcmVhdGVSZXBseVNlbmRlcihNZXNzYWdlVHlwZSwgT1NPYmplY3RQ
dHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpOworICAgIHZvaWQgZGVjb2RlQW5kSGFuZGxlTWVz
c2FnZShNZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzQ5NzgwMDVlYTFjCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBA
IC0wLDAgKzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJXZWJQdXNoRGFlbW9uLmgiCisKKyNpbXBvcnQgIkRhZW1vbkRlY29kZXIuaCIKKyNpbXBvcnQg
IkRhZW1vbkVuY29kZXIuaCIKKyNpbXBvcnQgIkRhZW1vblV0aWxpdGllcy5oIgorI2ltcG9ydCAi
SGFuZGxlTWVzc2FnZS5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgorCisj
aW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgorI2ltcG9ydCA8d3RmL1NwYW4uaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDo6
V2ViUHVzaEQ7CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisKK25hbWVzcGFjZSBNZXNzYWdlSW5m
byB7CisKKyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBtZiB7IHN0YXRpYyBjb25zdGV4cHIg
YXV0byBNZW1iZXJGdW5jdGlvbiA9ICZXZWJQdXNoRDo6RGFlbW9uOjptZjsKKyNkZWZpbmUgQVJH
VU1FTlRTKC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0dXBsZTxfX1ZBX0FSR1NfXz47Cisj
ZGVmaW5lIFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKF9f
VkFfQVJHU19fKT47IFwKKyAgICBzdGF0aWMgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVuY29k
ZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07CisKK0ZVTkNUSU9OKGVjaG9Ud2lj
ZSkKK0FSR1VNRU5UUyhTdHJpbmcpCitSRVBMWShTdHJpbmcpCitFTkQKKworI3VuZGVmIEZVTkNU
SU9OCisjdW5kZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkKKyN1bmRlZiBFTkQKKworV2ViUHVz
aEQ6OkVuY29kZWRNZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2RlUmVwbHkoU3RyaW5nIHJlcGx5KQor
eworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCBy
ZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVyKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIE1lc3NhZ2VJbmZvCisKK3RlbXBsYXRlPHR5cGVuYW1lIEluZm8+Cit2b2lkIGhhbmRsZVdl
YlB1c2hETWVzc2FnZVdpdGhSZXBseShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSYmKT4mJiBy
ZXBseVNlbmRlcikKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RGVjb2RlciBkZWNvZGVyKGVuY29k
ZWRNZXNzYWdlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlwZW5hbWUgSW5mbzo6QXJnc1R1cGxl
PiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVudHM7CisgICAgaWYgKFVOTElLRUxZ
KCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAgICB0eXBlbmFtZSBJbmZvOjpSZXBs
eSBjb21wbGV0aW9uSGFuZGxlciB7IFtyZXBseVNlbmRlciA9IFdURk1vdmUocmVwbHlTZW5kZXIp
XSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAgICByZXBseVNlbmRlcihJbmZvOjpl
bmNvZGVSZXBseShhcmdzLi4uKSk7CisgICAgfSB9OworCisgICAgSVBDOjpjYWxsTWVtYmVyRnVu
Y3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksICZX
ZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKSwgSW5mbzo6TWVtYmVyRnVuY3Rpb24pOworfQor
CitEYWVtb24mIERhZW1vbjo6c2luZ2xldG9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8RGFlbW9uPiBkYWVtb247CisgICAgcmV0dXJuIGRhZW1vbjsKK30KKwordm9pZCBEYWVtb246
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCit7CisgICAgaWYg
KHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyBGSVhNRTogVmVyaWZ5IHRoZSBjb25uZWN0aW9uIGlzIGtub3duCisg
ICAgCisgICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xW
ZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgeworICAgICAgICBOU0xvZyhAIlJl
Y2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24i
KTsKKyAgICAgICAgLy8gRklYTUU6IEN1dCBvZmYgdGhpcyBjb25uZWN0aW9uCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8TWVzc2Fn
ZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xNZXNzYWdl
VHlwZUtleSkpIH07CisgICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZvaWQq
IGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBwcm90b2NvbEVuY29kZWRN
ZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAgIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1l
c3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07Cisg
ICAgCisgICAgZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShtZXNzYWdlVHlwZSwgZW5jb2RlZE1lc3Nh
Z2UsIGNyZWF0ZVJlcGx5U2VuZGVyKG1lc3NhZ2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQg
RGFlbW9uOjpjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3sKKyAgICAvLyBGSVhN
RTogVHJhY2sgY29ubmVjdGlvbnMKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25SZW1vdmVk
KHhwY19jb25uZWN0aW9uX3QpCit7CisgICAgLy8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb25zCit9
CisKK0NvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6Y3Jl
YXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19v
YmplY3RfdD4mJiByZXF1ZXN0KQoreworICAgIGlmICghbWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1l
c3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gW3JlcXVl
c3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoRW5jb2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7CisgICAg
ICAgIGF1dG8gcmVwbHkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1
ZXN0LmdldCgpKSk7CisgICAgICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUocmVwbHkuZ2V0KCkpID09
IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0
KHJlcGx5LmdldCgpLCBwcm90b2NvbFZlcnNpb25LZXksIHByb3RvY29sVmVyc2lvblZhbHVlKTsK
KyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKHJlcGx5LmdldCgpLCBwcm90b2NvbEVu
Y29kZWRNZXNzYWdlS2V5LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2Up
KS5nZXQoKSk7CisgICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlv
bmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24ocmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgpKTsK
KyAgICB9OworfQorCit2b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sK
KyAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5
U2VuZGVyKTsKKworICAgIHN3aXRjaCAobWVzc2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpFY2hvVHdpY2U6CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxN
ZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihlbmNvZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRl
cikpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgRGFlbW9uOjplY2hvVHdpY2Uo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcobWVzc2Fn
ZSwgbWVzc2FnZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbSBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KaW5kZXggMjRhM2IyMTYxNGJiLi5hY2Nj
YjU2ODY2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1v
bk1haW4ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5t
bQpAQCAtMjgsNzcgKzI4LDI5IEBACiAjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0
ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQg
IldlYlB1c2hEYWVtb24uaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9TcGFuLmg+CiAjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAotbmFtZXNwYWNlIFdlYlB1c2hEIHsKLQotY29uc3Rl
eHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVyc2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9uIjsK
LWNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1ZSA9IDE7Ci1jb25zdGV4cHIg
Y29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdlVHlwZUtleSA9ICJtZXNzYWdlIHR5cGUiOwotY29u
c3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2RlZCBt
ZXNzYWdlIjsKLWVudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90IHsKLSAgICBFY2hvVHdp
Y2UgPSAxCi19OwotCi1zdGF0aWMgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhf
dD4mJik+IHJlcGx5U2VuZGVyKFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKLXsK
LSAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSkgewotICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFy
eV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOwotICAgICAgICBBU1NFUlQoeHBjX2dldF90
eXBlKHJlcGx5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKLSAgICAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3VpbnQ2NChyZXBseS5nZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBwcm90
b2NvbFZlcnNpb25WYWx1ZSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBs
eS5nZXQoKSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQQ0Rh
dGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOwotICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5k
X21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0
KCkpLCByZXBseS5nZXQoKSk7Ci0gICAgfTsKLX0KLQotc3RhdGljIHZvaWQgZWNob1R3aWNlKFNw
YW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5U2VuZGVyKQotewotICAgIFdlYktpdDo6RGFlbW9u
OjpEZWNvZGVyIGRlY29kZXIoZW5jb2RlZE1lc3NhZ2UpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3Ry
aW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0g
ICAgICAgIHJldHVybjsKK3VzaW5nIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsKK3Vz
aW5nIFdlYlB1c2hEOjpEYWVtb247CiAKLSAgICBhdXRvIHJlcGx5ID0gbWFrZVN0cmluZygqc3Ry
aW5nLCAqc3RyaW5nKTsKLSAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOwotICAg
IGVuY29kZXIgPDwgcmVwbHk7Ci0gICAgcmVwbHlTZW5kZXIoZW5jb2Rlci50YWtlQnVmZmVyKCkp
OwotfQotCi1zdGF0aWMgdm9pZCBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KE1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsKLSAg
ICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7Ci0gICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNl
OgotICAgICAgICBlY2hvVHdpY2UoZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KK25hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0
YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCiB7
Ci0gICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVz
dCwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNpb25WYWx1ZSkgewotICAgICAg
ICBOU0xvZyhAIlJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3Rv
Y29sIHZlcnNpb24iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGF1dG8gbWVzc2Fn
ZVR5cGUgeyBzdGF0aWNfY2FzdDxNZXNzYWdlVHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2
NChyZXF1ZXN0LCBwcm90b2NvbE1lc3NhZ2VUeXBlS2V5KSkgfTsKLSAgICBzaXplX3QgZGF0YVNp
emUgeyAwIH07Ci0gICAgY29uc3Qgdm9pZCogZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRh
KHJlcXVlc3QsIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksICZkYXRhU2l6ZSk7Ci0gICAgU3Bh
bjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKLSAgICBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KG1l
c3NhZ2VUeXBlLCBlbmNvZGVkTWVzc2FnZSwgcmVwbHlTZW5kZXIocmVxdWVzdCkpOworICAgIERh
ZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkV2ZW50SGFuZGxlcihyZXF1ZXN0KTsKIH0KIAot
c3RhdGljIHZvaWQgY29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QpCitzdGF0aWMgdm9p
ZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERh
ZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbkFkZGVkKGNvbm5lY3Rpb24pOwogfQogCi1zdGF0
aWMgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KQorc3RhdGljIHZvaWQg
Y29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERh
ZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlvblJlbW92ZWQoY29ubmVjdGlvbik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMGI2ZGZhNThjYWI2Li44NmI2NzNkMTc5MGEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAor
MjAyMS0xMC0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
QWRkIGhlbHBlciBjbGFzc2VzIGFuZCBtZXNzYWdpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gbGF1bmNo
IHdlYnB1c2hkIGFuZCByb3VuZCB0cmlwIGEgbWVzc2FnZSB0byBpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyMjYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVs
ZWdhdGUubToKKyAgICAgICAgKHBlcnNpc3RlbnREYXRhU3RvcmUpOgorICAgICAgICAqIE1pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtXSzJC
cm93c2VyV2luZG93Q29udHJvbGxlciBfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlz
c2lvbkZvclNlY3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjpdKToKKwogMjAyMS0xMC0yNSAg
U2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRw
eTogQWRkIGFuIGV4cGxpY2l0IEltYWdlRGlmZlJlc3VsdC5wYXNzZWQgcmF0aGVyIHRoYW4gcmVs
eWluZyBvbiBkaWZmX2ltYWdlIGJlaW5nIG5vbi1Ob25lCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCmluZGV4IDc1ZDY5MWRlMjZiZi4uOGEzMmJkOTI4ZTFhIDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUubQpAQCAtOTgsNiArOTgsMTEgQEAgLSAodm9pZClhd2FrZUZyb21OaWIK
ICAgICBpZiAoIWRhdGFTdG9yZSkgewogICAgICAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CiAgICAgICAgIGNvbmZpZ3VyYXRpb24ubmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVWYWxpZGF0aW9uRW5hYmxlZCA9IFlFUzsKKworICAgICAgICAv
LyBGSVhNRTogV2hlbiBidWlsdC1pbiBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkLCBXZWJLaXQg
ZG9lc24ndCB5ZXQgZ3JhY2VmdWxseSBoYW5kbGUgYSBtaXNzaW5nIHdlYnB1c2hkIHNlcnZpY2UK
KyAgICAgICAgLy8gVW50aWwgaXQgZG9lcywgdW5jb21tZW50IHRoaXMgbGluZSB3aGVuIHRoZSBz
ZXJ2aWNlIGlzIGtub3duIHRvIGJlIGluc3RhbGxlZC4KKyAgICAgICAgLy8gW2NvbmZpZ3VyYXRp
b24gc2V0V2ViUHVzaE1hY2hTZXJ2aWNlTmFtZTpAIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVt
b24uc2VydmljZSJdOworCiAgICAgICAgIGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOwogICAgIH0KICAg
ICAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlci5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0KaW5kZXggM2M0MzU2MDhhNDdiLi4wY2UwMDFhMzA3M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCisrKyBiL1Rvb2xz
L01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCkBAIC0yMTIsNiAr
MjEyLDEzIEBAIC0gKENHRmxvYXQpdmlld1NjYWxlRm9yTWVudUl0ZW1UYWc6KE5TSW50ZWdlcil0
YWcKICAgICByZXR1cm4gMTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyByZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOihXS1Nl
Y3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShC
T09MKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICAvLyBGb3IgdGVzdGluZywgZ3JhbnQgbm90aWZp
Y2F0aW9uIHBlcm1pc3Npb24gdG8gYWxsIG9yaWdpbnMuCisgICAgTlNMb2coQCJHcmFudGluZyBu
b3RpZmljYXRpb25zIHBlcm1pc3Npb24gdG8gb3JpZ2luICVAIiwgc2VjdXJpdHlPcmlnaW4pOwor
ICAgIGRlY2lzaW9uSGFuZGxlcihZRVMpOworfQorCiAtIChJQkFjdGlvbilzZXRWaWV3U2NhbGU6
KGlkKXNlbmRlcgogewogICAgIENHRmxvYXQgc2NhbGUgPSBbc2VsZiB2aWV3U2NhbGVGb3JNZW51
SXRlbVRhZzpbc2VuZGVyIHRhZ11dOwo=
</data>
<flag name="commit-queue"
          id="466958"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442451</attachid>
            <date>2021-10-25 19:30:25 -0700</date>
            <delta_ts>2021-10-25 19:34:30 -0700</delta_ts>
            <desc>Patch v5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55653</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzI2MTE4MTE0OGQ4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKKworI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgorI2ltcG9ydCAiRGFlbW9uVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwordXNpbmcgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViUHVzaEQgeworCitzdGF0aWMgdm9p
ZCBhZGRWZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+
JiYgbWVzc2FnZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7CisgICAgQVNTRVJUKHhwY19n
ZXRfdHlwZShkaWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfZGlj
dGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25L
ZXksIFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2RpY3Rpb25hcnlf
c2V0X3ZhbHVlKGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5
LCB2ZWN0b3JUb1hQQ0RhdGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENv
bm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKG1fY29ubmVjdGlvbik7CisgICAgaWYgKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCku
aXNFcGhlbWVyYWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRyYWNrIGNv
bm5lY3Rpb24gc3RhdGUKK30KKwordm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCh4cGNfb2JqZWN0X3QgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoeHBjX2dldF90eXBl
KHJlcXVlc3QpICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKyAgICBj
b25zdCBjaGFyKiBkZWJ1Z01lc3NhZ2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcXVl
c3QsIHByb3RvY29sRGVidWdNZXNzYWdlS2V5KTsKKyAgICBpZiAoIWRlYnVnTWVzc2FnZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpN
ZXNzYWdlTGV2ZWw+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xE
ZWJ1Z01lc3NhZ2VMZXZlbEtleSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nl
c3MoKS5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgp
LCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBT
dHJpbmc6OmZyb21VVEY4KGRlYnVnTWVzc2FnZSkpOworfQorCitSZXRhaW5QdHI8eHBjX29iamVj
dF90PiBDb25uZWN0aW9uOjpkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2Fn
ZVR5cGUsIEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBhdXRvIGRpY3Rp
b25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAw
KSk7CisgICAgYWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUo
bWVzc2FnZSksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50
NjQoZGljdGlvbmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1lc3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGEyODhhMjE4
ZDEyMC4uOGZlMWRjMWY4OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKQEAgLTI4LDI4ICsyOCw5NCBAQAogCiAjaWYgRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCiAKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAi
RGFlbW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLU5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0
d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYpCitOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUpCiAgICAgOiBtX25ldHdvcmtT
ZXNzaW9uKG5ldHdvcmtTZXNzaW9uKQogeworICAgIHByaW50ZigiQ3JlYXRlZCBuZXcgTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIgd2l0aCB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lOiAlc1xuIiwg
d2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoIW1fbmV0d29y
a1Nlc3Npb24uc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSAmJiAhd2ViUHVzaE1hY2hTZXJ2aWNl
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG1fY29ubmVjdGlvbiA9IG1ha2VVbmlxdWU8V2ViUHVz
aEQ6OkNvbm5lY3Rpb24+KHdlYlB1c2hNYWNoU2VydmljZU5hbWUudXRmOCgpLCAqdGhpcyk7CiB9
CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dOb3RpZmljYXRpb24oY29u
c3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGlyZWN0aW9uLCBjb25zdCBTdHJp
bmcmLCB1aW50NjRfdCkKIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJu
OworCisvLyAgICAgRklYTUU6IFdoaWxlIHdlIGRvbid0IG5vcm1hbGx5IGxhbmQgY29tbWVudGVk
LW91dCBjb2RlIGluIHRoZSB0cmVlLAorLy8gICAgIHRoaXMgaXMgYSBuaWNlIGJvb2ttYXJrIGZv
ciBhIGRldmVsb3BtZW50IG1pbGVzdG9uZTsgUm91bmR0cmlwIGNvbW11bmljYXRpb24gd2l0aCB3
ZWJwdXNoZAorLy8gICAgIFdpbGwgbWFrZSBuZXh0IGRldmVsb3BtZW50IHN0ZXBzIG9idmlvdXMu
CisvLworLy8gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcpPiYmIGNvbXBsZXRpb25I
YW5kbGVyID0gW10gKFN0cmluZyByZXBseSkgeworLy8gICAgICAgIHByaW50ZigiR290IHJlcGx5
OiAlc1xuIiwgcmVwbHkudXRmOCgpLmRhdGEoKSk7CisvLyAgICB9OworLy8KKy8vICAgIHNlbmRN
ZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6RWNob1R3aWNlPihXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgU3RyaW5nKCJGSVhNRTogRG8gdXNlZnVsIHdvcmsgaGVyZSIp
KTsKIH0KIAogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsTm90aWZpY2F0
aW9uKHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47
CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9u
cyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKKyAgICBpZiAoIW1fY29ubmVjdGlvbikKKyAg
ICAgICAgcmV0dXJuOwogfQogCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWRE
ZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0aW9uKQor
ICAgICAgICByZXR1cm47Cit9CisKKwordGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9B
U1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBl
bmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCkpOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxsZXI7Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBSZXBseUNhbGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpE
ZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICB9Cit9Owor
dGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8U3RyaW5nPiB7CisgICAgc3RhdGljIHZvaWQg
Y2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICAgICAgZGVjb2RlciA+PiBzdHJpbmc7CisgICAg
ICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsg
fSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoKnN0cmluZykpOworICAgIH0K
K307CisKK3RlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5h
bWUuLi4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgordm9pZCBOZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZXBseUFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJncykgY29uc3QK
K3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb24pOworCisgICAgRGFlbW9uOjpFbmNv
ZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3Mp
Li4uKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoUmVwbHkobWVzc2FnZVR5cGUsIGVuY29k
ZXIudGFrZUJ1ZmZlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGF1dG8gcmVwbHlCdWZmZXIpIG11dGFibGUgeworICAgICAgICBEYWVtb246OkRl
Y29kZXIgZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7CisgICAgICAgIFJlcGx5Q2FsbGVy
PFJlcGx5QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29kZXIpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA0MWM4Mjk4YzEx
OWIuLjZmYTg3NTY4NGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmgKQEAgLTI4LDE2ICsyOCwyNCBAQAogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgi
CisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorbmFtZXNwYWNlIFdlYlB1c2hEIHsKK2VudW0gY2xh
c3MgTWVzc2FnZVR5cGUgOiB1aW50OF90OworfQorCiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIAog
Y2xhc3MgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIgOiBwdWJsaWMgTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBm
cmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb247CitwdWJsaWM6CisgICAgTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrU2Vzc2lvbjsgfQorCiBw
cml2YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwg
Y29uc3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKIApAQCAtNDcsNiArNTUsMTIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3Qgbm90
aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgTmV0d29ya1Nlc3Npb24mIG1fbmV0d29ya1Nlc3Np
b247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlB1c2hEOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b247CisKKyAgICB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5
cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZShBcmdzJiYuLi4pIGNvbnN0Owor
ICAgIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUu
Li4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4p
IGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1
c2hEYWVtb25Db25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ0ODFmYTZlMzFkMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgorCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElG
SUNBVElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAiRGFlbW9u
RW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKK25hbWVzcGFjZSBXZWJL
aXQgeworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKworQ29ubmVjdGlvbjo6Q29ubmVjdGlvbihDU3Ry
aW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciYgbWFuYWdl
cikKKyAgICA6IERhZW1vbjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0
cz4oV1RGTW92ZShtYWNoU2VydmljZU5hbWUpKQorICAgICwgbV9ub3RpZmljYXRpb25NYW5hZ2Vy
KG1hbmFnZXIpCit7CisgICAgTE9HKFB1c2gsICJDcmVhdGluZyBXZWJQdXNoRCBjb25uZWN0aW9u
IHRvIG1hY2ggc2VydmljZTogJXMiLCB0aGlzLT5tYWNoU2VydmljZU5hbWUoKS5kYXRhKCkpOwor
fQorCitOZXR3b3JrU2Vzc2lvbiYgQ29ubmVjdGlvbjo6bmV0d29ya1Nlc3Npb24oKSBjb25zdAor
eworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXIubmV0d29ya1Nlc3Npb24oKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMDU2M2YzYTE0NDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEJVSUxUX0lO
X05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25Db25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKKwor
bmFtZXNwYWNlIFdlYlB1c2hEIHsKKworc3RydWN0IENvbm5lY3Rpb25UcmFpdHMgeworICAgIHVz
aW5nIE1lc3NhZ2VUeXBlID0gV2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOworICAgIHN0YXRpYyBjb25z
dGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgV2ViUHVzaEQ6OnByb3RvY29s
VmVyc2lvbktleSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJz
aW9uVmFsdWUgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUgfTsKKyAgICBzdGF0aWMg
Y29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgeyBXZWJQdXNo
RDo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB9OworfTsKKworY2xhc3MgQ29ubmVjdGlvbiA6
IHB1YmxpYyBEYWVtb246OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPENvbm5lY3Rpb25UcmFpdHM+
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDb25uZWN0aW9u
KENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJik7
CisKK3ByaXZhdGU6CisgICAgdm9pZCBuZXdDb25uZWN0aW9uV2FzSW5pdGlhbGl6ZWQoKSBjb25z
dCBmaW5hbDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8eHBjX29iamVjdF90
PiBkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUsIERhZW1vbjo6RW5jb2RlZE1lc3Nh
Z2UmJikgY29uc3QgZmluYWw7CisgICAgdm9pZCBjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNf
b2JqZWN0X3QpIGNvbnN0IGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBzZW5kRGVidWdNb2RlSXNF
bmFibGVkTWVzc2FnZUlmTmVjZXNzYXJ5KCkgY29uc3Q7CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYg
bmV0d29ya1Nlc3Npb24oKSBjb25zdDsKKworICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
JiBtX25vdGlmaWNhdGlvbk1hbmFnZXI7CisKKyAgICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4u
LikgY29uc3Q7CisgICAgdGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1l
Li4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlV2l0
aFJlcGx5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiwgQXJncyYmLi4u
KSBjb25zdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGNkNTQ3ZGVi
OTVjNy4uMzA5YmFiNDI1N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1dlYlNvY2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlNvY2tldFRhc2suaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tT
b3VwLmgiCiAjZWxzZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogc3RydWN0IFNlc3Npb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmlu
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3
b3JrUHJvY2Vzcy5zYi5pbgppbmRleCBjOTEyMmY2YmY4ZDIuLjFhYzRhYWFkNTM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5O
ZXR3b3JrUHJvY2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21h
Yy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNjksNiArMzY5LDkg
QEAKIChhbGxvdyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLndlYmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCiAoYWxsb3cgbWFjaC1sb29r
dXAgKHdpdGggdGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1v
bi5zZXJ2aWNlIikpCiAKKzs7IEZJWE1FOiBTZXR0bGUgb24gcmVhbCBuYW1lCisoYWxsb3cgbWFj
aC1sb29rdXAgKHdpdGggdGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQud2VicHVz
aHRlc3RkYWVtb24uc2VydmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxv
dyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgIChnbG9iYWwtbmFtZSAiY29t
LmFwcGxlLkRpc2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggNWVlMzk1YzcyODUy
Li43ZmIxNjBiNTVjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Rh
ZW1vbkNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1v
bkNvbm5lY3Rpb24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGFlbW9uQ29ubmVj
dGlvbi5oIgogCiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTQ3LDggKzQ4LDEyIEBAIHZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8VHJh
aXRzPjo6c2VuZFdpdGhSZXBseSh0eXBlbmFtZSBUcmFpdHM6Ok1lc3NhZ2VUeXBlCiAKIHRlbXBs
YXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6Q29ubmVjdGlvblRyYWl0cz47
CiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKK3RlbXBsYXRlIGNsYXNzIENv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0aW9uVHJhaXRzPjsKICNlbmRp
ZgogCisjZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiB9IC8vIG5hbWVzcGFjZSBEYWVtb24K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YWVtb25Db25uZWN0aW9uLmgKaW5kZXggNzViMTA0ZjgzMzJkLi5kYmU4NTgzMGVlODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmgKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uUmVjZWl2ZWRFdmVu
dCh4cGNfb2JqZWN0X3QpIGNvbnN0ID0gMDsKICNlbmRpZgogCisgICAgY29uc3QgQ1N0cmluZyYg
bWFjaFNlcnZpY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWNoU2VydmljZU5hbWU7IH0KKwog
cHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9uQ29u
bmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9u
Q29ubmVjdGlvbkNvY29hLm1tCmluZGV4IGQwMzU3MDlkNGUzZC4uNmIwOWZjOGJkZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9u
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9uQ29u
bmVjdGlvbkNvY29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkRhZW1vbkVuY29k
ZXIuaCIKICNpbXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2lt
cG9ydCAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5o
PgogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMTEyLDYgKzExMywxMCBAQCB2b2lkIENv
bm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFRyYWl0cz46OnNlbmRXaXRoUmVwbHkodHlwZW5hbWUgVHJh
aXRzOjpNZXNzYWdlVHlwZQogCiB0ZW1wbGF0ZSBjbGFzcyBDb25uZWN0aW9uVG9NYWNoU2Vydmlj
ZTxQQ006OkNvbm5lY3Rpb25UcmFpdHM+OwogCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNB
VElPTlMpCit0ZW1wbGF0ZSBjbGFzcyBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxXZWJQdXNoRDo6
Q29ubmVjdGlvblRyYWl0cz47CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRGFlbW9uCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9M
b2dnaW5nLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBjOWVjYThj
MjgxYjIuLmE4MzI2OGI5ODA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9M
b2dnaW5nLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTg3LDYg
Kzg3LDcgQEAgZXh0ZXJuICJDIiB7CiAgICAgTShQcm9jZXNzU3VzcGVuc2lvbikgXAogICAgIE0o
UHJvY2Vzc1N3YXBwaW5nKSBcCiAgICAgTShQcm94aW1pdHlOZXR3b3JraW5nKSBcCisgICAgTShQ
dXNoKSBcCiAgICAgTShSZW1vdGVMYXllclRyZWUpIFwKICAgICBNKFJlc2l6ZSkgXAogICAgIE0o
UmVzb3VyY2VMb2FkU3RhdGlzdGljcykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVz
aERhZW1vbkNvbnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNGRhMGIzNzcwYzExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CituYW1lc3BhY2UgV2ViUHVzaEQgewor
Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5ID0gInByb3RvY29sIHZl
cnNpb24iOworY29uc3RleHByIHVpbnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlID0gMTsKK2Nv
bnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQg
bWVzc2FnZSI7CisKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUtl
eSB7ICJkZWJ1ZyBtZXNzYWdlIiB9OworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVi
dWdNZXNzYWdlTGV2ZWxLZXkgeyAiZGVidWcgbWVzc2FnZSBsZXZlbCIgfTsKKworY29uc3RleHBy
IGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9Owor
ZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3QgeworICAgIEVjaG9Ud2ljZSA9IDEsCit9
OworCitpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2Fn
ZVR5cGUpCit7CisgICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgeworICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkVjaG9Ud2ljZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
UHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggZjE5OThhNjBjNjMx
Li4xNDI3ZTdlM2JiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtOTgsNiArOTgsNyBAQCBOZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50LmNwcAogTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKIAogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKK05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwCiAKIE5ldHdvcmtQcm9jZXNzL1By
aXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q2xpZW50SW1wbC5j
cHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50RGF0YWJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjA5NjkzZTRi
MzI5Li43M2RmOTVjODA4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQxLDYgKzQxLDgg
QEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rvd25sb2FkQ29jb2EubW0KIE5ldHdv
cmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvRGFlbW9uL0RhZW1vbkVudHJ5UG9pbnQubW0KIE5l
dHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2VydmljZS9OZXR3b3JrU2VydmljZUVu
dHJ5UG9pbnQubW0KIAorTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCisKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbkNvY29hLm1t
CiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRYUENVdGlsaXRp
ZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcAppbmRleCA1MGMw
NmNhZTY5NmUuLmMwZjRiNTFiMTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIFJlZjxXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb246OmNvcHkoKSBjb25zdAogICAg
IGNvcHktPm1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3RpbmcgPSB0aGlzLT5tX2Vu
YWJsZUluQXBwQnJvd3NlclByaXZhY3lGb3JUZXN0aW5nOwogICAgIGNvcHktPm1fYWxsb3dzSFNU
U1dpdGhVbnRydXN0ZWRSb290Q2VydGlmaWNhdGUgPSB0aGlzLT5tX2FsbG93c0hTVFNXaXRoVW50
cnVzdGVkUm9vdENlcnRpZmljYXRlOwogICAgIGNvcHktPm1fcGNtTWFjaFNlcnZpY2VOYW1lID0g
dGhpcy0+bV9wY21NYWNoU2VydmljZU5hbWU7CisgICAgY29weS0+bV93ZWJQdXNoTWFjaFNlcnZp
Y2VOYW1lID0gdGhpcy0+bV93ZWJQdXNoTWFjaFNlcnZpY2VOYW1lOwogI2lmIFBMQVRGT1JNKENP
Q09BKQogICAgIGlmIChtX3Byb3h5Q29uZmlndXJhdGlvbikKICAgICAgICAgY29weS0+bV9wcm94
eUNvbmZpZ3VyYXRpb24gPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZUNvcHkobnVsbHB0ciwg
dGhpcy0+bV9wcm94eUNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY0NmVlNjQ2MTc2ZC4uMzg2YjA5
NWUyZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwMzUsNiArMTAzNSwxMCBAQAogCQk1MTI5MzVEODEyODhEMTk0MDBBNEI2OTUg
LyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTI5MzVENjEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJ
dGVtLmggKi87IH07CiAJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRs
ZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTEyOTM1RTIxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxl
UGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUxMjlFQjEyMjNEMERFN0IwMEFGMUNE
NyAvKiBDb250ZW50V29ybGRTaGFyZWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxMjlFQjExMjNEMERFNzgwMEFGMUNENyAvKiBDb250ZW50V29ybGRT
aGFyZWQuaCAqLzsgfTsKKwkJNTEyQ0Q2OTgyNzIxRUZDODAwRjdGOEVDIC8qIFdlYlB1c2hEYWVt
b25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTJDRDY5NzI3MjFFRkMzMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24u
aCAqLzsgfTsKKwkJNTEyQ0Q2OUEyNzIxRjBBOTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25z
dGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MkNENjk5MjcyMUYwNDkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggKi87IH07
CisJCTUxMkNENjlGMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJDRDY5RDI3MjMzOTNBMDBG
N0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovOyB9OworCQk1MTJDRDZBMDI3MjMzOTNBMDBGN0Y4
RUMgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMkNENjlFMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1t
ICovOyB9OwogCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEgLyogV0tBcHBsaWNhdGlvbkNhY2hl
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTJFQ0Mz
NTI3MTk2QURCMDAwODlCNjYgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0I5MzBGRTI2
RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmggKi87
IH07CiAJCTUxMkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTJGNTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5o
ICovOyB9OwpAQCAtMTA1NSwxMiArMTA1OSwxMiBAQAogCQk1MTNFNDYyRDFBRDgzNzU2MDAxNjIz
NEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNFNDYyQjFBRDgzNzU2MDAxNjIzNEEgLyog
V0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi87IH07CiAJCTUxM0ZGQjkxMjAxNDU5
QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRkZCOEYyMDE0NTlDMjAwMjU5
NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi87IH07CiAJCTUxNDEyOTk0
MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDEyOTkyMUM2NDI4MTAwMDU5
RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLzsgfTsKKwkJNTE0NTI2RUQyNzFF
MTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3
QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLzsgfTsKIAkJNTE0NTI2RkYyNzFG
QjdFQzAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI2RkUyNzFGQjdF
ODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovOyB9Owog
CQk1MTQ1MjcwMzI3MUZCQTNBMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VI
YW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNDUyNzAyMjcxRkJBMzYwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTQ1Mjcw
NDI3MUZCQTQwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVz
c2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTQ1MjcwMDI3MUZCQTM0MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3Nh
Z2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJCTUxNDUyNzA1MjcxRkJBNDAwMDA0
NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDEyNzFGQkEz
NTAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzLmgg
Ki87IH07CiAJCTUxNDUyNzA4MjcxRkJFQzYwMDA0NjdCNiAvKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNDUyNzA3MjcxRkJFQzEwMDA0NjdCNiAvKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgfTsKLQkJNTE0NTI2RUQyNzFFMTY0NzAwMDQ2N0I2IC8q
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXIuaCAqLzsgfTsKIAkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8q
IFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTE0ODlDQzcyMzcyMzc4
MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ4OUNDNjIzNzIzNzc4MDA0NEU2OEEgLyogV0tG
aW5kUmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsKIAkJNTE0QUI5RjAyMzYwRDJBOTAwRURDMzk2IC8q
IFdLRmluZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNEFCOUVGMjM1RkE1OUIwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAt
NDEzMyw2ICs0MTM3LDEyIEBACiAJCTUxMjkzNUUxMTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3Rl
ZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUyMTI4OEQ5NzgwMEE0QjY5NSAvKiBJ
bmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5RUIxMTIzRDBERTc4MDBBRjFDRDcgLyogQ29u
dGVudFdvcmxkU2hhcmVkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRl
bnRXb3JsZFNoYXJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5NjI3
MjFFRkMyMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5NzI3MjFFRkMzMDBGN0Y4RUMgLyog
V2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5QzI3MjIzQTA4MDBGN0Y4RUMg
LyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjlEMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQ
dXNoRGFlbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlB1c2hEYWVt
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OUUyNzIzMzkzQTAwRjdG
OEVDIC8qIFdlYlB1c2hEYWVtb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQdXNoRGFlbW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyRjU4OEYx
MkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJGNTg5MDEyQTg4Mzg4MDA2Mjk1MzAg
LyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTY3LDYgKzQxNzcsOCBAQAogCQk1MTQxMjk5
MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQzQjI1RTFERENERkQxMDAxNEZBQzYgLyogX1dL
SWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tJY29uTG9hZGluZ0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
NDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJY29uTG9hZGluZ0NsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI2RkMy
NzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDUy
NkZFMjcxRkI3RTgwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDUyNzAwMjcx
RkJBMzQwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdl
c1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm90aWZpY2F0aW9u
TWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC00MTc0LDggKzQxODYsNiBAQAogCQk1MTQ1MjcwMjI3MUZCQTM2MDAwNDY3
QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNDUyNzA2MjcxRkJFQzEwMDA0NjdCNiAvKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDcyNzFGQkVDMTAwMDQ2N0I2IC8qIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTE0NTI2RUIyNzFFMTYyNjAwMDQ2N0I2IC8qIE5ldHdvcmtOb3Rp
ZmljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUx
NDUyNkVDMjcxRTE2MjcwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg5Q0MxMjM3MERB
Q0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tGaW5kUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg5
Q0MyMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZpbmRSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRl
cm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHRJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzEzOCw2ICs3MTQ4LDcgQEAK
IAkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgKi8sCiAJCQkJQkMzMDY4MjIxMjVBNkI5NDAwRTcxMjc4IC8qIFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyog
V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLywKKwkJCQk1MTJDRDY5OTI3MjFGMDQ5
MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oICovLAogCQkJCTVDOEREMzdGMUZF
NDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLywKIAkJCQk1QzhERDM4
MTFGRTQ1NUNBMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCAqLywKIAkJCQk1MTFG
N0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMuY3BwICov
LApAQCAtOTAzNSw2ICs5MDQ2LDE0IEBACiAJCQlwYXRoID0gRGF0YWJhc2VzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTEyQ0Q2OUIyNzIyMzlFNDAwRjdGOEVDIC8qIENv
Y29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTJD
RDY5QzI3MjIzQTA4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAq
LywKKwkJCSk7CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb24gKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtOTA1NSw4ICs5MDc0LDEx
IEBACiAJCTUxNDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTJDRDY5QjI3MjIzOUU0
MDBGN0Y4RUMgLyogQ29jb2EgKi8sCiAJCQkJNTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJCQk1MTQ1MjZFQjI3MUUxNjI2MDAw
NDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLywKKwkJCQk1MTJDRDY5NjI3
MjFFRkMyMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwICovLAorCQkJCTUx
MkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBOb3RpZmljYXRpb25zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTk1NzgsNiArOTYwMCw4IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk1Q0JCNkQ0RDI3
MUY2N0NDMDBGRDFBNUQgLyogY29tLmFwcGxlLndlYmtpdC53ZWJwdXNoZC5wbGlzdCAqLywKIAkJ
CQk1QzE1N0EwQjI3MTdDQTFDMDBFRDUyODAgLyogV2ViUHVzaERhZW1vbk1haW4ubW0gKi8sCisJ
CQkJNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCAqLywKKwkJCQk1
MTJDRDY5RTI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gd2VicHVzaGQ7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTIxMDAs
NiArMTIxMjQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAogCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxMkNENjlGMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEyODE4LDYgKzEyODQzLDcgQEAKIAkJCQk5M0FCOUI0
RTI1NzU2N0UyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0FCOUI0RDI1NzU2N0RDMDA5OEIxMEUgLyog
U3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0
aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJDRDY5QTI3MjFGMEE5MDBGN0Y4RUMg
LyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODQy
NTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4REQzQSAvKiBTcGVlY2hSZWNvZ25p
dGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0EzRkVDQTIy
MUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCBpbiBIZWFkZXJzICovLApA
QCAtMTI5MDUsNiArMTI5MzEsNyBAQAogCQkJCTk5MEQzOUY1MjQzQkU2NDgwMDE5OTM4OCAvKiBX
ZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NTVB
NkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9u
TWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJDRDY5ODI3MjFFRkM4MDBGN0Y4RUMgLyog
V2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMEExOTU4MUM5
MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbk1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQzBBMTk0NzFDOEZGMUE4MDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5NTQxQzhGRkRGQjAwRkUwRUJCIC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
NDY2MCw2ICsxNDY4Nyw3IEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MTJDRDZBMDI3
MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVD
MTU3QTAxMjcxN0I3RkIwMEVENTI4MCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzE1NzlGRjI3MTdCNkQyMDBFRDUyODAgLyogRGFlbW9uRGVjb2Rlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1QzE1NzlGRTI3MTdCNkMxMDBFRDUyODAgLyogRGFlbW9uRW5jb2Rl
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hOTRlZGQ0ZTMyOWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJX
ZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3dGYvU3Bhbi5oPgorI2luY2x1ZGUg
PHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCit1c2luZyBXZWJLaXQ6OldlYlB1c2hEOjpNZXNz
YWdlVHlwZTsKKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKwordXNpbmcgRW5jb2RlZE1lc3NhZ2Ug
PSBWZWN0b3I8dWludDhfdD47CisKK2NsYXNzIERhZW1vbiB7CisgICAgZnJpZW5kIGNsYXNzIFdU
Rjo6TmV2ZXJEZXN0cm95ZWQ8RGFlbW9uPjsKK3B1YmxpYzoKKyAgICBzdGF0aWMgRGFlbW9uJiBz
aW5nbGV0b24oKTsKKworICAgIHZvaWQgY29ubmVjdGlvbkV2ZW50SGFuZGxlcih4cGNfb2JqZWN0
X3QpOworICAgIHZvaWQgY29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QpOworICAgIHZv
aWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCk7CisKKyAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCisgICAgdm9pZCBlY2hvVHdpY2UoY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcik7CisKK3ByaXZhdGU6Cisg
ICAgRGFlbW9uKCkgPSBkZWZhdWx0OworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNv
ZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRy
PHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsKKyAgICB2b2lkIGRlY29kZUFuZEhhbmRsZU1lc3Nh
Z2UoTWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM0OTc4MDA1ZWExYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAt
MCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V2ViUHVzaERhZW1vbi5oIgorCisjaW1wb3J0ICJEYWVtb25EZWNvZGVyLmgiCisjaW1wb3J0ICJE
YWVtb25FbmNvZGVyLmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIkhh
bmRsZU1lc3NhZ2UuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKworI2lt
cG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KKyNpbXBvcnQgPHd0Zi9TcGFuLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ6Oldl
YlB1c2hEOworCituYW1lc3BhY2UgV2ViUHVzaEQgeworCituYW1lc3BhY2UgTWVzc2FnZUluZm8g
eworCisjZGVmaW5lIEZVTkNUSU9OKG1mKSBzdHJ1Y3QgbWYgeyBzdGF0aWMgY29uc3RleHByIGF1
dG8gTWVtYmVyRnVuY3Rpb24gPSAmV2ViUHVzaEQ6OkRhZW1vbjo6bWY7CisjZGVmaW5lIEFSR1VN
RU5UUyguLi4pIHVzaW5nIEFyZ3NUdXBsZSA9IHN0ZDo6dHVwbGU8X19WQV9BUkdTX18+OworI2Rl
ZmluZSBSRVBMWSguLi4pIHVzaW5nIFJlcGx5ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChfX1ZB
X0FSR1NfXyk+OyBcCisgICAgc3RhdGljIFdlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBlbmNvZGVS
ZXBseShfX1ZBX0FSR1NfXyk7CisjZGVmaW5lIEVORCB9OworCitGVU5DVElPTihlY2hvVHdpY2Up
CitBUkdVTUVOVFMoU3RyaW5nKQorUkVQTFkoU3RyaW5nKQorRU5ECisKKyN1bmRlZiBGVU5DVElP
TgorI3VuZGVmIEFSR1VNRU5UUworI3VuZGVmIFJFUExZCisjdW5kZWYgRU5ECisKK1dlYlB1c2hE
OjpFbmNvZGVkTWVzc2FnZSBlY2hvVHdpY2U6OmVuY29kZVJlcGx5KFN0cmluZyByZXBseSkKK3sK
KyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVw
bHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBNZXNzYWdlSW5mbworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgordm9pZCBoYW5kbGVXZWJQ
dXNoRE1lc3NhZ2VXaXRoUmVwbHkoU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVw
bHlTZW5kZXIpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkRlY29kZXIgZGVjb2RlcihlbmNvZGVk
TWVzc2FnZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVuYW1lIEluZm86OkFyZ3NUdXBsZT4g
YXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRzOworICAgIGlmIChVTkxJS0VMWSgh
YXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdHlwZW5hbWUgSW5mbzo6UmVwbHkg
Y29tcGxldGlvbkhhbmRsZXIgeyBbcmVwbHlTZW5kZXIgPSBXVEZNb3ZlKHJlcGx5U2VuZGVyKV0g
KGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAgcmVwbHlTZW5kZXIoSW5mbzo6ZW5j
b2RlUmVwbHkoYXJncy4uLikpOworICAgIH0gfTsKKworICAgIElQQzo6Y2FsbE1lbWJlckZ1bmN0
aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAmV2Vi
UHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCksIEluZm86Ok1lbWJlckZ1bmN0aW9uKTsKK30KKwor
RGFlbW9uJiBEYWVtb246OnNpbmdsZXRvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PERhZW1vbj4gZGFlbW9uOworICAgIHJldHVybiBkYWVtb247Cit9CisKK3ZvaWQgRGFlbW9uOjpj
b25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQoreworICAgIGlmICh4
cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gRklYTUU6IFZlcmlmeSB0aGUgY29ubmVjdGlvbiBpcyBrbm93bgorICAg
IAorICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sVmVy
c2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKKyAgICAgICAgTlNMb2coQCJSZWNl
aXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVudCBwcm90b2NvbCB2ZXJzaW9uIik7
CisgICAgICAgIC8vIEZJWE1FOiBDdXQgb2ZmIHRoaXMgY29ubmVjdGlvbgorICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlVHlwZSB7IHN0YXRpY19jYXN0PE1lc3NhZ2VU
eXBlPih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sTWVzc2FnZVR5
cGVLZXkpKSB9OworICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAgfTsKKyAgICBjb25zdCB2b2lkKiBk
YXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVzdCwgcHJvdG9jb2xFbmNvZGVkTWVz
c2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICBTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNz
YWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBkYXRhU2l6ZSB9OworICAg
IAorICAgIGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UobWVzc2FnZVR5cGUsIGVuY29kZWRNZXNzYWdl
LCBjcmVhdGVSZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVxdWVzdCkpOworfQorCit2b2lkIERh
ZW1vbjo6Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QpCit7CisgICAgLy8gRklYTUU6
IFRyYWNrIGNvbm5lY3Rpb25zCit9CisKK3ZvaWQgRGFlbW9uOjpjb25uZWN0aW9uUmVtb3ZlZCh4
cGNfY29ubmVjdGlvbl90KQoreworICAgIC8vIEZJWE1FOiBUcmFjayBjb25uZWN0aW9ucworfQor
CitDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiBEYWVtb246OmNyZWF0
ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBPU09iamVjdFB0cjx4cGNfb2Jq
ZWN0X3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNz
YWdlVHlwZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIFtyZXF1ZXN0
ID0gV1RGTW92ZShyZXF1ZXN0KV0gKEVuY29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgeworICAgICAg
ICBhdXRvIHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkocmVxdWVz
dC5nZXQoKSkpOworICAgICAgICBBU1NFUlQoeHBjX2dldF90eXBlKHJlcGx5LmdldCgpKSA9PSBY
UENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChy
ZXBseS5nZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBwcm90b2NvbFZlcnNpb25WYWx1ZSk7Cisg
ICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5nZXQoKSwgcHJvdG9jb2xFbmNv
ZGVkTWVzc2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQQ0RhdGEoV1RGTW92ZShtZXNzYWdlKSku
Z2V0KCkpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25h
cnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkpLCByZXBseS5nZXQoKSk7Cisg
ICAgfTsKK30KKwordm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+JiYgcmVwbHlTZW5kZXIpCit7Cisg
ICAgQVNTRVJUKG1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkgPT0gISFyZXBseVNl
bmRlcik7CisKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdlVHlw
ZTo6RWNob1R3aWNlOgorICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHk8TWVz
c2FnZUluZm86OmVjaG9Ud2ljZT4oZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIERhZW1vbjo6ZWNob1R3aWNlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcm
KT4mJiByZXBseVNlbmRlcikKK3sKKyAgICByZXBseVNlbmRlcihtYWtlU3RyaW5nKG1lc3NhZ2Us
IG1lc3NhZ2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0gYi9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCmluZGV4IDI0YTNiMjE2MTRiYi4uYWNjY2I1
Njg2NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25N
YWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0K
QEAgLTI4LDc3ICsyOCwyOSBAQAogI2ltcG9ydCAiRGFlbW9uRGVjb2Rlci5oIgogI2ltcG9ydCAi
RGFlbW9uRW5jb2Rlci5oIgogI2ltcG9ydCAiRGFlbW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJX
ZWJQdXNoRGFlbW9uLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvU3Bhbi5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKLW5hbWVzcGFjZSBXZWJQdXNoRCB7Ci0KLWNvbnN0ZXhw
ciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJvdG9jb2wgdmVyc2lvbiI7Ci1j
b25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgPSAxOwotY29uc3RleHByIGNv
bnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkgPSAibWVzc2FnZSB0eXBlIjsKLWNvbnN0
ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQgbWVz
c2FnZSI7Ci1lbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7Ci0gICAgRWNob1R3aWNl
ID0gMQotfTsKLQotc3RhdGljIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+
JiYpPiByZXBseVNlbmRlcihSZXRhaW5QdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpCi17Ci0g
ICAgcmV0dXJuIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0gKFZlY3Rvcjx1aW50OF90PiYm
IG1lc3NhZ2UpIHsKLSAgICAgICAgYXV0byByZXBseSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlf
Y3JlYXRlX3JlcGx5KHJlcXVlc3QuZ2V0KCkpKTsKLSAgICAgICAgQVNTRVJUKHhwY19nZXRfdHlw
ZShyZXBseS5nZXQoKSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7Ci0gICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF91aW50NjQocmVwbHkuZ2V0KCksIHByb3RvY29sVmVyc2lvbktleSwgcHJvdG9j
b2xWZXJzaW9uVmFsdWUpOwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdmFsdWUocmVwbHku
Z2V0KCksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdlYktpdDo6dmVjdG9yVG9YUENEYXRh
KFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9t
ZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29ubmVjdGlvbihyZXF1ZXN0LmdldCgp
KSwgcmVwbHkuZ2V0KCkpOwotICAgIH07Ci19Ci0KLXN0YXRpYyB2b2lkIGVjaG9Ud2ljZShTcGFu
PGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsKLSAgICBXZWJLaXQ6OkRhZW1vbjo6
RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdlKTsKLSAgICBzdGQ6Om9wdGlvbmFsPFN0cmlu
Zz4gc3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5nOwotICAgIGlmICghc3RyaW5nKQotICAg
ICAgICByZXR1cm47Cit1c2luZyBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlZE1lc3NhZ2U7Cit1c2lu
ZyBXZWJQdXNoRDo6RGFlbW9uOwogCi0gICAgYXV0byByZXBseSA9IG1ha2VTdHJpbmcoKnN0cmlu
ZywgKnN0cmluZyk7Ci0gICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKLSAgICBl
bmNvZGVyIDw8IHJlcGx5OwotICAgIHJlcGx5U2VuZGVyKGVuY29kZXIudGFrZUJ1ZmZlcigpKTsK
LX0KLQotc3RhdGljIHZvaWQgZGVjb2RlTWVzc2FnZUFuZFNlbmRSZXBseShNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYgcmVwbHlTZW5kZXIpCi17Ci0gICAg
c3dpdGNoIChtZXNzYWdlVHlwZSkgewotICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToK
LSAgICAgICAgZWNob1R3aWNlKGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19CituYW1lc3BhY2UgV2ViUHVzaEQgewogCiBzdGF0
aWMgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCByZXF1ZXN0KQogewot
ICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElDVElPTkFSWSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3Qs
IHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsKLSAgICAgICAg
TlNMb2coQCJSZWNlaXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVudCBwcm90b2Nv
bCB2ZXJzaW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBhdXRvIG1lc3NhZ2VU
eXBlIHsgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQo
cmVxdWVzdCwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07Ci0gICAgc2l6ZV90IGRhdGFTaXpl
IHsgMCB9OwotICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRfZGF0YShy
ZXF1ZXN0LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOwotICAgIFNwYW48
Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIGRhdGFTaXplIH07Ci0gICAgZGVjb2RlTWVzc2FnZUFuZFNlbmRSZXBseShtZXNz
YWdlVHlwZSwgZW5jb2RlZE1lc3NhZ2UsIHJlcGx5U2VuZGVyKHJlcXVlc3QpKTsKKyAgICBEYWVt
b246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25FdmVudEhhbmRsZXIocmVxdWVzdCk7CiB9CiAKLXN0
YXRpYyB2b2lkIGNvbm5lY3Rpb25BZGRlZCh4cGNfY29ubmVjdGlvbl90KQorc3RhdGljIHZvaWQg
Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKKyAgICBEYWVt
b246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BZGRlZChjb25uZWN0aW9uKTsKIH0KIAotc3RhdGlj
IHZvaWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25fdCkKK3N0YXRpYyB2b2lkIGNv
bm5lY3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKIHsKKyAgICBEYWVt
b246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25SZW1vdmVkKGNvbm5lY3Rpb24pOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDBiNmRmYTU4Y2FiNi4uODZiNjczZDE3OTBhIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFk
ZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJlIHRvIGxhdW5jaCB3
ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0FwcERlbGVn
YXRlLm06CisgICAgICAgIChwZXJzaXN0ZW50RGF0YVN0b3JlKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0syQnJv
d3NlcldpbmRvd0NvbnRyb2xsZXIgX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Np
b25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisKIDIwMjEtMTAtMjUgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6
IEFkZCBhbiBleHBsaWNpdCBJbWFnZURpZmZSZXN1bHQucGFzc2VkIHJhdGhlciB0aGFuIHJlbHlp
bmcgb24gZGlmZl9pbWFnZSBiZWluZyBub24tTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvbWFjL0FwcERlbGVnYXRlLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdh
dGUubQppbmRleCA3NWQ2OTFkZTI2YmYuLjhhMzJiZDkyOGUxYSAxMDA2NDQKLS0tIGEvVG9vbHMv
TWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L0FwcERlbGVnYXRlLm0KQEAgLTk4LDYgKzk4LDExIEBAIC0gKHZvaWQpYXdha2VGcm9tTmliCiAg
ICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgICAgICBjb25maWd1cmF0aW9uLm5ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQgPSBZRVM7CisKKyAgICAgICAgLy8g
RklYTUU6IFdoZW4gYnVpbHQtaW4gbm90aWZpY2F0aW9ucyBhcmUgZW5hYmxlZCwgV2ViS2l0IGRv
ZXNuJ3QgeWV0IGdyYWNlZnVsbHkgaGFuZGxlIGEgbWlzc2luZyB3ZWJwdXNoZCBzZXJ2aWNlCisg
ICAgICAgIC8vIFVudGlsIGl0IGRvZXMsIHVuY29tbWVudCB0aGlzIGxpbmUgd2hlbiB0aGUgc2Vy
dmljZSBpcyBrbm93biB0byBiZSBpbnN0YWxsZWQuCisgICAgICAgIC8vIFtjb25maWd1cmF0aW9u
IHNldFdlYlB1c2hNYWNoU2VydmljZU5hbWU6QCJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9u
LnNlcnZpY2UiXTsKKwogICAgICAgICBkYXRhU3RvcmUgPSBbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKICAgICB9CiAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxl
ci5tCmluZGV4IDNjNDM1NjA4YTQ3Yi4uMGNlMDAxYTMwNzNmIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMjEyLDYgKzIx
MiwxMyBAQCAtIChDR0Zsb2F0KXZpZXdTY2FsZUZvck1lbnVJdGVtVGFnOihOU0ludGVnZXIpdGFn
CiAgICAgcmV0dXJuIDE7CiB9CiAKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgLy8gRm9yIHRlc3RpbmcsIGdyYW50IG5vdGlmaWNh
dGlvbiBwZXJtaXNzaW9uIHRvIGFsbCBvcmlnaW5zLgorICAgIE5TTG9nKEAiR3JhbnRpbmcgbm90
aWZpY2F0aW9ucyBwZXJtaXNzaW9uIHRvIG9yaWdpbiAlQCIsIHNlY3VyaXR5T3JpZ2luKTsKKyAg
ICBkZWNpc2lvbkhhbmRsZXIoWUVTKTsKK30KKwogLSAoSUJBY3Rpb24pc2V0Vmlld1NjYWxlOihp
ZClzZW5kZXIKIHsKICAgICBDR0Zsb2F0IHNjYWxlID0gW3NlbGYgdmlld1NjYWxlRm9yTWVudUl0
ZW1UYWc6W3NlbmRlciB0YWddXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442453</attachid>
            <date>2021-10-25 19:34:30 -0700</date>
            <delta_ts>2021-10-26 11:38:12 -0700</delta_ts>
            <desc>Patch v6</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55503</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi4xMTIzODI4OTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAo
Tm8gYmVoYXZpb3IgY2hhbmdlIHlldCkKKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAt
IEFkZHMgY2xhc3NlcyByZXByZXNlbnRpbmcgdGhlIFdlYlB1c2hEYWVtb24gYW5kIGNvbm5lY3Rp
b25zIHRvIGl0CisgICAgICAgIC0gQWRkcyBjbGFzc2VzL2NvbnN0YW50cy9tYWNyb3MgcmVsYXRl
ZCB0byBtZXNzYWdpbmcgdGhhdCBkYWVtb24KKyAgICAgICAgLSBBZGRzIFNQSSBmb3IgY29uZmln
dXJpbmcgYSBjb25uZWN0IHRvIHRoYXQgZGFlbW9uCisgICAgICAgIC0gR2V0cyBNaW5pQnJvd3Nl
ciBjbG9zZXIgdG8gc3VwcG9ydGluZyBidWlsdC1pbiBub3RpZmljYXRpb25zCisgICAgICAgIC0g
SGFzIHdheSBtb3JlIGNvbW1lbnRlZCBvdXQgY29kZSB0aGFuIHVzdWFsIGZvciBhIHBhdGNoLCBi
dXQgdGhhdCBlbmFibGVzIGEgZ3JlYXQgc3RvcHBpbmctcG9pbnQgbWlsZXN0b25lCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6YWRkVmVy
c2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OkNvbm5lY3Rpb246Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRF
dmVudCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpkaWN0
aW9uYXJ5RnJvbU1lc3NhZ2UgY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90
aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93Tm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNhbmNlbE5vdGlmaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlcGx5Q2FsbGVyPD46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJL
aXQ6OlJlcGx5Q2FsbGVyPFN0cmluZz46OmNhbGxSZXBseSk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseSBjb25zdCk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9u
TWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
bmV0d29ya1Nlc3Npb24gY29uc3QpOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwLgorICAgICAgICAoV2ViS2l0
OjpXZWJQdXNoRDo6Q29ubmVjdGlvbjo6Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjpDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL21hYy9j
b20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluOgorCisgICAgICAgICogUGxhdGZv
cm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwOgorICAgICAgICAqIFBsYXRmb3JtL0lQQy9EYWVt
b25Db25uZWN0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OkRhZW1vbjo6Q29ubmVjdGlvblRvTWFj
aFNlcnZpY2U6Om1hY2hTZXJ2aWNlTmFtZSBjb25zdCk6CisgICAgICAgICogUGxhdGZvcm0vSVBD
L2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbToKKworICAgICAgICAqIFBsYXRmb3JtL0xv
Z2dpbmcuaDoKKworICAgICAgICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3Bw
LgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoRDo6bWVzc2FnZVR5cGVTZW5kc1JlcGx5KToKKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
Ojpjb3B5IGNvbnN0KToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24uaDogQ29w
aWVkIGZyb20gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmguCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1v
bi5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFp
bi5tbS4KKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6ZWNob1R3aWNlOjplbmNvZGVS
ZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6aGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJQ
dXNoRDo6RGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYlB1c2hE
OjpEYWVtb246OmNvbm5lY3Rpb25BZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpj
b25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5kbGVNZXNzYWdl
KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmVjaG9Ud2ljZSk6CisgICAgICAgIAorICAg
ICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tOgorICAgICAgICAoV2ViUHVzaEQ6
OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVzaEQ6OmNvbm5lY3Rpb25B
ZGRlZCk6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlvblJlbW92ZWQpOgorICAgICAgICAo
V2ViUHVzaEQ6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
UHVzaEQ6OmVjaG9Ud2ljZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJQdXNoRDo6ZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAKIDIwMjEtMTAtMjUgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIGEgZmV3IHZhcmlhYmxlIGFuZCBw
YXJhbWV0ZXIgbmFtZXMgaW4gV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVz
aERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGNhNTJmYThlZmVlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL0Nv
Y29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KQEAgLTAsMCArMSw3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uaCIKKworI2lmIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKKworI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgorI2ltcG9ydCAiRGFlbW9uVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisjaW1wb3J0IDx3
dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KKwordXNpbmcgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsK
KworbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQgeyAKKworc3RhdGljIHZvaWQgYWRkVmVyc2lv
bkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2Us
IHhwY19vYmplY3RfdCBkaWN0aW9uYXJ5KQoreworICAgIEFTU0VSVCh4cGNfZ2V0X3R5cGUoZGlj
dGlvbmFyeSkgPT0gWFBDX1RZUEVfRElDVElPTkFSWSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3VpbnQ2NChkaWN0aW9uYXJ5LCBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uS2V5LCBXZWJQdXNo
RDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShk
aWN0aW9uYXJ5LCBXZWJQdXNoRDo6cHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgdmVjdG9yVG9Y
UENEYXRhKFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpu
ZXdDb25uZWN0aW9uV2FzSW5pdGlhbGl6ZWQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2Nvbm5l
Y3Rpb24pOworICAgIGlmIChuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUcmFjayBjb25uZWN0aW9uIHN0
YXRlCit9CisKK3ZvaWQgQ29ubmVjdGlvbjo6Y29ubmVjdGlvblJlY2VpdmVkRXZlbnQoeHBjX29i
amVjdF90IHJlcXVlc3QpIGNvbnN0Cit7CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAh
PSBYUENfVFlQRV9ESUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgY2hhciog
ZGVidWdNZXNzYWdlID0geHBjX2RpY3Rpb25hcnlfZ2V0X3N0cmluZyhyZXF1ZXN0LCBwcm90b2Nv
bERlYnVnTWVzc2FnZUtleSk7CisgICAgaWYgKCFkZWJ1Z01lc3NhZ2UpCisgICAgICAgIHJldHVy
bjsKKyAgICBhdXRvIG1lc3NhZ2VMZXZlbCA9IHN0YXRpY19jYXN0PEpTQzo6TWVzc2FnZUxldmVs
Pih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sRGVidWdNZXNzYWdl
TGV2ZWxLZXkpKTsKKyAgICBuZXR3b3JrU2Vzc2lvbigpLm5ldHdvcmtQcm9jZXNzKCkuYnJvYWRj
YXN0Q29uc29sZU1lc3NhZ2UobmV0d29ya1Nlc3Npb24oKS5zZXNzaW9uSUQoKSwgTWVzc2FnZVNv
dXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIG1lc3NhZ2VMZXZlbCwgU3RyaW5nOjpmcm9t
VVRGOChkZWJ1Z01lc3NhZ2UpKTsKK30KKworUmV0YWluUHRyPHhwY19vYmplY3RfdD4gQ29ubmVj
dGlvbjo6ZGljdGlvbmFyeUZyb21NZXNzYWdlKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBFbmNv
ZGVkTWVzc2FnZSYmIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRv
cHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIGFk
ZFZlcnNpb25BbmRFbmNvZGVkTWVzc2FnZVRvRGljdGlvbmFyeShXVEZNb3ZlKG1lc3NhZ2UpLCBk
aWN0aW9uYXJ5LmdldCgpKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25h
cnkuZ2V0KCksIHByb3RvY29sTWVzc2FnZVR5cGVLZXksIHN0YXRpY19jYXN0PHVpbnQ2NF90Piht
ZXNzYWdlVHlwZSkpOworICAgIHJldHVybiBkaWN0aW9uYXJ5OworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQ6OldlYlB1c2hECisKKyNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkgJiYgRU5BQkxF
KEJVSUxUX0lOX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCBhMjg4YTIxOGQxMjAuLjVmZTEyMTliZGM3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0yOCwyOCAr
MjgsOTMgQEAKIAogI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQogCisjaW5jbHVk
ZSAiRGFlbW9uRGVjb2Rlci5oIgorI2luY2x1ZGUgIkRhZW1vbkVuY29kZXIuaCIKKyNpbmNsdWRl
ICJOZXR3b3JrU2Vzc2lvbi5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCi1OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6TmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcm
KQorTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
KE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgY29uc3QgU3RyaW5nJiB3ZWJQdXNoTWFj
aFNlcnZpY2VOYW1lKQogICAgIDogbV9uZXR3b3JrU2Vzc2lvbihuZXR3b3JrU2Vzc2lvbikKIHsK
KyAgICBpZiAoIW1fbmV0d29ya1Nlc3Npb24uc2Vzc2lvbklEKCkuaXNFcGhlbWVyYWwoKSAmJiAh
d2ViUHVzaE1hY2hTZXJ2aWNlTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIG1fY29ubmVjdGlvbiA9
IG1ha2VVbmlxdWU8V2ViUHVzaEQ6OkNvbm5lY3Rpb24+KHdlYlB1c2hNYWNoU2VydmljZU5hbWUu
dXRmOCgpLCAqdGhpcyk7CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNo
b3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9uRGly
ZWN0aW9uLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCkKIHsKKyAgICBpZiAoIW1fY29ubmVjdGlv
bikKKyAgICAgICAgcmV0dXJuOworCisvLyAgICAgRklYTUU6IFdoaWxlIHdlIGRvbid0IG5vcm1h
bGx5IGxhbmQgY29tbWVudGVkLW91dCBjb2RlIGluIHRoZSB0cmVlLAorLy8gICAgIHRoaXMgaXMg
YSBuaWNlIGJvb2ttYXJrIGZvciBhIGRldmVsb3BtZW50IG1pbGVzdG9uZTsgUm91bmR0cmlwIGNv
bW11bmljYXRpb24gd2l0aCB3ZWJwdXNoZAorLy8gICAgIFdpbGwgbWFrZSBuZXh0IGRldmVsb3Bt
ZW50IHN0ZXBzIG9idmlvdXMuCisvLworLy8gICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmIGNvbXBsZXRpb25IYW5kbGVyID0gW10gKFN0cmluZyByZXBseSkgeworLy8gICAgICAg
IHByaW50ZigiR290IHJlcGx5OiAlc1xuIiwgcmVwbHkudXRmOCgpLmRhdGEoKSk7CisvLyAgICB9
OworLy8KKy8vICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6
RWNob1R3aWNlPihXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgU3RyaW5nKCJGSVhNRTogRG8g
dXNlZnVsIHdvcmsgaGVyZSIpKTsKIH0KIAogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cjo6Y2FuY2VsTm90aWZpY2F0aW9uKHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0aW9u
KQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmNsZWFyTm90aWZpY2F0aW9ucyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKKyAgICBpZiAo
IW1fY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOwogfQogCiB2b2lkIE5ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKHVpbnQ2NF90KQogeworICAgIGlm
ICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47Cit9CisKKwordGVtcGxhdGU8V2ViUHVz
aEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordm9pZCBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2UoQXJncyYmLi4uIGFyZ3MpIGNvbnN0
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV9jb25uZWN0aW9uKTsKKyAgICBEYWVtb246OkVuY29k
ZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6OmZvcndhcmQ8QXJncz4oYXJncyku
Li4pOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVm
ZmVyKCkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBBcmdzPiBzdHJ1Y3QgUmVwbHlDYWxs
ZXI7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjw+IHsKKyAgICBzdGF0aWMgdm9pZCBj
YWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICB9Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8U3RyaW5nPiB7
CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29kZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IHN0cmluZzsKKyAgICAgICAgZGVjb2Rl
ciA+PiBzdHJpbmc7CisgICAgICAgIGlmICghc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
KnN0cmluZykpOworICAgIH0KK307CisKK3RlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBt
ZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgordm9p
ZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyLCBBcmdz
JiYuLi4gYXJncykgY29uc3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb24pOwor
CisgICAgRGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2Rlci5lbmNvZGUoc3RkOjpm
b3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRXaXRoUmVwbHko
bWVzc2FnZVR5cGUsIGVuY29kZXIudGFrZUJ1ZmZlcigpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHlCdWZmZXIpIG11dGFibGUgewor
ICAgICAgICBEYWVtb246OkRlY29kZXIgZGVjb2RlcihXVEZNb3ZlKHJlcGx5QnVmZmVyKSk7Cisg
ICAgICAgIFJlcGx5Q2FsbGVyPFJlcGx5QXJncy4uLj46OmNhbGxSZXBseShXVEZNb3ZlKGRlY29k
ZXIpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgfSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aAppbmRleCA0MWM4Mjk4YzExOWIuLjZmYTg3NTY4NGM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTI4LDE2ICsyOCwyNCBAQAogI2lmIEVOQUJM
RShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQogCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmgiCisjaW5jbHVkZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorbmFtZXNwYWNlIFdl
YlB1c2hEIHsKK2VudW0gY2xhc3MgTWVzc2FnZVR5cGUgOiB1aW50OF90OworfQorCiBjbGFzcyBO
ZXR3b3JrU2Vzc2lvbjsKIAogY2xhc3MgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIgOiBwdWJs
aWMgTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb247CitwdWJsaWM6Cisg
ICAgTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3
b3JrU2Vzc2lvbjsgfQorCiBwcml2YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
KE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsK
IApAQCAtNDcsNiArNTUsMTIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOb3RpZmlj
YXRpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQpIGZpbmFsOwogCiAgICAgTmV0d29ya1Nlc3Np
b24mIG1fbmV0d29ya1Nlc3Npb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlB1c2hEOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb247CisKKyAgICB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5
cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdm9pZCBzZW5kTWVzc2FnZShB
cmdzJiYuLi4pIGNvbnN0OworICAgIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNz
YWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZv
aWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3Mu
Li4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFiYzE0NjA3NWZiZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9u
Q29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgorCisjaWYgRU5B
QkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25EZWNvZGVyLmgi
CisjaW5jbHVkZSAiRGFlbW9uRW5jb2Rlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtTZXNzaW9uLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEIHsKKworQ29ubmVjdGlvbjo6Q29ubmVjdGlv
bihDU3RyaW5nJiYgbWFjaFNlcnZpY2VOYW1lLCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciYg
bWFuYWdlcikKKyAgICA6IERhZW1vbjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlv
blRyYWl0cz4oV1RGTW92ZShtYWNoU2VydmljZU5hbWUpKQorICAgICwgbV9ub3RpZmljYXRpb25N
YW5hZ2VyKG1hbmFnZXIpCit7CisgICAgTE9HKFB1c2gsICJDcmVhdGluZyBXZWJQdXNoRCBjb25u
ZWN0aW9uIHRvIG1hY2ggc2VydmljZTogJXMiLCB0aGlzLT5tYWNoU2VydmljZU5hbWUoKS5kYXRh
KCkpOworfQorCitOZXR3b3JrU2Vzc2lvbiYgQ29ubmVjdGlvbjo6bmV0d29ya1Nlc3Npb24oKSBj
b25zdAoreworICAgIHJldHVybiBtX25vdGlmaWNhdGlvbk1hbmFnZXIubmV0d29ya1Nlc3Npb24o
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRAorCisjZW5kaWYgLy8gRU5B
QkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29u
bmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDU2M2Yz
YTE0NDExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgKQEAgLTAsMCArMSw3NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNB
VElPTlMpCisKKyNpbmNsdWRlICJEYWVtb25Db25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2ViUHVz
aERhZW1vbkNvbnN0YW50cy5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXI7CitjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKKworbmFtZXNwYWNl
IFdlYlB1c2hEIHsKKworc3RydWN0IENvbm5lY3Rpb25UcmFpdHMgeworICAgIHVzaW5nIE1lc3Nh
Z2VUeXBlID0gV2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOworICAgIHN0YXRpYyBjb25zdGV4cHIgY29u
c3QgY2hhciogcHJvdG9jb2xWZXJzaW9uS2V5IHsgV2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvbktl
eSB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUg
eyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUgfTsKKyAgICBzdGF0aWMgY29uc3RleHBy
IGNvbnN0IGNoYXIqIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgeyBXZWJQdXNoRDo6cHJvdG9j
b2xFbmNvZGVkTWVzc2FnZUtleSB9OworfTsKKworY2xhc3MgQ29ubmVjdGlvbiA6IHB1YmxpYyBE
YWVtb246OkNvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPENvbm5lY3Rpb25UcmFpdHM+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDb25uZWN0aW9uKENTdHJpbmcm
JiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJik7CisKK3ByaXZh
dGU6CisgICAgdm9pZCBuZXdDb25uZWN0aW9uV2FzSW5pdGlhbGl6ZWQoKSBjb25zdCBmaW5hbDsK
KyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8eHBjX29iamVjdF90PiBkaWN0aW9u
YXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUsIERhZW1vbjo6RW5jb2RlZE1lc3NhZ2UmJikgY29u
c3QgZmluYWw7CisgICAgdm9pZCBjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2JqZWN0X3Qp
IGNvbnN0IGZpbmFsOworI2VuZGlmCisgICAgdm9pZCBzZW5kRGVidWdNb2RlSXNFbmFibGVkTWVz
c2FnZUlmTmVjZXNzYXJ5KCkgY29uc3Q7CisKKyAgICBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nl
c3Npb24oKSBjb25zdDsKKworICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyJiBtX25vdGlm
aWNhdGlvbk1hbmFnZXI7CisKKyAgICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwg
dHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlKEFyZ3MmJi4uLikgY29uc3Q7
CisgICAgdGVtcGxhdGU8TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3Ms
IHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdlV2l0aFJlcGx5KENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiwgQXJncyYmLi4uKSBjb25zdDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYlB1c2hECit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRhc2suaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oCmluZGV4IGNkNTQ3ZGViOTVjNy4uMzA5
YmFiNDI1N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNv
Y2tldFRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlNvY2tldFRh
c2suaApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIldlYlNvY2tldFRhc2tTb3VwLmgiCiAj
ZWxzZQogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogc3RydWN0IFNlc3Npb25TZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJvY2Vz
cy5zYi5pbgppbmRleCBjOTEyMmY2YmY4ZDIuLjFjZTg2MTkwOWIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9tYWMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JrUHJv
Y2Vzcy5zYi5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBw
bGUuV2ViS2l0Lk5ldHdvcmtQcm9jZXNzLnNiLmluCkBAIC0zNjksNiArMzY5LDkgQEAKIChhbGxv
dyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLndl
YmtpdC5hZGF0dHJpYnV0aW9uZC5zZXJ2aWNlIikpCiAoYWxsb3cgbWFjaC1sb29rdXAgKHdpdGgg
dGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQucGNtdGVzdGRhZW1vbi5zZXJ2aWNl
IikpCiAKKyhhbGxvdyBtYWNoLWxvb2t1cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAi
Y29tLmFwcGxlLndlYmtpdC53ZWJwdXNoZC5zZXJ2aWNlIikpCisoYWxsb3cgbWFjaC1sb29rdXAg
KHdpdGggdGVsZW1ldHJ5KSAoZ2xvYmFsLW5hbWUgIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVt
b24uc2VydmljZSIpKQorCiAod2l0aC1maWx0ZXIgKHVpZCAwKQogICAgIChhbGxvdyBtYWNoLWxv
b2t1cCAod2l0aCB0ZWxlbWV0cnkpCiAgICAgICAgIChnbG9iYWwtbmFtZSAiY29tLmFwcGxlLkRp
c2tBcmJpdHJhdGlvbi5kaXNrYXJiaXRyYXRpb25kIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAKaW5kZXggNWVlMzk1YzcyODUyLi43ZmIxNjBi
NTVjNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5l
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rp
b24uY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRGFlbW9uQ29ubmVjdGlvbi5oIgog
CiAjaW5jbHVkZSAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTQ3LDggKzQ4LDEyIEBAIHZvaWQgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8VHJhaXRzPjo6c2Vu
ZFdpdGhSZXBseSh0eXBlbmFtZSBUcmFpdHM6Ok1lc3NhZ2VUeXBlCiAKIHRlbXBsYXRlIGNsYXNz
IENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6Q29ubmVjdGlvblRyYWl0cz47CiAKKyNpZiBF
TkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKK3RlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25U
b01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0aW9uVHJhaXRzPjsKICNlbmRpZgogCisjZW5k
aWYgLy8gIVBMQVRGT1JNKENPQ09BKQorCiB9IC8vIG5hbWVzcGFjZSBEYWVtb24KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9E
YWVtb25Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25u
ZWN0aW9uLmgKaW5kZXggNzViMTA0ZjgzMzJkLi5kYmU4NTgzMGVlODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmgKQEAgLTcxLDYgKzcxLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNfb2Jq
ZWN0X3QpIGNvbnN0ID0gMDsKICNlbmRpZgogCisgICAgY29uc3QgQ1N0cmluZyYgbWFjaFNlcnZp
Y2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWNoU2VydmljZU5hbWU7IH0KKwogcHJpdmF0ZToK
ICAgICB2b2lkIGluaXRpYWxpemVDb25uZWN0aW9uSWZOZWVkZWQoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9uQ29ubmVjdGlv
bkNvY29hLm1tCmluZGV4IGQwMzU3MDlkNGUzZC4uNmIwOWZjOGJkZWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9uQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvY29jb2EvRGFlbW9uQ29ubmVjdGlvbkNv
Y29hLm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIKICNp
bXBvcnQgIlByaXZhdGVDbGlja01lYXN1cmVtZW50Q29ubmVjdGlvbi5oIgorI2ltcG9ydCAiV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9y
dCA8d3RmL1J1bkxvb3AuaD4KIApAQCAtMTEyLDYgKzExMywxMCBAQCB2b2lkIENvbm5lY3Rpb25U
b01hY2hTZXJ2aWNlPFRyYWl0cz46OnNlbmRXaXRoUmVwbHkodHlwZW5hbWUgVHJhaXRzOjpNZXNz
YWdlVHlwZQogCiB0ZW1wbGF0ZSBjbGFzcyBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxQQ006OkNv
bm5lY3Rpb25UcmFpdHM+OwogCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCit0
ZW1wbGF0ZSBjbGFzcyBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxXZWJQdXNoRDo6Q29ubmVjdGlv
blRyYWl0cz47CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgRGFlbW9uCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaAppbmRleCBjOWVjYThjMjgxYjIuLmE4
MzI2OGI5ODA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9Mb2dnaW5nLmgKQEAgLTg3LDYgKzg3LDcgQEAg
ZXh0ZXJuICJDIiB7CiAgICAgTShQcm9jZXNzU3VzcGVuc2lvbikgXAogICAgIE0oUHJvY2Vzc1N3
YXBwaW5nKSBcCiAgICAgTShQcm94aW1pdHlOZXR3b3JraW5nKSBcCisgICAgTShQdXNoKSBcCiAg
ICAgTShSZW1vdGVMYXllclRyZWUpIFwKICAgICBNKFJlc2l6ZSkgXAogICAgIE0oUmVzb3VyY2VM
b2FkU3RhdGlzdGljcykgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVz
aERhZW1vbkNvbnN0YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNv
bnN0YW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZGQ3MGZk
MzRmMmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERh
ZW1vbkNvbnN0YW50cy5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQgeworCitjb25zdGV4cHIgY29uc3QgY2hh
ciogcHJvdG9jb2xWZXJzaW9uS2V5ID0gInByb3RvY29sIHZlcnNpb24iOworY29uc3RleHByIHVp
bnQ2NF90IHByb3RvY29sVmVyc2lvblZhbHVlID0gMTsKK2NvbnN0ZXhwciBjb25zdCBjaGFyKiBw
cm90b2NvbEVuY29kZWRNZXNzYWdlS2V5ID0gImVuY29kZWQgbWVzc2FnZSI7CisKK2NvbnN0ZXhw
ciBjb25zdCBjaGFyKiBwcm90b2NvbERlYnVnTWVzc2FnZUtleSB7ICJkZWJ1ZyBtZXNzYWdlIiB9
OworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlTGV2ZWxLZXkgeyAi
ZGVidWcgbWVzc2FnZSBsZXZlbCIgfTsKKworY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29s
TWVzc2FnZVR5cGVLZXkgeyAibWVzc2FnZSB0eXBlIiB9OworZW51bSBjbGFzcyBNZXNzYWdlVHlw
ZSA6IHVpbnQ4X3QgeworICAgIEVjaG9Ud2ljZSA9IDEsCit9OworCitpbmxpbmUgYm9vbCBtZXNz
YWdlVHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCit7CisgICAgc3dpdGNo
IChtZXNzYWdlVHlwZSkgeworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVjaG9Ud2ljZToKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50
eHQKaW5kZXggZjE5OThhNjBjNjMxLi4xNDI3ZTdlM2JiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtOTgs
NiArOTgsNyBAQCBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCQ29ubmVjdGlvblRvQ2xp
ZW50LmNwcAogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKIAogTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAK
K05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3Bw
CiAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01l
YXN1cmVtZW50Q2xpZW50SW1wbC5jcHAKIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggMjA5NjkzZTRiMzI5Li43M2RmOTVjODA4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKQEAgLTQxLDYgKzQxLDggQEAgTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL2NvY29hL0Rv
d25sb2FkQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvRGFlbW9uL0Rh
ZW1vbkVudHJ5UG9pbnQubW0KIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvQ29jb2EvWFBDU2Vy
dmljZS9OZXR3b3JrU2VydmljZUVudHJ5UG9pbnQubW0KIAorTmV0d29ya1Byb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Db2NvYS9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tCisKIE5ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50Q29ubmVjdGlvbkNvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9jb2NvYS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE5ldHdvcmtMb2FkZXJDb2NvYS5tbQog
TmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRYUENVdGlsaXRpZXMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcAppbmRleCA1MGMwNmNhZTY5NmUuLmMwZjRiNTFiMTYwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmNwcApAQCAtMTA1LDYgKzEwNSw3IEBAIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbj4gV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNvcHkoKSBjb25zdAogICAgIGNvcHktPm1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZv
clRlc3RpbmcgPSB0aGlzLT5tX2VuYWJsZUluQXBwQnJvd3NlclByaXZhY3lGb3JUZXN0aW5nOwog
ICAgIGNvcHktPm1fYWxsb3dzSFNUU1dpdGhVbnRydXN0ZWRSb290Q2VydGlmaWNhdGUgPSB0aGlz
LT5tX2FsbG93c0hTVFNXaXRoVW50cnVzdGVkUm9vdENlcnRpZmljYXRlOwogICAgIGNvcHktPm1f
cGNtTWFjaFNlcnZpY2VOYW1lID0gdGhpcy0+bV9wY21NYWNoU2VydmljZU5hbWU7CisgICAgY29w
eS0+bV93ZWJQdXNoTWFjaFNlcnZpY2VOYW1lID0gdGhpcy0+bV93ZWJQdXNoTWFjaFNlcnZpY2VO
YW1lOwogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmIChtX3Byb3h5Q29uZmlndXJhdGlvbikK
ICAgICAgICAgY29weS0+bV9wcm94eUNvbmZpZ3VyYXRpb24gPSBhZG9wdENGKENGRGljdGlvbmFy
eUNyZWF0ZUNvcHkobnVsbHB0ciwgdGhpcy0+bV9wcm94eUNvbmZpZ3VyYXRpb24uZ2V0KCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDY0NmVlNjQ2MTc2ZC4uMzg2YjA5NWUyZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzUsNiArMTAzNSwxMCBAQAogCQk1MTI5
MzVEODEyODhEMTk0MDBBNEI2OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVENjEyODhEMTk0MDBBNEI2
OTUgLyogV2ViQ29udGV4dE1lbnVJdGVtLmggKi87IH07CiAJCTUxMjkzNUU0MTI4OEQ5NzgwMEE0
QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOTM1RTIxMjg4RDk3ODAwQTRC
Njk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggKi87IH07CiAJCTUx
MjlFQjEyMjNEMERFN0IwMEFGMUNENyAvKiBDb250ZW50V29ybGRTaGFyZWQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjlFQjExMjNEMERFNzgwMEFG
MUNENyAvKiBDb250ZW50V29ybGRTaGFyZWQuaCAqLzsgfTsKKwkJNTEyQ0Q2OTgyNzIxRUZDODAw
RjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJDRDY5NzI3MjFFRkMzMDBGN0Y4RUMgLyogV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCAqLzsgfTsKKwkJNTEyQ0Q2OUEyNzIxRjBBOTAwRjdGOEVD
IC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjk5MjcyMUYwNDkwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmggKi87IH07CisJCTUxMkNENjlGMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQ
dXNoRGFlbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5oICovOyB9OworCQk1
MTJDRDZBMDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjlFMjcyMzM5M0EwMEY3RjhF
QyAvKiBXZWJQdXNoRGFlbW9uLm1tICovOyB9OwogCQk1MTJFMzRFNTEzMEI0RDA1MDBBQkQxOUEg
LyogV0tBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QTMzQjQxMzBCMzA4QzAwRjgwQ0I1IC8qIFdLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1MTJFQ0MzNTI3MTk2QURCMDAwODlCNjYgLyogUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0I5MzBGRTI2RTgwMjE2MDAzMkIxQzAgLyogUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uLmggKi87IH07CiAJCTUxMkY1ODk3MTJBODgzODgwMDYyOTUzMCAvKiBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJGNTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5oICovOyB9OwpAQCAtMTA1NSwxMiArMTA1OSwxMiBAQAogCQk1
MTNFNDYyRDFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNFNDYy
QjFBRDgzNzU2MDAxNjIzNEEgLyogV0tTaGFyaW5nU2VydmljZVBpY2tlckRlbGVnYXRlLmggKi87
IH07CiAJCTUxM0ZGQjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTEzRkZCOEYyMDE0NTlDMjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmggKi87IH07CiAJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9u
VG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAq
LzsgfTsKKwkJNTE0NTI2RUQyNzFFMTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAq
LzsgfTsKIAkJNTE0NTI2RkYyNzFGQjdFQzAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJN
ZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0NTI2RkUyNzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlci5oICovOyB9OwogCQk1MTQ1MjcwMzI3MUZCQTNBMDAwNDY3QjYgLyogTm90aWZp
Y2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNzAyMjcxRkJBMzYwMDA0
NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MTQ1MjcwNDI3MUZCQTQwMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjcwMDI3MUZCQTM0MDAwNDY3QjYgLyogTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVzLmggKi87IH07CiAJ
CTUxNDUyNzA1MjcxRkJBNDAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE0NTI3MDEyNzFGQkEzNTAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNz
YWdlSGFuZGxlck1lc3NhZ2VzLmggKi87IH07CiAJCTUxNDUyNzA4MjcxRkJFQzYwMDA0NjdCNiAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNzA3MjcxRkJFQzEwMDA0NjdCNiAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCAqLzsgfTsKLQkJNTE0NTI2
RUQyNzFFMTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ1MjZFQjI3MUUxNjI2
MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLzsgfTsKIAkJNTE0ODlD
QzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8qIFdL
RmluZFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJNTE0ODlDQzcyMzcyMzc4MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ4OUNDNjIz
NzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsKIAkJNTE0QUI5
RjAyMzYwRDJBOTAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEFCOUVGMjM1RkE1OUIwMEVEQzM5
NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHVibGljLCApOyB9OyB9OwpAQCAtNDEzMyw2ICs0MTM3LDEyIEBACiAJCTUxMjkzNUUxMTI4OEQ5
NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjkzNUUy
MTI4OEQ5NzgwMEE0QjY5NSAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VDb250ZXh0TWVudUNsaWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VDb250
ZXh0TWVudUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTI5RUIxMTIz
RDBERTc4MDBBRjFDRDcgLyogQ29udGVudFdvcmxkU2hhcmVkLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRlbnRXb3JsZFNoYXJlZC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1MTJDRDY5NjI3MjFFRkMyMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViUHVzaERh
ZW1vbkNvbm5lY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5
NzI3MjFFRkMzMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb25Db25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJD
RDY5QzI3MjIzQTA4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1c2hEYWVtb25Db25u
ZWN0aW9uQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNENjlEMjcy
MzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlB1c2hEYWVtb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NTEyQ0Q2OUUyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQdXNoRGFlbW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTJGNTg4RTEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEyRjU4OEYxMkE4ODM4ODAwNjI5NTMwIC8qIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTJG
NTg5MDEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF1dGhlbnRpY2F0aW9uRGVj
aXNpb25MaXN0ZW5lci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTY3LDYg
KzQxNzcsOCBAQAogCQk1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYklEQkNvbm5l
Y3Rpb25Ub1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQzQjI1RTFE
RENERkQxMDAxNEZBQzYgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9h
ZGluZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJY29uTG9h
ZGluZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQ1MjZFQjI3MUUx
NjI2MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0NTI2RkMyNzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIubWVzc2FnZXMuaW47IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNDUyNkZFMjcxRkI3RTgwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTUxNDUyNzAwMjcxRkJBMzQwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZXNSZXBsaWVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MTc0LDggKzQxODYsNiBAQAogCQk1
MTQ1MjcwMjI3MUZCQTM2MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDUyNzA2MjcxRkJFQzEwMDA0NjdCNiAv
KiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5k
bGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDcyNzFGQkVDMTAw
MDQ2N0I2IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0NTI2RUIyNzFFMTYyNjAw
MDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTUxNDUyNkVDMjcxRTE2MjcwMDA0NjdCNiAvKiBOZXR3b3JrTm90
aWZpY2F0aW9uTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxNDg5Q0MxMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNDg5Q0MyMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZpbmRSZXN1bHQu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4
QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNzEzOCw2ICs3MTQ4LDcgQEAKIAkJCQlCQzMwNjgyMzEyNUE2Qjk0MDBFNzEyNzggLyogV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgKi8sCiAJCQkJQkMzMDY4MjIxMjVBNkI5NDAw
RTcxMjc4IC8qIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCAqLywKIAkJCQk0NjdFNDNF
NzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLywK
KwkJCQk1MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
ICovLAogCQkJCTVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3kuaCAqLywKIAkJCQk1QzhERDM4MTFGRTQ1NUNBMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5
UXVpcmsuaCAqLywKIAkJCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFT
dG9yZVBhcmFtZXRlcnMuY3BwICovLApAQCAtOTAzNSw2ICs5MDQ2LDE0IEBACiAJCQlwYXRoID0g
RGF0YWJhc2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJNTEyQ0Q2OUIy
NzIyMzlFNDAwRjdGOEVDIC8qIENvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQk1MTJDRDY5QzI3MjIzQTA4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1v
bkNvbm5lY3Rpb25Db2NvYS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29jb2E7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk1MTJGNTg4RDEyQTg4MzZGMDA2Mjk1MzAgLyog
QXV0aGVudGljYXRpb24gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtOTA1NSw4ICs5MDc0LDExIEBACiAJCTUxNDUyNkVBMjcxRTE2MTAwMDA0NjdCNiAvKiBO
b3RpZmljYXRpb25zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
KwkJCQk1MTJDRDY5QjI3MjIzOUU0MDBGN0Y4RUMgLyogQ29jb2EgKi8sCiAJCQkJNTE0NTI2RUMy
NzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLywKIAkJ
CQk1MTQ1MjZFQjI3MUUxNjI2MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aCAqLywKKwkJCQk1MTJDRDY5NjI3MjFFRkMyMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5l
Y3Rpb24uY3BwICovLAorCQkJCTUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uQ29ubmVjdGlvbi5oICovLAogCQkJKTsKIAkJCXBhdGggPSBOb3RpZmljYXRpb25zOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTk1NzgsNiArOTYwMCw4IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQk1Q0JCNkQ0RDI3MUY2N0NDMDBGRDFBNUQgLyogY29tLmFwcGxlLndlYmtpdC53
ZWJwdXNoZC5wbGlzdCAqLywKIAkJCQk1QzE1N0EwQjI3MTdDQTFDMDBFRDUyODAgLyogV2ViUHVz
aERhZW1vbk1haW4ubW0gKi8sCisJCQkJNTEyQ0Q2OUQyNzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1
c2hEYWVtb24uaCAqLywKKwkJCQk1MTJDRDY5RTI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERh
ZW1vbi5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gd2VicHVzaGQ7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTIxMDAsNiArMTIxMjQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCTVDMTU3OUZDMjcxN0FGNTAwMEVENTI4MCAv
KiBEYWVtb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNENjlGMjcyMzM5M0Ew
MEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTEyODE4LDYgKzEy
ODQzLDcgQEAKIAkJCQk5M0FCOUI0RTI1NzU2N0UyMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRp
b25SZW1vdGVSZWFsdGltZU1lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0FCOUI0
RDI1NzU2N0RDMDA5OEIxMEUgLyogU3BlZWNoUmVjb2duaXRpb25SZW1vdGVSZWFsdGltZU1lZGlh
U291cmNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3NzIyNTRCQjUxOTAwNThE
RDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJD
RDY5QTI3MjFGMEE5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNENkI3ODQyNTRDQ0QwRTAwNThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9u
U2VydmVyTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCNzg1MjU0Q0NENDMwMDU4
REQzQSAvKiBTcGVlY2hSZWNvZ25pdGlvblNlcnZlck1lc3NhZ2VzUmVwbGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0EzRkVDQTIyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0
dXMuaCBpbiBIZWFkZXJzICovLApAQCAtMTI5MDUsNiArMTI5MzEsNyBAQAogCQkJCTk5MEQzOUY1
MjQzQkU2NDgwMDE5OTM4OCAvKiBXZWJBdXRvbWF0aW9uRE9NV2luZG93T2JzZXJ2ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9u
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTlDM0FFMkQxREFEQTZBRDAwQUY1QzE2IC8q
IFdlYkF1dG9tYXRpb25TZXNzaW9uTWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTJDRDY5
ODI3MjFFRkM4MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTFDMEExOTU4MUM5MDA2OEYwMEZFMEVCQiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bk1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBBMTk0NzFDOEZGMUE4MDBGRTBFQkIg
LyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUMwQTE5
NTQxQzhGRkRGQjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNDY2MCw2ICsxNDY4Nyw3IEBACiAJCQlpc2EgPSBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxl
cyA9ICgKKwkJCQk1MTJDRDZBMDI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSBp
biBTb3VyY2VzICovLAogCQkJCTVDMTU3QTAxMjcxN0I3RkIwMEVENTI4MCAvKiBBcmd1bWVudENv
ZGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRjI3MTdCNkQyMDBFRDUyODAgLyog
RGFlbW9uRGVjb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE1NzlGRTI3MTdCNkMxMDBF
RDUyODAgLyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC9XZWJQdXNoRGFlbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5hOTRlZGQ0ZTMyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvU3Bhbi5oPgorI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCit1c2luZyBX
ZWJLaXQ6OldlYlB1c2hEOjpNZXNzYWdlVHlwZTsKKworbmFtZXNwYWNlIFdlYlB1c2hEIHsKKwor
dXNpbmcgRW5jb2RlZE1lc3NhZ2UgPSBWZWN0b3I8dWludDhfdD47CisKK2NsYXNzIERhZW1vbiB7
CisgICAgZnJpZW5kIGNsYXNzIFdURjo6TmV2ZXJEZXN0cm95ZWQ8RGFlbW9uPjsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgRGFlbW9uJiBzaW5nbGV0b24oKTsKKworICAgIHZvaWQgY29ubmVjdGlvbkV2
ZW50SGFuZGxlcih4cGNfb2JqZWN0X3QpOworICAgIHZvaWQgY29ubmVjdGlvbkFkZGVkKHhwY19j
b25uZWN0aW9uX3QpOworICAgIHZvaWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rpb25f
dCk7CisKKyAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCisgICAgdm9pZCBlY2hvVHdpY2UoY29uc3Qg
U3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNl
bmRlcik7CisKK3ByaXZhdGU6CisgICAgRGFlbW9uKCkgPSBkZWZhdWx0OworCisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYmKT4gY3JlYXRlUmVwbHlTZW5kZXIoTWVz
c2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KTsKKyAgICB2b2lk
IGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4g
ZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+
JiYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LmM0OTc4MDA1ZWExYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbi5tbQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaERhZW1vbi5oIgorCisjaW1wb3J0ICJEYWVtb25E
ZWNvZGVyLmgiCisjaW1wb3J0ICJEYWVtb25FbmNvZGVyLmgiCisjaW1wb3J0ICJEYWVtb25VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIkhhbmRsZU1lc3NhZ2UuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVt
b25Db25zdGFudHMuaCIKKworI2ltcG9ydCA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW1w
b3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbXBvcnQgPHd0Zi9TcGFuLmg+CisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEOworCituYW1lc3BhY2UgV2ViUHVzaEQgeworCitu
YW1lc3BhY2UgTWVzc2FnZUluZm8geworCisjZGVmaW5lIEZVTkNUSU9OKG1mKSBzdHJ1Y3QgbWYg
eyBzdGF0aWMgY29uc3RleHByIGF1dG8gTWVtYmVyRnVuY3Rpb24gPSAmV2ViUHVzaEQ6OkRhZW1v
bjo6bWY7CisjZGVmaW5lIEFSR1VNRU5UUyguLi4pIHVzaW5nIEFyZ3NUdXBsZSA9IHN0ZDo6dHVw
bGU8X19WQV9BUkdTX18+OworI2RlZmluZSBSRVBMWSguLi4pIHVzaW5nIFJlcGx5ID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChfX1ZBX0FSR1NfXyk+OyBcCisgICAgc3RhdGljIFdlYlB1c2hEOjpF
bmNvZGVkTWVzc2FnZSBlbmNvZGVSZXBseShfX1ZBX0FSR1NfXyk7CisjZGVmaW5lIEVORCB9Owor
CitGVU5DVElPTihlY2hvVHdpY2UpCitBUkdVTUVOVFMoU3RyaW5nKQorUkVQTFkoU3RyaW5nKQor
RU5ECisKKyN1bmRlZiBGVU5DVElPTgorI3VuZGVmIEFSR1VNRU5UUworI3VuZGVmIFJFUExZCisj
dW5kZWYgRU5ECisKK1dlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBlY2hvVHdpY2U6OmVuY29kZVJl
cGx5KFN0cmluZyByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVy
OworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigp
OworfQorCit9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbworCit0ZW1wbGF0ZTx0eXBlbmFtZSBJ
bmZvPgordm9pZCBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVwbHkoU3Bhbjxjb25zdCB1aW50
OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQdXNoRDo6RW5j
b2RlZE1lc3NhZ2UmJik+JiYgcmVwbHlTZW5kZXIpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkRl
Y29kZXIgZGVjb2RlcihlbmNvZGVkTWVzc2FnZSk7CisKKyAgICBzdGQ6Om9wdGlvbmFsPHR5cGVu
YW1lIEluZm86OkFyZ3NUdXBsZT4gYXJndW1lbnRzOworICAgIGRlY29kZXIgPj4gYXJndW1lbnRz
OworICAgIGlmIChVTkxJS0VMWSghYXJndW1lbnRzKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dHlwZW5hbWUgSW5mbzo6UmVwbHkgY29tcGxldGlvbkhhbmRsZXIgeyBbcmVwbHlTZW5kZXIgPSBX
VEZNb3ZlKHJlcGx5U2VuZGVyKV0gKGF1dG8mJi4uLiBhcmdzKSBtdXRhYmxlIHsKKyAgICAgICAg
cmVwbHlTZW5kZXIoSW5mbzo6ZW5jb2RlUmVwbHkoYXJncy4uLikpOworICAgIH0gfTsKKworICAg
IElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uKFdURk1vdmUoKmFyZ3VtZW50cyksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCAmV2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKCksIEluZm86Ok1l
bWJlckZ1bmN0aW9uKTsKK30KKworRGFlbW9uJiBEYWVtb246OnNpbmdsZXRvbigpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPERhZW1vbj4gZGFlbW9uOworICAgIHJldHVybiBkYWVtb247
Cit9CisKK3ZvaWQgRGFlbW9uOjpjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCBy
ZXF1ZXN0KQoreworICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBDX1RZUEVfRElD
VElPTkFSWSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFZlcmlmeSB0aGUgY29u
bmVjdGlvbiBpcyBrbm93bgorICAgIAorICAgIGlmICh4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0
KHJlcXVlc3QsIHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJzaW9uVmFsdWUpIHsK
KyAgICAgICAgTlNMb2coQCJSZWNlaXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5vdCB0aGUgY3VycmVu
dCBwcm90b2NvbCB2ZXJzaW9uIik7CisgICAgICAgIC8vIEZJWE1FOiBDdXQgb2ZmIHRoaXMgY29u
bmVjdGlvbgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBtZXNzYWdlVHlwZSB7
IHN0YXRpY19jYXN0PE1lc3NhZ2VUeXBlPih4cGNfZGljdGlvbmFyeV9nZXRfdWludDY0KHJlcXVl
c3QsIHByb3RvY29sTWVzc2FnZVR5cGVLZXkpKSB9OworICAgIHNpemVfdCBkYXRhU2l6ZSB7IDAg
fTsKKyAgICBjb25zdCB2b2lkKiBkYXRhID0geHBjX2RpY3Rpb25hcnlfZ2V0X2RhdGEocmVxdWVz
dCwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgJmRhdGFTaXplKTsKKyAgICBTcGFuPGNvbnN0
IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRh
dGEpLCBkYXRhU2l6ZSB9OworICAgIAorICAgIGRlY29kZUFuZEhhbmRsZU1lc3NhZ2UobWVzc2Fn
ZVR5cGUsIGVuY29kZWRNZXNzYWdlLCBjcmVhdGVSZXBseVNlbmRlcihtZXNzYWdlVHlwZSwgcmVx
dWVzdCkpOworfQorCit2b2lkIERhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9u
X3QpCit7CisgICAgLy8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb25zCit9CisKK3ZvaWQgRGFlbW9u
Ojpjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlvbl90KQoreworICAgIC8vIEZJWE1FOiBU
cmFjayBjb25uZWN0aW9ucworfQorCitDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNz
YWdlJiYpPiBEYWVtb246OmNyZWF0ZVJlcGx5U2VuZGVyKE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCBPU09iamVjdFB0cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKK3sKKyAgICBpZiAoIW1lc3Nh
Z2VUeXBlU2VuZHNSZXBseShtZXNzYWdlVHlwZSkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgcmV0dXJuIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KV0gKEVuY29kZWRNZXNzYWdl
JiYgbWVzc2FnZSkgeworICAgICAgICBhdXRvIHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFy
eV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQoKSkpOworICAgICAgICBBU1NFUlQoeHBjX2dldF90
eXBlKHJlcGx5LmdldCgpKSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3VpbnQ2NChyZXBseS5nZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBwcm90
b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBs
eS5nZXQoKSwgcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQQ0Rh
dGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5k
X21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0
KCkpLCByZXBseS5nZXQoKSk7CisgICAgfTsKK30KKwordm9pZCBEYWVtb246OmRlY29kZUFuZEhh
bmRsZU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIFNwYW48Y29uc3QgdWludDhfdD4g
ZW5jb2RlZE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRW5jb2RlZE1lc3NhZ2UmJik+
JiYgcmVwbHlTZW5kZXIpCit7CisgICAgQVNTRVJUKG1lc3NhZ2VUeXBlU2VuZHNSZXBseShtZXNz
YWdlVHlwZSkgPT0gISFyZXBseVNlbmRlcik7CisKKyAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7
CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNlOgorICAgICAgICBoYW5kbGVXZWJQdXNo
RE1lc3NhZ2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmVjaG9Ud2ljZT4oZW5jb2RlZE1lc3NhZ2Us
IFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lk
IERhZW1vbjo6ZWNob1R3aWNlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICByZXBseVNlbmRl
cihtYWtlU3RyaW5nKG1lc3NhZ2UsIG1lc3NhZ2UpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
UHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1h
aW4ubW0gYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCmluZGV4
IDI0YTNiMjE2MTRiYi4uYWNjY2I1Njg2NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb25NYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
V2ViUHVzaERhZW1vbk1haW4ubW0KQEAgLTI4LDc3ICsyOCwyOSBAQAogI2ltcG9ydCAiRGFlbW9u
RGVjb2Rlci5oIgogI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgogI2ltcG9ydCAiRGFlbW9uVXRp
bGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9u
L0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYv
U3Bhbi5oPgogI2ltcG9ydCA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKLW5hbWVzcGFjZSBX
ZWJQdXNoRCB7Ci0KLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAi
cHJvdG9jb2wgdmVyc2lvbiI7Ci1jb25zdGV4cHIgdWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFs
dWUgPSAxOwotY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sTWVzc2FnZVR5cGVLZXkgPSAi
bWVzc2FnZSB0eXBlIjsKLWNvbnN0ZXhwciBjb25zdCBjaGFyKiBwcm90b2NvbEVuY29kZWRNZXNz
YWdlS2V5ID0gImVuY29kZWQgbWVzc2FnZSI7Ci1lbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWlu
dDhfdCB7Ci0gICAgRWNob1R3aWNlID0gMQotfTsKLQotc3RhdGljIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiByZXBseVNlbmRlcihSZXRhaW5QdHI8eHBjX29iamVj
dF90PiYmIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIFtyZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KV0gKFZlY3Rvcjx1aW50OF90PiYmIG1lc3NhZ2UpIHsKLSAgICAgICAgYXV0byByZXBseSA9IGFk
b3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlX3JlcGx5KHJlcXVlc3QuZ2V0KCkpKTsKLSAgICAg
ICAgQVNTRVJUKHhwY19nZXRfdHlwZShyZXBseS5nZXQoKSkgPT0gWFBDX1RZUEVfRElDVElPTkFS
WSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQocmVwbHkuZ2V0KCksIHByb3Rv
Y29sVmVyc2lvbktleSwgcHJvdG9jb2xWZXJzaW9uVmFsdWUpOwotICAgICAgICB4cGNfZGljdGlv
bmFyeV9zZXRfdmFsdWUocmVwbHkuZ2V0KCksIHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdl
YktpdDo6dmVjdG9yVG9YUENEYXRhKFdURk1vdmUobWVzc2FnZSkpLmdldCgpKTsKLSAgICAgICAg
eHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKHhwY19kaWN0aW9uYXJ5X2dldF9yZW1vdGVfY29u
bmVjdGlvbihyZXF1ZXN0LmdldCgpKSwgcmVwbHkuZ2V0KCkpOwotICAgIH07Ci19Ci0KLXN0YXRp
YyB2b2lkIGVjaG9Ud2ljZShTcGFuPGNvbnN0IHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsK
LSAgICBXZWJLaXQ6OkRhZW1vbjo6RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdlKTsKLSAg
ICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOwotICAgIGRlY29kZXIgPj4gc3RyaW5nOwot
ICAgIGlmICghc3RyaW5nKQotICAgICAgICByZXR1cm47Cit1c2luZyBXZWJLaXQ6OkRhZW1vbjo6
RW5jb2RlZE1lc3NhZ2U7Cit1c2luZyBXZWJQdXNoRDo6RGFlbW9uOwogCi0gICAgYXV0byByZXBs
eSA9IG1ha2VTdHJpbmcoKnN0cmluZywgKnN0cmluZyk7Ci0gICAgV2ViS2l0OjpEYWVtb246OkVu
Y29kZXIgZW5jb2RlcjsKLSAgICBlbmNvZGVyIDw8IHJlcGx5OwotICAgIHJlcGx5U2VuZGVyKGVu
Y29kZXIudGFrZUJ1ZmZlcigpKTsKLX0KLQotc3RhdGljIHZvaWQgZGVjb2RlTWVzc2FnZUFuZFNl
bmRSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNv
ZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+JiYg
cmVwbHlTZW5kZXIpCi17Ci0gICAgc3dpdGNoIChtZXNzYWdlVHlwZSkgewotICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkVjaG9Ud2ljZToKLSAgICAgICAgZWNob1R3aWNlKGVuY29kZWRNZXNzYWdlLCBX
VEZNb3ZlKHJlcGx5U2VuZGVyKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19CituYW1lc3Bh
Y2UgV2ViUHVzaEQgewogCiBzdGF0aWMgdm9pZCBjb25uZWN0aW9uRXZlbnRIYW5kbGVyKHhwY19v
YmplY3RfdCByZXF1ZXN0KQogewotICAgIGlmICh4cGNfZ2V0X3R5cGUocmVxdWVzdCkgIT0gWFBD
X1RZUEVfRElDVElPTkFSWSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICh4cGNfZGljdGlvbmFy
eV9nZXRfdWludDY0KHJlcXVlc3QsIHByb3RvY29sVmVyc2lvbktleSkgIT0gcHJvdG9jb2xWZXJz
aW9uVmFsdWUpIHsKLSAgICAgICAgTlNMb2coQCJSZWNlaXZlZCByZXF1ZXN0IHRoYXQgd2FzIG5v
dCB0aGUgY3VycmVudCBwcm90b2NvbCB2ZXJzaW9uIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBhdXRvIG1lc3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5cGU+KHhwY19k
aWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07
Ci0gICAgc2l6ZV90IGRhdGFTaXplIHsgMCB9OwotICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNf
ZGljdGlvbmFyeV9nZXRfZGF0YShyZXF1ZXN0LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAm
ZGF0YVNpemUpOwotICAgIFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UgeyBzdGF0
aWNfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07Ci0gICAgZGVjb2RlTWVz
c2FnZUFuZFNlbmRSZXBseShtZXNzYWdlVHlwZSwgZW5jb2RlZE1lc3NhZ2UsIHJlcGx5U2VuZGVy
KHJlcXVlc3QpKTsKKyAgICBEYWVtb246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25FdmVudEhhbmRs
ZXIocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbm5lY3Rpb25BZGRlZCh4cGNfY29ubmVj
dGlvbl90KQorc3RhdGljIHZvaWQgY29ubmVjdGlvbkFkZGVkKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikKIHsKKyAgICBEYWVtb246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25BZGRlZChjb25u
ZWN0aW9uKTsKIH0KIAotc3RhdGljIHZvaWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5lY3Rp
b25fdCkKK3N0YXRpYyB2b2lkIGNvbm5lY3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikKIHsKKyAgICBEYWVtb246OnNpbmdsZXRvbigpLmNvbm5lY3Rpb25SZW1vdmVkKGNv
bm5lY3Rpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDBiNmRmYTU4Y2FiNi4uODZiNjcz
ZDE3OTBhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTAtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJh
c3RydWN0dXJlIHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8g
aXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWlu
aUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm06CisgICAgICAgIChwZXJzaXN0ZW50RGF0YVN0b3Jl
KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
bToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgX3dlYlZpZXc6cmVxdWVz
dE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6
XSk6CisKIDIwMjEtMTAtMjUgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgd2Via2l0cHk6IEFkZCBhbiBleHBsaWNpdCBJbWFnZURpZmZSZXN1bHQucGFz
c2VkIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gZGlmZl9pbWFnZSBiZWluZyBub24tTm9uZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0gYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQppbmRleCA3NWQ2OTFkZTI2YmYuLjhhMzJiZDkyOGUx
YSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KQEAgLTk4LDYgKzk4LDExIEBAIC0g
KHZvaWQpYXdha2VGcm9tTmliCiAgICAgaWYgKCFkYXRhU3RvcmUpIHsKICAgICAgICAgX1dLV2Vi
c2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRl
RGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOwogICAgICAg
ICBjb25maWd1cmF0aW9uLm5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlVmFsaWRhdGlvbkVuYWJsZWQg
PSBZRVM7CisKKyAgICAgICAgLy8gRklYTUU6IFdoZW4gYnVpbHQtaW4gbm90aWZpY2F0aW9ucyBh
cmUgZW5hYmxlZCwgV2ViS2l0IGRvZXNuJ3QgeWV0IGdyYWNlZnVsbHkgaGFuZGxlIGEgbWlzc2lu
ZyB3ZWJwdXNoZCBzZXJ2aWNlCisgICAgICAgIC8vIFVudGlsIGl0IGRvZXMsIHVuY29tbWVudCB0
aGlzIGxpbmUgd2hlbiB0aGUgc2VydmljZSBpcyBrbm93biB0byBiZSBpbnN0YWxsZWQuCisgICAg
ICAgIC8vIFtjb25maWd1cmF0aW9uIHNldFdlYlB1c2hNYWNoU2VydmljZU5hbWU6QCJvcmcud2Vi
a2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiXTsKKwogICAgICAgICBkYXRhU3RvcmUgPSBb
W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXTsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMv
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJC
cm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDNjNDM1NjA4YTQ3Yi4uMGNlMDAxYTMwNzNm
IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIubQpAQCAtMjEyLDYgKzIxMiwxMyBAQCAtIChDR0Zsb2F0KXZpZXdTY2FsZUZvck1lbnVJ
dGVtVGFnOihOU0ludGVnZXIpdGFnCiAgICAgcmV0dXJuIDE7CiB9CiAKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JT
ZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9u
SGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgLy8gRm9yIHRl
c3RpbmcsIGdyYW50IG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHRvIGFsbCBvcmlnaW5zLgorICAg
IE5TTG9nKEAiR3JhbnRpbmcgbm90aWZpY2F0aW9ucyBwZXJtaXNzaW9uIHRvIG9yaWdpbiAlQCIs
IHNlY3VyaXR5T3JpZ2luKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoWUVTKTsKK30KKwogLSAoSUJB
Y3Rpb24pc2V0Vmlld1NjYWxlOihpZClzZW5kZXIKIHsKICAgICBDR0Zsb2F0IHNjYWxlID0gW3Nl
bGYgdmlld1NjYWxlRm9yTWVudUl0ZW1UYWc6W3NlbmRlciB0YWddXTsK
</data>
<flag name="review"
          id="466957"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442513</attachid>
            <date>2021-10-26 11:38:12 -0700</date>
            <delta_ts>2021-10-26 12:34:40 -0700</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55533</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMWQzYTAyZWZlMTEyLi5iMTdmNDYwZDlhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODIgQEAKKzIwMjEtMTAtMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBoZWxwZXIgY2xhc3NlcyBhbmQgbWVzc2FnaW5nIGluZnJhc3RydWN0dXJl
IHRvIGxhdW5jaCB3ZWJwdXNoZCBhbmQgcm91bmQgdHJpcCBhIG1lc3NhZ2UgdG8gaXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjI2MgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IChObyBiZWhhdmlvciBjaGFuZ2UgeWV0KQorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAg
IC0gQWRkcyBjbGFzc2VzIHJlcHJlc2VudGluZyB0aGUgV2ViUHVzaERhZW1vbiBhbmQgY29ubmVj
dGlvbnMgdG8gaXQKKyAgICAgICAgLSBBZGRzIGNsYXNzZXMvY29uc3RhbnRzL21hY3JvcyByZWxh
dGVkIHRvIG1lc3NhZ2luZyB0aGF0IGRhZW1vbgorICAgICAgICAtIEFkZHMgU1BJIGZvciBjb25m
aWd1cmluZyBhIGNvbm5lY3QgdG8gdGhhdCBkYWVtb24KKyAgICAgICAgLSBHZXRzIE1pbmlCcm93
c2VyIGNsb3NlciB0byBzdXBwb3J0aW5nIGJ1aWx0LWluIG5vdGlmaWNhdGlvbnMKKyAgICAgICAg
LSBIYXMgd2F5IG1vcmUgY29tbWVudGVkIG91dCBjb2RlIHRoYW4gdXN1YWwgZm9yIGEgcGF0Y2gs
IGJ1dCB0aGF0IGVuYWJsZXMgYSBncmVhdCBzdG9wcGluZy1wb2ludCBtaWxlc3RvbmUKKworICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvQ29jb2EvV2ViUHVzaERhZW1vbkNv
bm5lY3Rpb25Db2NvYS5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjphZGRW
ZXJzaW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6Q29ubmVjdGlvbjo6bmV3Q29ubmVjdGlvbldhc0luaXRpYWxpemVkIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUHVzaEQ6OkNvbm5lY3Rpb246OmNvbm5lY3Rpb25SZWNlaXZl
ZEV2ZW50IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaEQ6OkNvbm5lY3Rpb246OmRp
Y3Rpb25hcnlGcm9tTWVzc2FnZSBjb25zdCk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNob3dO
b3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cjo6Y2FuY2VsTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNh
dGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNzYWdlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8Pjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKFdl
YktpdDo6UmVwbHlDYWxsZXI8U3RyaW5nPjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNzYWdlV2l0aFJlcGx5IGNvbnN0KToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRp
b25NYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpuZXR3b3JrU2Vzc2lvbiBjb25zdCk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAuCisgICAgICAgIChXZWJL
aXQ6OldlYlB1c2hEOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHVzaEQ6OkNvbm5lY3Rpb246Om5ldHdvcmtTZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW46CisKKyAgICAgICAgKiBQbGF0
Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogUGxhdGZvcm0vSVBDL0Rh
ZW1vbkNvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktpdDo6RGFlbW9uOjpDb25uZWN0aW9uVG9N
YWNoU2VydmljZTo6bWFjaFNlcnZpY2VOYW1lIGNvbnN0KToKKyAgICAgICAgKiBQbGF0Zm9ybS9J
UEMvY29jb2EvRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tOgorCisgICAgICAgICogUGxhdGZvcm0v
TG9nZ2luZy5oOgorCisgICAgICAgICogU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaDog
Q29waWVkIGZyb20gU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5j
cHAuCisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b246OmNvcHkgY29uc3QpOgorCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaC4KKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb25N
YWluLm1tLgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjplY2hvVHdpY2U6OmVuY29k
ZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpoYW5kbGVXZWJQdXNoRE1lc3NhZ2VXaXRoUmVw
bHkpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6c2luZ2xldG9uKToKKyAgICAgICAgKFdl
YlB1c2hEOjpEYWVtb246OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIpOgorICAgICAgICAoV2ViUHVz
aEQ6OkRhZW1vbjo6Y29ubmVjdGlvbkFkZGVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246
OmNvbm5lY3Rpb25SZW1vdmVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3Nh
Z2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZWNob1R3aWNlKToKKyAgICAgICAgCisg
ICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW06CisgICAgICAgIChXZWJQdXNo
RDo6Y29ubmVjdGlvbkV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJQdXNoRDo6Y29ubmVjdGlv
bkFkZGVkKToKKyAgICAgICAgKFdlYlB1c2hEOjpjb25uZWN0aW9uUmVtb3ZlZCk6CisgICAgICAg
IChXZWJQdXNoRDo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJQdXNoRDo6ZWNob1R3aWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYlB1c2hEOjpkZWNvZGVN
ZXNzYWdlQW5kU2VuZFJlcGx5KTogRGVsZXRlZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0Ogor
ICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIAogMjAyMS0xMC0yNSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgYSBmZXcgdmFyaWFibGUgYW5k
IHBhcmFtZXRlciBuYW1lcyBpbiBXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9Db2NvYS9XZWJQ
dXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iZDYxOWEzYzM0MzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Q29jb2EvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db2NvYS5tbQpAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29u
bmVjdGlvbi5oIgorCisjaWYgUExBVEZPUk0oQ09DT0EpICYmIEVOQUJMRShCVUlMVF9JTl9OT1RJ
RklDQVRJT05TKQorCisjaW1wb3J0ICJEYWVtb25FbmNvZGVyLmgiCisjaW1wb3J0ICJEYWVtb25V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbXBvcnQg
PHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRCB7
IAorCit1c2luZyBEYWVtb246OkVuY29kZWRNZXNzYWdlOworCitzdGF0aWMgdm9pZCBhZGRWZXJz
aW9uQW5kRW5jb2RlZE1lc3NhZ2VUb0RpY3Rpb25hcnkoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2Fn
ZSwgeHBjX29iamVjdF90IGRpY3Rpb25hcnkpCit7CisgICAgQVNTRVJUKHhwY19nZXRfdHlwZShk
aWN0aW9uYXJ5KSA9PSBYUENfVFlQRV9ESUNUSU9OQVJZKTsKKyAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfdWludDY0KGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25LZXksIFdlYlB1
c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVl
KGRpY3Rpb25hcnksIFdlYlB1c2hEOjpwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCB2ZWN0b3JU
b1hQQ0RhdGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkpOworfQorCit2b2lkIENvbm5lY3Rpb246
Om5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fY29u
bmVjdGlvbik7CisgICAgaWYgKG5ldHdvcmtTZXNzaW9uKCkuc2Vzc2lvbklEKCkuaXNFcGhlbWVy
YWwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb24g
c3RhdGUKK30KKwordm9pZCBDb25uZWN0aW9uOjpjb25uZWN0aW9uUmVjZWl2ZWRFdmVudCh4cGNf
b2JqZWN0X3QgcmVxdWVzdCkgY29uc3QKK3sKKyAgICBpZiAoeHBjX2dldF90eXBlKHJlcXVlc3Qp
ICE9IFhQQ19UWVBFX0RJQ1RJT05BUlkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBjaGFy
KiBkZWJ1Z01lc3NhZ2UgPSB4cGNfZGljdGlvbmFyeV9nZXRfc3RyaW5nKHJlcXVlc3QsIHByb3Rv
Y29sRGVidWdNZXNzYWdlS2V5KTsKKyAgICBpZiAoIWRlYnVnTWVzc2FnZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGF1dG8gbWVzc2FnZUxldmVsID0gc3RhdGljX2Nhc3Q8SlNDOjpNZXNzYWdlTGV2
ZWw+KHhwY19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xEZWJ1Z01lc3Nh
Z2VMZXZlbEtleSkpOworICAgIG5ldHdvcmtTZXNzaW9uKCkubmV0d29ya1Byb2Nlc3MoKS5icm9h
ZGNhc3RDb25zb2xlTWVzc2FnZShuZXR3b3JrU2Vzc2lvbigpLnNlc3Npb25JRCgpLCBNZXNzYWdl
U291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZUxldmVsLCBTdHJpbmc6OmZy
b21VVEY4KGRlYnVnTWVzc2FnZSkpOworfQorCitSZXRhaW5QdHI8eHBjX29iamVjdF90PiBDb25u
ZWN0aW9uOjpkaWN0aW9uYXJ5RnJvbU1lc3NhZ2UoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIEVu
Y29kZWRNZXNzYWdlJiYgbWVzc2FnZSkgY29uc3QKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBh
ZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAg
YWRkVmVyc2lvbkFuZEVuY29kZWRNZXNzYWdlVG9EaWN0aW9uYXJ5KFdURk1vdmUobWVzc2FnZSks
IGRpY3Rpb25hcnkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlv
bmFyeS5nZXQoKSwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+
KG1lc3NhZ2VUeXBlKSk7CisgICAgcmV0dXJuIGRpY3Rpb25hcnk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdDo6V2ViUHVzaEQKKworI2VuZGlmIC8vIFBMQVRGT1JNKENPQ09BKSAmJiBFTkFC
TEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGEyODhhMjE4ZDEyMC4uNWZlMTIxOWJkYzc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTI4LDI4
ICsyOCw5MyBAQAogCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKKyNpbmNs
dWRlICJEYWVtb25EZWNvZGVyLmgiCisjaW5jbHVkZSAiRGFlbW9uRW5jb2Rlci5oIgorI2luY2x1
ZGUgIk5ldHdvcmtTZXNzaW9uLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLU5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpOZXR3b3JrTm90aWZp
Y2F0aW9uTWFuYWdlcihOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmlu
ZyYpCitOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hN
YWNoU2VydmljZU5hbWUpCiAgICAgOiBtX25ldHdvcmtTZXNzaW9uKG5ldHdvcmtTZXNzaW9uKQog
eworICAgIGlmICghbV9uZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgpICYm
ICF3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgbV9jb25uZWN0aW9u
ID0gbWFrZVVuaXF1ZTxXZWJQdXNoRDo6Q29ubmVjdGlvbj4od2ViUHVzaE1hY2hTZXJ2aWNlTmFt
ZS51dGY4KCksICp0aGlzKTsKIH0KIAogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6
c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25E
aXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KQogeworICAgIGlmICghbV9jb25uZWN0
aW9uKQorICAgICAgICByZXR1cm47CisKKy8vICAgICBGSVhNRTogV2hpbGUgd2UgZG9uJ3Qgbm9y
bWFsbHkgbGFuZCBjb21tZW50ZWQtb3V0IGNvZGUgaW4gdGhlIHRyZWUsCisvLyAgICAgdGhpcyBp
cyBhIG5pY2UgYm9va21hcmsgZm9yIGEgZGV2ZWxvcG1lbnQgbWlsZXN0b25lOyBSb3VuZHRyaXAg
Y29tbXVuaWNhdGlvbiB3aXRoIHdlYnB1c2hkCisvLyAgICAgV2lsbCBtYWtlIG5leHQgZGV2ZWxv
cG1lbnQgc3RlcHMgb2J2aW91cy4KKy8vCisvLyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIgPSBbXSAoU3RyaW5nIHJlcGx5KSB7CisvLyAgICAg
ICAgcHJpbnRmKCJHb3QgcmVwbHk6ICVzXG4iLCByZXBseS51dGY4KCkuZGF0YSgpKTsKKy8vICAg
IH07CisvLworLy8gICAgc2VuZE1lc3NhZ2VXaXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBl
OjpFY2hvVHdpY2U+KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBTdHJpbmcoIkZJWE1FOiBE
byB1c2VmdWwgd29yayBoZXJlIikpOwogfQogCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpjYW5jZWxOb3RpZmljYXRpb24odWludDY0X3QpCiB7CisgICAgaWYgKCFtX2Nvbm5lY3Rp
b24pCisgICAgICAgIHJldHVybjsKIH0KIAogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
cjo6Y2xlYXJOb3RpZmljYXRpb25zKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogeworICAgIGlm
ICghbV9jb25uZWN0aW9uKQorICAgICAgICByZXR1cm47CiB9CiAKIHZvaWQgTmV0d29ya05vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24odWludDY0X3QpCiB7CisgICAg
aWYgKCFtX2Nvbm5lY3Rpb24pCisgICAgICAgIHJldHVybjsKK30KKworCit0ZW1wbGF0ZTxXZWJQ
dXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+Cit2b2lkIE5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZShBcmdzJiYuLi4gYXJncykgY29u
c3QKK3sKKyAgICBSRUxFQVNFX0FTU0VSVChtX2Nvbm5lY3Rpb24pOworICAgIERhZW1vbjo6RW5j
b2RlciBlbmNvZGVyOworICAgIGVuY29kZXIuZW5jb2RlKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdz
KS4uLik7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKG1lc3NhZ2VUeXBlLCBlbmNvZGVyLnRha2VC
dWZmZXIoKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0cnVjdCBSZXBseUNh
bGxlcjsKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2FsbGVyPD4geworICAgIHN0YXRpYyB2b2lk
IGNhbGxSZXBseShEYWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOworICAgIH0KK307Cit0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxTdHJpbmc+
IHsKKyAgICBzdGF0aWMgdm9pZCBjYWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2Rlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgeworICAgICAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gc3RyaW5nOworICAgICAgICBkZWNv
ZGVyID4+IHN0cmluZzsKKyAgICAgICAgaWYgKCFzdHJpbmcpCisgICAgICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZSgqc3RyaW5nKSk7CisgICAgfQorfTsKKwordGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBl
IG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+Cit2
b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2FnZVdpdGhSZXBseShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIsIEFy
Z3MmJi4uLiBhcmdzKSBjb25zdAoreworICAgIFJFTEVBU0VfQVNTRVJUKG1fY29ubmVjdGlvbik7
CisKKyAgICBEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyLmVuY29kZShzdGQ6
OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOworICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhSZXBs
eShtZXNzYWdlVHlwZSwgZW5jb2Rlci50YWtlQnVmZmVyKCksIFtjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseUJ1ZmZlcikgbXV0YWJsZSB7
CisgICAgICAgIERhZW1vbjo6RGVjb2RlciBkZWNvZGVyKFdURk1vdmUocmVwbHlCdWZmZXIpKTsK
KyAgICAgICAgUmVwbHlDYWxsZXI8UmVwbHlBcmdzLi4uPjo6Y2FsbFJlcGx5KFdURk1vdmUoZGVj
b2RlciksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5oCmluZGV4IDQxYzgyOThjMTE5Yi4uNmZhODc1Njg0Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMv
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjgsMTYgKzI4LDI0IEBACiAjaWYgRU5B
QkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCiAKICNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5h
Z2VyTWVzc2FnZUhhbmRsZXIuaCIKKyNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCituYW1lc3BhY2Ug
V2ViUHVzaEQgeworZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Q7Cit9CisKIGNsYXNz
IE5ldHdvcmtTZXNzaW9uOwogCiBjbGFzcyBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlciA6IHB1
YmxpYyBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIgewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKK3B1YmxpYzoK
KyAgICBOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX25l
dHdvcmtTZXNzaW9uOyB9CisKIHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUp
OwogCkBAIC00Nyw2ICs1NSwxMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVzdHJveU5vdGlm
aWNhdGlvbih1aW50NjRfdCBub3RpZmljYXRpb25JRCkgZmluYWw7CiAKICAgICBOZXR3b3JrU2Vz
c2lvbiYgbV9uZXR3b3JrU2Vzc2lvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUHVzaEQ6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKKworICAgIHRlbXBsYXRlPFdlYlB1c2hEOjpNZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIHNlbmRNZXNzYWdl
KEFyZ3MmJi4uLikgY29uc3Q7CisgICAgdGVtcGxhdGU8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4uLiBSZXBseUFyZ3M+CisgICAg
dm9pZCBzZW5kTWVzc2FnZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJn
cy4uLik+JiYsIEFyZ3MmJi4uLikgY29uc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMWJjMTQ2MDc1ZmJlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVt
b25Db25uZWN0aW9uLmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgiCisKKyNpZiBF
TkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKworI2luY2x1ZGUgIkRhZW1vbkRlY29kZXIu
aCIKKyNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24u
aCIKKworbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQgeworCitDb25uZWN0aW9uOjpDb25uZWN0
aW9uKENTdHJpbmcmJiBtYWNoU2VydmljZU5hbWUsIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
JiBtYW5hZ2VyKQorICAgIDogRGFlbW9uOjpDb25uZWN0aW9uVG9NYWNoU2VydmljZTxDb25uZWN0
aW9uVHJhaXRzPihXVEZNb3ZlKG1hY2hTZXJ2aWNlTmFtZSkpCisgICAgLCBtX25vdGlmaWNhdGlv
bk1hbmFnZXIobWFuYWdlcikKK3sKKyAgICBMT0coUHVzaCwgIkNyZWF0aW5nIFdlYlB1c2hEIGNv
bm5lY3Rpb24gdG8gbWFjaCBzZXJ2aWNlOiAlcyIsIHRoaXMtPm1hY2hTZXJ2aWNlTmFtZSgpLmRh
dGEoKSk7Cit9CisKK05ldHdvcmtTZXNzaW9uJiBDb25uZWN0aW9uOjpuZXR3b3JrU2Vzc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbm90aWZpY2F0aW9uTWFuYWdlci5uZXR3b3JrU2Vzc2lv
bigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hECisKKyNlbmRpZiAvLyBF
TkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYlB1c2hEYWVtb25D
b25uZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wNTYz
ZjNhMTQ0MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaApAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKKworI2luY2x1ZGUgIkRhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQ
dXNoRGFlbW9uQ29uc3RhbnRzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBOZXR3
b3JrTm90aWZpY2F0aW9uTWFuYWdlcjsKK2NsYXNzIE5ldHdvcmtTZXNzaW9uOworCituYW1lc3Bh
Y2UgV2ViUHVzaEQgeworCitzdHJ1Y3QgQ29ubmVjdGlvblRyYWl0cyB7CisgICAgdXNpbmcgTWVz
c2FnZVR5cGUgPSBXZWJQdXNoRDo6TWVzc2FnZVR5cGU7CisgICAgc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBwcm90b2NvbFZlcnNpb25LZXkgeyBXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9u
S2V5IH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2NvbFZlcnNpb25WYWx1
ZSB7IFdlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSB9OworICAgIHN0YXRpYyBjb25zdGV4
cHIgY29uc3QgY2hhciogcHJvdG9jb2xFbmNvZGVkTWVzc2FnZUtleSB7IFdlYlB1c2hEOjpwcm90
b2NvbEVuY29kZWRNZXNzYWdlS2V5IH07Cit9OworCitjbGFzcyBDb25uZWN0aW9uIDogcHVibGlj
IERhZW1vbjo6Q29ubmVjdGlvblRvTWFjaFNlcnZpY2U8Q29ubmVjdGlvblRyYWl0cz4geworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENvbm5lY3Rpb24oQ1N0cmlu
ZyYmIG1hY2hTZXJ2aWNlTmFtZSwgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImKTsKKworcHJp
dmF0ZToKKyAgICB2b2lkIG5ld0Nvbm5lY3Rpb25XYXNJbml0aWFsaXplZCgpIGNvbnN0IGZpbmFs
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IGRpY3Rp
b25hcnlGcm9tTWVzc2FnZShNZXNzYWdlVHlwZSwgRGFlbW9uOjpFbmNvZGVkTWVzc2FnZSYmKSBj
b25zdCBmaW5hbDsKKyAgICB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19vYmplY3Rf
dCkgY29uc3QgZmluYWw7CisjZW5kaWYKKyAgICB2b2lkIHNlbmREZWJ1Z01vZGVJc0VuYWJsZWRN
ZXNzYWdlSWZOZWNlc3NhcnkoKSBjb25zdDsKKworICAgIE5ldHdvcmtTZXNzaW9uJiBuZXR3b3Jr
U2Vzc2lvbigpIGNvbnN0OworCisgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXImIG1fbm90
aWZpY2F0aW9uTWFuYWdlcjsKKworICAgIHRlbXBsYXRlPE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2UoQXJncyYmLi4uKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTxNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJn
cywgdHlwZW5hbWUuLi4gUmVwbHlBcmdzPgorICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHko
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmLCBBcmdzJiYuLi4pIGNvbnN0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0VGFzay5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTb2NrZXRUYXNrLmgKaW5kZXggY2Q1NDdkZWI5NWM3Li4z
MDliYWI0MjU3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U29ja2V0VGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU29ja2V0
VGFzay5oCkBAIC0zMSw2ICszMSw4IEBACiAjaW5jbHVkZSAiV2ViU29ja2V0VGFza1NvdXAuaCIK
ICNlbHNlCiAKKyNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBzdHJ1Y3QgU2Vzc2lvblNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvbWFjL2NvbS5hcHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQcm9j
ZXNzLnNiLmluCmluZGV4IGM5MTIyZjZiZjhkMi4uMWNlODYxOTA5YjI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL21hYy9jb20uYXBwbGUuV2ViS2l0Lk5ldHdvcmtQ
cm9jZXNzLnNiLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvbWFjL2NvbS5h
cHBsZS5XZWJLaXQuTmV0d29ya1Byb2Nlc3Muc2IuaW4KQEAgLTM2OSw2ICszNjksOSBAQAogKGFs
bG93IG1hY2gtbG9va3VwICh3aXRoIHRlbGVtZXRyeSkgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
d2Via2l0LmFkYXR0cmlidXRpb25kLnNlcnZpY2UiKSkKIChhbGxvdyBtYWNoLWxvb2t1cCAod2l0
aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAib3JnLndlYmtpdC5wY210ZXN0ZGFlbW9uLnNlcnZp
Y2UiKSkKIAorKGFsbG93IG1hY2gtbG9va3VwICh3aXRoIHRlbGVtZXRyeSkgKGdsb2JhbC1uYW1l
ICJjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnNlcnZpY2UiKSkKKyhhbGxvdyBtYWNoLWxvb2t1
cCAod2l0aCB0ZWxlbWV0cnkpIChnbG9iYWwtbmFtZSAib3JnLndlYmtpdC53ZWJwdXNodGVzdGRh
ZW1vbi5zZXJ2aWNlIikpCisKICh3aXRoLWZpbHRlciAodWlkIDApCiAgICAgKGFsbG93IG1hY2gt
bG9va3VwICh3aXRoIHRlbGVtZXRyeSkKICAgICAgICAgKGdsb2JhbC1uYW1lICJjb20uYXBwbGUu
RGlza0FyYml0cmF0aW9uLmRpc2thcmJpdHJhdGlvbmQiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9EYWVtb25Db25uZWN0aW9uLmNwcAppbmRleCA1ZWUzOTVjNzI4NTIuLjdmYjE2
MGI1NWM3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVj
dGlvbi5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEYWVtb25Db25uZWN0aW9uLmgi
CiAKICNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudENvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNDcsOCArNDgsMTIgQEAgdm9pZCBDb25uZWN0aW9uVG9NYWNoU2VydmljZTxUcmFpdHM+Ojpz
ZW5kV2l0aFJlcGx5KHR5cGVuYW1lIFRyYWl0czo6TWVzc2FnZVR5cGUKIAogdGVtcGxhdGUgY2xh
c3MgQ29ubmVjdGlvblRvTWFjaFNlcnZpY2U8UENNOjpDb25uZWN0aW9uVHJhaXRzPjsKIAorI2lm
IEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQordGVtcGxhdGUgY2xhc3MgQ29ubmVjdGlv
blRvTWFjaFNlcnZpY2U8V2ViUHVzaEQ6OkNvbm5lY3Rpb25UcmFpdHM+OwogI2VuZGlmCiAKKyNl
bmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCisKIH0gLy8gbmFtZXNwYWNlIERhZW1vbgogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L0RhZW1vbkNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNv
bm5lY3Rpb24uaAppbmRleCA3NWIxMDRmODMzMmQuLmRiZTg1ODMwZWU4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGFlbW9uQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0RhZW1vbkNvbm5lY3Rpb24uaApAQCAtNzEsNiArNzEsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNvbm5lY3Rpb25SZWNlaXZlZEV2ZW50KHhwY19v
YmplY3RfdCkgY29uc3QgPSAwOwogI2VuZGlmCiAKKyAgICBjb25zdCBDU3RyaW5nJiBtYWNoU2Vy
dmljZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21hY2hTZXJ2aWNlTmFtZTsgfQorCiBwcml2YXRl
OgogICAgIHZvaWQgaW5pdGlhbGl6ZUNvbm5lY3Rpb25JZk5lZWRlZCgpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9u
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0
aW9uQ29jb2EubW0KaW5kZXggZDAzNTcwOWQ0ZTNkLi42YjA5ZmM4YmRlYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL2NvY29hL0RhZW1vbkNvbm5lY3Rpb25Db2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9jb2NvYS9EYWVtb25Db25uZWN0aW9u
Q29jb2EubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgog
I2ltcG9ydCAiUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRDb25uZWN0aW9uLmgiCisjaW1wb3J0ICJX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1w
b3J0IDx3dGYvUnVuTG9vcC5oPgogCkBAIC0xMTIsNiArMTEzLDEwIEBAIHZvaWQgQ29ubmVjdGlv
blRvTWFjaFNlcnZpY2U8VHJhaXRzPjo6c2VuZFdpdGhSZXBseSh0eXBlbmFtZSBUcmFpdHM6Ok1l
c3NhZ2VUeXBlCiAKIHRlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFBDTTo6
Q29ubmVjdGlvblRyYWl0cz47CiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykK
K3RlbXBsYXRlIGNsYXNzIENvbm5lY3Rpb25Ub01hY2hTZXJ2aWNlPFdlYlB1c2hEOjpDb25uZWN0
aW9uVHJhaXRzPjsKKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBEYWVtb24KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vTG9nZ2luZy5oCmluZGV4IGM5ZWNhOGMyODFiMi4u
YTgzMjY4Yjk4MDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0xvZ2dpbmcuaApAQCAtODcsNiArODcsNyBA
QCBleHRlcm4gIkMiIHsKICAgICBNKFByb2Nlc3NTdXNwZW5zaW9uKSBcCiAgICAgTShQcm9jZXNz
U3dhcHBpbmcpIFwKICAgICBNKFByb3hpbWl0eU5ldHdvcmtpbmcpIFwKKyAgICBNKFB1c2gpIFwK
ICAgICBNKFJlbW90ZUxheWVyVHJlZSkgXAogICAgIE0oUmVzaXplKSBcCiAgICAgTShSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
dXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9u
Q29uc3RhbnRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kZDcw
ZmQzNGYyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNo
RGFlbW9uQ29uc3RhbnRzLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRCB7CisKK2NvbnN0ZXhwciBjb25zdCBj
aGFyKiBwcm90b2NvbFZlcnNpb25LZXkgPSAicHJvdG9jb2wgdmVyc2lvbiI7Citjb25zdGV4cHIg
dWludDY0X3QgcHJvdG9jb2xWZXJzaW9uVmFsdWUgPSAxOworY29uc3RleHByIGNvbnN0IGNoYXIq
IHByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2RlZCBtZXNzYWdlIjsKKworY29uc3Rl
eHByIGNvbnN0IGNoYXIqIHByb3RvY29sRGVidWdNZXNzYWdlS2V5IHsgImRlYnVnIG1lc3NhZ2Ui
IH07Citjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xEZWJ1Z01lc3NhZ2VMZXZlbEtleSB7
ICJkZWJ1ZyBtZXNzYWdlIGxldmVsIiB9OworCitjb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9j
b2xNZXNzYWdlVHlwZUtleSB7ICJtZXNzYWdlIHR5cGUiIH07CitlbnVtIGNsYXNzIE1lc3NhZ2VU
eXBlIDogdWludDhfdCB7CisgICAgRWNob1R3aWNlID0gMSwKK307CisKK2lubGluZSBib29sIG1l
c3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkKK3sKKyAgICBzd2l0
Y2ggKG1lc3NhZ2VUeXBlKSB7CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNlOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
LnR4dAppbmRleCBmMTk5OGE2MGM2MzEuLjE0MjdlN2UzYmJjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC05
OCw2ICs5OCw3IEBAIE5ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJDb25uZWN0aW9uVG9D
bGllbnQuY3BwCiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAogCiBO
ZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAorTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5j
cHAKIAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRDbGllbnRJbXBsLmNwcAogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCAyMDk2OTNlNGIzMjkuLjczZGY5NWM4MDg1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dApAQCAtNDEsNiArNDEsOCBAQCBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvY29jb2Ev
RG93bmxvYWRDb2NvYS5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9EYWVtb24v
RGFlbW9uRW50cnlQb2ludC5tbQogTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9Db2NvYS9YUENT
ZXJ2aWNlL05ldHdvcmtTZXJ2aWNlRW50cnlQb2ludC5tbQogCitOZXR3b3JrUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL0NvY29hL1dlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29jb2EubW0KKwogTmV0d29y
a1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvY29jb2EvUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRDb25uZWN0aW9uQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L2NvY29hL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TmV0d29ya0xvYWRlckNvY29hLm1t
CiBOZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9jb2NvYS9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFhQQ1V0aWxpdGllcy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uY3BwCmluZGV4IDUwYzA2Y2FlNjk2ZS4uYzBmNGI1MWIxNjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0xMDUsNiArMTA1LDcgQEAgUmVm
PFdlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uPiBXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbjo6Y29weSgpIGNvbnN0CiAgICAgY29weS0+bV9lbmFibGVJbkFwcEJyb3dzZXJQcml2YWN5
Rm9yVGVzdGluZyA9IHRoaXMtPm1fZW5hYmxlSW5BcHBCcm93c2VyUHJpdmFjeUZvclRlc3Rpbmc7
CiAgICAgY29weS0+bV9hbGxvd3NIU1RTV2l0aFVudHJ1c3RlZFJvb3RDZXJ0aWZpY2F0ZSA9IHRo
aXMtPm1fYWxsb3dzSFNUU1dpdGhVbnRydXN0ZWRSb290Q2VydGlmaWNhdGU7CiAgICAgY29weS0+
bV9wY21NYWNoU2VydmljZU5hbWUgPSB0aGlzLT5tX3BjbU1hY2hTZXJ2aWNlTmFtZTsKKyAgICBj
b3B5LT5tX3dlYlB1c2hNYWNoU2VydmljZU5hbWUgPSB0aGlzLT5tX3dlYlB1c2hNYWNoU2Vydmlj
ZU5hbWU7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgaWYgKG1fcHJveHlDb25maWd1cmF0aW9u
KQogICAgICAgICBjb3B5LT5tX3Byb3h5Q29uZmlndXJhdGlvbiA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlQ29weShudWxscHRyLCB0aGlzLT5tX3Byb3h5Q29uZmlndXJhdGlvbi5nZXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNjQ2ZWU2NDYxNzZkLi4zODZiMDk1ZTJkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzNSw2ICsxMDM1LDEwIEBACiAJCTUx
MjkzNUQ4MTI4OEQxOTQwMEE0QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjkzNUQ2MTI4OEQxOTQwMEE0
QjY5NSAvKiBXZWJDb250ZXh0TWVudUl0ZW0uaCAqLzsgfTsKIAkJNTEyOTM1RTQxMjg4RDk3ODAw
QTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI5MzVFMjEyODhEOTc4MDBB
NEI2OTUgLyogSW5qZWN0ZWRCdW5kbGVQYWdlQ29udGV4dE1lbnVDbGllbnQuaCAqLzsgfTsKIAkJ
NTEyOUVCMTIyM0QwREU3QjAwQUYxQ0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyOUVCMTEyM0QwREU3ODAw
QUYxQ0Q3IC8qIENvbnRlbnRXb3JsZFNoYXJlZC5oICovOyB9OworCQk1MTJDRDY5ODI3MjFFRkM4
MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkNENjk3MjcyMUVGQzMwMEY3RjhFQyAvKiBX
ZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovOyB9OworCQk1MTJDRDY5QTI3MjFGMEE5MDBGN0Y4
RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQ0Q2OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hE
YWVtb25Db25zdGFudHMuaCAqLzsgfTsKKwkJNTEyQ0Q2OUYyNzIzMzkzQTAwRjdGOEVDIC8qIFdl
YlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxMkNENjlEMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLmggKi87IH07CisJ
CTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyQ0Q2OUUyNzIzMzkzQTAwRjdG
OEVDIC8qIFdlYlB1c2hEYWVtb24ubW0gKi87IH07CiAJCTUxMkUzNEU1MTMwQjREMDUwMEFCRDE5
QSAvKiBXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdBMzNCNDEzMEIzMDhDMDBGODBDQjUgLyogV0tBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxMkVDQzM1MjcxOTZBREIwMDA4OUI2NiAvKiBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQjkzMEZFMjZFODAyMTYwMDMyQjFDMCAvKiBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudENvbm5lY3Rpb24uaCAqLzsgfTsKIAkJNTEyRjU4OTcxMkE4ODM4ODAwNjI5NTMwIC8q
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkY1ODhGMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmggKi87IH07CkBAIC0xMDU1LDEyICsxMDU5LDEyIEBACiAJ
CTUxM0U0NjJEMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0U0
NjJCMUFEODM3NTYwMDE2MjM0QSAvKiBXS1NoYXJpbmdTZXJ2aWNlUGlja2VyRGVsZWdhdGUuaCAq
LzsgfTsKIAkJNTEzRkZCOTEyMDE0NTlDNjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTNGRkI4RjIwMTQ1OUMyMDAyNTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaCAqLzsgfTsKIAkJNTE0MTI5OTQxQzY0MjhCQjAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rp
b25Ub1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0MTI5OTIxQzY0MjgxMDAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5o
ICovOyB9OworCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5o
ICovOyB9OwogCQk1MTQ1MjZGRjI3MUZCN0VDMDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdl
ck1lc3NhZ2VIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTQ1MjZGRTI3MUZCN0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyLmggKi87IH07CiAJCTUxNDUyNzAzMjcxRkJBM0EwMDA0NjdCNiAvKiBOb3Rp
ZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDIyNzFGQkEzNjAw
MDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgKi87IH07CiAJCTUxNDUyNzA0MjcxRkJBNDAwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25N
YW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNzAwMjcxRkJBMzQwMDA0NjdCNiAvKiBO
b3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxpZXMuaCAqLzsgfTsK
IAkJNTE0NTI3MDUyNzFGQkE0MDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTQ1MjcwMTI3MUZCQTM1MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFuYWdlck1l
c3NhZ2VIYW5kbGVyTWVzc2FnZXMuaCAqLzsgfTsKIAkJNTE0NTI3MDgyNzFGQkVDNjAwMDQ2N0I2
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0NTI3MDcyNzFGQkVDMTAwMDQ2N0I2
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovOyB9OwotCQk1MTQ1
MjZFRDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDUyNkVCMjcxRTE2
MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovOyB9OwogCQk1MTQ4
OUNDMzIzNzBEQkZBMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyog
V0tGaW5kUmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9
OyB9OwogCQk1MTQ4OUNDNzIzNzIzNzgwMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0M2
MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovOyB9OwogCQk1MTRB
QjlGMDIzNjBEMkE5MDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0QUI5RUYyMzVGQTU5QjAwRURD
Mzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQdWJsaWMsICk7IH07IH07CkBAIC00MTMzLDYgKzQxMzcsMTIgQEAKIAkJNTEyOTM1RTExMjg4
RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyOTM1
RTIxMjg4RDk3ODAwQTRCNjk1IC8qIEluamVjdGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlUGFnZUNv
bnRleHRNZW51Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjlFQjEx
MjNEMERFNzgwMEFGMUNENyAvKiBDb250ZW50V29ybGRTaGFyZWQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudFdvcmxkU2hhcmVkLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUxMkNENjk2MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29u
bmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMkNE
Njk3MjcyMUVGQzMwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2Vi
UHVzaERhZW1vbkNvbnN0YW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
MkNENjlDMjcyMjNBMDgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaERhZW1vbkNv
bm5lY3Rpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEyQ0Q2OUQy
NzIzMzkzQTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTJDRDY5RTI3MjMzOTNBMDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1c2hEYWVtb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkY1ODhFMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTJGNTg4RjEyQTg4Mzg4MDA2Mjk1MzAgLyogQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUx
MkY1ODkwMTJBODgzODgwMDYyOTUzMCAvKiBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0aGVudGljYXRpb25E
ZWNpc2lvbkxpc3RlbmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNjcs
NiArNDE3Nyw4IEBACiAJCTUxNDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0
aW9uVG9TZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVF
MUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25M
b2FkaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25M
b2FkaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDUyNkVCMjcx
RTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTQ1MjZFQzI3MUUxNjI3MDAwNDY3QjYgLyogTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTQ1MjZGQzI3MUZCN0U4MDAwNDY3QjYgLyogTm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5v
dGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI2RkUyNzFGQjdFODAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlv
bk1hbmFnZXJNZXNzYWdlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0NTI3MDAyNzFGQkEzNDAwMDQ2N0I2IC8qIE5vdGlmaWNhdGlvbk1hbmFn
ZXJNZXNzYWdlSGFuZGxlck1lc3NhZ2VzUmVwbGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXJNZXNzYWdlc1JlcGxp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQxNzQsOCArNDE4Niw2IEBACiAJ
CTUxNDUyNzAyMjcxRkJBMzYwMDA0NjdCNiAvKiBOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyTWVzc2FnZVJlY2VpdmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0NTI3MDYyNzFGQkVDMTAwMDQ2N0I2
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQ1MjcwNzI3MUZCRUMx
MDAwNDY3QjYgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdl
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1MTQ1MjZFQjI3MUUxNjI2
MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE0NTI2RUMyNzFFMTYyNzAwMDQ2N0I2IC8qIE5ldHdvcmtO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3Vs
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRmluZFJlc3Vs
dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0ODlDQzYyMzcyMzc3ODAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLRmluZFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MTM4LDYgKzcxNDgsNyBAQAogCQkJCUJDMzA2ODIzMTI1QTZCOTQwMEU3MTI3OCAvKiBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCAqLywKIAkJCQlCQzMwNjgyMjEyNUE2Qjk0
MDBFNzEyNzggLyogV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oICovLAogCQkJCTQ2N0U0
M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICov
LAorCQkJCTUxMkNENjk5MjcyMUYwNDkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
LmggKi8sCiAJCQkJNUM4REQzN0YxRkU0NTE5MjAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVBv
bGljeS5oICovLAogCQkJCTVDOEREMzgxMUZFNDU1Q0EwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3Bs
YXlRdWlyay5oICovLAogCQkJCTUxMUY3RDNGMUVCMUJDRUUwMEU0N0I4MyAvKiBXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycy5jcHAgKi8sCkBAIC05MDM1LDYgKzkwNDYsMTQgQEAKIAkJCXBhdGgg
PSBEYXRhYmFzZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQk1MTJDRDY5
QjI3MjIzOUU0MDBGN0Y4RUMgLyogQ29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTUxMkNENjlDMjcyMjNBMDgwMEY3RjhFQyAvKiBXZWJQdXNoRGFl
bW9uQ29ubmVjdGlvbkNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTUxMkY1ODhEMTJBODgzNkYwMDYyOTUzMCAv
KiBBdXRoZW50aWNhdGlvbiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC05MDU1LDggKzkwNzQsMTEgQEAKIAkJNTE0NTI2RUEyNzFFMTYxMDAwMDQ2N0I2IC8q
IE5vdGlmaWNhdGlvbnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTUxMkNENjlCMjcyMjM5RTQwMEY3RjhFQyAvKiBDb2NvYSAqLywKIAkJCQk1MTQ1MjZF
QzI3MUUxNjI3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwICovLAog
CQkJCTUxNDUyNkVCMjcxRTE2MjYwMDA0NjdCNiAvKiBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5oICovLAorCQkJCTUxMkNENjk2MjcyMUVGQzIwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29u
bmVjdGlvbi5jcHAgKi8sCisJCQkJNTEyQ0Q2OTcyNzIxRUZDMzAwRjdGOEVDIC8qIFdlYlB1c2hE
YWVtb25Db25uZWN0aW9uLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IE5vdGlmaWNhdGlvbnM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTU3OCw2ICs5NjAwLDggQEAKIAkJCWNoaWxk
cmVuID0gKAogCQkJCTVDQkI2RDREMjcxRjY3Q0MwMEZEMUE1RCAvKiBjb20uYXBwbGUud2Via2l0
LndlYnB1c2hkLnBsaXN0ICovLAogCQkJCTVDMTU3QTBCMjcxN0NBMUMwMEVENTI4MCAvKiBXZWJQ
dXNoRGFlbW9uTWFpbi5tbSAqLywKKwkJCQk1MTJDRDY5RDI3MjMzOTNBMDBGN0Y4RUMgLyogV2Vi
UHVzaERhZW1vbi5oICovLAorCQkJCTUxMkNENjlFMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNo
RGFlbW9uLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSB3ZWJwdXNoZDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xMjEwMCw2ICsxMjEyNCw3IEBACiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNUMxNTc5RkMyNzE3QUY1MDAwRUQ1Mjgw
IC8qIERhZW1vblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTEyQ0Q2OUYyNzIzMzkz
QTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTI4MTgsNiAr
MTI4NDMsNyBAQAogCQkJCTkzQUI5QjRFMjU3NTY3RTIwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25p
dGlvblJlbW90ZVJlYWx0aW1lTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQUI5
QjREMjU3NTY3REMwMDk4QjEwRSAvKiBTcGVlY2hSZWNvZ25pdGlvblJlbW90ZVJlYWx0aW1lTWVk
aWFTb3VyY2VNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2Qjc3MjI1NEJCNTE5MDA1
OEREM0EgLyogU3BlZWNoUmVjb2duaXRpb25TZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
MkNENjlBMjcyMUYwQTkwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0Q2Qjc4NDI1NENDRDBFMDA1OEREM0EgLyogU3BlZWNoUmVjb2duaXRp
b25TZXJ2ZXJNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3ODUyNTRDQ0Q0MzAw
NThERDNBIC8qIFNwZWVjaFJlY29nbml0aW9uU2VydmVyTWVzc2FnZXNSZXBsaWVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QTNGRUNBMjIxRjdDMDk3MDBGMjY3Q0QgLyogU3RvcmFnZUFjY2Vzc1N0
YXR1cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjkwNSw2ICsxMjkzMSw3IEBACiAJCQkJOTkwRDM5
RjUyNDNCRTY0ODAwMTk5Mzg4IC8qIFdlYkF1dG9tYXRpb25ET01XaW5kb3dPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRp
b25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OUMzQUUyRDFEQURBNkFEMDBBRjVDMTYg
LyogV2ViQXV0b21hdGlvblNlc3Npb25NYWNyb3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMkNE
Njk4MjcyMUVGQzgwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUMwQTE5NTgxQzkwMDY4RjAwRkUwRUJCIC8qIFdlYkF1dG9tYXRpb25TZXNz
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDMEExOTQ3MUM4RkYxQTgwMEZFMEVC
QiAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzBB
MTk1NDFDOEZGREZCMDBGRTBFQkIgLyogV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLywKQEAgLTE0NjYwLDYgKzE0Njg3LDcgQEAKIAkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCTUxMkNENkEwMjcyMzM5M0EwMEY3RjhFQyAvKiBXZWJQdXNoRGFlbW9uLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxNTdBMDEyNzE3QjdGQjAwRUQ1MjgwIC8qIEFyZ3VtZW50
Q29kZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZGMjcxN0I2RDIwMEVENTI4MCAv
KiBEYWVtb25EZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMTU3OUZFMjcxN0I2QzEw
MEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmggYi9Tb3VyY2UvV2ViS2l0L3dl
YnB1c2hkL1dlYlB1c2hEYWVtb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLmE5NGVkZDRlMzI5ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9TcGFuLmg+CisjaW5jbHVkZSA8d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CisKK3VzaW5n
IFdlYktpdDo6V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOworCituYW1lc3BhY2UgV2ViUHVzaEQgewor
Cit1c2luZyBFbmNvZGVkTWVzc2FnZSA9IFZlY3Rvcjx1aW50OF90PjsKKworY2xhc3MgRGFlbW9u
IHsKKyAgICBmcmllbmQgY2xhc3MgV1RGOjpOZXZlckRlc3Ryb3llZDxEYWVtb24+OworcHVibGlj
OgorICAgIHN0YXRpYyBEYWVtb24mIHNpbmdsZXRvbigpOworCisgICAgdm9pZCBjb25uZWN0aW9u
RXZlbnRIYW5kbGVyKHhwY19vYmplY3RfdCk7CisgICAgdm9pZCBjb25uZWN0aW9uQWRkZWQoeHBj
X2Nvbm5lY3Rpb25fdCk7CisgICAgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4cGNfY29ubmVjdGlv
bl90KTsKKworICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKKyAgICB2b2lkIGVjaG9Ud2ljZShjb25z
dCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5
U2VuZGVyKTsKKworcHJpdmF0ZToKKyAgICBEYWVtb24oKSA9IGRlZmF1bHQ7CisKKyAgICBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEVuY29kZWRNZXNzYWdlJiYpPiBjcmVhdGVSZXBseVNlbmRlcihN
ZXNzYWdlVHlwZSwgT1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHJlcXVlc3QpOworICAgIHZv
aWQgZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNzYWdlVHlwZSwgU3Bhbjxjb25zdCB1aW50OF90
PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVkTWVzc2FnZSYm
KT4mJik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNTZhMDcwY2IxZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uLmgiCisKKyNpbXBvcnQgIkRhZW1v
bkRlY29kZXIuaCIKKyNpbXBvcnQgIkRhZW1vbkVuY29kZXIuaCIKKyNpbXBvcnQgIkRhZW1vblV0
aWxpdGllcy5oIgorI2ltcG9ydCAiSGFuZGxlTWVzc2FnZS5oIgorI2ltcG9ydCAiV2ViUHVzaERh
ZW1vbkNvbnN0YW50cy5oIgorCisjaW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNp
bXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2ltcG9ydCA8d3RmL1NwYW4uaD4KKwordXNp
bmcgbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQ7CisKK25hbWVzcGFjZSBXZWJQdXNoRCB7CisK
K25hbWVzcGFjZSBNZXNzYWdlSW5mbyB7CisKKyNkZWZpbmUgRlVOQ1RJT04obWYpIHN0cnVjdCBt
ZiB7IHN0YXRpYyBjb25zdGV4cHIgYXV0byBNZW1iZXJGdW5jdGlvbiA9ICZXZWJQdXNoRDo6RGFl
bW9uOjptZjsKKyNkZWZpbmUgQVJHVU1FTlRTKC4uLikgdXNpbmcgQXJnc1R1cGxlID0gc3RkOjp0
dXBsZTxfX1ZBX0FSR1NfXz47CisjZGVmaW5lIFJFUExZKC4uLikgdXNpbmcgUmVwbHkgPSBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKF9fVkFfQVJHU19fKT47IFwKKyAgICBzdGF0aWMgV2ViUHVzaEQ6
OkVuY29kZWRNZXNzYWdlIGVuY29kZVJlcGx5KF9fVkFfQVJHU19fKTsKKyNkZWZpbmUgRU5EIH07
CisKK0ZVTkNUSU9OKGVjaG9Ud2ljZSkKK0FSR1VNRU5UUyhTdHJpbmcpCitSRVBMWShTdHJpbmcp
CitFTkQKKworI3VuZGVmIEZVTkNUSU9OCisjdW5kZWYgQVJHVU1FTlRTCisjdW5kZWYgUkVQTFkK
KyN1bmRlZiBFTkQKKworV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGVjaG9Ud2ljZTo6ZW5jb2Rl
UmVwbHkoU3RyaW5nIHJlcGx5KQoreworICAgIFdlYktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29k
ZXI7CisgICAgZW5jb2RlciA8PCByZXBseTsKKyAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVmZmVy
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIE1lc3NhZ2VJbmZvCisKK3RlbXBsYXRlPHR5cGVuYW1l
IEluZm8+Cit2b2lkIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseShTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlB1c2hEOjpF
bmNvZGVkTWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6
RGVjb2RlciBkZWNvZGVyKGVuY29kZWRNZXNzYWdlKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8dHlw
ZW5hbWUgSW5mbzo6QXJnc1R1cGxlPiBhcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBhcmd1bWVu
dHM7CisgICAgaWYgKFVOTElLRUxZKCFhcmd1bWVudHMpKQorICAgICAgICByZXR1cm47CisKKyAg
ICB0eXBlbmFtZSBJbmZvOjpSZXBseSBjb21wbGV0aW9uSGFuZGxlciB7IFtyZXBseVNlbmRlciA9
IFdURk1vdmUocmVwbHlTZW5kZXIpXSAoYXV0byYmLi4uIGFyZ3MpIG11dGFibGUgeworICAgICAg
ICByZXBseVNlbmRlcihJbmZvOjplbmNvZGVSZXBseShhcmdzLi4uKSk7CisgICAgfSB9OworCisg
ICAgSVBDOjpjYWxsTWVtYmVyRnVuY3Rpb24oV1RGTW92ZSgqYXJndW1lbnRzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksICZXZWJQdXNoRDo6RGFlbW9uOjpzaW5nbGV0b24oKSwgSW5mbzo6
TWVtYmVyRnVuY3Rpb24pOworfQorCitEYWVtb24mIERhZW1vbjo6c2luZ2xldG9uKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RGFlbW9uPiBkYWVtb247CisgICAgcmV0dXJuIGRhZW1v
bjsKK30KKwordm9pZCBEYWVtb246OmNvbm5lY3Rpb25FdmVudEhhbmRsZXIoeHBjX29iamVjdF90
IHJlcXVlc3QpCit7CisgICAgaWYgKHhwY19nZXRfdHlwZShyZXF1ZXN0KSAhPSBYUENfVFlQRV9E
SUNUSU9OQVJZKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHhwY19kaWN0aW9uYXJ5
X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBwcm90b2NvbFZlcnNp
b25WYWx1ZSkgeworICAgICAgICBOU0xvZyhAIlJlY2VpdmVkIHJlcXVlc3QgdGhhdCB3YXMgbm90
IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsKKyAgICAgICAgLy8gRklYTUU6IEN1dCBv
ZmYgdGhpcyBjb25uZWN0aW9uCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIG1l
c3NhZ2VUeXBlIHsgc3RhdGljX2Nhc3Q8TWVzc2FnZVR5cGU+KHhwY19kaWN0aW9uYXJ5X2dldF91
aW50NjQocmVxdWVzdCwgcHJvdG9jb2xNZXNzYWdlVHlwZUtleSkpIH07CisgICAgc2l6ZV90IGRh
dGFTaXplIHsgMCB9OworICAgIGNvbnN0IHZvaWQqIGRhdGEgPSB4cGNfZGljdGlvbmFyeV9nZXRf
ZGF0YShyZXF1ZXN0LCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCAmZGF0YVNpemUpOworICAg
IFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1lc3NhZ2UgeyBzdGF0aWNfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIGRhdGFTaXplIH07CisgICAgCisgICAgZGVjb2RlQW5kSGFuZGxlTWVz
c2FnZShtZXNzYWdlVHlwZSwgZW5jb2RlZE1lc3NhZ2UsIGNyZWF0ZVJlcGx5U2VuZGVyKG1lc3Nh
Z2VUeXBlLCByZXF1ZXN0KSk7Cit9CisKK3ZvaWQgRGFlbW9uOjpjb25uZWN0aW9uQWRkZWQoeHBj
X2Nvbm5lY3Rpb25fdCkKK3sKKyAgICAvLyBGSVhNRTogVHJhY2sgY29ubmVjdGlvbnMKK30KKwor
dm9pZCBEYWVtb246OmNvbm5lY3Rpb25SZW1vdmVkKHhwY19jb25uZWN0aW9uX3QpCit7CisgICAg
Ly8gRklYTUU6IFRyYWNrIGNvbm5lY3Rpb25zCit9CisKK0NvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RW5jb2RlZE1lc3NhZ2UmJik+IERhZW1vbjo6Y3JlYXRlUmVwbHlTZW5kZXIoTWVzc2FnZVR5cGUg
bWVzc2FnZVR5cGUsIE9TT2JqZWN0UHRyPHhwY19vYmplY3RfdD4mJiByZXF1ZXN0KQoreworICAg
IGlmICghbWVzc2FnZVR5cGVTZW5kc1JlcGx5KG1lc3NhZ2VUeXBlKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpXSAoRW5j
b2RlZE1lc3NhZ2UmJiBtZXNzYWdlKSB7CisgICAgICAgIGF1dG8gcmVwbHkgPSBhZG9wdE5TKHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZV9yZXBseShyZXF1ZXN0LmdldCgpKSk7CisgICAgICAgIEFTU0VS
VCh4cGNfZ2V0X3R5cGUocmVwbHkuZ2V0KCkpID09IFhQQ19UWVBFX0RJQ1RJT05BUlkpOworICAg
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KHJlcGx5LmdldCgpLCBwcm90b2NvbFZlcnNp
b25LZXksIHByb3RvY29sVmVyc2lvblZhbHVlKTsKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3ZhbHVlKHJlcGx5LmdldCgpLCBwcm90b2NvbEVuY29kZWRNZXNzYWdlS2V5LCBXZWJLaXQ6OnZl
Y3RvclRvWFBDRGF0YShXVEZNb3ZlKG1lc3NhZ2UpKS5nZXQoKSk7CisgICAgICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZSh4cGNfZGljdGlvbmFyeV9nZXRfcmVtb3RlX2Nvbm5lY3Rpb24o
cmVxdWVzdC5nZXQoKSksIHJlcGx5LmdldCgpKTsKKyAgICB9OworfQorCit2b2lkIERhZW1vbjo6
ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgU3Bhbjxjb25z
dCB1aW50OF90PiBlbmNvZGVkTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFbmNvZGVk
TWVzc2FnZSYmKT4mJiByZXBseVNlbmRlcikKK3sKKyAgICBBU1NFUlQobWVzc2FnZVR5cGVTZW5k
c1JlcGx5KG1lc3NhZ2VUeXBlKSA9PSAhIXJlcGx5U2VuZGVyKTsKKworICAgIHN3aXRjaCAobWVz
c2FnZVR5cGUpIHsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpFY2hvVHdpY2U6CisgICAgICAgIGhh
bmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6ZWNob1R3aWNlPihlbmNv
ZGVkTWVzc2FnZSwgV1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3ZvaWQgRGFlbW9uOjplY2hvVHdpY2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHJlcGx5U2VuZGVyKQoreworICAg
IHJlcGx5U2VuZGVyKG1ha2VTdHJpbmcobWVzc2FnZSwgbWVzc2FnZSkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQ
dXNoRGFlbW9uTWFpbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1h
aW4ubW0KaW5kZXggMjRhM2IyMTYxNGJiLi5hY2NjYjU2ODY2MjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbk1haW4ubW0KKysrIGIvU291cmNlL1dlYktp
dC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uTWFpbi5tbQpAQCAtMjgsNzcgKzI4LDI5IEBACiAjaW1w
b3J0ICJEYWVtb25EZWNvZGVyLmgiCiAjaW1wb3J0ICJEYWVtb25FbmNvZGVyLmgiCiAjaW1wb3J0
ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb24uaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KLSNp
bXBvcnQgPHd0Zi9TcGFuLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEkuaD4KIAot
bmFtZXNwYWNlIFdlYlB1c2hEIHsKLQotY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29sVmVy
c2lvbktleSA9ICJwcm90b2NvbCB2ZXJzaW9uIjsKLWNvbnN0ZXhwciB1aW50NjRfdCBwcm90b2Nv
bFZlcnNpb25WYWx1ZSA9IDE7Ci1jb25zdGV4cHIgY29uc3QgY2hhciogcHJvdG9jb2xNZXNzYWdl
VHlwZUtleSA9ICJtZXNzYWdlIHR5cGUiOwotY29uc3RleHByIGNvbnN0IGNoYXIqIHByb3RvY29s
RW5jb2RlZE1lc3NhZ2VLZXkgPSAiZW5jb2RlZCBtZXNzYWdlIjsKLWVudW0gY2xhc3MgTWVzc2Fn
ZVR5cGUgOiB1aW50OF90IHsKLSAgICBFY2hvVHdpY2UgPSAxCi19OwotCi1zdGF0aWMgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8dWludDhfdD4mJik+IHJlcGx5U2VuZGVyKFJldGFpblB0
cjx4cGNfb2JqZWN0X3Q+JiYgcmVxdWVzdCkKLXsKLSAgICByZXR1cm4gW3JlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpXSAoVmVjdG9yPHVpbnQ4X3Q+JiYgbWVzc2FnZSkgewotICAgICAgICBhdXRv
IHJlcGx5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGVfcmVwbHkocmVxdWVzdC5nZXQo
KSkpOwotICAgICAgICBBU1NFUlQoeHBjX2dldF90eXBlKHJlcGx5LmdldCgpKSA9PSBYUENfVFlQ
RV9ESUNUSU9OQVJZKTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChyZXBseS5n
ZXQoKSwgcHJvdG9jb2xWZXJzaW9uS2V5LCBwcm90b2NvbFZlcnNpb25WYWx1ZSk7Ci0gICAgICAg
IHhwY19kaWN0aW9uYXJ5X3NldF92YWx1ZShyZXBseS5nZXQoKSwgcHJvdG9jb2xFbmNvZGVkTWVz
c2FnZUtleSwgV2ViS2l0Ojp2ZWN0b3JUb1hQQ0RhdGEoV1RGTW92ZShtZXNzYWdlKSkuZ2V0KCkp
OwotICAgICAgICB4cGNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoeHBjX2RpY3Rpb25hcnlfZ2V0
X3JlbW90ZV9jb25uZWN0aW9uKHJlcXVlc3QuZ2V0KCkpLCByZXBseS5nZXQoKSk7Ci0gICAgfTsK
LX0KLQotc3RhdGljIHZvaWQgZWNob1R3aWNlKFNwYW48Y29uc3QgdWludDhfdD4gZW5jb2RlZE1l
c3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPHVpbnQ4X3Q+JiYpPiYmIHJlcGx5
U2VuZGVyKQotewotICAgIFdlYktpdDo6RGFlbW9uOjpEZWNvZGVyIGRlY29kZXIoZW5jb2RlZE1l
c3NhZ2UpOwotICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBzdHJpbmc7Ci0gICAgZGVjb2RlciA+
PiBzdHJpbmc7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVybjsKK3VzaW5nIFdlYktp
dDo6RGFlbW9uOjpFbmNvZGVkTWVzc2FnZTsKK3VzaW5nIFdlYlB1c2hEOjpEYWVtb247CiAKLSAg
ICBhdXRvIHJlcGx5ID0gbWFrZVN0cmluZygqc3RyaW5nLCAqc3RyaW5nKTsKLSAgICBXZWJLaXQ6
OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOwotICAgIGVuY29kZXIgPDwgcmVwbHk7Ci0gICAgcmVw
bHlTZW5kZXIoZW5jb2Rlci50YWtlQnVmZmVyKCkpOwotfQotCi1zdGF0aWMgdm9pZCBkZWNvZGVN
ZXNzYWdlQW5kU2VuZFJlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IGVuY29kZWRNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rvcjx1aW50
OF90PiYmKT4mJiByZXBseVNlbmRlcikKLXsKLSAgICBzd2l0Y2ggKG1lc3NhZ2VUeXBlKSB7Ci0g
ICAgY2FzZSBNZXNzYWdlVHlwZTo6RWNob1R3aWNlOgotICAgICAgICBlY2hvVHdpY2UoZW5jb2Rl
ZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LX0KK25hbWVzcGFjZSBXZWJQdXNoRCB7CiAKIHN0YXRpYyB2b2lkIGNvbm5lY3Rpb25FdmVudEhh
bmRsZXIoeHBjX29iamVjdF90IHJlcXVlc3QpCiB7Ci0gICAgaWYgKHhwY19nZXRfdHlwZShyZXF1
ZXN0KSAhPSBYUENfVFlQRV9ESUNUSU9OQVJZKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHhw
Y19kaWN0aW9uYXJ5X2dldF91aW50NjQocmVxdWVzdCwgcHJvdG9jb2xWZXJzaW9uS2V5KSAhPSBw
cm90b2NvbFZlcnNpb25WYWx1ZSkgewotICAgICAgICBOU0xvZyhAIlJlY2VpdmVkIHJlcXVlc3Qg
dGhhdCB3YXMgbm90IHRoZSBjdXJyZW50IHByb3RvY29sIHZlcnNpb24iKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGF1dG8gbWVzc2FnZVR5cGUgeyBzdGF0aWNfY2FzdDxNZXNzYWdl
VHlwZT4oeHBjX2RpY3Rpb25hcnlfZ2V0X3VpbnQ2NChyZXF1ZXN0LCBwcm90b2NvbE1lc3NhZ2VU
eXBlS2V5KSkgfTsKLSAgICBzaXplX3QgZGF0YVNpemUgeyAwIH07Ci0gICAgY29uc3Qgdm9pZCog
ZGF0YSA9IHhwY19kaWN0aW9uYXJ5X2dldF9kYXRhKHJlcXVlc3QsIHByb3RvY29sRW5jb2RlZE1l
c3NhZ2VLZXksICZkYXRhU2l6ZSk7Ci0gICAgU3Bhbjxjb25zdCB1aW50OF90PiBlbmNvZGVkTWVz
c2FnZSB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgZGF0YVNpemUgfTsKLSAg
ICBkZWNvZGVNZXNzYWdlQW5kU2VuZFJlcGx5KG1lc3NhZ2VUeXBlLCBlbmNvZGVkTWVzc2FnZSwg
cmVwbHlTZW5kZXIocmVxdWVzdCkpOworICAgIERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bkV2ZW50SGFuZGxlcihyZXF1ZXN0KTsKIH0KIAotc3RhdGljIHZvaWQgY29ubmVjdGlvbkFkZGVk
KHhwY19jb25uZWN0aW9uX3QpCitzdGF0aWMgdm9pZCBjb25uZWN0aW9uQWRkZWQoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
bkFkZGVkKGNvbm5lY3Rpb24pOwogfQogCi1zdGF0aWMgdm9pZCBjb25uZWN0aW9uUmVtb3ZlZCh4
cGNfY29ubmVjdGlvbl90KQorc3RhdGljIHZvaWQgY29ubmVjdGlvblJlbW92ZWQoeHBjX2Nvbm5l
Y3Rpb25fdCBjb25uZWN0aW9uKQogeworICAgIERhZW1vbjo6c2luZ2xldG9uKCkuY29ubmVjdGlv
blJlbW92ZWQoY29ubmVjdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hECmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGI2ZGZhNThj
YWI2Li5hY2E2YzU5OTYzMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0xMC0yNiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGhlbHBlciBjbGFzc2VzIGFuZCBtZXNz
YWdpbmcgaW5mcmFzdHJ1Y3R1cmUgdG8gbGF1bmNoIHdlYnB1c2hkIGFuZCByb3VuZCB0cmlwIGEg
bWVzc2FnZSB0byBpdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyMjYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tOgorICAgICAgICAocGVyc2lz
dGVudERhdGFTdG9yZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm06CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIF93
ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVj
aXNpb25IYW5kbGVyOl0pOgorCiAyMDIxLTEwLTI1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBBZGQgYW4gZXhwbGljaXQgSW1hZ2VE
aWZmUmVzdWx0LnBhc3NlZCByYXRoZXIgdGhhbiByZWx5aW5nIG9uIGRpZmZfaW1hZ2UgYmVpbmcg
bm9uLU5vbmUKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5t
IGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KaW5kZXggNzVkNjkxZGUyNmJm
Li44YTMyYmQ5MjhlMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxl
Z2F0ZS5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5tCkBAIC05OCw2
ICs5OCwxMSBAQCAtICh2b2lkKWF3YWtlRnJvbU5pYgogICAgIGlmICghZGF0YVN0b3JlKSB7CiAg
ICAgICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0g
W1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxl
YXNlXTsKICAgICAgICAgY29uZmlndXJhdGlvbi5uZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVZhbGlk
YXRpb25FbmFibGVkID0gWUVTOworCisgICAgICAgIC8vIEZJWE1FOiBXaGVuIGJ1aWx0LWluIG5v
dGlmaWNhdGlvbnMgYXJlIGVuYWJsZWQsIFdlYktpdCBkb2Vzbid0IHlldCBncmFjZWZ1bGx5IGhh
bmRsZSBhIG1pc3Npbmcgd2VicHVzaGQgc2VydmljZQorICAgICAgICAvLyBVbnRpbCBpdCBkb2Vz
LCB1bmNvbW1lbnQgdGhpcyBsaW5lIHdoZW4gdGhlIHNlcnZpY2UgaXMga25vd24gdG8gYmUgaW5z
dGFsbGVkLgorICAgICAgICAvLyBbY29uZmlndXJhdGlvbiBzZXRXZWJQdXNoTWFjaFNlcnZpY2VO
YW1lOkAib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIl07CisKICAgICAgICAg
ZGF0YVN0b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl07CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWlu
aUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJv
d3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQppbmRleCAzYzQzNTYwOGE0N2Iu
LjVhMTgyMWIwMDNhOCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dz
ZXJXaW5kb3dDb250cm9sbGVyLm0KQEAgLTIxMiw2ICsyMTIsMTQgQEAgLSAoQ0dGbG9hdCl2aWV3
U2NhbGVGb3JNZW51SXRlbVRhZzooTlNJbnRlZ2VyKXRhZwogICAgIHJldHVybiAxOwogfQogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9y
aWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lzaW9uSGFuZGxlcgorewor
ICAgIC8vIEZvciB0ZXN0aW5nLCBncmFudCBub3RpZmljYXRpb24gcGVybWlzc2lvbiB0byBhbGwg
b3JpZ2lucy4KKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgYWRkaW5nIGEgZGlhbG9nIGFuZCBpbi1t
ZW1vcnkgcGVybWlzc2lvbnMgbWFuYWdlcgorICAgIE5TTG9nKEAiR3JhbnRpbmcgbm90aWZpY2F0
aW9ucyBwZXJtaXNzaW9uIHRvIG9yaWdpbiAlQCIsIHNlY3VyaXR5T3JpZ2luKTsKKyAgICBkZWNp
c2lvbkhhbmRsZXIoWUVTKTsKK30KKwogLSAoSUJBY3Rpb24pc2V0Vmlld1NjYWxlOihpZClzZW5k
ZXIKIHsKICAgICBDR0Zsb2F0IHNjYWxlID0gW3NlbGYgdmlld1NjYWxlRm9yTWVudUl0ZW1UYWc6
W3NlbmRlciB0YWddXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>