<?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>232848</bug_id>
          
          <creation_ts>2021-11-08 14:02:35 -0800</creation_ts>
          <short_desc>Factor platform specific code out of HTMLModelElement</short_desc>
          <delta_ts>2021-11-16 08:11:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>233192</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1812825</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 14:02:35 -0800</bug_when>
    <thetext>Factor platform specific code out of HTMLModelElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812829</commentid>
    <comment_count>1</comment_count>
      <attachid>443602</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 14:05:47 -0800</bug_when>
    <thetext>Created attachment 443602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812843</commentid>
    <comment_count>2</comment_count>
      <attachid>443609</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 14:33:11 -0800</bug_when>
    <thetext>Created attachment 443609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812879</commentid>
    <comment_count>3</comment_count>
      <attachid>443617</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 15:18:38 -0800</bug_when>
    <thetext>Created attachment 443617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812890</commentid>
    <comment_count>4</comment_count>
      <attachid>443621</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 15:38:12 -0800</bug_when>
    <thetext>Created attachment 443621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812919</commentid>
    <comment_count>5</comment_count>
      <attachid>443629</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 16:31:09 -0800</bug_when>
    <thetext>Created attachment 443629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812928</commentid>
    <comment_count>6</comment_count>
      <attachid>443632</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 16:57:57 -0800</bug_when>
    <thetext>Created attachment 443632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1812967</commentid>
    <comment_count>7</comment_count>
      <attachid>443649</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-08 19:36:52 -0800</bug_when>
    <thetext>Created attachment 443649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813168</commentid>
    <comment_count>8</comment_count>
      <attachid>443693</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-09 08:56:33 -0800</bug_when>
    <thetext>Created attachment 443693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813398</commentid>
    <comment_count>9</comment_count>
      <attachid>443752</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-09 16:25:02 -0800</bug_when>
    <thetext>Created attachment 443752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813757</commentid>
    <comment_count>10</comment_count>
      <attachid>443849</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-10 12:33:15 -0800</bug_when>
    <thetext>Created attachment 443849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813842</commentid>
    <comment_count>11</comment_count>
      <attachid>443849</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2021-11-10 16:34:29 -0800</bug_when>
    <thetext>Comment on attachment 443849
Patch

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

&gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:225
&gt; +    // FIXME: For the early returns here, we should probably inform the page that that things have

Typo: that that

&gt; Source/WebKit/ChangeLog:9
&gt; +        Move implementation details of the macOS AVKit &lt;model&gt; implementation
&gt; +        into an AVKit model player implementation.

ARKit, not AVKit.

&gt; Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm:98
&gt; +    auto fileName = FileSystem::encodeForFileName(createCanonicalUUIDString()) + &quot;.usdz&quot;;

Maybe use preferredExtensionForMIMEType? but i guess either way you&apos;re hardcoding USD.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814048</commentid>
    <comment_count>12</comment_count>
      <attachid>443950</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-11 08:50:34 -0800</bug_when>
    <thetext>Created attachment 443950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814053</commentid>
    <comment_count>13</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-11-11 08:57:41 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #11)
&gt; Comment on attachment 443849 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=443849&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/model-element/HTMLModelElement.cpp:225
&gt; &gt; +    // FIXME: For the early returns here, we should probably inform the page that that things have
&gt; 
&gt; Typo: that that

Fixed.

&gt; 
&gt; &gt; Source/WebKit/ChangeLog:9
&gt; &gt; +        Move implementation details of the macOS AVKit &lt;model&gt; implementation
&gt; &gt; +        into an AVKit model player implementation.
&gt; 
&gt; ARKit, not AVKit.

Eek. Fixed. 

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm:98
&gt; &gt; +    auto fileName = FileSystem::encodeForFileName(createCanonicalUUIDString()) + &quot;.usdz&quot;;
&gt; 
&gt; Maybe use preferredExtensionForMIMEType? but i guess either way you&apos;re
&gt; hardcoding USD.

I didn&apos;t change this one, because it was just moved code and this all needs to be removed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814090</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-11 10:19:48 -0800</bug_when>
    <thetext>Committed r285637 (244138@main): &lt;https://commits.webkit.org/244138@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443950.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1814092</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-11 10:20:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/85304945&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443602</attachid>
            <date>2021-11-08 14:05:47 -0800</date>
            <delta_ts>2021-11-08 14:35:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108140546.patch</filename>
            <type>text/plain</type>
            <size>101629</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJHUFVdIENvbm5lY3QgSlMgYmluZGluZ3MgY29kZSB0byBpbnRl
cm5hbCBXZWJHUFUgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBNb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
CiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1M
TW9kZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVu
dDo6fkhUTUxNb2RlbEVsZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9
CiAKIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsx
MjksMTYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAg
ICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikK
KyAgICAgICAgbV9tb2RlbFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9t
aXNlLT5pc0Z1bGZpbGxlZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJl
c29sdmUpOwogCi0gICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisg
ICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9u
ID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBA
IEhUTUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5n
JiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAg
cmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsK
LX0KLQotY29uc3QgU3RyaW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7Ci19Ci0jZW5kaWYKLQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29s
dmUoKnRoaXMpOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBt
b2RlbERpZENoYW5nZSgpOwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3Vw
cG9ydAorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAv
LyBGSVhNRTogRm9yIHRoZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBp
bmZvcm0gdGhlIHBhZ2UgdGhhdCB0aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJl
bmRlcj8gRm9yIHRoZSBjYXNlIG9mIG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxz
byBidWlsZCB0aGUgbW9kZWwgd2hlbi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4K
KworICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBu
b3csIGNyZWF0ZU1vZGVsUGxheWVyIHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1
c2VkLCBidXQgdGhhdCBuZWVkcyB0byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9u
YWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhl
IEhUTUxNb2RlbEVsZW1lbnQuIE9uY2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBs
YXllcigpIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQ
bGF5ZXIgPSBwYWdlLT5tb2RlbFBsYXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRo
aXMpOworICAgIGlmICghbV9tb2RlbFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdGVsbCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMg
d2VsbCwgc28gcGFzc2luZyB0aGlzCisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNu
J3QgbWFrZSBzZW5zZS4KKyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9k
ZWwsIHNpemUpOworfQorCitib29sIEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQ
bGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tb2RlbFBsYXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXll
cik7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXll
ciA9PSBtX21vZGVsUGxheWVyKTsKK30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQu
CisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1F
OiBBZGQgYSBuZXcgbWV0aG9kIHRvIE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVu
IGFuZCBtb3ZlIHRoaXMgaW50byB0aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxh
eWVyIGltcGxlbWVudGF0aW9uLgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1Mp
CiAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMjYgKzI3LDI0IEBACiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKIAorI2luY2x1ZGUg
Ik1vZGVsUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKLU9CSkNfQ0xBU1MgQVNW
SW5saW5lUHJldmlldzsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1v
ZGVsOworY2xhc3MgTW9kZWxQbGF5ZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNs
YXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKLWNsYXNzIEhUTUxNb2Rl
bEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgeworY2xhc3MgSFRNTE1vZGVsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwgcHVibGljIE1vZGVsUGxh
eWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxNb2RlbEVsZW1lbnQp
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1vZGVsRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNTUsMjEgKzUzLDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNvdXJjZXNDaGFuZ2VkKCk7CiAgICAgY29uc3QgVVJMJiBjdXJyZW50U3JjKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KIAorICAgIC8vIE1BUks6IERPTSBGdW5jdGlv
bnMgYW5kIEF0dHJpYnV0ZXMKKwogICAgIHVzaW5nIFJlYWR5UHJvbWlzZSA9IERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNlPEhUTUxNb2RlbEVsZW1lbnQ+PjsK
ICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFkeVByb21pc2UuZ2V0KCk7
IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1vZGVsRGF0YSgpIGNvbnN0OwogICAgIFJl
ZlB0cjxNb2RlbD4gbW9kZWwoKSBjb25zdDsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFVykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGJvb2wgdXNlc1BsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNv
bnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKTsKLSNlbmRpZgogCiAgICAgdm9p
ZCBlbnRlckZ1bGxzY3JlZW4oKTsKIApAQCAtNzksMTMgKzcyLDkgQEAgcHJpdmF0ZToKICAgICBI
VE1MTW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAg
dm9pZCBzZXRTb3VyY2VVUkwoY29uc3QgVVJMJik7Ci0gICAgSFRNTE1vZGVsRWxlbWVudCYgcmVh
ZHlQcm9taXNlUmVzb2x2ZSgpOwotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLSAgICB2b2lkIGNsZWFyRmlsZSgpOwotICAgIHZvaWQgY3JlYXRlRmlsZSgpOwogICAgIHZv
aWQgbW9kZWxEaWRDaGFuZ2UoKTsKLSNlbmRpZgorCisgICAgSFRNTE1vZGVsRWxlbWVudCYgcmVh
ZHlQcm9taXNlUmVzb2x2ZSgpOwogCiAgICAgLy8gRE9NIG92ZXJyaWRlcy4KICAgICB2b2lkIGRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KSBmaW5hbDsKQEAgLTk3LDYgKzg2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCisgICAgLy8gTW9kZWxQbGF5ZXJDbGll
bnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpIGZp
bmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgZmluYWw7CisKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwpAQCAtMTA0LDEwICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVl
UmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0
ZSB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAg
IFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lu
bGluZVByZXZpZXc7Ci0jZW5kaWYKKyAgICBSZWZQdHI8TW9kZWxQbGF5ZXI+IG1fbW9kZWxQbGF5
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwx
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCi0KLSNp
ZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2V0
dGluZ3MuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+Ci0jaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUg
PHd0Zi9VVUlELmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7
Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcpOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSgpCi17
Ci0gICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhl
IG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCi0KLSAgICBjbGVhckZpbGUoKTsKLQotICAgIGF1
dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKTsKLSAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHBhdGhUb0RpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9yeSkpIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KLSAgICBhdXRvIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KSArICIudXNkeiI7Ci0gICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKLSAgICBhdXRvIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Ci0gICAgbV9maWxlUGF0aCA9IGZp
bGVQYXRoOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFyRmlsZSgpCi17Ci0gICAg
aWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwotICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmlu
ZygpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKLXsKLSAg
ICBjcmVhdGVGaWxlKCk7Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBzaXplID0g
cmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5zaXplKCk7Ci0KLSAgICBt
X2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgp
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpXSk7Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlk
Q2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIs
ICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEo
KSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLQotICAgIGlmIChhdXRvKiBwYWdlID0g
ZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm1vZGVs
RWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXpl
KTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotewotICAgIGlm
ICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRd
LlVVSURTdHJpbmcpIHsKLSAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1l
bnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNl
aXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCAoKFN0cmluZylb
bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgW21faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0
OmNvbnRleHRJZF07Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Omlu
bGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQg
cmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKLQot
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotfQotCi1QbGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxF
bGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21faW5saW5lUHJl
dmlldyBsYXllcl07Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAm
JiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK01vZGVsUGxheWVyOjp+TW9kZWxQbGF5ZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVs
OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2RlbFBsYXllciA6IHB1YmxpYyBSZWZDb3VudGVk
PE1vZGVsUGxheWVyPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+TW9kZWxQbGF5ZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVs
JiwgTGF5b3V0U2l6ZSkgPSAwOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSA9
IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJDbGllbnQ6On5Nb2RlbFBsYXllckNsaWVudCgpID0gZGVm
YXVsdDsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsUGxheWVyOworY2xhc3MgUmVzb3VyY2VFcnJv
cjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXJDbGllbnQgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TW9kZWxQbGF5ZXJDbGllbnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
b2RlbFBsYXllckNsaWVudCgpOworCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmco
TW9kZWxQbGF5ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVs
UGxheWVyJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQ
bGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVs
UGxheWVyUHJvdmlkZXI6On5Nb2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92
aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsUGxh
eWVyOworY2xhc3MgTW9kZWxQbGF5ZXJDbGllbnQ7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1v
ZGVsUGxheWVyUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKworICAgIC8vIEZJWE1FOiBP
bmNlIGFsbCBjbGllbnRzIGhhdmUgYWRvcHRlZCBNb2RlbFBsYXllclByb3ZpZGVyLCB0aGlzIHNo
b3VsZAorICAgIC8vIGJlIGNoYW5nZWQgdG8gcmV0dXJuIGEgUmVmPE1vZGVsUGxheWVyPgorICAg
IHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXll
ckNsaWVudCYpID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5j
cHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2Rl
bFBsYXllci5oIgorCisjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUmVmPER1bW15TW9kZWxQbGF5ZXI+IER1bW15
TW9kZWxQbGF5ZXI6OmNyZWF0ZShNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IER1bW15TW9kZWxQbGF5ZXIoY2xpZW50KSk7Cit9CisKK0R1bW15
TW9kZWxQbGF5ZXI6OkR1bW15TW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkK
KyAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0KK3sKK30KKworRHVtbXlNb2RlbFBsYXllcjo6fkR1
bW15TW9kZWxQbGF5ZXIoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgRHVtbXlNb2RlbFBsYXllcjo6bG9h
ZChNb2RlbCYgbW9kZWwsIExheW91dFNpemUpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAg
ICBtX2NsaWVudC0+ZGlkRmFpbExvYWRpbmcoKnRoaXMsIFJlc291cmNlRXJyb3IgeyBlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCBtb2RlbC51cmwoKSwgIlRyeWluZyB0byBsb2FkIG1vZGVs
IHZpYSBEdW1teU1vZGVsUGxheWVyIl9zIH0pOworfQorCitQbGF0Zm9ybUxheWVyKiBEdW1teU1v
ZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxh
eWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1vZGVsUGxheWVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHVtbXlNb2RlbFBsYXllciBm
aW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxEdW1teU1vZGVsUGxheWVyPiBjcmVhdGUoTW9kZWxQbGF5ZXJDbGllbnQmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyKCk7CisKK3ByaXZh
dGU6CisgICAgRHVtbXlNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpOworCisgICAgLy8g
TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVsJiwgTGF5
b3V0U2l6ZSkgZmluYWw7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpIGZpbmFs
OworCisgICAgV2Vha1B0cjxNb2RlbFBsYXllckNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQxIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllci5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6RHVtbXlNb2RlbFBs
YXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjp+RHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitSZWZQdHI8TW9kZWxQbGF5ZXI+
IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJD
bGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRlKGNs
aWVudCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1vZGVs
UGxheWVyUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JF
X0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgTW9kZWxQbGF5
ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQgRHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyKCk7CisKK3ByaXZhdGU6CisgICAgLy8gTW9kZWxQbGF5ZXJQcm92aWRlciBvdmVy
cmlkZXMuCisgICAgdmlydHVhbCBSZWZQdHI8TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVy
KE1vZGVsUGxheWVyQ2xpZW50JikgZmluYWw7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQwNjUsNiArNDA2NSwxMSBAQAogCQlCQzIzRUU5MjBEQUVEMkJD
MDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkxIC8qIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlCQzIzRjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1h
Z2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNG
MERBMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjc0QjJGMTQwRUJFQjIwMEVBREZB
NiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuaCAqLzsgfTsKKwkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8q
IE1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzJCNDExMzI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDExODI3MzJGNDIz
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVs
UGxheWVyUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzJCNDExOTI3MzJGNDI5MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTBF
MjczMkVGRTQwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzJCNDEyMzI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJD
MkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTIwMjczMzVD
QjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5
QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250
ZXh0RXZlbnQuaCAqLzsgfTsKIAkJQkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1
QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIw
RjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICovOyB9OwpAQCAtMTA3OTUsNyArMTA4MDAsNiBA
QAogCQk3MUMyOUUzMTIwM0NFNzZDMDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBDU1NBbmltYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MUM1QkIxQjFGQjYxMUVBMDAwN0EyQUUgLyogQW5pbWF0YWJsZS5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQW5pbWF0YWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxQzkxNjA3MUQxNDgzQTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzFDQUEzRDky
NjhEMEJGOTAwRjI1NDEwIC8qIEhUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEhUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzFDRTJDNTEyMjA5REM3RjAwQzQ5NEJEIC8qIE1vdXNlRXZlbnRJT1MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW91c2VFdmVudElPUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRDAyRDkwMURCNTVDNEUwMERENUNGNSAvKiBt
YWluLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWFpbi5qczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFEMDJEOTIxREI1NUM0RTAwREQ1Q0Y1IC8q
IG1lZGlhLWNvbnRyb2xsZXIuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBh
dGggPSAibWVkaWEtY29udHJvbGxlci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNDcyNiw2ICsxNDczMCwxNiBAQAogCQlCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCQzI3NEIzMDE0MEVCRUQ4MDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjk5MzVDMTdBMURE
NTgwMEJDRTg4MCAvKiBDb2xvcklucHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb2xvcklucHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNb2RlbFBsYXllckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzJCNDExMzI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyQjQxMTQyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzJCNDExNjI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RlbFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjEyNzMzNUNCOTAwQTJE
MTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCQzJCNDEyMzI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEdW1teU1vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkI0MTI0MjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAv
KiBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTg4OTgsMTEgKzE4OTEyLDExIEBACiAJCTFBNTY5Q0M0MEQ3RTJCNjAw
MDdDMzk4MyAvKiBicmlkZ2UgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTU5QjU5NzcxMTEwODY1NTYwMDcxNTlFOCAvKiBqc2MgKi8sCiAJCQkJMUE1NjlD
RTIwRDdFMkI4MjAwN0MzOTgzIC8qIG9iamMgKi8sCiAJCQkJNTk5RTc1OEYxMTA1NUExRjAwRDkw
NEZBIC8qIEJyaWRnZS5oICovLAogCQkJCTFBNzFENTc5MEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVu
dGlmaWVyUmVwLmNwcCAqLywKIAkJCQkxQTcxRDU3QTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRp
ZmllclJlcC5oICovLAotCQkJCTU5QjU5NzcxMTEwODY1NTYwMDcxNTlFOCAvKiBqc2MgKi8sCiAJ
CQkJMUE1NjlDRUYwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuY3BwICovLAogCQkJ
CTFBNTY5Q0YwMEQ3RTJCODIwMDdDMzk4MyAvKiBydW50aW1lX2FycmF5LmggKi8sCiAJCQkJMUE1
NjlDRjEwRDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfbWV0aG9kLmNwcCAqLywKQEAgLTIzNzQw
LDEwICsyMzc1NCwxNiBAQAogCQk3MUY4NDlDQzI1NjVBQjdFMDA4QzM3RjIgLyogbW9kZWwtZWxl
bWVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMy
QjQxMjIyNzMzNUUwQzAwQTJEMTkxIC8qIGR1bW15ICovLAogCQkJCTcxQTNEMTgwMjU2MkI4MjUw
MDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJCQk3MUEzRDE3RDI1NjJCODI0
MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJCTcxQTNEMTdGMjU2MkI4MjQw
MDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKLQkJCQk3MUNBQTNEOTI2OEQwQkY5
MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovLAorCQkJCUJDMkI0MTE0Mjcz
MkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8sCisJCQkJQkMyQjQxMTMyNzMyRjA2
MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMTIyNzMyRjAzQzAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLywKKwkJCQlCQzJCNDEwRTI3MzJFRkU0MDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLywKKwkJCQlCQzJCNDExNjI3MzJGMEM3MDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMTUyNzMyRjBD
NzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Im1vZGVsLWVsZW1lbnQiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI4MzA5LDYg
KzI4MzI5LDE3IEBACiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwog
CQl9OworCQlCQzJCNDEyMjI3MzM1RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTI0MjczMzVFMUYwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDEyMzI3MzM1RTFGMDBBMkQx
OTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0MTIxMjczMzVDQjkwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJDMkI0MTIwMjczMzVD
QjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gZHVtbXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzRFREVG
NzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTMzMTc2LDYgKzMzMjA3LDggQEAKIAkJCQk4MUY2NUZGNjEzNzg4
RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0FGNTZEQjI1
MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdhbWVwYWQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxh
eWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDEzMTI3MzRBMDg2MDBBMkQxOTEgLyogRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2QjdBODI1NTFE
NDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzA4NURGODI2RTgyMkM3MDAwRUM2QTcgLyogRHVtbXlTdG9yYWdlUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYwMEMyMDI1MSAvKiBEeW5h
bWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzUwODYsNiArMzUxMTks
OSBAQAogCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJhY2tzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRDOEQzOTgyNUYyRkU5
NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExNzI3MzJGNDFF
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE5Mjcz
MkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
QkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZFMUUzRDBCREQwMDZCMEQ0QyAv
KiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIwMUMxQTFG
OEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKKyNpbmNs
dWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQcm92aWRlci5oIgog
I2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgpAQCAtNTg4LDEyICs1ODksNiBAQCB2b2lkIEVtcHR5
Q2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojptb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBV
UkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdAotewot
fQotI2VuZGlmCi0KIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBvbGljeUNoZWNrSWRl
bnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQpAQCAtMTE5OCw3ICsxMTkzLDgg
QEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRQogICAgICAgICBtYWtl
VW5pcXVlUmVmPEVtcHR5TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAgICAgICBFbXB0eUJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAgICAgIER1bW15UGVybWlzc2lv
bkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15U3RvcmFn
ZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdlUHJvdmlkZXI+
KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAg
ICAgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUNocm9tZUNsaWVudD4gZHVt
bXlDaHJvbWVDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShy
ZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMiwxMCArMjIyLDYgQEAgY2xhc3MgRW1wdHlDaHJvbWVDbGll
bnQgOiBwdWJsaWMgQ2hyb21lQwogI2VuZGlmCiAKICAgICBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pIGZpbmFsIHsg
cmV0dXJuIG51bGxwdHI7IH0KLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogfTsKIAogRGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQmIGVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDkgKzYwNyw2IEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZpcnR1YWwgdm9pZCB0
YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQpIGNvbnN0IHsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKLSAgICB2aXJ0dWFsIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgeyB9OwotI2VuZGlmCiAKIHByb3RlY3RlZDoK
ICAgICB2aXJ0dWFsIH5DaHJvbWVDbGllbnQoKSA9IGRlZmF1bHQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJMb3dQb3dlck1vZGVO
b3RpZmllci5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
Ik1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIu
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYWdlQ29sb3JTYW1wbGVyLmgi
CiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTMzMyw2ICszMzQsNyBAQCBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX3Blcm1pc3Npb25D
b250cm9sbGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVybWlzc2lvbkNvbnRyb2xsZXIp
KQogICAgICwgbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZShXVEZNb3ZlKHBhZ2VDb25maWd1cmF0
aW9uLnJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKSkKICAgICAsIG1fc3RvcmFnZVByb3ZpZGVyKFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVByb3ZpZGVyKSkKKyAgICAsIG1fbW9kZWxQ
bGF5ZXJQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxheWVyUHJvdmlk
ZXIpKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKQEAgLTM3NTUsNCAr
Mzc1Nyw5IEBAIFN0b3JhZ2VDb25uZWN0aW9uJiBQYWdlOjpzdG9yYWdlQ29ubmVjdGkKICAgICBy
ZXR1cm4gbV9zdG9yYWdlUHJvdmlkZXItPnN0b3JhZ2VDb25uZWN0aW9uKCk7CiB9CiAKK01vZGVs
UGxheWVyUHJvdmlkZXImIFBhZ2U6Om1vZGVsUGxheWVyUHJvdmlkZXIoKQoreworICAgIHJldHVy
biBtX21vZGVsUGxheWVyUHJvdmlkZXIuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDYgKzEyNCw3IEBAIGNsYXNzIE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7CiBjbGFzcyBN
ZWRpYVJlY29yZGVyUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGluYXRvclByaXZh
dGU7CitjbGFzcyBNb2RlbFBsYXllclByb3ZpZGVyOwogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb247
CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxlOwpAQCAtODk2
LDYgKzg5Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQZXJtaXNzaW9uQ29udHJv
bGxlciYgcGVybWlzc2lvbkNvbnRyb2xsZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBTdG9yYWdl
Q29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIE1vZGVsUGxheWVyUHJvdmlk
ZXImIG1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgTmF2aWdh
dGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEyMjgsNiArMTIz
MSw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiBtX3Blcm1pc3Np
b25Db250cm9sbGVyOwogICAgIFJlZlB0cjxSZXBvcnRpbmdFbmRwb2ludHNDYWNoZT4gbV9yZXBv
cnRpbmdFbmRwb2ludHNDYWNoZTsKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiBtX3N0
b3JhZ2VQcm92aWRlcjsKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4gbV9tb2Rl
bFBsYXllclByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQogICAgIHVzaW5n
IENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxUZXh0UmVjb2duaXRpb25S
ZXN1bHQsIEludFJlY3Q+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVy
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCIKICNpbmNs
dWRlICJQZXJtaXNzaW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBsdWdpbkluZm9Qcm92aWRl
ci5oIgpAQCAtNjIsNyArNjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VDb25m
aWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVu
aXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8U29ja2V0UHJvdmlkZXI+
JiYgc29ja2V0UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiBsaWJXZWJS
VENQcm92aWRlciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNhY2hlU3RvcmFnZVByb3Zp
ZGVyLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3ZpZGVyLCBSZWY8
QmFja0ZvcndhcmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJlZjxDb29raWVKYXI+JiYg
Y29va2llSmFyLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIHByb2dyZXNzVHJh
Y2tlckNsaWVudCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudEZv
ck1haW5GcmFtZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYgc3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiBt
ZWRpYVJlY29yZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYgYnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYgcGVybWlz
c2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYgc3RvcmFnZVByb3Zp
ZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxT
b2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3Zp
ZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2Fj
aGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50
UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVm
PENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+
JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYg
bG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRl
clByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0cnksIFJlZjxQZXJtaXNzaW9uQ29udHJv
bGxlcj4mJiBwZXJtaXNzaW9uQ29udHJvbGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4m
JiBzdG9yYWdlUHJvdmlkZXIsIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiYmIG1vZGVs
UGxheWVyUHJvdmlkZXIpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgZWRpdG9y
Q2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tldFByb3ZpZGVyKFdURk1v
dmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtNzgsNiArNzksNyBAQCBQYWdlQ29uZmlndXJhdGlvbjo6
UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBtZWRpYVJlY29yZGVyUHJvdmlkZXIoV1RGTW92
ZShtZWRpYVJlY29yZGVyUHJvdmlkZXIpKQogICAgICwgcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RG
TW92ZShwZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBzdG9yYWdlUHJvdmlkZXIoV1RGTW92
ZShzdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3ZlKG1v
ZGVsUGxheWVyUHJvdmlkZXIpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2LDkgQEAgY2xh
c3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgQmFja0ZvcndhcmRDbGll
bnQ7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBDYWNoZVN0b3JhZ2VQ
cm92aWRlcjsKLWNsYXNzIENvb2tpZUphcjsKIGNsYXNzIENocm9tZUNsaWVudDsKIGNsYXNzIENv
bnRleHRNZW51Q2xpZW50OworY2xhc3MgQ29va2llSmFyOwogY2xhc3MgRGF0YWJhc2VQcm92aWRl
cjsKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogY2xhc3MgRHJhZ0NsaWVudDsKQEAg
LTU3LDYgKzU3LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBJbnNwZWN0b3JD
bGllbnQ7CiBjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcm92
aWRlcjsKK2NsYXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYXltZW50Q29vcmRpbmF0
b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7CiBjbGFzcyBQZXJtaXNz
aW9uQ29udHJvbGxlcjsKQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50OwogY2xhc3MgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU7CiBjbGFzcyBTb2NrZXRQcm92aWRl
cjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI7CitjbGFzcyBTcGVlY2hTeW50aGVz
aXNDbGllbnQ7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiBjbGFzcyBTdG9yYWdl
UHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwpAQCAtNzIsMTIgKzc0LDExIEBA
IGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkdMU3RhdGVUcmFja2VyOwot
Y2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogCiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJh
dGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiwgUmVmPFNvY2tl
dFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJlZjxDYWNoZVN0
b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYsIFJlZjxCYWNrRm9y
d2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tl
ckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlxdWVSZWY8U3Bl
ZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRl
cj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250
cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNs
aWVudD4mJiwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlk
ZXI+JiYsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlk
ZXI+JiYsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVl
UmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50
PiYmLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1l
ZGlhUmVjb3JkZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwg
UmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYm
LCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQg
flBhZ2VDb25maWd1cmF0aW9uKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24oUGFnZUNvbmZpZ3Vy
YXRpb24mJik7CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8UGVybWlz
c2lvbkNvbnRyb2xsZXI+IHBlcm1pc3Npb25Db250cm9sbGVyOwogICAgIFVuaXF1ZVJlZjxTdG9y
YWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKKworICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXll
clByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOwogfTsKIAogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI4
NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDEzICsxMDk3LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb25maWd1cmEKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBl
bHNlIGlmIChpczxSZW5kZXJNb2RlbD4ocmVuZGVyZXIoKSkpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGlmIChhdXRvKiBw
bGF0Zm9ybUxheWVyID0gZWxlbWVudC0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6TW9kZWwpOwotI2Vsc2UKLSAgICAg
ICAgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50LT5tb2RlbCgpKQorCisgICAgICAgIC8vIFNvbWUg
TW9kZWxQbGF5ZXJzIHVzZSBhIHBsYXRmb3JtTGF5ZXIoKSBhbmQgc29tZSBwYXNzIHRoZSBNb2Rl
bCB0byB0aGUgbGF5ZXIgYXMgY29udGVudHMsCisgICAgICAgIC8vIGJ1dCB0aGlzIGlzIGEgcnVu
dGltZSBkZWNpc2lvbi4KKyAgICAgICAgaWYgKGVsZW1lbnQtPnVzZXNQbGF0Zm9ybUxheWVyKCkp
IHsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoZWxlbWVudC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6TW9kZWwpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50
LT5tb2RlbCgpKQogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvTW9k
ZWwoV1RGTW92ZShtb2RlbCkpOwotI2VuZGlmCiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0x
MS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBs
YXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxF
bGVtZW50Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVs
RWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWw6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYzogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OnNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisK
IDIwMjEtMTEtMDggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IHdlYlZpZXcuc2Nyb2xsVmlldy5pbmRpY2F0b3JTdHlsZSBkb2VzIG5vdCB3b3JrIG9uIGlPUyAx
NQpJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNiArNTkyLDggQEAgV2ViUHJvY2Vzcy9N
ZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaQogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRp
YURldmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2Vy
TWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKK1dlYlByb2Nlc3MvTW9kZWwvV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKKwogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRs
ZS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NTQzMCkK
KysrIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU1
LDYgKzY1NSw4IEBAIFdlYlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU0KIAog
V2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCiAKK1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCisKIFdl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbkFubm90YXRpb24ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
Q2hvaWNlQW5ub3RhdGlvbi5tbQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxF
bGVtZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L01vZGVsRWxlbWVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2Ny
ZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJ
ZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZv
aWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpOworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhVUkwsIFN0cmluZywg
V2ViQ29yZTo6RmxvYXRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6
cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNl
bmRpZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgwNSwxNSArMTA4MDUsOSBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4
dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBz
aXplKQordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90
PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IG1vZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b250ZXh0LCB1cmwsIHV1aWQsIHNpemUpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxF
bGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29u
dGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17
Ci0gICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Ok1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29udGV4dCwgdXVp
ZCwgY29udGV4dElkKSk7CisgICAgbW9kZWxFbGVtZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1l
bnREaWRDcmVhdGVQcmV2aWV3KHVybCwgdXVpZCwgc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDggKzU4OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJl
dmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgbW9kZWxFbGVtZW50
UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYs
IGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDT05URVhUX01FTlVTKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC01ODcsNyArNTg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBUYWtlTW9k
ZWxFbGVtZW50RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZW50TGF5ZXJJRCkKICNlbmRpZgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgTW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQs
IFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBNb2Rl
bEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSkgLT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gcmVzdWx0KSBBc3luYwogI2VuZGlmCiAKICAgICByZXF1
ZXN0UGVybWlzc2lvbihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgc3RydWN0
IFdlYkNvcmU6OlBlcm1pc3Npb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IpIC0+IChlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6UGVybWlzc2lvblN0YXRlIHN0YXRlKSBBc3luYwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRy
b2xsZXJDb2NvYS5tbQkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
ZW5kaWYKQEAgLTEyNCwxMCArMTI1LDEyIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6
dGFrZU1vZGVsRWwKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAKLXZv
aWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiBmaWxlVVJM
LCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3Zv
aWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhV
UkwgZmlsZVVSTCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICgh
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCisgICAg
aWYgKCFtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAi
TW9kZWwgZWxlbWVudCBkaXNhYmxlZCJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBhdXRvIG5zVVVJRCA9IGFkb3B0TlMoW1tOU1VVSUQgYWxsb2NdIGluaXRXaXRoVVVJRFN0
cmluZzp1dWlkXSk7CiAgICAgYXV0byBwcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQ
cmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKSBVVUlEOm5zVVVJRC5nZXQoKV0pOwpAQCAtMTQwLDMyICsxNDMs
NDkgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbgogICAgIGVsc2UK
ICAgICAgICAgaXRlcmF0b3ItPnZhbHVlID0gcHJldmlldzsKIAorICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyBub3QganVzdCB1c2luZyBub3JtYWwgVVJMIC0+IE5TVVJMIGNvbnZlcnNpb24/Cisg
ICAgYXV0byB1cmwgPSBhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRGaWxlVVJMV2l0aFBhdGg6
ZmlsZVVSTC5maWxlU3lzdGVtUGF0aCgpXSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5S
dW5Mb29wKCkpOwotICAgIFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9OwotICAgIGF1dG8gZWxl
bWVudENvbnRleHRDb3B5ID0gY29udGV4dDsKLSAgICBhdXRvIHV1aWRDb3B5ID0gdXVpZDsKLSAg
ICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0ZW1Q
YXRoKCldOwotICAgIFtwcmV2aWV3IHNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSB7CisgICAgW3ByZXZp
ZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJldmlldywgdXVpZCA9IFdURk1vdmUo
dXVpZCksIHVybCA9IFdURk1vdmUodXJsKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKE5TRXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGNvbnRleHRFcnJvcikgewotICAgICAgICAgICAgTE9HKE1vZGVs
RWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6
ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtjb250ZXh0RXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gY3Jl
YXRlIHJlbW90ZSBjb25uZWN0aW9uIGZvciB1dWlkICVzOiAlQC4iLCB1dWlkLnV0ZjgoKS5kYXRh
KCksIGNvbnRleHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBjb250ZXh0RXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTE9H
KE1vZGVsRWxlbWVudCwgIkVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAl
cy4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IkVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAlcy4iLCB1dWlkLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgICAgIFtwcmV2aWV3IHByZXBhcmVQcmV2aWV3T2ZGaWxlQXRVUkw6
dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBsb2FkRXJyb3IpIHsK
KyAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJsID0gV1RGTW92ZSh1cmwpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNFcnJvciAqIF9O
dWxsYWJsZSBsb2FkRXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGxvYWRFcnJvcikg
ewotICAgICAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gbG9hZCBmaWxl
IGZvciB1dWlkICVzOiAlQC4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpLCBbbG9hZEVycm9yIGxv
Y2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEo
KSwgbG9hZEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBsb2FkRXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3aXRo
IFVVSUQgJXMuIiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTW9k
ZWxFbGVtZW50LCAiTG9hZGVkIGZpbGUgd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgZWxlbWVudENv
bnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4dElkID0gW3ByZXZpZXcgY29udGV4dElkXV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV93ZWJQYWdlUHJveHkubW9kZWxF
bGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChlbGVtZW50Q29udGV4dENvcHksIHV1aWRD
b3B5LCBjb250ZXh0SWQpOworICAgICAgICAgICAgYXV0byBjb250ZXh0SWQgPSBbcHJldmlldyBj
b250ZXh0SWRdOworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZXh0SWRdICgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV9wYWlyKHV1aWQs
IGNvbnRleHRJZCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH1dOwotICAgIH1dOworICAg
ICAgICB9KS5nZXQoKV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
Mjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNTIxNiw2ICs1MjE2LDEwIEBACiAJCUJDMjA1MjgwMTFDOTQy
ODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBE
cmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdp
bmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEMyNzMy
RUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTBEMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExQTI3
MzJGNjZFMDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkI0MTFCMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTc2OCw2ICs5NzcyLDcgQEAKIAkJCQkzM0QzQTNCRDEzMzk2
MDk4MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKIAkJCQkwNzM2Qjc1MjI2MEQwMzlGMDBFMDY5
OTQgLyogTWVkaWFTZXNzaW9uICovLAogCQkJCTRBNDEwRjQxMTlBRjdCMjcwMDJFQkFCNSAvKiBN
ZWRpYVN0cmVhbSAqLywKKwkJCQlCQzJCNDEwQTI3MzJFRjY1MDBBMkQxOTEgLyogTW9kZWwgKi8s
CiAJCQkJNTEwNUIwRDIxNjJGN0E1RTAwRTI3NzA5IC8qIE5ldHdvcmsgKi8sCiAJCQkJMzEwOTk5
NzQxNDZDOEFBODAwMjlERUI5IC8qIE5vdGlmaWNhdGlvbnMgKFVzZXIpICovLAogCQkJCTFBNkZC
N0FBMTFFNjRCNDkwMERCMTM3MSAvKiBQbHVnaW5zICovLApAQCAtMTA1OTcsNiArMTA2MDIsMjUg
QEAKIAkJCXBhdGggPSBjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkMy
QjQxMEEyNzMyRUY2NTAwQTJEMTkxIC8qIE1vZGVsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEwQjI3MzJFRjc1MDBBMkQxOTEgLyogbWFjICov
LAorCQkJCUJDMkI0MTFCMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcCAqLywKKwkJCQlCQzJCNDExQTI3MzJGNjZFMDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQ
cm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBNb2RlbDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTBDMjczMkVG
OTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oICovLAorCQkJCUJD
MkI0MTBEMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5t
bSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJQkMyRTZFNzQxMTQxOTZGMDAwQTYzQjFFIC8qIFBsYXRmb3JtICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4
IEBACiAjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLSNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxNb2RlbEVsZW1lbnQuaD4KKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCiAjZW5k
aWYKIAogI2lmICFPUyhXSU5ET1dTKQpAQCAtNTc2LDkgKzU3Niw5IEBAIHZvaWQgV2ViUHJvY2Vz
czo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmEKICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rv
cnkpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCisjaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBpZiAoIXBhcmFtZXRlcnMubW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KTsKKyAgICAgICAgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkpOwogI2VuZGlmCiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKKyNpbmNsdWRlICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oIgor
I2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpX
ZWJNb2RlbFBsYXllclByb3ZpZGVyKFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UgeyBwYWdl
IH0KK3sKKyAgICBVTlVTRURfUEFSQU0obV9wYWdlKTsKK30KKworV2ViTW9kZWxQbGF5ZXJQcm92
aWRlcjo6fldlYk1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKy8vIE1BUks6IC0g
V2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisKK1JlZlB0cjxXZWJDb3Jl
OjpNb2RlbFBsYXllcj4gV2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIo
V2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIHJldHVybiBBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllcjo6Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNRVRF
UihjbGllbnQpOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVy
UHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQ
bGF5ZXJQcm92aWRlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsK
KworY2xhc3MgV2ViTW9kZWxQbGF5ZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpN
b2RlbFBsYXllclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBXZWJNb2RlbFBsYXllclByb3ZpZGVy
KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJNb2RlbFBsYXllclByb3ZpZGVyKCk7CisKK3By
aXZhdGU6CisgICAgLy8gV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVy
KFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JikgZmluYWw7CisKKyAgICBXZWJQYWdlJiBtX3Bh
Z2U7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTW9kZWxQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmll
dzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Ok1vZGVsUGxheWVyLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiBjcmVhdGUoV2ViUGFnZSYs
IFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgdmlydHVhbCB+QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIoKTsKKworICAgIHN0YXRpYyB2b2lkIHNldE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYp
OworCisgICAgLy8gV2ViQ29yZTo6TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwg
dm9pZCBsb2FkKFdlYkNvcmU6Ok1vZGVsJiwgV2ViQ29yZTo6TGF5b3V0U2l6ZSkgZmluYWw7Cisg
ICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpIGZpbmFsOworCisgICAgdm9pZCBjcmVh
dGVGaWxlKFdlYkNvcmU6Ok1vZGVsJik7CisgICAgdm9pZCBjbGVhckZpbGUoKTsKKworICAgIFdl
YWtQdHI8V2ViUGFnZT4gbV9wYWdlOworICAgIFdlYWtQdHI8V2ViQ29yZTo6TW9kZWxQbGF5ZXJD
bGllbnQ+IG1fY2xpZW50OworCisgICAgU3RyaW5nIG1fZmlsZVBhdGg7CisgICAgUmV0YWluUHRy
PEFTVklubGluZVByZXZpZXc+IG1faW5saW5lUHJldmlldzsKK307CisKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVX
X01BQykKKworI2ltcG9ydCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKKworI2lt
cG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbXBv
cnQgPFdlYkNvcmUvTW9kZWwuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdT
UEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VVSUQuaD4K
KworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRfTElOS19D
TEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitSZWY8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IEFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyOjpjcmVhdGUoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJD
bGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcihwYWdlLCBjbGllbnQpKTsKK30KKworQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKFdlYlBhZ2UmIHBhZ2Us
IFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX3BhZ2UgeyBwYWdl
IH0KKyAgICAsIG1fY2xpZW50IHsgY2xpZW50IH0KK3sKK30KKworQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcigpCit7CisgICAgY2xl
YXJGaWxlKCk7Cit9CisKK3N0YXRpYyBTdHJpbmcmIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNb2Rl
bEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3Rvcnk7Cit9CisKK3N0YXRpYyBjb25zdCBTdHJpbmcmIG1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKTsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkgPSBwYXRoOworfQorCit2b2lkIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJj
ZSkKK3sKKyAgICAvLyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0
byB0aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgpOworCisg
ICAgYXV0byBwYXRoVG9EaXJlY3RvcnkgPSBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwor
ICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aFRvRGly
ZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZpbGVUeXBl
Rm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpGaWxlVHlw
ZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lzdGVtOjpt
YWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5lZWQgdG8g
c3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lzdGVtOjpl
bmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51c2R6IjsK
KyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50
KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVTeXN0ZW06
Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAg
ICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjp3cml0
ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAgICBtX2Zp
bGVQYXRoID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXI6OmNsZWFyRmlsZSgpCit7CisgICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOworICAg
IG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOworfQorCisvLyBNQVJLOiAtIFdlYkNvcmU6Ok1v
ZGVsUGxheWVyIG92ZXJyaWRlcy4KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
cjo6bG9hZChXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UsIFdlYkNvcmU6OkxheW91dFNpemUg
c2l6ZSkKK3sKKyAgICBhdXRvIHN0cm9uZ0NsaWVudCA9IG1fY2xpZW50LmdldCgpOworICAgIGlm
ICghc3Ryb25nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzdHJvbmdQYWdl
ID0gbV9wYWdlLmdldCgpOworICAgIGlmICghc3Ryb25nUGFnZSkgeworICAgICAgICBzdHJvbmdD
bGllbnQtPmRpZEZhaWxMb2FkaW5nKCp0aGlzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2Vi
Q29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbW9kZWxTb3VyY2UudXJsKCksICJX
ZWJQYWdlIGRlc3Ryb3llZCJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNy
ZWF0ZUZpbGUobW9kZWxTb3VyY2UpOworCisgICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhb
YWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV0pOworICAgIExPRyhNb2RlbEVsZW1l
bnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6bW9kZWxEaWRDaGFuZ2UoKSBjcmVh
dGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwgKChTdHJpbmcpW21f
aW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4g
Y29tcGxldGlvbkhhbmRsZXIgPSBbd2Vha1NlbGYgPSBXZWFrUHRyIHsgKnRoaXMgfV0gKEV4cGVj
dGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4g
cmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0
KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBhdXRvIHN0cm9uZ0NsaWVudCA9IHN0cm9uZ1NlbGYtPm1fY2xpZW50LmdldCgpOworICAg
ICAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgcmVj
ZWl2ZWQgZXJyb3IgZnJvbSBVSVByb2Nlc3MiKTsKKyAgICAgICAgICAgIHN0cm9uZ0NsaWVudC0+
ZGlkRmFpbExvYWRpbmcoKnN0cm9uZ1NlbGYsIHJlc3VsdC5lcnJvcigpKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIFt1dWlkLCBjb250ZXh0SWRdID0g
KnJlc3VsdDsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkVVVJRCA9IFtzdHJvbmdTZWxmLT5tX2lu
bGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZzsKKworICAgICAgICBpZiAodXVpZCAhPSBleHBl
Y3RlZFVVSUQpIHsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQg
bWlzbWF0Y2gsIHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRh
KCksIGV4cGVjdGVkVVVJRC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHN0cm9uZ0NsaWVu
dC0+ZGlkRmFpbExvYWRpbmcoKnN0cm9uZ1NlbGYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBX
ZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sIG1ha2VTdHJpbmcoIkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4
dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2ZWQgIiwgdXVpZCwgIiBidXQgZXhwZWN0ZWQgIiwg
ZXhwZWN0ZWRVVUlELCAiLiIpIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgW3N0cm9uZ1NlbGYtPm1faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0OmNv
bnRleHRJZF07CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxs
eSBlc3RhYmxpc2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0Zjgo
KS5kYXRhKCkpOworCisgICAgICAgIHN0cm9uZ0NsaWVudC0+ZGlkRmluaXNoTG9hZGluZygqc3Ry
b25nU2VsZik7CisgICAgfTsKKyAgICAKKyAgICBzdHJvbmdQYWdlLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhV
Ukw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZp
ZXcgdXVpZF0uVVVJRFN0cmluZywgc2l6ZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
K30KKworUGxhdGZvcm1MYXllciogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmxheWVy
KCkKK3sKKyAgICByZXR1cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Cit9CisKK30KKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDExIEBACiAjaW5jbHVkZSAiV2ViTm90aWZp
Y2F0aW9uTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FU
SU9OUykKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05MSw3ICs5Niw3IEBAIHZvaWQg
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2UKICAgICAgICAgfTsKIAogI2lmIEVO
QUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSAm
JiBhbGxvd2VkKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgpICYmIGFsbG93
ZWQpIHsKICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6UmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb24oc2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSksIFdURk1vdmUoaW5u
ZXJQZXJtaXNzaW9uSGFuZGxlciksIG1fcGFnZS0+c2Vzc2lvbklEKCkudG9VSW50NjQoKSk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyNywxMSArMTUy
Nyw0IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50RnUKIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKLXsKLSAgICBtX3BhZ2UubW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyhlbGVtZW50LCB1cmwsIHV1aWQsIHNpemUpOwotfQotI2VuZGlm
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsOSArNDU4LDYgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFrZU1v
ZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEIGNvbnRlbnRMYXllcklkKSBjb25zdCBmaW5hbDsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogCiAgICAg
bXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhciB7IGZh
bHNlIH07CiAgICAgbXV0YWJsZSBib29sIG1fY2FjaGVkTWFpbkZyYW1lSGFzVmVydGljYWxTY3Jv
bGxiYXIgeyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcg
QEAKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2Vi
TWVkaWFLZXlTeXN0ZW1DbGllbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5LmgiCisj
aW5jbHVkZSAiV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYk1vdXNlRXZl
bnQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtMjczLDEwICsyNzQsNiBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVcpCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MTW9kZWxFbGVtZW50Lmg+
Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlICJEYXRhRGV0
ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKQEAgLTU3NSw3ICs1NzIsOCBAQCBXZWJQYWdlOjpXZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFS
ZWNvcmRlclByb3ZpZGVyPigqdGhpcyksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLAogICAgICAgICBXZWJQZXJtaXNzaW9uQ29udHJv
bGxlcjo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJTdG9yYWdlUHJv
dmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJTdG9yYWdlUHJvdmlkZXI+KCksCisg
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViTW9kZWxQbGF5ZXJQcm92aWRlcj4oKnRoaXMpCiAgICAg
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xp
ZW50KCp0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTc3MzksMjEgKzc3Mzcs
NiBAQCB2b2lkIFdlYlBhZ2U6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuCiB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdlYlBhZ2U6Om1v
ZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBzaXplKQotewotICAgIGlmIChhdXRvIGVsZW1lbnRDb250ZXh0ID0gY29udGV4
dEZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqZWxlbWVudENvbnRleHQsIHVybCwgdXVp
ZCwgc2l6ZSkpOwotfQotCi12b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0
LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBhdXRvIGVs
ZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29udGV4dCk7Ci0gICAgaWYgKGlzPFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICBkb3duY2FzdDxXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50PigqZWxlbWVudCkuaW5saW5lUHJldmlld0RpZE9idGFpbkNv
bnRleHRJZCh1dWlkLCBjb250ZXh0SWQpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZTo6c2Ny
b2xsVG9SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgb3JpZ2luKQogewogICAgIG1haW5GcmFtZVZpZXcoKS0+c2V0U2Ny
b2xsUG9zaXRpb24oSW50UG9pbnQodGFyZ2V0UmVjdC5taW5YTWluWUNvcm5lcigpKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAy
ODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyMCwxMCArMjIwLDYgQEAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBj
bGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCi0jaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotY2xhc3MgSFRNTE1vZGVsRWxlbWVudDsKLSNl
bmRpZgotCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgQ09F
UERpc3Bvc2l0aW9uIDogYm9vbDsKIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGln
aHQgOiBib29sOwpAQCAtMTQ5NiwxMCArMTQ5Miw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3Jl
ZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklk
KTsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9p
ZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
LSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmLCB1aW50MzJfdCk7Ci0jZW5kaWYK
IAogICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ3LDggKzY0Nyw0
IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNlbmRpZgogCiAg
ICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpG
bG9hdFBvaW50IG9yaWdpbikKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0gICAgTW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChzdHJ1Y3QgV2ViQ29y
ZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQsIFN0cmluZyB1dWlkLCB1aW50MzJfdCBj
b250ZXh0SWQpCi0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2Vp
bmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBv
dXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAg
ICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJl
bmNlczpncm91cE5hbWU6XSk6CisKIDIwMjEtMTEtMDYgIERhdmlkIEtpbHplciAgPGRka2lsemVy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJvbSBmcm9t
IHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkgYXMgb2YgcjI4NTM1NwpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjg1NDMwKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDksNiArMTQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0u
aD4KKyNpbXBvcnQgPFdlYkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+
CkBAIC0xNTQzLDcgKzE1NDQsOCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3Zp
ZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRl
KFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAgICBX
ZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKQEAgLTE4MjMsNyArMTgyNSw4IEBAIC0g
KGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICAgICAgbWFrZVVuaXF1
ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2Fk
Y2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2
YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAgIFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNv
bnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15
U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlT
dG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxN
b2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKwog
MjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQVg6IHJlbmFtZSBhY3Rpb25WZXJiKCkgYXMgbG9jYWxpemVkQWN0aW9uVmVyYigp
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjg1NDMwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RyYWdEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9EdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0VkaXRvci5oPgpAQCAtMzA2NSw3ICszMDY2LDggQEAgSFJFU1VMVCBXZWJWaWV3Ojpp
bml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogICAgICAgICBtYWtlVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRP
ckNyZWF0ZShmYWxzZSksCiAgICAgICAgIFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xs
ZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFn
ZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdl
UHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBs
YXllclByb3ZpZGVyPigpCiAgICAgKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9
IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCg==
</data>
<flag name="commit-queue"
          id="468378"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443609</attachid>
            <date>2021-11-08 14:33:11 -0800</date>
            <delta_ts>2021-11-08 15:26:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108143310.patch</filename>
            <type>text/plain</type>
            <size>101663</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJHUFVdIENvbm5lY3QgSlMgYmluZGluZ3MgY29kZSB0byBpbnRl
cm5hbCBXZWJHUFUgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBNb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
CiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1M
TW9kZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVu
dDo6fkhUTUxNb2RlbEVsZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9
CiAKIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsx
MjksMTYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAg
ICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikK
KyAgICAgICAgbV9tb2RlbFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9t
aXNlLT5pc0Z1bGZpbGxlZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJl
c29sdmUpOwogCi0gICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisg
ICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9u
ID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBA
IEhUTUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5n
JiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAg
cmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsK
LX0KLQotY29uc3QgU3RyaW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7Ci19Ci0jZW5kaWYKLQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29s
dmUoKnRoaXMpOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBt
b2RlbERpZENoYW5nZSgpOwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3Vw
cG9ydAorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAv
LyBGSVhNRTogRm9yIHRoZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBp
bmZvcm0gdGhlIHBhZ2UgdGhhdCB0aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJl
bmRlcj8gRm9yIHRoZSBjYXNlIG9mIG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxz
byBidWlsZCB0aGUgbW9kZWwgd2hlbi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4K
KworICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBu
b3csIGNyZWF0ZU1vZGVsUGxheWVyIHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1
c2VkLCBidXQgdGhhdCBuZWVkcyB0byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9u
YWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhl
IEhUTUxNb2RlbEVsZW1lbnQuIE9uY2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBs
YXllcigpIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQ
bGF5ZXIgPSBwYWdlLT5tb2RlbFBsYXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRo
aXMpOworICAgIGlmICghbV9tb2RlbFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdGVsbCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMg
d2VsbCwgc28gcGFzc2luZyB0aGlzCisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNu
J3QgbWFrZSBzZW5zZS4KKyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9k
ZWwsIHNpemUpOworfQorCitib29sIEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQ
bGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tb2RlbFBsYXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXll
cik7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXll
ciA9PSBtX21vZGVsUGxheWVyKTsKK30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQu
CisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1F
OiBBZGQgYSBuZXcgbWV0aG9kIHRvIE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVu
IGFuZCBtb3ZlIHRoaXMgaW50byB0aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxh
eWVyIGltcGxlbWVudGF0aW9uLgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1Mp
CiAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMjYgKzI3LDI0IEBACiAKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKIAorI2luY2x1ZGUg
Ik1vZGVsUGxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmF3UmVzb3VyY2UuaCIKICNp
bmNsdWRlICJDYWNoZWRSYXdSZXNvdXJjZUNsaWVudC5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291
cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJRExUeXBl
cy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKLU9CSkNfQ0xBU1MgQVNW
SW5saW5lUHJldmlldzsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1v
ZGVsOworY2xhc3MgTW9kZWxQbGF5ZXI7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNs
YXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAKLWNsYXNzIEhUTUxNb2Rl
bEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVz
b3VyY2VDbGllbnQgeworY2xhc3MgSFRNTE1vZGVsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1M
RWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwgcHVibGljIE1vZGVsUGxh
eWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhUTUxNb2RlbEVsZW1lbnQp
OwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1vZGVsRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNTUsMjEgKzUzLDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNvdXJjZXNDaGFuZ2VkKCk7CiAgICAgY29uc3QgVVJMJiBjdXJyZW50U3JjKCkg
Y29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KIAorICAgIC8vIE1BUks6IERPTSBGdW5jdGlv
bnMgYW5kIEF0dHJpYnV0ZXMKKwogICAgIHVzaW5nIFJlYWR5UHJvbWlzZSA9IERPTVByb21pc2VQ
cm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNlPEhUTUxNb2RlbEVsZW1lbnQ+PjsK
ICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFkeVByb21pc2UuZ2V0KCk7
IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1vZGVsRGF0YSgpIGNvbnN0OwogICAgIFJl
ZlB0cjxNb2RlbD4gbW9kZWwoKSBjb25zdDsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFVykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgY29u
c3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGJvb2wgdXNlc1BsYXRmb3JtTGF5
ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNv
bnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKTsKLSNlbmRpZgogCiAgICAgdm9p
ZCBlbnRlckZ1bGxzY3JlZW4oKTsKIApAQCAtNzksMTMgKzcyLDkgQEAgcHJpdmF0ZToKICAgICBI
VE1MTW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCiAgICAg
dm9pZCBzZXRTb3VyY2VVUkwoY29uc3QgVVJMJik7Ci0gICAgSFRNTE1vZGVsRWxlbWVudCYgcmVh
ZHlQcm9taXNlUmVzb2x2ZSgpOwotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLSAgICB2b2lkIGNsZWFyRmlsZSgpOwotICAgIHZvaWQgY3JlYXRlRmlsZSgpOwogICAgIHZv
aWQgbW9kZWxEaWRDaGFuZ2UoKTsKLSNlbmRpZgorCisgICAgSFRNTE1vZGVsRWxlbWVudCYgcmVh
ZHlQcm9taXNlUmVzb2x2ZSgpOwogCiAgICAgLy8gRE9NIG92ZXJyaWRlcy4KICAgICB2b2lkIGRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KSBmaW5hbDsKQEAgLTk3LDYgKzg2LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkYXRh
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBkYXRhLCBpbnQgZGF0YUxl
bmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNv
bnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCisgICAgLy8gTW9kZWxQbGF5ZXJDbGll
bnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpIGZp
bmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNvdXJj
ZUVycm9yJikgZmluYWw7CisKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOwpAQCAtMTA0LDEwICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgVW5pcXVl
UmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0
ZSB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAg
IFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lu
bGluZVByZXZpZXc7Ci0jZW5kaWYKKyAgICBSZWZQdHI8TW9kZWxQbGF5ZXI+IG1fbW9kZWxQbGF5
ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwx
MzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTW9kZWxFbGVtZW50LmgiCi0KLSNp
ZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9tZUNsaWVudC5oIgotI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5
ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCi0jaW5jbHVkZSAiU2V0
dGluZ3MuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+Ci0jaW5j
bHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUg
PHd0Zi9VVUlELmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7
Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcpOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlRmlsZSgpCi17
Ci0gICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhl
IG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCi0KLSAgICBjbGVhckZpbGUoKTsKLQotICAgIGF1
dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKTsKLSAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHBhdGhUb0RpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9yeSkpIHsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KLSAgICBhdXRvIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KSArICIudXNkeiI7Ci0gICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKLSAgICBhdXRvIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPD0gMCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgp
KTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Ci0gICAgbV9maWxlUGF0aCA9IGZp
bGVQYXRoOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFyRmlsZSgpCi17Ci0gICAg
aWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGaWxlU3lz
dGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwotICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmlu
ZygpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKLXsKLSAg
ICBjcmVhdGVGaWxlKCk7Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBzaXplID0g
cmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5zaXplKCk7Ci0KLSAgICBt
X2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgp
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpXSk7Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlk
Q2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIs
ICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEo
KSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLQotICAgIGlmIChhdXRvKiBwYWdlID0g
ZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLm1vZGVs
RWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVt
UGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXpl
KTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotewotICAgIGlm
ICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRd
LlVVSURTdHJpbmcpIHsKLSAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1l
bnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNl
aXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCAoKFN0cmluZylb
bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgW21faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250ZXh0
OmNvbnRleHRJZF07Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6Omlu
bGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQg
cmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKLQot
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJlbmRl
cmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotfQotCi1QbGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxF
bGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gW21faW5saW5lUHJl
dmlldyBsYXllcl07Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAm
JiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK01vZGVsUGxheWVyOjp+TW9kZWxQbGF5ZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxheW91dFNpemUuaCIKKyNpbmNsdWRl
ICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBNb2RlbDsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQ
bGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbFBsYXllcj4geworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfk1vZGVs
UGxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYsIExheW91dFNpemUpID0g
MDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgPSAwOworfTsKKworfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVs
UGxheWVyQ2xpZW50Ojp+TW9kZWxQbGF5ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2Rl
bFBsYXllckNsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIFJlc291cmNlRXJyb3I7CisKK2NsYXNzIE1vZGVs
UGxheWVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vZGVsUGxheWVyQ2xpZW50PiB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXJDbGllbnQoKTsKKworICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYsIGNvbnN0IFJlc291cmNlRXJyb3ImKSA9
IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3Zp
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllclByb3ZpZGVyOjp+TW9kZWxQbGF5ZXJQcm92
aWRlcigpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
clByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIE1vZGVsUGxheWVyQ2xpZW50Owor
CitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2RlbFBsYXllclByb3ZpZGVyIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2RlbFBsYXllclByb3Zp
ZGVyKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBhbGwgY2xpZW50cyBoYXZlIGFkb3B0ZWQgTW9k
ZWxQbGF5ZXJQcm92aWRlciwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSBjaGFuZ2VkIHRvIHJldHVy
biBhIFJlZjxNb2RlbFBsYXllcj4KKyAgICB2aXJ0dWFsIFJlZlB0cjxNb2RlbFBsYXllcj4gY3Jl
YXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKSA9IDA7Cit9OworCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworI2luY2x1ZGUgIk1vZGVsLmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
ZjxEdW1teU1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUoTW9kZWxQbGF5ZXJD
bGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEdW1teU1vZGVsUGxh
eWVyKGNsaWVudCkpOworfQorCitEdW1teU1vZGVsUGxheWVyOjpEdW1teU1vZGVsUGxheWVyKE1v
ZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudCB7IGNsaWVudCB9Cit7Cit9
CisKK0R1bW15TW9kZWxQbGF5ZXI6On5EdW1teU1vZGVsUGxheWVyKCkgPSBkZWZhdWx0OworCit2
b2lkIER1bW15TW9kZWxQbGF5ZXI6OmxvYWQoTW9kZWwmIG1vZGVsLCBMYXlvdXRTaXplKQorewor
ICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZEZhaWxMb2FkaW5nKCp0aGlz
LCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbW9kZWwudXJs
KCksICJUcnlpbmcgdG8gbG9hZCBtb2RlbCB2aWEgRHVtbXlNb2RlbFBsYXllciJfcyB9KTsKK30K
KworUGxhdGZvcm1MYXllciogRHVtbXlNb2RlbFBsYXllcjo6bGF5ZXIoKQoreworICAgIHJldHVy
biBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1
bW15TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgorI2luY2x1ZGUg
Ik1vZGVsUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIER1bW15TW9kZWxQbGF5ZXIgZmluYWwgOiBwdWJsaWMgTW9kZWxQbGF5ZXIgeworcHVi
bGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RHVtbXlNb2RlbFBsYXllcj4gY3Jl
YXRlKE1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+RHVt
bXlNb2RlbFBsYXllcigpOworCitwcml2YXRlOgorICAgIER1bW15TW9kZWxQbGF5ZXIoTW9kZWxQ
bGF5ZXJDbGllbnQmKTsKKworICAgIC8vIE1vZGVsUGxheWVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0
dWFsIHZvaWQgbG9hZChNb2RlbCYsIExheW91dFNpemUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
UGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKworICAgIFdlYWtQdHI8TW9kZWxQbGF5
ZXJDbGllbnQ+IG1fY2xpZW50OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKKworI2luY2x1
ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXI6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsK
K0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6fkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpID0g
ZGVmYXVsdDsKKworUmVmUHRyPE1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6
OmNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0
dXJuIER1bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShjbGllbnQpOworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyIGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyUHJvdmlkZXIgeworcHVibGljOgorICAg
IFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpOworCitwcml2YXRlOgor
ICAgIC8vIE1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgUmVmUHRy
PE1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpIG92ZXJy
aWRlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDY1
LDYgKzQwNjUsMTEgQEAKIAkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkxIC8qIENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyM0Yw
REIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZGNEE0MDA5RkRDOTEgLyog
R2VuZXJhdGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGlj
ZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggKi87
IH07CisJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMTMyNzMyRjA2MjAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkxIC8qIE1vZGVsUGxheWVy
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMTkyNzMy
RjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEwRTI3MzJFRkU0MDBBMkQxOTEgLyogTW9k
ZWxQbGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlCQzJCNDEyNTI3MzM2MDA1MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMjMy
NzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEzMTI3MzRBMDg2MDBBMkQxOTEg
LyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEyMDI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQkMyQ0JGNEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkNC
RjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CiAJCUJD
MkNDQTEwMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkNDQTBFMjY1NUREQjIw
MEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyog
SlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnQuaCAqLzsgfTsKQEAgLTEwNzk1LDcgKzEwODAwLDYgQEAKIAkJNzFDMjlFMzEyMDNDRTc2QzAw
OEYzNkQyIC8qIENTU0FuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTQW5p
bWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDNUJCMUIxRkI2MTFF
QTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEFuaW1h
dGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUM5MTYwNzFEMTQ4M0Ez
MDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxQ0FBM0Q5MjY4RDBCRjkwMEYyNTQxMCAvKiBIVE1M
TW9kZWxFbGVtZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBIVE1MTW9kZWxFbGVt
ZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQ0UyQzUxMjIwOURD
N0YwMEM0OTRCRCAvKiBNb3VzZUV2ZW50SU9TLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vdXNlRXZlbnRJT1MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MUQwMkQ5MDFEQjU1QzRFMDBERDVDRjUgLyogbWFpbi5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1haW4uanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRDAyRDkyMURCNTVDNEUwMERENUNGNSAvKiBtZWRpYS1jb250cm9sbGVyLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gIm1lZGlhLWNvbnRyb2xsZXIu
anMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MjYsNiArMTQ3MzAsMTYgQEAK
IAkJQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNzRCMzAxNDBFQkVEODAwRUFE
RkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4ODAgLyogQ29sb3JJbnB1
dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JJbnB1
dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwRTI3MzJFRkU0
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWxQbGF5
ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTIyNzMyRjAz
QzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZGVsUGxheWVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQx
MTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVs
UGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTE0MjczMkYwNjIw
MEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RlbFBsYXll
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTE1MjczMkYwQzcwMEEy
RDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVsUGxheWVy
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTYyNzMyRjBD
NzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTIxMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjMyNzMzNUUxRjAwQTJE
MTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtbXlNb2RlbFBsYXll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyNDI3MzM1RTFGMDBBMkQx
OTEgLyogRHVtbXlNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1teU1vZGVs
UGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGNEIxNDBGMUE2
NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0NBMEUyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXN0aW5h
dGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODk4LDEx
ICsxODkxMiwxMSBAQAogCQkxQTU2OUNDNDBEN0UyQjYwMDA3QzM5ODMgLyogYnJpZGdlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1OUI1OTc3MTExMDg2
NTU2MDA3MTU5RTggLyoganNjICovLAogCQkJCTFBNTY5Q0UyMEQ3RTJCODIwMDdDMzk4MyAvKiBv
YmpjICovLAogCQkJCTU5OUU3NThGMTEwNTVBMUYwMEQ5MDRGQSAvKiBCcmlkZ2UuaCAqLywKIAkJ
CQkxQTcxRDU3OTBGMzM4MTkwMDBGOUNFNEUgLyogSWRlbnRpZmllclJlcC5jcHAgKi8sCiAJCQkJ
MUE3MUQ1N0EwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuaCAqLywKLQkJCQk1OUI1
OTc3MTExMDg2NTU2MDA3MTU5RTggLyoganNjICovLAogCQkJCTFBNTY5Q0VGMEQ3RTJCODIwMDdD
Mzk4MyAvKiBydW50aW1lX2FycmF5LmNwcCAqLywKIAkJCQkxQTU2OUNGMDBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZV9hcnJheS5oICovLAogCQkJCTFBNTY5Q0YxMEQ3RTJCODIwMDdDMzk4MyAv
KiBydW50aW1lX21ldGhvZC5jcHAgKi8sCkBAIC0yMzc0MCwxMCArMjM3NTQsMTYgQEAKIAkJNzFG
ODQ5Q0MyNTY1QUI3RTAwOEMzN0YyIC8qIG1vZGVsLWVsZW1lbnQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTIyMjczMzVFMEMwMEEyRDE5MSAv
KiBkdW1teSAqLywKIAkJCQk3MUEzRDE4MDI1NjJCODI1MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxl
bWVudC5jcHAgKi8sCiAJCQkJNzFBM0QxN0QyNTYyQjgyNDAwNjRFMkE2IC8qIEhUTUxNb2RlbEVs
ZW1lbnQuaCAqLywKIAkJCQk3MUEzRDE3RjI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxl
bWVudC5pZGwgKi8sCi0JCQkJNzFDQUEzRDkyNjhEMEJGOTAwRjI1NDEwIC8qIEhUTUxNb2RlbEVs
ZW1lbnRDb2NvYS5tbSAqLywKKwkJCQlCQzJCNDExNDI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQ
bGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTEzMjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXll
ci5oICovLAorCQkJCUJDMkI0MTEyMjczMkYwM0MwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVu
dC5jcHAgKi8sCisJCQkJQkMyQjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xp
ZW50LmggKi8sCisJCQkJQkMyQjQxMTYyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJv
dmlkZXIuY3BwICovLAorCQkJCUJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXll
clByb3ZpZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9ICJtb2RlbC1lbGVtZW50IjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yODMwOSw2ICsyODMyOSwxNyBAQAogCQkJcGF0aCA9
IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkMyQjQxMjIyNzMzNUUw
QzAwQTJEMTkxIC8qIGR1bW15ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlCQzJCNDEyNDI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5j
cHAgKi8sCisJCQkJQkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIu
aCAqLywKKwkJCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDEyMDI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGR1bW15OworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1
c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zMzE3
Niw2ICszMzIwNyw4IEBACiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjU2REIyNTMwMUFDODAwMTdCNDcyIC8qIERyYXdH
bHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQTkxRjYyNEQzMkREQzAwQkZE
ODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDEy
NTI3MzM2MDA1MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQkMyQjQxMzEyNzM0QTA4NjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3QTgyNTUxRDQxRjAwNThERDNBIC8qIER1bW15U3Bl
ZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMwODVERjgyNkU4
MjJDNzAwMEVDNkE3IC8qIER1bW15U3RvcmFnZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUJBNjZGMTE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1pY0xpbmtlckludGVycG9zaW5nLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM1MDg2LDYgKzM1MTE5LDkgQEAKIAkJCQlDREYyQjAxOTE4MjA1
NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxNTYxMEMy
MzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTJEQzhEMzk4MjVGMkZFOTcwMENGQ0JBQiAvKiBNb2RlbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8qIE1vZGVsUGxheWVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExOTI3MzJGNDI5MDBBMkQxOTEgLyogTW9kZWxQ
bGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE4MjczMkY0MjMwMEEyRDE5
MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNkQ3NEFENTA5
QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0Y2hGYWlsdXJlS2lu
ZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZBMDMyIC8qIE1vZHVs
ZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAK
ICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIu
aCIKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiRHVtbXlTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnQu
aCIKQEAgLTU4OCwxMiArNTg5LDYgQEAgdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6dGFrZU1vZGVs
RWxlbWVudAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQotdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QKLXsKLX0KLSNlbmRpZgotCiB2b2lkIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3Rh
dGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZyYW1lUG9saWN5RnVu
Y3Rpb24mJikKIHsKIH0KQEAgLTExOTgsNyArMTE5Myw4IEBAIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uV2l0aEUKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxFbXB0eU1lZGlhUmVj
b3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgRW1wdHlCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6
OmNyZWF0ZSgpLAogICAgICAgICBEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwK
LSAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBt
YWtlVW5pcXVlUmVmPER1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVl
UmVmPER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgIH07CiAKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xpZW50OwpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjIs
MTAgKzIyMiw2IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGljIENocm9tZUMKICNl
bmRpZgogCiAgICAgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9Ci0KLSNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgZmluYWw7Ci0j
ZW5kaWYKIH07CiAKIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBlbXB0eURpYWdub3N0aWNMb2dn
aW5nQ2xpZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9u
IDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTYwNyw5ICs2MDcsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX0lPUykKICAgICB2aXJ0dWFsIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3Jl
ZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKSBjb25zdCB7IH0KICNl
bmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdmlydHVhbCB2
b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
IGNvbnN0IHsgfTsKLSNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB+Q2hyb21lQ2xp
ZW50KCkgPSBkZWZhdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyODU0MzAp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2
ICs4OSw3IEBACiAjaW5jbHVkZSAiTG93UG93ZXJNb2RlTm90aWZpZXIuaCIKICNpbmNsdWRlICJN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVyUHJvdmlkZXIu
aCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdG9y
LmgiCiAjaW5jbHVkZSAiUGFnZUNvbG9yU2FtcGxlci5oIgogI2luY2x1ZGUgIlBhZ2VDb25maWd1
cmF0aW9uLmgiCkBAIC0zMzMsNiArMzM0LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYmIHBhZ2VDb25maQogICAgICwgbV9wZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLnBlcm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIG1fcmVwb3J0aW5nRW5k
cG9pbnRzQ2FjaGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5yZXBvcnRpbmdFbmRwb2ludHND
YWNoZSkpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9u
LnN0b3JhZ2VQcm92aWRlcikpCisgICAgLCBtX21vZGVsUGxheWVyUHJvdmlkZXIoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3ZpZGVyKSkKIHsKICAgICB1cGRhdGVUaW1l
clRocm90dGxpbmdTdGF0ZSgpOwogCkBAIC0zNzU1LDQgKzM3NTcsOSBAQCBTdG9yYWdlQ29ubmVj
dGlvbiYgUGFnZTo6c3RvcmFnZUNvbm5lY3RpCiAgICAgcmV0dXJuIG1fc3RvcmFnZVByb3ZpZGVy
LT5zdG9yYWdlQ29ubmVjdGlvbigpOwogfQogCitNb2RlbFBsYXllclByb3ZpZGVyJiBQYWdlOjpt
b2RlbFBsYXllclByb3ZpZGVyKCkKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXllclByb3ZpZGVy
LmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw2ICsxMjQsNyBAQCBjbGFzcyBNZWRpYUNhblN0YXJ0TGlzdGVuZXI7CiBj
bGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOwog
Y2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOworY2xhc3MgTW9kZWxQbGF5ZXJQ
cm92aWRlcjsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogY2xhc3MgUGFnZUNvbnNvbGVDbGll
bnQ7CiBjbGFzcyBQYWdlRGVidWdnYWJsZTsKQEAgLTg5Niw2ICs4OTcsOCBAQCBwdWJsaWM6CiAg
ICAgV0VCQ09SRV9FWFBPUlQgUGVybWlzc2lvbkNvbnRyb2xsZXImIHBlcm1pc3Npb25Db250cm9s
bGVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZUNvbm5lY3Rpb24mIHN0b3JhZ2VDb25u
ZWN0aW9uKCk7CiAKKyAgICBNb2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXllclByb3ZpZGVy
KCk7CisKIHByaXZhdGU6CiAgICAgc3RydWN0IE5hdmlnYXRpb24gewogICAgICAgICBSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW47CkBAIC0xMjI4LDYgKzEyMzEsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4gbV9wZXJtaXNzaW9uQ29udHJvbGxlcjsKICAgICBSZWZQ
dHI8UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU+IG1fcmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU7CiAg
ICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7CisgICAgVW5p
cXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRlcjsKIAogI2lm
IEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB1c2luZyBDYWNoZWRUZXh0UmVjb2duaXRpb25S
ZXN1bHQgPSBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRSZWN0PjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
UGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGVybWlzc2lvbkNvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKQEAgLTYyLDcgKzYzLDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3Vy
YXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYm
IGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlx
dWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0
b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlciwgUmVmPFVzZXJDb250ZW50UHJv
dmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlciwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGJh
Y2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2llSmFyPiYmIGNvb2tpZUphciwgVW5pcXVlUmVmPFBy
b2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9ncmVzc1RyYWNrZXJDbGllbnQsIFVuaXF1ZVJlZjxG
cmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnRGb3JNYWluRnJhbWUsIFVuaXF1ZVJlZjxT
cGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmIHNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIsIFVu
aXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYgbWVkaWFSZWNvcmRlclByb3ZpZGVyLCBS
ZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmIGJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwg
UmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmIHBlcm1pc3Npb25Db250cm9sbGVyLCBVbmlxdWVS
ZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3JhZ2VQcm92aWRlcikKK1BhZ2VDb25maWd1cmF0aW9u
OjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVuaXF1ZVJlZjxF
ZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8U29ja2V0UHJvdmlkZXI+JiYgc29ja2V0
UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiBsaWJXZWJSVENQcm92aWRl
ciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNhY2hlU3RvcmFnZVByb3ZpZGVyLCBSZWY8
VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3ZpZGVyLCBSZWY8QmFja0Zvcndh
cmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJlZjxDb29raWVKYXI+JiYgY29va2llSmFy
LCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIHByb2dyZXNzVHJhY2tlckNsaWVu
dCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudEZvck1haW5GcmFt
ZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYgc3BlZWNoUmVjb2duaXRp
b25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiBtZWRpYVJlY29y
ZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYgYnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYgcGVybWlzc2lvbkNvbnRy
b2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYgc3RvcmFnZVByb3ZpZGVyLCBVbmlx
dWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJiBtb2RlbFBsYXllclByb3ZpZGVyKQogICAgIDog
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIGVkaXRvckNsaWVudChXVEZNb3ZlKGVkaXRvckNs
aWVudCkpCiAgICAgLCBzb2NrZXRQcm92aWRlcihXVEZNb3ZlKHNvY2tldFByb3ZpZGVyKSkKQEAg
LTc4LDYgKzc5LDcgQEAgUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFBBTAog
ICAgICwgbWVkaWFSZWNvcmRlclByb3ZpZGVyKFdURk1vdmUobWVkaWFSZWNvcmRlclByb3ZpZGVy
KSkKICAgICAsIHBlcm1pc3Npb25Db250cm9sbGVyKFdURk1vdmUocGVybWlzc2lvbkNvbnRyb2xs
ZXIpKQogICAgICwgc3RvcmFnZVByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVByb3ZpZGVyKSkKKyAg
ICAsIG1vZGVsUGxheWVyUHJvdmlkZXIoV1RGTW92ZShtb2RlbFBsYXllclByb3ZpZGVyKSkKIHsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNp
b24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIGNsYXNzIEF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvckNsaWVudDsKIGNsYXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OwogY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7Ci1jbGFzcyBDb29raWVK
YXI7CiBjbGFzcyBDaHJvbWVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVudDsKK2NsYXNz
IENvb2tpZUphcjsKIGNsYXNzIERhdGFiYXNlUHJvdmlkZXI7CiBjbGFzcyBEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudDsKIGNsYXNzIERyYWdDbGllbnQ7CkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIEZy
YW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgTGliV2ViUlRD
UHJvdmlkZXI7CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CitjbGFzcyBNb2RlbFBsYXll
clByb3ZpZGVyOwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgUGVyZm9y
bWFuY2VMb2dnaW5nQ2xpZW50OwogY2xhc3MgUGVybWlzc2lvbkNvbnRyb2xsZXI7CkBAIC02NSw2
ICs2Niw3IEBAIGNsYXNzIFByb2dyZXNzVHJhY2tlckNsaWVudDsKIGNsYXNzIFJlcG9ydGluZ0Vu
ZHBvaW50c0NhY2hlOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTcGVlY2hSZWNvZ25p
dGlvblByb3ZpZGVyOworY2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogY2xhc3MgU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xhc3MgU3RvcmFnZVByb3ZpZGVyOwogY2xhc3MgVXNlckNv
bnRlbnRQcm92aWRlcjsKQEAgLTcyLDEyICs3NCwxMSBAQCBjbGFzcyBVc2VyQ29udGVudFVSTFBh
dHRlcm47CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZpc2l0ZWRMaW5r
U3RvcmU7CiBjbGFzcyBXZWJHTFN0YXRlVHJhY2tlcjsKLWNsYXNzIFNwZWVjaFN5bnRoZXNpc0Ns
aWVudDsKIAogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFBhZ2VDb25maWd1cmF0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQsIFVu
aXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiwgVW5pcXVlUmVm
PExpYldlYlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYsIFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYsIFJlZjxDb29r
aWVKYXI+JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxG
cmFtZUxvYWRlckNsaWVudD4mJiwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+
JiYsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYsIFJlZjxCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiwgVW5pcXVlUmVmPFN0
b3JhZ2VQcm92aWRlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24o
UEFMOjpTZXNzaW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxTb2NrZXRQcm92
aWRlcj4mJiwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2FjaGVTdG9yYWdl
UHJvdmlkZXI+JiYsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmLCBSZWY8QmFja0ZvcndhcmRD
bGllbnQ+JiYsIFJlZjxDb29raWVKYXI+JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGll
bnQ+JiYsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiwgVW5pcXVlUmVmPFNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYs
IFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxl
cj4mJiwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1vZGVsUGxheWVy
UHJvdmlkZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJhdGlvbigpOwog
ICAgIFBhZ2VDb25maWd1cmF0aW9uKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogCkBAIC0xNDUsNiAr
MTQ2LDggQEAgcHVibGljOgogCiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiBwZXJtaXNz
aW9uQ29udHJvbGxlcjsKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiBzdG9yYWdlUHJv
dmlkZXI7CisKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4gbW9kZWxQbGF5ZXJQ
cm92aWRlcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5
NywxMyArMTA5NywxMyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQ29uZmlndXJh
CiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgZWxzZSBpZiAoaXM8UmVuZGVyTW9kZWw+
KHJlbmRlcmVyKCkpKSB7CiAgICAgICAgIGF1dG8gZWxlbWVudCA9IGRvd25jYXN0PEhUTUxNb2Rl
bEVsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotICAgICAgICBpZiAoYXV0byogcGxhdGZvcm1MYXllciA9IGVsZW1lbnQt
PnBsYXRmb3JtTGF5ZXIoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVu
dHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNM
YXllclB1cnBvc2U6Ok1vZGVsKTsKLSNlbHNlCi0gICAgICAgIGlmIChhdXRvIG1vZGVsID0gZWxl
bWVudC0+bW9kZWwoKSkKKworICAgICAgICAvLyBTb21lIE1vZGVsUGxheWVycyB1c2UgYSBwbGF0
Zm9ybUxheWVyKCkgYW5kIHNvbWUgcGFzcyB0aGUgTW9kZWwgdG8gdGhlIGxheWVyIGFzIGNvbnRl
bnRzLAorICAgICAgICAvLyBidXQgdGhpcyBpcyBhIHJ1bnRpbWUgZGVjaXNpb24uCisgICAgICAg
IGlmIChlbGVtZW50LT51c2VzUGxhdGZvcm1MYXllcigpKSB7CisgICAgICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKGVsZW1lbnQtPnBsYXRmb3JtTGF5
ZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok1vZGVsKTsKKyAgICAg
ICAgfSBlbHNlIGlmIChhdXRvIG1vZGVsID0gZWxlbWVudC0+bW9kZWwoKSkKICAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01vZGVsKFdURk1vdmUobW9kZWwpKTsKLSNl
bmRpZgogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTEtMDggIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIG91
dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWlu
Q29udGV4dElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVy
UHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTW9kZWxQbGF5ZXJQcm92
aWRlcjo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1vZGVs
UGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWM6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJL
aXQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToK
KyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZUZp
bGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y2xl
YXJGaWxlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6
bGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6
c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorCiAyMDIxLTExLTA4ICBEZXZpbiBSb3Vz
c28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJWaWV3LnNjcm9sbFZpZXcuaW5k
aWNhdG9yU3R5bGUgZG9lcyBub3Qgd29yayBvbiBpT1MgMTUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
U291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2
aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNTkyLDYgKzU5Miw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlh
U2Vzc2kKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9u
cy5jcHAKIFdlYlByb2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcAogCitXZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3Bw
CisKIFdlYlByb2Nlc3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvRGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY1NSw2ICs2NTUsOCBAQCBXZWJQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yVUlNCiAKIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9X
ZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmNwcAogCitXZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQorCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1t
CiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVy
LmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxl
bWVudENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIG1vZGVsRWxl
bWVudERpZENyZWF0ZVByZXZpZXcoVVJMLCBTdHJpbmcsIFdlYkNvcmU6OkZsb2F0U2l6ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4s
IFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA4MDUsMTUgKzEwODA1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VNb2Rl
bEVsZW1lbnRGdWxscwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQotdm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHV1aWQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHV1aWQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVy
KCktPm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29udGV4dCwgdXJsLCB1dWlkLCBzaXpl
KTsKLX0KLQotdm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotewotICAgIGlmIChoYXNSdW5uaW5nUHJv
Y2VzcygpKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnRleHQsIHV1aWQsIGNvbnRleHRJZCkpOworICAgIG1v
ZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyh1cmws
IHV1aWQsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU4OSw4ICs1ODksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50
RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVu
dExheWVySWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykK
LSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxl
bWVudENvbnRleHQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFNpemUmKTsKLSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmLCB1aW50MzJf
dCk7CisgICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgVGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGVudExheWVySUQpCiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoc3RydWN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBVUkwgdXJsLCBTdHJpbmcgdXVpZCwg
V2ViQ29yZTo6RmxvYXRTaXplIHNpemUpCisgICAgTW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmll
dyhVUkwgdXJsLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpIC0+IChFeHBl
Y3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+
IHJlc3VsdCkgQXN5bmMKICNlbmRpZgogCiAgICAgcmVxdWVzdFBlcm1pc3Npb24oc3RydWN0IFdl
YkNvcmU6OkNsaWVudE9yaWdpbiBvcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpQZXJtaXNzaW9uRGVz
Y3JpcHRvciBkZXNjcmlwdG9yKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OlBlcm1pc3Npb25T
dGF0ZSBzdGF0ZSkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01v
ZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9u
IDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENv
bnRyb2xsZXJDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2VuZGlmCkBAIC0xMjQsMTAgKzEyNSwx
MiBAQCB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnRha2VNb2RlbEVsCiAKICNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQogCi12b2lkIE1vZGVsRWxlbWVudENvbnRyb2xs
ZXI6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiB1dWlkLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpCit2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xs
ZXI6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMIGZpbGVVUkwsIFN0cmluZyB1dWlk
LCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3Rl
ZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5LnByZWZlcmVu
Y2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQorICAgIGlmICghbV93ZWJQYWdlUHJveHkucHJl
ZmVyZW5jZXMoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIk1vZGVsIGVsZW1lbnQgZGlzYWJsZWQi
X3MgfSkpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBuc1VVSUQgPSBhZG9w
dE5TKFtbTlNVVUlEIGFsbG9jXSBpbml0V2l0aFVVSURTdHJpbmc6dXVpZF0pOwogICAgIGF1dG8g
cHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkgVVVJ
RDpuc1VVSUQuZ2V0KCldKTsKQEAgLTE0MCwzMiArMTQzLDQ5IEBAIHZvaWQgTW9kZWxFbGVtZW50
Q29udHJvbGxlcjo6bW9kZWxFbGVtZW4KICAgICBlbHNlCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1
ZSA9IHByZXZpZXc7CiAKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgbm90IGp1c3QgdXNpbmcg
bm9ybWFsIFVSTCAtPiBOU1VSTCBjb252ZXJzaW9uPworICAgIGF1dG8gdXJsID0gYWRvcHROUyhb
W05TVVJMIGFsbG9jXSBpbml0RmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgo
KV0pOworCiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBXZWFrUHRy
IHdlYWtUaGlzIHsgKnRoaXMgfTsKLSAgICBhdXRvIGVsZW1lbnRDb250ZXh0Q29weSA9IGNvbnRl
eHQ7Ci0gICAgYXV0byB1dWlkQ29weSA9IHV1aWQ7Ci0gICAgTlNVUkwgKnVybCA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6ZmlsZVVSTC5maWxlU3lzdGVtUGF0aCgpXTsKLSAgICBbcHJldmlldyBz
ZXR1cFJlbW90ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051
bGxhYmxlIGNvbnRleHRFcnJvcikgeworICAgIFtwcmV2aWV3IHNldHVwUmVtb3RlQ29ubmVjdGlv
bldpdGhDb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7
ICp0aGlzIH0sIHByZXZpZXcsIHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVy
bCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vy
cm9yICogX051bGxhYmxlIGNvbnRleHRFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjb250
ZXh0RXJyb3IpIHsKLSAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gY3Jl
YXRlIHJlbW90ZSBjb25uZWN0aW9uIGZvciB1dWlkICVzOiAlQC4iLCB1dWlkQ29weS51dGY4KCku
ZGF0YSgpLCBbY29udGV4dEVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgICAg
ICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBm
b3IgdXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBjb250ZXh0RXJyb3IubG9jYWxp
emVkRGVzY3JpcHRpb24pOworCisgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgY29udGV4dEVy
cm9yIH1dICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJFc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiB3aXRoIFVVSUQgJXMuIiwgdXVpZENvcHkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJFc3RhYmxpc2hlZCByZW1vdGUgY29u
bmVjdGlvbiB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBb
cHJldmlldyBwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TRXJyb3IgKiBfTnVsbGFibGUgbG9hZEVycm9yKSB7CisgICAgICAgIFtwcmV2aWV3IHByZXBh
cmVQcmV2aWV3T2ZGaWxlQXRVUkw6dXJsLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9j
a1B0cihbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcHJldmlldywgdXVpZCA9IFdURk1v
dmUodXVpZCksIHVybCA9IFdURk1vdmUodXJsKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0gKE5TRXJyb3IgKiBfTnVsbGFibGUgbG9hZEVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmIChsb2FkRXJyb3IpIHsKLSAgICAgICAgICAgICAgICBMT0co
TW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVp
ZENvcHkudXRmOCgpLmRhdGEoKSwgW2xvYWRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOwor
ICAgICAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gbG9hZCBmaWxlIGZv
ciB1dWlkICVzOiAlQC4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksIGxvYWRFcnJvci5sb2NhbGl6ZWRE
ZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1Ro
aXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgbG9hZEVycm9y
IH1dICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CisgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBM
T0coTW9kZWxFbGVtZW50LCAiTG9hZGVkIGZpbGUgd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxl
IHdpdGggVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgICAgICBjYWxs
T25NYWluUnVuTG9vcChbd2Vha1RoaXMsIGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNv
bnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF1dKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAg
ICAgd2Vha1RoaXMtPm1fd2ViUGFnZVByb3h5Lm1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQoZWxlbWVudENvbnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4dElkKTsKKyAgICAg
ICAgICAgIGF1dG8gY29udGV4dElkID0gW3ByZXZpZXcgY29udGV4dElkXTsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB1dWlkID0g
V1RGTW92ZSh1dWlkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtU
aGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzdGQ6Om1ha2VfcGFpcih1dWlkLCBjb250ZXh0SWQpKTsKICAgICAgICAg
ICAgIH0pOwotICAgICAgICB9XTsKLSAgICB9XTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0p
LmdldCgpXTsKIH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUy
MTYsNiArNTIxNiwxMCBAQAogCQlCQzIwNTI4MDExQzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQ
YWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlUGFn
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1MjEyMTE4MjYwODEwMDI0
M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzI2NTIxMzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTBDMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwRDI3
MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUEyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1v
ZGVsUGxheWVyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExQjI3MzJGNjZFMDBBMkQx
OTEgLyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJN
b2RlbFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
RDAyMTYxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJB
MyAvKiBXS1BhZ2VMb2FkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V0tQYWdlTG9hZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NUY5
MTI1OTM0NEUwMEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENhY2hlTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3
NjgsNiArOTc3Miw3IEBACiAJCQkJMzNEM0EzQkQxMzM5NjA5ODAwNzA5QkU0IC8qIE1lZGlhQ2Fj
aGUgKi8sCiAJCQkJMDczNkI3NTIyNjBEMDM5RjAwRTA2OTk0IC8qIE1lZGlhU2Vzc2lvbiAqLywK
IAkJCQk0QTQxMEY0MTE5QUY3QjI3MDAyRUJBQjUgLyogTWVkaWFTdHJlYW0gKi8sCisJCQkJQkMy
QjQxMEEyNzMyRUY2NTAwQTJEMTkxIC8qIE1vZGVsICovLAogCQkJCTUxMDVCMEQyMTYyRjdBNUUw
MEUyNzcwOSAvKiBOZXR3b3JrICovLAogCQkJCTMxMDk5OTc0MTQ2QzhBQTgwMDI5REVCOSAvKiBO
b3RpZmljYXRpb25zIChVc2VyKSAqLywKIAkJCQkxQTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyog
UGx1Z2lucyAqLywKQEAgLTEwNTk3LDYgKzEwNjAyLDI1IEBACiAJCQlwYXRoID0gYzsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAv
KiBNb2RlbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QkMyQjQxMEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLywKKwkJCQlCQzJCNDExQjI3MzJGNjZF
MDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMUEy
NzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gTW9kZWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzJC
NDEwQjI3MzJFRjc1MDBBMkQxOTEgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDEwRDI3MzJFRjk2MDBBMkQxOTEg
LyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0gKi8sCisJCQkpOworCQkJcGF0aCA9
IG1hYzsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDMkU2RTc0MTE0MTk2
RjAwMEE2M0IxRSAvKiBQbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShy
ZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQAogI2luY2x1ZGUgPHd0Zi9VUkxQ
YXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVcpCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MTW9kZWxFbGVtZW50
Lmg+CisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbmNsdWRlICJBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllci5oIgogI2VuZGlmCiAKICNpZiAhT1MoV0lORE9XUykK
QEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQ
YXJhCiAgICAgICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ2FjaGVEaXJl
Y3RvcnkocGFyYW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKICNlbmRpZgogCi0jaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCiAgICAgaWYgKCFwYXJhbWV0ZXJzLm1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKLSAgICAgICAgV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk7
CisgICAgICAgIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KTsKICNl
bmRpZgogCiAgICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBs
YXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVyUHJvdmlk
ZXIuaCIKKworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW5jbHVkZSAi
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcihX
ZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlIHsgcGFnZSB9Cit7CisgICAgVU5VU0VEX1BBUkFN
KG1fcGFnZSk7Cit9CisKK1dlYk1vZGVsUGxheWVyUHJvdmlkZXI6On5XZWJNb2RlbFBsYXllclBy
b3ZpZGVyKCkgPSBkZWZhdWx0OworCisvLyBNQVJLOiAtIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJv
dmlkZXIgb3ZlcnJpZGVzLgorCitSZWZQdHI8V2ViQ29yZTo6TW9kZWxQbGF5ZXI+IFdlYk1vZGVs
UGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xp
ZW50JiBjbGllbnQpCit7CisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAg
ICByZXR1cm4gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZShtX3BhZ2UsIGNs
aWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTUVURVIoY2xpZW50KTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyUHJvdmlkZXIuaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk1vZGVsUGxheWVy
UHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciB7Citw
dWJsaWM6CisgICAgV2ViTW9kZWxQbGF5ZXJQcm92aWRlcihXZWJQYWdlJik7CisgICAgdmlydHVh
bCB+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6
Ok1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNv
cmU6Ok1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNs
aWVudCYpIGZpbmFsOworCisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUg
PFdlYkNvcmUvTW9kZWxQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyQ2xp
ZW50Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgorCitPQkpDX0NMQVNTIEFTVklubGluZVByZXZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpNb2RlbFBsYXllciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcj4gY3JlYXRlKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNs
aWVudCYpOworICAgIHZpcnR1YWwgfkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKCk7CisK
KyAgICBzdGF0aWMgdm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJp
bmcmKTsKKworcHJpdmF0ZToKKyAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQ
YWdlJiwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIFdlYkNvcmU6Ok1v
ZGVsUGxheWVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChXZWJDb3JlOjpNb2Rl
bCYsIFdlYkNvcmU6OkxheW91dFNpemUpIGZpbmFsOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXll
ciogbGF5ZXIoKSBmaW5hbDsKKworICAgIHZvaWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYp
OworICAgIHZvaWQgY2xlYXJGaWxlKCk7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsK
KyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAg
IFN0cmluZyBtX2ZpbGVQYXRoOworICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lu
bGluZVByZXZpZXc7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBv
cnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+Cisj
aW1wb3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29m
dExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZS
QU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklu
bGluZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyPiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdl
YlBhZ2UmIHBhZ2UsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwg
Y2xpZW50KSk7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNs
aWVudCYgY2xpZW50KQorICAgIDogbV9wYWdlIHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNs
aWVudCB9Cit7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXIoKQoreworICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMg
U3RyaW5nJiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7
CisgICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0
aWMgY29uc3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0
dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eSgpID0gcGF0aDsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3Jl
YXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQg
Zm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxp
bmVQcmV2aWV3LAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjc1NjcuCisKKyAgICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5
ID0gbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMg
PSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVj
dG9yeUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhU
b0RpcmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAo
IWRpcmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhU
b0RpcmVjdG9yeSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMg
YXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4K
KyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRl
Q2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVO
YW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmls
ZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxl
U3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQor
Cit2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAg
IGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5
c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJp
bmcoKTsKK30KKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisK
K3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwm
IG1vZGVsU291cmNlLCBXZWJDb3JlOjpMYXlvdXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJv
bmdDbGllbnQgPSBtX2NsaWVudC5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgYXV0byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBp
ZiAoIXN0cm9uZ1BhZ2UpIHsKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygq
dGhpcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0
SW50ZXJuYWwsIDAsIG1vZGVsU291cmNlLnVybCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsK
KworICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0lu
c3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAl
cyBhbmQgc2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJ
RFN0cmluZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKwor
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWlu
dDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dl
YWtTZWxmID0gV2Vha1B0ciB7ICp0aGlzIH1dIChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1
aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAg
ICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9u
Z1NlbGYpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQg
PSBzdHJvbmdTZWxmLT5tX2NsaWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAg
ICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5s
aW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9j
ZXNzIik7CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdT
ZWxmLCByZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBhdXRvJiBbdXVpZCwgY29udGV4dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmlu
ZyBleHBlY3RlZFVVSUQgPSBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURT
dHJpbmc7CisKKyAgICAgICAgaWYgKHV1aWQgIT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAg
ICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGlu
ZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBi
dXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJv
bmdTZWxmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3RyaW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJl
Y2VpdmVkICIsIHV1aWQsICIgYnV0IGV4cGVjdGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5t
X2lubGluZVByZXZpZXcgc2V0UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0co
TW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNv
bm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBz
dHJvbmdDbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAg
CisgICAgc3Ryb25nUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Ok1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNp
emUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lu
bGluZVByZXZpZXcgbGF5ZXJdOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lv
biAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MSw2ICs0MSwxMSBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIApAQCAtOTEsNyArOTYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlCiAgICAgICAgIH07CiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FU
SU9OUykKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBp
ZiAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWls
dEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSAmJiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2Vy
TWVzc2FnZUhhbmRsZXI6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3Vy
aXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBt
X3BhZ2UtPnNlc3Npb25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjcsMTEgKzE1MjcsNCBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6dGFrZU1vZGVsRWxlbWVudEZ1CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9J
TkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlk
Q3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNp
emUpIGNvbnN0Ci17Ci0gICAgbV9wYWdlLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxl
bWVudCwgdXJsLCB1dWlkLCBzaXplKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDU4LDkgKzQ1OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX0lPUykKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkgY29u
c3QgZmluYWw7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQot
ICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxF
bGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRT
aXplJikgY29uc3QgZmluYWw7Ci0jZW5kaWYKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1h
aW5GcmFtZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9v
bCBtX2NhY2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFL
ZXlTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3lzdGVtQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVy
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90
aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIu
aCIKQEAgLTI3MywxMCArMjc0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodFN0
b3JhZ2UuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUo
REFUQV9ERVRFQ1RJT04pCiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogI2VuZGlm
CkBAIC01NzUsNyArNTcyLDggQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIAogICAgICAgICBtYWtlVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKnRoaXMp
LAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0
cnkoKSwKICAgICAgICAgV2ViUGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyksCi0g
ICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VV
bmlxdWVSZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdl
Yk1vZGVsUGxheWVyUHJvdmlkZXI+KCp0aGlzKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCkBAIC03NzM5LDIxICs3NzM3LDYgQEAgdm9pZCBXZWJQYWdlOjp0YWtl
TW9kZWxFbGVtZW50RnVsbHNjcmVlbgogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5M
SU5FX1BSRVZJRVdfTUFDKQotdm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAg
ICBpZiAoYXV0byBlbGVtZW50Q29udGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpKQot
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoKmVsZW1lbnRDb250ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKLX0KLQotdm9pZCBX
ZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1
aW50MzJfdCBjb250ZXh0SWQpCi17Ci0gICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRl
eHQoZWxlbWVudENvbnRleHQpOwotICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
PihlbGVtZW50KSkKLSAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4o
KmVsZW1lbnQpLmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29udGV4dElk
KTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNjcm9sbFRvUmVjdChjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9yaWdp
bikKIHsKICAgICBtYWluRnJhbWVWaWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHRh
cmdldFJlY3QubWluWE1pbllDb3JuZXIoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTAg
KzIyMCw2IEBAIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVz
dDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFVykKLWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQ7Ci0jZW5kaWYKLQogZW51bSBTeW50aGV0aWND
bGlja1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIENPRVBEaXNwb3NpdGlvbiA6IGJvb2w7CiBl
bnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKQEAgLTE0OTYsMTAg
KzE0OTIsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykK
ICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRl
UHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQ
cmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiwgdWludDMyX3QpOwotI2VuZGlmCiAKICAgICB2b2lkIHByZXBhcmVUb1J1
bk1vZGFsSmF2YVNjcmlwdERpYWxvZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NTQz
MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTY0Nyw4ICs2NDcsNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0Vk
aXRpbmdDb21tYW5kKGVudW06dWluCiAjZW5kaWYKIAogICAgIFNjcm9sbFRvUmVjdChXZWJDb3Jl
OjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0KLSNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudFByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1l
bnRDb250ZXh0LCBTdHJpbmcgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotI2VuZGlmCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NCBAQAorMjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAg
ICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVI
VE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAy
MDIxLTExLTA2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmVtb3ZlIGVtcHR5IGRpcmVjdG9yaWVzIGZyb20gZnJvbSBzdm4ud2Via2l0Lm9yZyByZXBvc2l0
b3J5IGFzIG9mIHIyODUzNTcKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdE
YXRhLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL0R1
bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVNwZWVjaFJl
Y29nbml0aW9uUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlk
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgpAQCAtMTU0Myw3ICsxNTQ0LDggQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVt
bXlTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGll
bnQoc2VsZik7CkBAIC0xODIzLDcgKzE4MjUsOCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3Vt
ZW50V2l0aFN0eWxlOihOCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNv
cmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6Omdl
dE9yQ3JlYXRlKFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAog
ICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAg
ICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAg
ICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAg
ICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQog
ICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9t
ZUNsaWVudElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogU291cmNl
L1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEt
MTEtMDggIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBw
bGF0Zm9ybSBzcGVjaWZpYyBjb2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiByZW5hbWUgYWN0
aW9uVmVyYigpIGFzIGxvY2FsaXplZEFjdGlvblZlcmIoKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1
bW15U3RvcmFnZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTMw
NjUsNyArMzA2Niw4IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0K
ICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAg
IFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoZmFsc2UpLAogICAgICAg
ICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAg
bWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7
CiAgICAgY29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRo
aXMpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQo=
</data>
<flag name="commit-queue"
          id="468390"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443617</attachid>
            <date>2021-11-08 15:18:38 -0800</date>
            <delta_ts>2021-11-08 15:52:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108151837.patch</filename>
            <type>text/plain</type>
            <size>101631</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJHUFVdIENvbm5lY3QgSlMgYmluZGluZ3MgY29kZSB0byBpbnRl
cm5hbCBXZWJHUFUgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBNb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
CiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1M
TW9kZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVu
dDo6fkhUTUxNb2RlbEVsZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9
CiAKIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsx
MjksMTYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAg
ICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikK
KyAgICAgICAgbV9tb2RlbFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9t
aXNlLT5pc0Z1bGZpbGxlZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJl
c29sdmUpOwogCi0gICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisg
ICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9u
ID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBA
IEhUTUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5n
JiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAg
cmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsK
LX0KLQotY29uc3QgU3RyaW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7Ci19Ci0jZW5kaWYKLQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29s
dmUoKnRoaXMpOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBt
b2RlbERpZENoYW5nZSgpOwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3Vw
cG9ydAorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAv
LyBGSVhNRTogRm9yIHRoZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBp
bmZvcm0gdGhlIHBhZ2UgdGhhdCB0aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJl
bmRlcj8gRm9yIHRoZSBjYXNlIG9mIG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxz
byBidWlsZCB0aGUgbW9kZWwgd2hlbi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4K
KworICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBu
b3csIGNyZWF0ZU1vZGVsUGxheWVyIHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1
c2VkLCBidXQgdGhhdCBuZWVkcyB0byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9u
YWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhl
IEhUTUxNb2RlbEVsZW1lbnQuIE9uY2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBs
YXllcigpIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQ
bGF5ZXIgPSBwYWdlLT5tb2RlbFBsYXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRo
aXMpOworICAgIGlmICghbV9tb2RlbFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdGVsbCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMg
d2VsbCwgc28gcGFzc2luZyB0aGlzCisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNu
J3QgbWFrZSBzZW5zZS4KKyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9k
ZWwsIHNpemUpOworfQorCitib29sIEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQ
bGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tb2RlbFBsYXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXll
cik7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXll
ciA9PSBtX21vZGVsUGxheWVyKTsKK30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQu
CisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1F
OiBBZGQgYSBuZXcgbWV0aG9kIHRvIE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVu
IGFuZCBtb3ZlIHRoaXMgaW50byB0aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxh
eWVyIGltcGxlbWVudGF0aW9uLgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1Mp
CiAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMjEgKzMyLDE5IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiTW9k
ZWxQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCi0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi1P
QkpDX0NMQVNTIEFTVklubGluZVByZXZpZXc7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNb2RlbDsKK2NsYXNzIE1vZGVsUGxheWVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwogCi1j
bGFzcyBIVE1MTW9kZWxFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKK2NsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQsIHB1
YmxpYyBNb2RlbFBsYXllckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1M
TW9kZWxFbGVtZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNb2RlbEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU1LDIxICs1Mywx
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNvbnN0IFVSTCYg
Y3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAgICAvLyBNQVJL
OiBET00gRnVuY3Rpb25zIGFuZCBBdHRyaWJ1dGVzCisKICAgICB1c2luZyBSZWFkeVByb21pc2Ug
PSBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9k
ZWxFbGVtZW50Pj47CiAgICAgUmVhZHlQcm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQ
cm9taXNlLmdldCgpOyB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtb2RlbERhdGEoKSBj
b25zdDsKICAgICBSZWZQdHI8TW9kZWw+IG1vZGVsKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVcpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBib29sIHVz
ZXNQbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5saW5lUHJldmlld0RpZE9idGFp
bkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCk7Ci0jZW5k
aWYKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAKQEAgLTc5LDEzICs3Miw5IEBAIHBy
aXZhdGU6CiAgICAgSFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAogICAgIHZvaWQgc2V0U291cmNlVVJMKGNvbnN0IFVSTCYpOwotICAgIEhUTUxNb2Rl
bEVsZW1lbnQmIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBjbGVhckZpbGUoKTsKLSAgICB2b2lkIGNyZWF0ZUZp
bGUoKTsKICAgICB2b2lkIG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKKworICAgIEhUTUxNb2Rl
bEVsZW1lbnQmIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKIAogICAgIC8vIERPTSBvdmVycmlkZXMu
CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CkBAIC05Nyw2ICs4NiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAorICAgIC8vIE1v
ZGVsUGxheWVyQ2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9k
ZWxQbGF5ZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKQEAgLTEwNCwxMCArOTcsNyBAQCBwcml2YXRl
OgogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wg
bV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKLSAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBSZXRhaW5QdHI8QVNWSW5saW5l
UHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OwotI2VuZGlmCisgICAgUmVmUHRyPE1vZGVsUGxheWVy
PiBtX21vZGVsUGxheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCShub25leGlz
dGVudCkKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE1vZGVsRWxl
bWVudC5oIgotCi0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgot
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmll
d1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KLSNpbmNsdWRlIDx3dGYvVVVJRC5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUkso
QXNzZXRWaWV3ZXIpOwotU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2
aWV3KTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNy
ZWF0ZUZpbGUoKQotewotICAgIC8vIFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3Jh
cnkgZHVlIHRvIHRoZSBuYXR1cmUgb2YgQVNWSW5saW5lUHJldmlldywKLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY3LgotCi0gICAgY2xlYXJGaWxl
KCk7Ci0KLSAgICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9EaXJlY3RvcnkpOwotICAgIGlmIChkaXJlY3RvcnlFeGlz
dHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3Rv
cnkpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkaXJlY3Rv
cnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3Rv
cnkpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGws
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCi0gICAgYXV0
byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOwotICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7Ci0g
ICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwotICAgIGlmIChmaWxlIDw9IDApCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZp
bGUoKQotewotICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKLSAgICBtX2ZpbGVQYXRo
ID0gZW1wdHlTdHJpbmcoKTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENo
YW5nZSgpCi17Ci0gICAgY3JlYXRlRmlsZSgpOwotCi0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6
ZSgpOwotCi0gICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2
aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKV0pOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVt
ZW50Ojptb2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNp
emUgJWYgeCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcp
LnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAo
YXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJ
RFN0cmluZywgc2l6ZSk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmll
d0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJ
ZCkKLXsKLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5l
UHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKSB7Ci0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJI
VE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBt
aXNtYXRjaCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFttX2lubGluZVByZXZpZXcgc2V0
UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9k
ZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5
IGVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgp
LmRhdGEoKSk7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQot
ICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLX0KLQotUGxhdGZvcm1MYXll
ciogSFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX2lubGluZVByZXZpZXcgbGF5ZXJdOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvTW9kZWxQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllcjo6fk1vZGVsUGxheWVyKCkgPSBkZWZh
dWx0OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9k
ZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMYXlvdXRTaXpl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIE1vZGVsUGxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWxQbGF5ZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5Nb2RlbFBsYXllcigpOworCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBM
YXlvdXRTaXplKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpID0gMDsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2Rl
bFBsYXllckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNb2RlbFBsYXllckNsaWVudDo6fk1vZGVsUGxheWVyQ2xpZW50KCkgPSBkZWZhdWx0
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQ
bGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBSZXNvdXJjZUVycm9yOwor
CitjbGFzcyBNb2RlbFBsYXllckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2RlbFBs
YXllckNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyQ2xpZW50KCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3Zp
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJQcm92aWRlcjo6fk1v
ZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlk
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBNb2RlbFBs
YXllckNsaWVudDsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXJQcm92aWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9k
ZWxQbGF5ZXJQcm92aWRlcigpOworCisgICAgLy8gRklYTUU6IE9uY2UgYWxsIGNsaWVudHMgaGF2
ZSBhZG9wdGVkIE1vZGVsUGxheWVyUHJvdmlkZXIsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgY2hh
bmdlZCB0byByZXR1cm4gYSBSZWY8TW9kZWxQbGF5ZXI+CisgICAgdmlydHVhbCBSZWZQdHI8TW9k
ZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JikgPSAwOworfTsK
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1
bW15TW9kZWxQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBs
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKKyNpbmNs
dWRlICJNb2RlbC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZWY8RHVtbXlNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRl
KE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RHVtbXlNb2RlbFBsYXllcihjbGllbnQpKTsKK30KKworRHVtbXlNb2RlbFBsYXllcjo6RHVtbXlN
b2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQgeyBj
bGllbnQgfQoreworfQorCitEdW1teU1vZGVsUGxheWVyOjp+RHVtbXlNb2RlbFBsYXllcigpID0g
ZGVmYXVsdDsKKwordm9pZCBEdW1teU1vZGVsUGxheWVyOjpsb2FkKE1vZGVsJiBtb2RlbCwgTGF5
b3V0U2l6ZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
TG9hZGluZygqdGhpcywgUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIG1vZGVsLnVybCgpLCAiVHJ5aW5nIHRvIGxvYWQgbW9kZWwgdmlhIER1bW15TW9kZWxQbGF5
ZXIiX3MgfSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIER1bW15TW9kZWxQbGF5ZXI6OmxheWVyKCkK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBs
YXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIu
aCIKKyNpbmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyIGZpbmFsIDogcHVibGljIE1vZGVs
UGxheWVyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPER1bW15TW9k
ZWxQbGF5ZXI+IGNyZWF0ZShNb2RlbFBsYXllckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXIoKTsKKworcHJpdmF0ZToKKyAgICBEdW1teU1vZGVs
UGxheWVyKE1vZGVsUGxheWVyQ2xpZW50Jik7CisKKyAgICAvLyBNb2RlbFBsYXllciBvdmVycmlk
ZXMuCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICBXZWFr
UHRyPE1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmgiCisKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIo
KSA9IGRlZmF1bHQ7CitEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6On5EdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBs
YXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50
KQoreworICAgIHJldHVybiBEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUoY2xpZW50KTsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllclByb3ZpZGVyIHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsK
KworcHJpdmF0ZToKKyAgICAvLyBNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2
aXJ0dWFsIFJlZlB0cjxNb2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJD
bGllbnQmKSBvdmVycmlkZTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDA2NSw2ICs0MDY1LDExIEBACiAJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5MSAv
KiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyM0YwREEwREFGRjRB
NDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5oICovOyB9OworCQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0
MTEzMjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTE4MjczMkY0MjMwMEEyRDE5MSAv
KiBNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92
aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDMkI0MTE5MjczMkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMEUyNzMyRUZFNDAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMzEyNzM0
QTA4NjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dl
YkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5o
ICovOyB9OwogCQlCQzJDQ0ExMDI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJD
Q0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJC
MzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hU
TUxPYmplY3RFbGVtZW50LmggKi87IH07CkBAIC0xMDc5NSw3ICsxMDgwMCw2IEBACiAJCTcxQzI5
RTMxMjAzQ0U3NkMwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IENTU0FuaW1hdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
QzVCQjFCMUZCNjExRUEwMDA3QTJBRSAvKiBBbmltYXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBbmltYXRhYmxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFD
OTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MUNBQTNEOTI2OEQwQkY5MDBG
MjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SFRNTE1vZGVsRWxlbWVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUNFMkM1MTIyMDlEQzdGMDBDNDk0QkQgLyogTW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFEMDJEOTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29u
dHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRp
YS1jb250cm9sbGVyLmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzI2LDYg
KzE0NzMwLDE2IEBACiAJCUJDMjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc0QjMw
MTQwRUJFRDgwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgw
IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
QjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vZGVsUGxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTEyMjczMkYwM0MwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2RlbFBsYXllckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMkI0MTEzMjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJC
NDExNDI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9kZWxQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEx
NTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTE2MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQzJCNDEyMDI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIz
MjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1
bW15TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjQy
NzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRHVtbXlNb2RlbFBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xD
b250ZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJHTENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkND
QTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVzdGluYXRpb25Db2xvclNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODg5OCwxMSArMTg5MTIsMTEgQEAKIAkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8q
IGJyaWRnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NTlCNTk3NzExMTA4NjU1NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNFMjBEN0UyQjgy
MDA3QzM5ODMgLyogb2JqYyAqLywKIAkJCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJp
ZGdlLmggKi8sCiAJCQkJMUE3MUQ1NzkwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAu
Y3BwICovLAogCQkJCTFBNzFENTdBMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmgg
Ki8sCi0JCQkJNTlCNTk3NzExMTA4NjU1NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNF
RjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAgKi8sCiAJCQkJMUE1NjlDRjAw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywKIAkJCQkxQTU2OUNGMTBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwICovLApAQCAtMjM3NDAsMTAgKzIzNzU0
LDE2IEBACiAJCTcxRjg0OUNDMjU2NUFCN0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVtZW50ICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEyMjI3MzM1
RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8sCiAJCQkJNzFBM0QxODAyNTYyQjgyNTAwNjRFMkE2IC8q
IEhUTUxNb2RlbEVsZW1lbnQuY3BwICovLAogCQkJCTcxQTNEMTdEMjU2MkI4MjQwMDY0RTJBNiAv
KiBIVE1MTW9kZWxFbGVtZW50LmggKi8sCiAJCQkJNzFBM0QxN0YyNTYyQjgyNDAwNjRFMkE2IC8q
IEhUTUxNb2RlbEVsZW1lbnQuaWRsICovLAotCQkJCTcxQ0FBM0Q5MjY4RDBCRjkwMEYyNTQxMCAv
KiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8sCisJCQkJQkMyQjQxMTQyNzMyRjA2MjAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDExMzI3MzJGMDYyMDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQxOTEgLyogTW9k
ZWxQbGF5ZXJDbGllbnQuY3BwICovLAorCQkJCUJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBN
b2RlbFBsYXllckNsaWVudC5oICovLAorCQkJCUJDMkI0MTE2MjczMkYwQzcwMEEyRDE5MSAvKiBN
b2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSAibW9kZWwtZWxl
bWVudCI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzMDksNiArMjgzMjksMTcg
QEAKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJD
MkI0MTIyMjczMzVFMEMwMEEyRDE5MSAvKiBkdW1teSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBEdW1t
eU1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBkdW1t
eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDNEVERUY3MEMwOEY0MTQw
MDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMzMxNzYsNiArMzMyMDcsOCBAQAogCQkJCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYy
RCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3
QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE5MUY2
MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQz
QSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMDg1REY4MjZFODIyQzcwMDBFQzZBNyAvKiBEdW1teVN0b3JhZ2VQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJ
bnRlcnBvc2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTA4Niw2ICszNTExOSw5IEBACiAJCQkJ
Q0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIg
LyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAv
KiBNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTkyNzMyRjQyOTAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExODI3
MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5QTAxRkUxRTNEMEJERDAwNkIwRDRDIC8qIE1vZHVsZUZl
dGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjAxQzFBMUY4RTgyMTMwMDc2
QTAzMiAvKiBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgorI2luY2x1ZGUgIkR1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50LmgiCkBAIC01ODgsMTIgKzU4OSw2IEBAIHZvaWQgRW1wdHlDaHJvbWVDbGll
bnQ6OnRha2VNb2RlbEVsZW1lbnQKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX01BQykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENy
ZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0Ci17Ci19Ci0jZW5kaWYK
LQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CkBAIC0xMTk4LDcgKzExOTMsOCBAQCBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
RW1wdHlNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIEVtcHR5QnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpjcmVhdGUoKSwKICAgICAgICAgRHVtbXlQZXJtaXNzaW9uQ29udHJvbGxl
cjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdlUHJvdmlkZXI+
KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICB9OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNs
aWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDI4
NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIyLDEwICsyMjIsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1Ymxp
YyBDaHJvbWVDCiAjZW5kaWYKIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lk
IG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNv
bnN0IGZpbmFsOwotI2VuZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZW1wdHlE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsOSArNjA3LDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdmlydHVhbCB2b2lkIHRha2VNb2RlbEVs
ZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkg
Y29uc3QgeyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQot
ICAgIHZpcnR1YWwgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKSBjb25zdCB7IH07Ci0jZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkxvd1Bvd2VyTW9kZU5vdGlmaWVyLmgi
CiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2VDb2xvclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzMzLDYgKzMzNCw3IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIo
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBt
X3JlcG9ydGluZ0VuZHBvaW50c0NhY2hlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucmVwb3J0
aW5nRW5kcG9pbnRzQ2FjaGUpKQogICAgICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5zdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbV9tb2RlbFBsYXllclByb3Zp
ZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikpCiB7CiAg
ICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMzc1NSw0ICszNzU3LDkgQEAg
U3RvcmFnZUNvbm5lY3Rpb24mIFBhZ2U6OnN0b3JhZ2VDb25uZWN0aQogICAgIHJldHVybiBtX3N0
b3JhZ2VQcm92aWRlci0+c3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAorTW9kZWxQbGF5ZXJQcm92
aWRlciYgUGFnZTo6bW9kZWxQbGF5ZXJQcm92aWRlcigpCit7CisgICAgcmV0dXJuIG1fbW9kZWxQ
bGF5ZXJQcm92aWRlci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgTWVkaWFDYW5TdGFy
dExpc3RlbmVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsKK2NsYXNz
IE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBh
Z2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkBAIC04OTYsNiArODk3LDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBlcm1pc3Npb25Db250cm9sbGVyJiBwZXJt
aXNzaW9uQ29udHJvbGxlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VDb25uZWN0aW9u
JiBzdG9yYWdlQ29ubmVjdGlvbigpOwogCisgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYgbW9kZWxQ
bGF5ZXJQcm92aWRlcigpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAg
ICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTIyOCw2ICsxMjMxLDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IG1fcGVybWlzc2lvbkNvbnRyb2xs
ZXI7CiAgICAgUmVmUHRyPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBtX3JlcG9ydGluZ0VuZHBv
aW50c0NhY2hlOwogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFnZVByb3Zp
ZGVyOworICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxheWVyUHJv
dmlkZXI7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4
dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50
UmVjdD47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAko
cmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5o
IgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIlBlcm1p
c3Npb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCkBAIC02
Miw3ICs2Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246
OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVk
aXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQ
cm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVy
LCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2Fy
ZENsaWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIs
IFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50
LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1l
LCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3Jk
ZXJQcm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnksIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJv
bGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIpCitQYWdl
Q29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3Zp
ZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGli
V2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQ
cm92aWRlciwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlciwg
UmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2llSmFy
PiYmIGNvb2tpZUphciwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9ncmVz
c1RyYWNrZXJDbGllbnQsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGll
bnRGb3JNYWluRnJhbWUsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmIHNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+
JiYgbWVkaWFSZWNvcmRlclByb3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYm
IGJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmIHBl
cm1pc3Npb25Db250cm9sbGVyLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3JhZ2VQ
cm92aWRlciwgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+JiYgbW9kZWxQbGF5ZXJQcm92
aWRlcikKICAgICA6IHNlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBlZGl0b3JDbGllbnQoV1RG
TW92ZShlZGl0b3JDbGllbnQpKQogICAgICwgc29ja2V0UHJvdmlkZXIoV1RGTW92ZShzb2NrZXRQ
cm92aWRlcikpCkBAIC03OCw2ICs3OSw3IEBAIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmln
dXJhdGlvbihQQUwKICAgICAsIG1lZGlhUmVjb3JkZXJQcm92aWRlcihXVEZNb3ZlKG1lZGlhUmVj
b3JkZXJQcm92aWRlcikpCiAgICAgLCBwZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBlcm1p
c3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHN0b3JhZ2VQ
cm92aWRlcikpCisgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUobW9kZWxQbGF5ZXJQ
cm92aWRlcikpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3Vy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNz
IEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwot
Y2xhc3MgQ29va2llSmFyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVD
bGllbnQ7CitjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwogY2xhc3Mg
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBjbGFzcyBEcmFnQ2xpZW50OwpAQCAtNTcsNiArNTcs
NyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNs
YXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOworY2xh
c3MgTW9kZWxQbGF5ZXJQcm92aWRlcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsK
IGNsYXNzIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9s
bGVyOwpAQCAtNjUsNiArNjYsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBjbGFz
cyBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcjsKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0NsaWVudDsK
IGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CkBAIC03MiwxMiArNzQsMTEgQEAgY2xhc3MgVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBjbGFz
cyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViR0xTdGF0ZVRyYWNrZXI7Ci1jbGFzcyBTcGVl
Y2hTeW50aGVzaXNDbGllbnQ7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJvdmlkZXI+
JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFnZVByb3Zp
ZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50
PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYm
LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25p
dGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmLCBSZWY8
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYs
IFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VD
b25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBS
ZWY8U29ja2V0UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVm
PENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVm
PEJhY2tGb3J3YXJkQ2xpZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jl
c3NUcmFja2VyQ2xpZW50PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1
ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRl
clByb3ZpZGVyPiYmLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlz
c2lvbkNvbnRyb2xsZXI+JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYsIFVuaXF1ZVJl
ZjxNb2RlbFBsYXllclByb3ZpZGVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNvbmZp
Z3VyYXRpb24oKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbihQYWdlQ29uZmlndXJhdGlvbiYmKTsK
IApAQCAtMTQ1LDYgKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQZXJtaXNzaW9uQ29udHJv
bGxlcj4gcGVybWlzc2lvbkNvbnRyb2xsZXI7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRl
cj4gc3RvcmFnZVByb3ZpZGVyOworCisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+
IG1vZGVsUGxheWVyUHJvdmlkZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOTcsMTMgKzEwOTcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUNvbmZpZ3VyYQogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGVsc2UgaWYgKGlz
PFJlbmRlck1vZGVsPihyZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MTW9kZWxFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7Ci0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTGF5
ZXIgPSBlbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5
ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7Ci0jZWxzZQotICAgICAgICBpZiAoYXV0
byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCisKKyAgICAgICAgLy8gU29tZSBNb2RlbFBsYXll
cnMgdXNlIGEgcGxhdGZvcm1MYXllcigpIGFuZCBzb21lIHBhc3MgdGhlIE1vZGVsIHRvIHRoZSBs
YXllciBhcyBjb250ZW50cywKKyAgICAgICAgLy8gYnV0IHRoaXMgaXMgYSBydW50aW1lIGRlY2lz
aW9uLgorICAgICAgICBpZiAoZWxlbWVudC0+dXNlc1BsYXRmb3JtTGF5ZXIoKSkgeworICAgICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihlbGVtZW50
LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpN
b2RlbCk7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkp
CiAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3Zl
KG1vZGVsKSk7Ci0jZW5kaWYKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIxLTExLTA4ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3Bl
Y2lmaWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6
Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2Rl
bEVsZW1lbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRl
UHJldmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9X
ZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1v
ZGVsUGxheWVyUHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
cjo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6fkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
KToKKyAgICAgICAgKFdlYktpdDo6c2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmNsZWFyRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQ
cmV2aWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKwogMjAyMS0xMS0w
OCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgd2ViVmlldy5z
Y3JvbGxWaWV3LmluZGljYXRvclN0eWxlIGRvZXMgbm90IHdvcmsgb24gaU9TIDE1CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lv
bi9SZW1vdGVNZWRpYVNlc3NpCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXll
clByb3ZpZGVyLmNwcAorCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDgg
QEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNz
L01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVt
ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAg
dm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpG
bG9hdFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmlu
ZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODA1LDE1ICsxMDgwNSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lk
IFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVt
ZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVy
bCwgdXVpZCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAo
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9k
ZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0
SWQpKTsKKyAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcodXJsLCB1dWlkLCBzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01ODksOCArNTg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlk
T2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3Ry
aW5nJiwgdWludDMyX3QpOworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1
ODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVybCwg
U3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBz
aXplKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJtaXNz
aW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6
UGVybWlzc2lvbkRlc2NyaXB0b3IgZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJDb3Jl
OjpQZXJtaXNzaW9uU3RhdGUgc3RhdGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29h
Lm1tCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
b2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lz
dGVtUHJldmlld1NQSS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAt
MTI0LDEwICsxMjUsMTIgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9kZWxF
bAogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2RlbEVs
ZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0
cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2RlbEVs
ZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxlVVJM
LCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2VQ
cm94eS5wcmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fd2Vi
UGFnZVByb3h5LnByZWZlcmVuY2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
eyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBlbGVt
ZW50IGRpc2FibGVkIl9zIH0pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8g
bnNVVUlEID0gYWRvcHROUyhbW05TVVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRd
KTsKICAgICBhdXRvIHByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0
YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpIFVVSUQ6bnNVVUlELmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2b2lk
IE1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAgICBp
dGVyYXRvci0+dmFsdWUgPSBwcmV2aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5v
dCBqdXN0IHVzaW5nIG5vcm1hbCBVUkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRvIHVy
bCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZp
bGVTeXN0ZW1QYXRoKCldKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
Ci0gICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29udGV4
dENvcHkgPSBjb250ZXh0OwotICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJMICp1
cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07Ci0g
ICAgW3ByZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4o
TlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1cFJl
bW90ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJs
ID0gV1RGTW92ZSh1cmwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoTlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewogICAg
ICAgICBpZiAoY29udGV4dEVycm9yKSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAi
VW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwgdXVp
ZENvcHkudXRmOCgpLmRhdGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0p
OworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3Rl
IGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29udGV4
dEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciB7IGNvbnRleHRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxFbGVt
ZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWRD
b3B5LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNo
ZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICBb
cHJldmlldyBwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZpZXcs
IHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxlIGxv
YWRFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQg
JXM6ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dKTsKKyAgICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRv
IGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2FkRXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciB7IGxvYWRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4i
LCB1dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQs
ICJMb2FkZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAg
ICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENvcHks
IHV1aWRDb3B5LCBjb250ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRl
eHRJZCk7CisgICAgICAgICAgICBhdXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF07
CisgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgdXVpZCA9IFdURk1vdmUodXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4dElk
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0pLmdl
dCgpXTsKKyAgICB9KS5nZXQoKV07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0MzApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MjE2LDYgKzUyMTYsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1
IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0J1bmRsZVBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIx
MjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVh
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQx
OTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUwMEEy
RDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1vZGVs
UGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUIy
NzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEy
QUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzY4LDYgKzk3NzIsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJF
NCAvKiBNZWRpYUNhY2hlICovLAogCQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBNZWRp
YVNlc3Npb24gKi8sCiAJCQkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFt
ICovLAorCQkJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1MTA1
QjBEMjE2MkY3QTVFMDBFMjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4
MDAyOURFQjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0
OTAwREIxMzcxIC8qIFBsdWdpbnMgKi8sCkBAIC0xMDU5Nyw2ICsxMDYwMiwyNSBAQAogCQkJcGF0
aCA9IGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3MzJF
RjY1MDBBMkQxOTEgLyogTW9kZWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJQkMy
QjQxMUIyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAor
CQkJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmgg
Ki8sCisJCQkpOworCQkJcGF0aCA9IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJQkMyQjQxMEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkx
IC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQyNzMy
RUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAorCQkJ
KTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlC
QzJFNkU3NDExNDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
Ci0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TE1vZGVsRWxlbWVudC5oPgorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisj
aW5jbHVkZSAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAjaWYg
IU9TKFdJTkRPV1MpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJz
aXRlRGF0YVN0b3JlUGFyYQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQogICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6
OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkpOworICAgICAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSk7CiAjZW5kaWYKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2Rl
bFBsYXllclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+Cisj
aW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1vZGVsUGxheWVyUHJvdmlkZXI6OldlYk1v
ZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZSB7IHBhZ2UgfQor
eworICAgIFVOVVNFRF9QQVJBTShtX3BhZ2UpOworfQorCitXZWJNb2RlbFBsYXllclByb3ZpZGVy
Ojp+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworLy8gTUFSSzogLSBXZWJD
b3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKworUmVmUHRyPFdlYkNvcmU6Ok1v
ZGVsUGxheWVyPiBXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcihXZWJD
b3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCisgICAgcmV0dXJuIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
OjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU1FVEVSKGNs
aWVudCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92
aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9X
ZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXll
clByb3ZpZGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitj
bGFzcyBXZWJNb2RlbFBsYXllclByb3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Ok1vZGVs
UGxheWVyUHJvdmlkZXIgeworcHVibGljOgorICAgIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2Vi
UGFnZSYpOworICAgIHZpcnR1YWwgfldlYk1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2
aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpNb2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoV2Vi
Q29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKSBmaW5hbDsKKworICAgIFdlYlBhZ2UmIG1fcGFnZTsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2RlbFBsYXllckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBBU1ZJbmxpbmVQcmV2aWV3Owor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vh
a1B0cjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4geworcHVibGljOgorICAgIHN0YXRp
YyBSZWY8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IGNyZWF0ZShXZWJQYWdlJiwgV2Vi
Q29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcigpOworCisgICAgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAgQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIoV2ViUGFnZSYsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50Jik7CisK
KyAgICAvLyBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisgICAgdmlydHVhbCB2b2lk
IGxvYWQoV2ViQ29yZTo6TW9kZWwmLCBXZWJDb3JlOjpMYXlvdXRTaXplKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGNy
ZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmKTsKKyAgICB2b2lkIGNsZWFyRmlsZSgpOworCisgICAg
V2Vha1B0cjxXZWJQYWdlPiBtX3BhZ2U7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNb2RlbFBsYXll
ckNsaWVudD4gbV9jbGllbnQ7CisKKyAgICBTdHJpbmcgbV9maWxlUGF0aDsKKyAgICBSZXRhaW5Q
dHI8QVNWSW5saW5lUHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OworfTsKKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQorCisjaW1wb3J0ICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oIgorCisj
aW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2lt
cG9ydCA8V2ViQ29yZS9Nb2RlbC5oPgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmll
d1NQSS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5o
PgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09GVF9MSU5L
X0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1JlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4gQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXll
ckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyKHBhZ2UsIGNsaWVudCkpOworfQorCitBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcjo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIoV2ViUGFnZSYgcGFn
ZSwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fcGFnZSB7IHBh
Z2UgfQorICAgICwgbV9jbGllbnQgeyBjbGllbnQgfQoreworfQorCitBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcjo6fkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKCkKK3sKKyAgICBj
bGVhckZpbGUoKTsKK30KKworc3RhdGljIFN0cmluZyYgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeTsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeSgpOworfQorCit2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2Rl
bEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc2hhcmVk
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSA9IHBhdGg7Cit9CisKK3ZvaWQgQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291
cmNlKQoreworICAgIC8vIFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVl
IHRvIHRoZSBuYXR1cmUgb2YgQVNWSW5saW5lUHJldmlldywKKyAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY3LgorCisgICAgY2xlYXJGaWxlKCk7CisK
KyAgICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9IG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7
CisgICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9E
aXJlY3RvcnkpOworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5
cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZpbGVU
eXBlOjpEaXJlY3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06
Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbmVlZCB0
byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCisgICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06
OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoi
OworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CisgICAgYXV0byBmaWxlID0gRmlsZVN5c3Rl
bTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwor
ICAgIGlmIChmaWxlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06Ondy
aXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5k
YXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllcjo6Y2xlYXJGaWxlKCkKK3sKKyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7Cisg
ICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5nKCk7Cit9CisKKy8vIE1BUks6IC0gV2ViQ29yZTo6
TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorCit2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyOjpsb2FkKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSwgV2ViQ29yZTo6TGF5b3V0U2l6
ZSBzaXplKQoreworICAgIGF1dG8gc3Ryb25nQ2xpZW50ID0gbV9jbGllbnQuZ2V0KCk7CisgICAg
aWYgKCFzdHJvbmdDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0cm9uZ1Bh
Z2UgPSBtX3BhZ2UuZ2V0KCk7CisgICAgaWYgKCFzdHJvbmdQYWdlKSB7CisgICAgICAgIHN0cm9u
Z0NsaWVudC0+ZGlkRmFpbExvYWRpbmcoKnRoaXMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBX
ZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtb2RlbFNvdXJjZS51cmwoKSwg
IldlYlBhZ2UgZGVzdHJveWVkIl9zIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
Y3JlYXRlRmlsZShtb2RlbFNvdXJjZSk7CisKKyAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5T
KFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFr
ZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXSk7CisgICAgTE9HKE1vZGVsRWxl
bWVudCwgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjptb2RlbERpZENoYW5nZSgpIGNy
ZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAlZi4iLCAoKFN0cmluZylb
bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4p
PiBjb21wbGV0aW9uSGFuZGxlciA9IFt3ZWFrU2VsZiA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoRXhw
ZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
PiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5n
ZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGF1dG8gc3Ryb25nQ2xpZW50ID0gc3Ryb25nU2VsZi0+bV9jbGllbnQuZ2V0KCk7Cisg
ICAgICAgIGlmICghc3Ryb25nQ2xpZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBy
ZWNlaXZlZCBlcnJvciBmcm9tIFVJUHJvY2VzcyIpOworICAgICAgICAgICAgc3Ryb25nQ2xpZW50
LT5kaWRGYWlsTG9hZGluZygqc3Ryb25nU2VsZiwgcmVzdWx0LmVycm9yKCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgW3V1aWQsIGNvbnRleHRJZF0g
PSAqcmVzdWx0OworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRVVUlEID0gW3N0cm9uZ1NlbGYtPm1f
aW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nOworCisgICAgICAgIGlmICh1dWlkICE9IGV4
cGVjdGVkVVVJRCkgeworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJ
RCBtaXNtYXRjaCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRh
dGEoKSwgZXhwZWN0ZWRVVUlELnV0ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgc3Ryb25nQ2xp
ZW50LT5kaWRGYWlsTG9hZGluZygqc3Ryb25nU2VsZiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7
IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgbWFrZVN0cmluZygi
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250
ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAiLCB1dWlkLCAiIGJ1dCBleHBlY3RlZCAi
LCBleHBlY3RlZFVVSUQsICIuIikgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6
Y29udGV4dElkXTsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1
bGx5IGVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRm
OCgpLmRhdGEoKSk7CisKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKCpz
dHJvbmdTZWxmKTsKKyAgICB9OworICAgIAorICAgIHN0cm9uZ1BhZ2UtPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJl
dmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXplKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OworfQorCitQbGF0Zm9ybUxheWVyKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6bGF5
ZXIoKQoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTEgQEAKICNpbmNsdWRlICJXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklD
QVRJT05TKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBX
ZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTkxLDcgKzk2LDcgQEAgdm9p
ZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZQogICAgICAgICB9OwogCiAjaWYg
RU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCi0gICAgICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgp
ICYmIGFsbG93ZWQpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxs
b3dlZCkgewogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpSZXF1ZXN0U3lzdGVtTm90
aWZpY2F0aW9uUGVybWlzc2lvbihzZWN1cml0eU9yaWdpbi50b1N0cmluZygpKSwgV1RGTW92ZShp
bm5lclBlcm1pc3Npb25IYW5kbGVyKSwgbV9wYWdlLT5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTI3LDExICsx
NTI3LDQgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdQogfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotdm9pZCBXZWJDaHJv
bWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKSBjb25zdAotewotICAgIG1fcGFnZS5tb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KGVsZW1lbnQsIHVybCwgdXVpZCwgc2l6ZSk7Ci19Ci0jZW5k
aWYKLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZp
c2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw5ICs0NTgsNiBAQCBwcml2
YXRlOgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdm9pZCB0YWtl
TW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQgY29udGVudExheWVySWQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCi0jaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVBy
ZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAKICAg
ICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNIb3Jpem9udGFsU2Nyb2xsYmFyIHsg
ZmFsc2UgfTsKICAgICBtdXRhYmxlIGJvb2wgbV9jYWNoZWRNYWluRnJhbWVIYXNWZXJ0aWNhbFNj
cm9sbGJhciB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcs
NyBAQAogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRlICJX
ZWJNZWRpYUtleVN5c3RlbUNsaWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhU3RyYXRlZ3kuaCIK
KyNpbmNsdWRlICJXZWJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViTW91c2VF
dmVudC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIldl
Yk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCkBAIC0yNzMsMTAgKzI3NCw2IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9BcHBIaWdobGlnaHRTdG9yYWdlLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFVykKLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNb2RlbEVsZW1lbnQu
aD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUgIkRhdGFE
ZXRlY3Rpb25SZXN1bHQuaCIKICNlbmRpZgpAQCAtNTc1LDcgKzU3Miw4IEBAIFdlYlBhZ2U6Oldl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRp
YVJlY29yZGVyUHJvdmlkZXI+KCp0aGlzKSwKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCksCiAgICAgICAgIFdlYlBlcm1pc3Npb25Db250
cm9sbGVyOjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3JhZ2VQ
cm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3JhZ2VQcm92aWRlcj4oKSwK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcykKICAg
ICApOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVD
bGllbnQoKnRoaXMpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtNzczOSwyMSArNzcz
Nyw2IEBAIHZvaWQgV2ViUGFnZTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4KIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViUGFnZTo6
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgaWYgKGF1dG8gZWxlbWVudENvbnRleHQgPSBjb250
ZXh0Rm9yRWxlbWVudChlbGVtZW50KSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCplbGVtZW50Q29udGV4dCwgdXJsLCB1
dWlkLCBzaXplKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6bW9kZWxFbGVtZW50UHJldmlld0RpZE9i
dGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgZWxlbWVudENvbnRl
eHQsIGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotewotICAgIGF1dG8g
ZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGVsZW1lbnRDb250ZXh0KTsKLSAgICBpZiAoaXM8
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIGRvd25jYXN0PFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KCplbGVtZW50KS5pbmxpbmVQcmV2aWV3RGlkT2J0YWlu
Q29udGV4dElkKHV1aWQsIGNvbnRleHRJZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdlOjpz
Y3JvbGxUb1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50JiBvcmlnaW4pCiB7CiAgICAgbWFpbkZyYW1lVmlldygpLT5zZXRT
Y3JvbGxQb3NpdGlvbihJbnRQb2ludCh0YXJnZXRSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIwLDEwICsyMjAsNiBAQCBjbGFzcyBTdWJzdGl0dXRlRGF0YTsK
IGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAKLSNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1jbGFzcyBIVE1MTW9kZWxFbGVtZW50Owot
I2VuZGlmCi0KIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFzcyBD
T0VQRGlzcG9zaXRpb24gOiBib29sOwogZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCA6IGJvb2w7CkBAIC0xNDk2LDEwICsxNDkyLDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNj
cmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVy
SWQpOwogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2
b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
OwotICAgIHZvaWQgbW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKLSNlbmRp
ZgogCiAgICAgdm9pZCBwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsKIApJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsOCArNjQ3
LDQgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogI2VuZGlmCiAK
ICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNvcmU6
OkZsb2F0UG9pbnQgb3JpZ2luKQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLSAgICBNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKHN0cnVjdCBXZWJD
b3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgU3RyaW5nIHV1aWQsIHVpbnQzMl90
IGNvbnRleHRJZCkKLSNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMDggIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAg
ICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZl
cmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAyMS0xMS0wNiAgRGF2aWQgS2lsemVyICA8ZGRraWx6
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9tIGZy
b20gc3ZuLndlYmtpdC5vcmcgcmVwb3NpdG9yeSBhcyBvZiByMjg1MzU3CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyODU0MzApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRl
bS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0R1bW15U3RvcmFnZVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcu
aD4KQEAgLTE1NDMsNyArMTU0NCw4IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aEZyYW1lTmEKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJv
dmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVh
dGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAg
IFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVD
bGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwpAQCAtMTgyMyw3ICsxODI1LDggQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVt
bXlTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQgb2YgSFRN
TE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgor
CiAyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBBWDogcmVuYW1lIGFjdGlvblZlcmIoKSBhcyBsb2NhbGl6ZWRBY3Rpb25WZXJi
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODU0MzAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0R1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0zMDY1LDcgKzMwNjYsOCBAQCBIUkVTVUxUIFdlYlZpZXc6
OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNv
cmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6Omdl
dE9yQ3JlYXRlKGZhbHNlKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJv
bGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3Jh
Z2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50
ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
</data>
<flag name="commit-queue"
          id="468397"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443621</attachid>
            <date>2021-11-08 15:38:12 -0800</date>
            <delta_ts>2021-11-08 16:35:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108153811.patch</filename>
            <type>text/plain</type>
            <size>101600</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJHUFVdIENvbm5lY3QgSlMgYmluZGluZ3MgY29kZSB0byBpbnRl
cm5hbCBXZWJHUFUgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBNb2R1bGVzL2FwcGxlcGF5
L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xp
cGJvYXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlw
Ym9hcmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVU
cmFuc2Zvcm1lckNvY29hLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1t
CiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxl
cy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2Rl
bEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1M
TW9kZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJM
YXllck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3
dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVu
dDo6fkhUTUxNb2RlbEVsZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQo
KnRoaXMpOwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9
CiAKIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsx
MjksMTYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAg
ICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikK
KyAgICAgICAgbV9tb2RlbFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9t
aXNlLT5pc0Z1bGZpbGxlZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2Vw
dGlvbiB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVS
ZWY8UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJl
c29sdmUpOwogCi0gICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisg
ICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAog
ICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9u
ID0gRmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBA
IEhUTUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5n
JiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAg
cmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKLXsKLSAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsK
LX0KLQotY29uc3QgU3RyaW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSgpCi17Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7Ci19Ci0jZW5kaWYKLQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29s
dmUoKnRoaXMpOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBt
b2RlbERpZENoYW5nZSgpOwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3Vw
cG9ydAorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAv
LyBGSVhNRTogRm9yIHRoZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBp
bmZvcm0gdGhlIHBhZ2UgdGhhdCB0aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJl
bmRlcj8gRm9yIHRoZSBjYXNlIG9mIG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxz
byBidWlsZCB0aGUgbW9kZWwgd2hlbi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4K
KworICAgIGF1dG8gcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBu
b3csIGNyZWF0ZU1vZGVsUGxheWVyIHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdy
YXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1
c2VkLCBidXQgdGhhdCBuZWVkcyB0byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9u
YWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhl
IEhUTUxNb2RlbEVsZW1lbnQuIE9uY2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBs
YXllcigpIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQ
bGF5ZXIgPSBwYWdlLT5tb2RlbFBsYXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRo
aXMpOworICAgIGlmICghbV9tb2RlbFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
RklYTUU6IFdlIG5lZWQgdG8gdGVsbCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMg
d2VsbCwgc28gcGFzc2luZyB0aGlzCisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNu
J3QgbWFrZSBzZW5zZS4KKyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QoZmFsc2UpLnNpemUoKTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9k
ZWwsIHNpemUpOworfQorCitib29sIEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVy
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQ
bGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9tb2RlbFBsYXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxF
bGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXll
cik7CisKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVt
ZW50OjpkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291
cmNlRXJyb3ImKQoreworICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXll
ciA9PSBtX21vZGVsUGxheWVyKTsKK30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQu
CisKIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1F
OiBBZGQgYSBuZXcgbWV0aG9kIHRvIE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVu
IGFuZCBtb3ZlIHRoaXMgaW50byB0aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxh
eWVyIGltcGxlbWVudGF0aW9uLgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1Mp
CiAgICAgYXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsMjEgKzMyLDE5IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiTW9k
ZWxQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCi0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi1P
QkpDX0NMQVNTIEFTVklubGluZVByZXZpZXc7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBNb2RlbDsKK2NsYXNzIE1vZGVsUGxheWVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwogCi1j
bGFzcyBIVE1MTW9kZWxFbGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRl
IENhY2hlZFJhd1Jlc291cmNlQ2xpZW50IHsKK2NsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwg
OiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQsIHB1
YmxpYyBNb2RlbFBsYXllckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1M
TW9kZWxFbGVtZW50KTsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNb2RlbEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU1LDIxICs1Mywx
NiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNvbnN0IFVSTCYg
Y3VycmVudFNyYygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAgICAvLyBNQVJL
OiBET00gRnVuY3Rpb25zIGFuZCBBdHRyaWJ1dGVzCisKICAgICB1c2luZyBSZWFkeVByb21pc2Ug
PSBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9k
ZWxFbGVtZW50Pj47CiAgICAgUmVhZHlQcm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQ
cm9taXNlLmdldCgpOyB9CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtb2RlbERhdGEoKSBj
b25zdDsKICAgICBSZWZQdHI8TW9kZWw+IG1vZGVsKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVcpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgc3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBib29sIHVz
ZXNQbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cigpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5saW5lUHJldmlld0RpZE9idGFp
bkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCk7Ci0jZW5k
aWYKIAogICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAKQEAgLTc5LDEzICs3Miw5IEBAIHBy
aXZhdGU6CiAgICAgSFRNTE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQmKTsKIAogICAgIHZvaWQgc2V0U291cmNlVVJMKGNvbnN0IFVSTCYpOwotICAgIEhUTUxNb2Rl
bEVsZW1lbnQmIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBjbGVhckZpbGUoKTsKLSAgICB2b2lkIGNyZWF0ZUZp
bGUoKTsKICAgICB2b2lkIG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKKworICAgIEhUTUxNb2Rl
bEVsZW1lbnQmIHJlYWR5UHJvbWlzZVJlc29sdmUoKTsKIAogICAgIC8vIERPTSBvdmVycmlkZXMu
CiAgICAgdm9pZCBkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERv
Y3VtZW50JiBuZXdEb2N1bWVudCkgZmluYWw7CkBAIC05Nyw2ICs4NiwxMCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0
YSwgaW50IGRhdGFMZW5ndGgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVk
UmVzb3VyY2UmLCBjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAorICAgIC8vIE1v
ZGVsUGxheWVyQ2xpZW50IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9k
ZWxQbGF5ZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpIGZpbmFsOworCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsKQEAgLTEwNCwxMCArOTcsNyBAQCBwcml2YXRl
OgogICAgIFVuaXF1ZVJlZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wg
bV9kYXRhQ29tcGxldGUgeyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKLSAgICBTdHJpbmcgbV9maWxlUGF0aDsKLSAgICBSZXRhaW5QdHI8QVNWSW5saW5l
UHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OwotI2VuZGlmCisgICAgUmVmUHRyPE1vZGVsUGxheWVy
PiBtX21vZGVsUGxheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCShub25leGlz
dGVudCkKQEAgLTEsMTMzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
LSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE1vZGVsRWxl
bWVudC5oIgotCi0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVD
bGllbnQuaCIKLSNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1
ZGUgIlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgot
I2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmll
d1NQSS5oPgotI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwu
aD4KLSNpbmNsdWRlIDx3dGYvVVVJRC5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUkso
QXNzZXRWaWV3ZXIpOwotU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2
aWV3KTsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNy
ZWF0ZUZpbGUoKQotewotICAgIC8vIFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3Jh
cnkgZHVlIHRvIHRoZSBuYXR1cmUgb2YgQVNWSW5saW5lUHJldmlldywKLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY3LgotCi0gICAgY2xlYXJGaWxl
KCk7Ci0KLSAgICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci0gICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5
c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9EaXJlY3RvcnkpOwotICAgIGlmIChkaXJlY3RvcnlFeGlz
dHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3Rv
cnkpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkaXJlY3Rv
cnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3Rv
cnkpKSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGws
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCi0gICAgYXV0
byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNh
bFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOwotICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7Ci0g
ICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06
OkZpbGVPcGVuTW9kZTo6V3JpdGUpOwotICAgIGlmIChmaWxlIDw9IDApCi0gICAgICAgIHJldHVy
bjsKLQotICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBt
X2RhdGEtPnNpemUoKSk7Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgIG1f
ZmlsZVBhdGggPSBmaWxlUGF0aDsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZp
bGUoKQotewotICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKLSAgICBtX2ZpbGVQYXRo
ID0gZW1wdHlTdHJpbmcoKTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENo
YW5nZSgpCi17Ci0gICAgY3JlYXRlRmlsZSgpOwotCi0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGF1dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6
ZSgpOwotCi0gICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2
aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKV0pOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVt
ZW50Ojptb2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNp
emUgJWYgeCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcp
LnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAo
YXV0byogcGFnZSA9IGRvY3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5j
bGllbnQoKS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJ
RFN0cmluZywgc2l6ZSk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmll
d0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJ
ZCkKLXsKLSAgICBpZiAoIWRvY3VtZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVk
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5l
UHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKSB7Ci0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJI
VE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBt
aXNtYXRjaCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFttX2lubGluZVByZXZpZXcgc2V0
UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9k
ZWxFbGVtZW50OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5
IGVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgp
LmRhdGEoKSk7Ci0KLSAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQot
ICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLX0KLQotUGxhdGZvcm1MYXll
ciogSFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFttX2lubGluZVByZXZpZXcgbGF5ZXJdOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTU9E
RUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvTW9kZWxQbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllcjo6fk1vZGVsUGxheWVyKCkgPSBkZWZh
dWx0OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9k
ZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMYXlvdXRTaXpl
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVf
RVhQT1JUIE1vZGVsUGxheWVyIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWxQbGF5ZXI+IHsKKyAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5Nb2RlbFBsYXllcigpOworCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBM
YXlvdXRTaXplKSA9IDA7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpID0gMDsK
K307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2Rl
bFBsYXllckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNb2RlbFBsYXllckNsaWVudDo6fk1vZGVsUGxheWVyQ2xpZW50KCkgPSBkZWZhdWx0
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQ
bGF5ZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBSZXNvdXJjZUVycm9yOwor
CitjbGFzcyBNb2RlbFBsYXllckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2RlbFBs
YXllckNsaWVudD4geworcHVibGljOgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyQ2xpZW50KCk7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNv
dXJjZUVycm9yJikgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3Zp
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJQcm92aWRlcjo6fk1v
ZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlk
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBNb2RlbFBs
YXllckNsaWVudDsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXJQcm92aWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9k
ZWxQbGF5ZXJQcm92aWRlcigpOworCisgICAgLy8gRklYTUU6IE9uY2UgYWxsIGNsaWVudHMgaGF2
ZSBhZG9wdGVkIE1vZGVsUGxheWVyUHJvdmlkZXIsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgY2hh
bmdlZCB0byByZXR1cm4gYSBSZWY8TW9kZWxQbGF5ZXI+CisgICAgdmlydHVhbCBSZWZQdHI8TW9k
ZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JikgPSAwOworfTsK
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1
bW15TW9kZWxQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBs
YXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKKyNpbmNs
dWRlICJNb2RlbC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitSZWY8RHVtbXlNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRl
KE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
RHVtbXlNb2RlbFBsYXllcihjbGllbnQpKTsKK30KKworRHVtbXlNb2RlbFBsYXllcjo6RHVtbXlN
b2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQgeyBj
bGllbnQgfQoreworfQorCitEdW1teU1vZGVsUGxheWVyOjp+RHVtbXlNb2RlbFBsYXllcigpID0g
ZGVmYXVsdDsKKwordm9pZCBEdW1teU1vZGVsUGxheWVyOjpsb2FkKE1vZGVsJiBtb2RlbCwgTGF5
b3V0U2l6ZSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRGYWls
TG9hZGluZygqdGhpcywgUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWws
IDAsIG1vZGVsLnVybCgpLCAiVHJ5aW5nIHRvIGxvYWQgbW9kZWwgdmlhIER1bW15TW9kZWxQbGF5
ZXIiX3MgfSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIER1bW15TW9kZWxQbGF5ZXI6OmxheWVyKCkK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBs
YXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIu
aCIKKyNpbmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBXRUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyIGZpbmFsIDogcHVibGljIE1vZGVs
UGxheWVyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPER1bW15TW9k
ZWxQbGF5ZXI+IGNyZWF0ZShNb2RlbFBsYXllckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXIoKTsKKworcHJpdmF0ZToKKyAgICBEdW1teU1vZGVs
UGxheWVyKE1vZGVsUGxheWVyQ2xpZW50Jik7CisKKyAgICAvLyBNb2RlbFBsYXllciBvdmVycmlk
ZXMuCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICBXZWFr
UHRyPE1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmgiCisKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIo
KSA9IGRlZmF1bHQ7CitEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6On5EdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKK1JlZlB0cjxNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBs
YXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50
KQoreworICAgIHJldHVybiBEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUoY2xpZW50KTsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRl
ci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllclByb3ZpZGVyIHsK
K3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsK
KworcHJpdmF0ZToKKyAgICAvLyBNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2
aXJ0dWFsIFJlZlB0cjxNb2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJD
bGllbnQmKSBvdmVycmlkZTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDA2NSw2ICs0MDY1LDExIEBACiAJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5MSAv
KiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUJDMjNGMERCMERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyM0YwREEwREFGRjRB
NDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5oICovOyB9OworCQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0
MTEzMjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTE4MjczMkY0MjMwMEEyRDE5MSAv
KiBNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92
aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUJDMkI0MTE5MjczMkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMEUyNzMyRUZFNDAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMzEyNzM0
QTA4NjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dl
YkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQzJDQkY0QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5o
ICovOyB9OwogCQlCQzJDQ0ExMDI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJD
Q0EwRTI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJC
MzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hU
TUxPYmplY3RFbGVtZW50LmggKi87IH07CkBAIC0xMDc5NSw3ICsxMDgwMCw2IEBACiAJCTcxQzI5
RTMxMjAzQ0U3NkMwMDhGMzZEMiAvKiBDU1NBbmltYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IENTU0FuaW1hdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcx
QzVCQjFCMUZCNjExRUEwMDA3QTJBRSAvKiBBbmltYXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBBbmltYXRhYmxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFD
OTE2MDcxRDE0ODNBMzAwQUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3MUNBQTNEOTI2OEQwQkY5MDBG
MjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
SFRNTE1vZGVsRWxlbWVudENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUNFMkM1MTIyMDlEQzdGMDBDNDk0QkQgLyogTW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzFEMDJEOTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29u
dHJvbGxlci5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRp
YS1jb250cm9sbGVyLmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzI2LDYg
KzE0NzMwLDE2IEBACiAJCUJDMjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc0QjMw
MTQwRUJFRDgwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgw
IC8qIENvbG9ySW5wdXRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IENvbG9ySW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
QjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vZGVsUGxheWVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTEyMjczMkYwM0MwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2RlbFBsYXllckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDMkI0MTEzMjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJC
NDExNDI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9kZWxQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEx
NTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTE2MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQzJCNDEyMDI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIz
MjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1
bW15TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjQy
NzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRHVtbXlNb2RlbFBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
MkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xD
b250ZXh0RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNX
ZWJHTENvbnRleHRFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkND
QTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRGVzdGluYXRpb25Db2xvclNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODg5OCwxMSArMTg5MTIsMTEgQEAKIAkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8q
IGJyaWRnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
NTlCNTk3NzExMTA4NjU1NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNFMjBEN0UyQjgy
MDA3QzM5ODMgLyogb2JqYyAqLywKIAkJCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJp
ZGdlLmggKi8sCiAJCQkJMUE3MUQ1NzkwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAu
Y3BwICovLAogCQkJCTFBNzFENTdBMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmgg
Ki8sCi0JCQkJNTlCNTk3NzExMTA4NjU1NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNF
RjBEN0UyQjgyMDA3QzM5ODMgLyogcnVudGltZV9hcnJheS5jcHAgKi8sCiAJCQkJMUE1NjlDRjAw
RDdFMkI4MjAwN0MzOTgzIC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywKIAkJCQkxQTU2OUNGMTBEN0Uy
QjgyMDA3QzM5ODMgLyogcnVudGltZV9tZXRob2QuY3BwICovLApAQCAtMjM3NDAsMTAgKzIzNzU0
LDE2IEBACiAJCTcxRjg0OUNDMjU2NUFCN0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVtZW50ICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEyMjI3MzM1
RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8sCiAJCQkJNzFBM0QxODAyNTYyQjgyNTAwNjRFMkE2IC8q
IEhUTUxNb2RlbEVsZW1lbnQuY3BwICovLAogCQkJCTcxQTNEMTdEMjU2MkI4MjQwMDY0RTJBNiAv
KiBIVE1MTW9kZWxFbGVtZW50LmggKi8sCiAJCQkJNzFBM0QxN0YyNTYyQjgyNDAwNjRFMkE2IC8q
IEhUTUxNb2RlbEVsZW1lbnQuaWRsICovLAotCQkJCTcxQ0FBM0Q5MjY4RDBCRjkwMEYyNTQxMCAv
KiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8sCisJCQkJQkMyQjQxMTQyNzMyRjA2MjAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDExMzI3MzJGMDYyMDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQxOTEgLyogTW9k
ZWxQbGF5ZXJDbGllbnQuY3BwICovLAorCQkJCUJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBN
b2RlbFBsYXllckNsaWVudC5oICovLAorCQkJCUJDMkI0MTE2MjczMkYwQzcwMEEyRDE5MSAvKiBN
b2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSAibW9kZWwtZWxl
bWVudCI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzMDksNiArMjgzMjksMTcg
QEAKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJD
MkI0MTIyMjczMzVFMEMwMEEyRDE5MSAvKiBkdW1teSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBEdW1t
eU1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBkdW1t
eTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDNEVERUY3MEMwOEY0MTQw
MDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKApAQCAtMzMxNzYsNiArMzMyMDcsOCBAQAogCQkJCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYy
RCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3
QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE5MUY2
MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQz
QSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkzMDg1REY4MjZFODIyQzcwMDBFQzZBNyAvKiBEdW1teVN0b3JhZ2VQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJ
bnRlcnBvc2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTA4Niw2ICszNTExOSw5IEBACiAJCQkJ
Q0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIg
LyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAv
KiBNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTkyNzMyRjQyOTAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExODI3
MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5QTAxRkUxRTNEMEJERDAwNkIwRDRDIC8qIE1vZHVsZUZl
dGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjAxQzFBMUY4RTgyMTMwMDc2
QTAzMiAvKiBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgorI2luY2x1ZGUgIkR1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVjb2duaXRpb25Q
cm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
RWRpdG9yQ2xpZW50LmgiCkBAIC01ODgsMTIgKzU4OSw2IEBAIHZvaWQgRW1wdHlDaHJvbWVDbGll
bnQ6OnRha2VNb2RlbEVsZW1lbnQKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX01BQykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENy
ZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0Ci17Ci19Ci0jZW5kaWYK
LQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBG
cmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CkBAIC0xMTk4LDcgKzExOTMsOCBAQCBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
RW1wdHlNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIEVtcHR5QnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpjcmVhdGUoKSwKICAgICAgICAgRHVtbXlQZXJtaXNzaW9uQ29udHJvbGxl
cjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdlUHJvdmlkZXI+
KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICB9OwogCiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNs
aWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDI4
NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjIyLDEwICsyMjIsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1Ymxp
YyBDaHJvbWVDCiAjZW5kaWYKIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyByZXR1cm4gbnVs
bHB0cjsgfQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lk
IG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNv
bnN0IGZpbmFsOwotI2VuZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZW1wdHlE
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsOSArNjA3LDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdmlydHVhbCB2b2lkIHRha2VNb2RlbEVs
ZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkg
Y29uc3QgeyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQot
ICAgIHZpcnR1YWwgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFNpemUmKSBjb25zdCB7IH07Ci0jZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNocm9tZUNsaWVudCgpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2
aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkxvd1Bvd2VyTW9kZU5vdGlmaWVyLmgi
CiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNv
cmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1
ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2VDb2xvclNhbXBsZXIuaCIKICNpbmNsdWRl
ICJQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzMzLDYgKzMzNCw3IEBAIFBhZ2U6OlBhZ2UoUGFn
ZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIo
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBt
X3JlcG9ydGluZ0VuZHBvaW50c0NhY2hlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucmVwb3J0
aW5nRW5kcG9pbnRzQ2FjaGUpKQogICAgICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92ZShwYWdl
Q29uZmlndXJhdGlvbi5zdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbV9tb2RlbFBsYXllclByb3Zp
ZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikpCiB7CiAg
ICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMzc1NSw0ICszNzU3LDkgQEAg
U3RvcmFnZUNvbm5lY3Rpb24mIFBhZ2U6OnN0b3JhZ2VDb25uZWN0aQogICAgIHJldHVybiBtX3N0
b3JhZ2VQcm92aWRlci0+c3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAorTW9kZWxQbGF5ZXJQcm92
aWRlciYgUGFnZTo6bW9kZWxQbGF5ZXJQcm92aWRlcigpCit7CisgICAgcmV0dXJuIG1fbW9kZWxQ
bGF5ZXJQcm92aWRlci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgTWVkaWFDYW5TdGFy
dExpc3RlbmVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsKK2NsYXNz
IE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBh
Z2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkBAIC04OTYsNiArODk3LDgg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBlcm1pc3Npb25Db250cm9sbGVyJiBwZXJt
aXNzaW9uQ29udHJvbGxlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VDb25uZWN0aW9u
JiBzdG9yYWdlQ29ubmVjdGlvbigpOwogCisgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYgbW9kZWxQ
bGF5ZXJQcm92aWRlcigpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAg
ICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTIyOCw2ICsxMjMxLDcgQEAgcHJp
dmF0ZToKICAgICBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IG1fcGVybWlzc2lvbkNvbnRyb2xs
ZXI7CiAgICAgUmVmUHRyPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBtX3JlcG9ydGluZ0VuZHBv
aW50c0NhY2hlOwogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFnZVByb3Zp
ZGVyOworICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxheWVyUHJv
dmlkZXI7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4
dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50
UmVjdD47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAko
cmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
TWVkaWFSZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5o
IgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIlBlcm1p
c3Npb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCkBAIC02
Miw3ICs2Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246
OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVk
aXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQ
cm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVy
LCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2Fy
ZENsaWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIs
IFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50
LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1l
LCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlv
blByb3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3Jk
ZXJQcm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnksIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJv
bGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIpCitQYWdl
Q29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3Zp
ZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGli
V2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQ
cm92aWRlciwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlciwg
UmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2llSmFy
PiYmIGNvb2tpZUphciwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9ncmVz
c1RyYWNrZXJDbGllbnQsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGll
bnRGb3JNYWluRnJhbWUsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmIHNw
ZWVjaFJlY29nbml0aW9uUHJvdmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+
JiYgbWVkaWFSZWNvcmRlclByb3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYm
IGJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmIHBl
cm1pc3Npb25Db250cm9sbGVyLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3JhZ2VQ
cm92aWRlciwgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+JiYgbW9kZWxQbGF5ZXJQcm92
aWRlcikKICAgICA6IHNlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBlZGl0b3JDbGllbnQoV1RG
TW92ZShlZGl0b3JDbGllbnQpKQogICAgICwgc29ja2V0UHJvdmlkZXIoV1RGTW92ZShzb2NrZXRQ
cm92aWRlcikpCkBAIC03OCw2ICs3OSw3IEBAIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmln
dXJhdGlvbihQQUwKICAgICAsIG1lZGlhUmVjb3JkZXJQcm92aWRlcihXVEZNb3ZlKG1lZGlhUmVj
b3JkZXJQcm92aWRlcikpCiAgICAgLCBwZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBlcm1p
c3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHN0b3JhZ2VQ
cm92aWRlcikpCisgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUobW9kZWxQbGF5ZXJQ
cm92aWRlcikpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3Vy
YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0
aW9uLmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBBdXRoZW50
aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNz
IEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwot
Y2xhc3MgQ29va2llSmFyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVD
bGllbnQ7CitjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwogY2xhc3Mg
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBjbGFzcyBEcmFnQ2xpZW50OwpAQCAtNTcsNiArNTcs
NyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNs
YXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOworY2xh
c3MgTW9kZWxQbGF5ZXJQcm92aWRlcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsK
IGNsYXNzIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9s
bGVyOwpAQCAtNjUsNiArNjYsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBjbGFz
cyBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3Mg
U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcjsKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0NsaWVudDsK
IGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VQcm92aWRlcjsK
IGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CkBAIC03MiwxMiArNzQsMTEgQEAgY2xhc3MgVXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBjbGFz
cyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViR0xTdGF0ZVRyYWNrZXI7Ci1jbGFzcyBTcGVl
Y2hTeW50aGVzaXNDbGllbnQ7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJvdmlkZXI+
JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFnZVByb3Zp
ZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50
PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYm
LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25p
dGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmLCBSZWY8
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYs
IFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VD
b25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBS
ZWY8U29ja2V0UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVm
PENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVm
PEJhY2tGb3J3YXJkQ2xpZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jl
c3NUcmFja2VyQ2xpZW50PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1
ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRl
clByb3ZpZGVyPiYmLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlz
c2lvbkNvbnRyb2xsZXI+JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYsIFVuaXF1ZVJl
ZjxNb2RlbFBsYXllclByb3ZpZGVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNvbmZp
Z3VyYXRpb24oKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbihQYWdlQ29uZmlndXJhdGlvbiYmKTsK
IApAQCAtMTQ1LDYgKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQZXJtaXNzaW9uQ29udHJv
bGxlcj4gcGVybWlzc2lvbkNvbnRyb2xsZXI7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRl
cj4gc3RvcmFnZVByb3ZpZGVyOworCisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+
IG1vZGVsUGxheWVyUHJvdmlkZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOTcsMTMgKzEwOTcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUNvbmZpZ3VyYQogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGVsc2UgaWYgKGlz
PFJlbmRlck1vZGVsPihyZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBkb3du
Y2FzdDxIVE1MTW9kZWxFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7Ci0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTGF5
ZXIgPSBlbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5
ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7Ci0jZWxzZQotICAgICAgICBpZiAoYXV0
byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCisKKyAgICAgICAgLy8gU29tZSBNb2RlbFBsYXll
cnMgdXNlIGEgcGxhdGZvcm1MYXllcigpIGFuZCBzb21lIHBhc3MgdGhlIE1vZGVsIHRvIHRoZSBs
YXllciBhcyBjb250ZW50cywKKyAgICAgICAgLy8gYnV0IHRoaXMgaXMgYSBydW50aW1lIGRlY2lz
aW9uLgorICAgICAgICBpZiAoZWxlbWVudC0+dXNlc1BsYXRmb3JtTGF5ZXIoKSkgeworICAgICAg
ICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihlbGVtZW50
LT5wbGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpN
b2RlbCk7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkp
CiAgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3Zl
KG1vZGVsKSk7Ci0jZW5kaWYKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIxLTExLTA4ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3Bl
Y2lmaWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3Vy
Y2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6
Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2Rl
bEVsZW1lbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRl
UHJldmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9X
ZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1v
ZGVsUGxheWVyUHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5t
bTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
cjo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6fkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
KToKKyAgICAgICAgKFdlYktpdDo6c2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChX
ZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyOjpjcmVhdGVGaWxlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmNsZWFyRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQ
cmV2aWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKwogMjAyMS0xMS0w
OCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgd2ViVmlldy5z
Y3JvbGxWaWV3LmluZGljYXRvclN0eWxlIGRvZXMgbm90IHdvcmsgb24gaU9TIDE1CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lv
bi9SZW1vdGVNZWRpYVNlc3NpCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXll
clByb3ZpZGVyLmNwcAorCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDgg
QEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNz
L01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVt
ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAg
dm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpG
bG9hdFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmlu
ZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODA1LDE1ICsxMDgwNSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lk
IFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVt
ZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVy
bCwgdXVpZCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAo
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9k
ZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0
SWQpKTsKKyAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcodXJsLCB1dWlkLCBzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01ODksOCArNTg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlk
T2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3Ry
aW5nJiwgdWludDMyX3QpOworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1
ODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVybCwg
U3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBz
aXplKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJtaXNz
aW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6
UGVybWlzc2lvbkRlc2NyaXB0b3IgZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJDb3Jl
OjpQZXJtaXNzaW9uU3RhdGUgc3RhdGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29h
Lm1tCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9N
b2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lz
dGVtUHJldmlld1NQSS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAt
MTI0LDEwICsxMjUsMTIgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9kZWxF
bAogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2RlbEVs
ZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0
cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2RlbEVs
ZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxlVVJM
LCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2VQ
cm94eS5wcmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fd2Vi
UGFnZVByb3h5LnByZWZlcmVuY2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
eyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBlbGVt
ZW50IGRpc2FibGVkIl9zIH0pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8g
bnNVVUlEID0gYWRvcHROUyhbW05TVVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRd
KTsKICAgICBhdXRvIHByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0
YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpIFVVSUQ6bnNVVUlELmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2b2lk
IE1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAgICBp
dGVyYXRvci0+dmFsdWUgPSBwcmV2aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5v
dCBqdXN0IHVzaW5nIG5vcm1hbCBVUkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRvIHVy
bCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZp
bGVTeXN0ZW1QYXRoKCldKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7
Ci0gICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29udGV4
dENvcHkgPSBjb250ZXh0OwotICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJMICp1
cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07Ci0g
ICAgW3ByZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4o
TlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1cFJl
bW90ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhp
cyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJs
ID0gV1RGTW92ZSh1cmwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoTlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewogICAg
ICAgICBpZiAoY29udGV4dEVycm9yKSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAi
VW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwgdXVp
ZENvcHkudXRmOCgpLmRhdGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0p
OworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3Rl
IGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29udGV4
dEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciB7IGNvbnRleHRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdl
YWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxFbGVt
ZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWRD
b3B5LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNo
ZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7
CiAKLSAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxl
dGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICBb
cHJldmlldyBwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZpZXcs
IHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxlIGxv
YWRFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAgICAg
ICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQg
JXM6ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dKTsKKyAgICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRv
IGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2FkRXJy
b3IubG9jYWxpemVkRGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciB7IGxvYWRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4i
LCB1dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQs
ICJMb2FkZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAg
ICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENvcHks
IHV1aWRDb3B5LCBjb250ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUgewot
ICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRl
eHRJZCk7CisgICAgICAgICAgICBhdXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF07
CisgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtU
aGlzKSwgdXVpZCA9IFdURk1vdmUodXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4dElk
KSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0pLmdl
dCgpXTsKKyAgICB9KS5nZXQoKV07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0MzApCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC01MjE2LDYgKzUyMTYsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1
IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXS0J1bmRsZVBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIx
MjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVh
UHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94
eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQx
OTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJL
aXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyQjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUwMEEy
RDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1vZGVs
UGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUIy
NzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEy
QUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC05NzY4LDYgKzk3NzIsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJF
NCAvKiBNZWRpYUNhY2hlICovLAogCQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBNZWRp
YVNlc3Npb24gKi8sCiAJCQkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFt
ICovLAorCQkJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1MTA1
QjBEMjE2MkY3QTVFMDBFMjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4
MDAyOURFQjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0
OTAwREIxMzcxIC8qIFBsdWdpbnMgKi8sCkBAIC0xMDU5Nyw2ICsxMDYwMiwyNSBAQAogCQkJcGF0
aCA9IGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3MzJF
RjY1MDBBMkQxOTEgLyogTW9kZWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJQkMy
QjQxMUIyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAor
CQkJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmgg
Ki8sCisJCQkpOworCQkJcGF0aCA9IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJQkMyQjQxMEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkx
IC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQyNzMy
RUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAorCQkJ
KTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlC
QzJFNkU3NDExNDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNpbmNs
dWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgog
Ci0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TE1vZGVsRWxlbWVudC5oPgorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisj
aW5jbHVkZSAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAjaWYg
IU9TKFdJTkRPV1MpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJz
aXRlRGF0YVN0b3JlUGFyYQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRN
ZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQogICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6
OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkpOworICAgICAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURp
cmVjdG9yeSk7CiAjZW5kaWYKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2Rl
bFBsYXllclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+CisK
KyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYk1vZGVsUGxheWVyUHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYg
cGFnZSkKKyAgICA6IG1fcGFnZSB7IHBhZ2UgfQoreworICAgIFVOVVNFRF9QQVJBTShtX3BhZ2Up
OworfQorCitXZWJNb2RlbFBsYXllclByb3ZpZGVyOjp+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigp
ID0gZGVmYXVsdDsKKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92
ZXJyaWRlcy4KKworUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBXZWJNb2RlbFBsYXllclBy
b3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xp
ZW50KQoreworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgcmV0dXJu
IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNl
bmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyUHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIgZmlu
YWwgOiBwdWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAg
V2ViTW9kZWxQbGF5ZXJQcm92aWRlcihXZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViTW9kZWxQ
bGF5ZXJQcm92aWRlcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVy
UHJvdmlkZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxh
eWVyPiBjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpIGZpbmFs
OworCisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9k
ZWxQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyQ2xpZW50Lmg+CisjaW5j
bHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpD
X0NMQVNTIEFTVklubGluZVByZXZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpNb2Rl
bFBsYXllciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllcj4gY3JlYXRlKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpOworICAg
IHZpcnR1YWwgfkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKCk7CisKKyAgICBzdGF0aWMg
dm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKworcHJp
dmF0ZToKKyAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiwgV2ViQ29y
ZTo6TW9kZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyIG92
ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChXZWJDb3JlOjpNb2RlbCYsIFdlYkNvcmU6
OkxheW91dFNpemUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIo
KSBvdmVycmlkZTsKKworICAgIHZvaWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYpOworICAg
IHZvaWQgY2xlYXJGaWxlKCk7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsKKyAgICBX
ZWFrUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAgIFN0cmlu
ZyBtX2ZpbGVQYXRoOworICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGluZVBy
ZXZpZXc7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldl
YlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CisjaW1wb3J0
IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtp
bmcuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09S
SyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVBy
ZXZpZXcpOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyPiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdlYlBhZ2Um
IHBhZ2UsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwgY2xpZW50
KSk7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYg
Y2xpZW50KQorICAgIDogbV9wYWdlIHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNsaWVudCB9
Cit7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIoKQoreworICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMgU3RyaW5n
JiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7CisgICAg
cmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0aWMgY29u
c3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHNo
YXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0
cmluZyYgcGF0aCkKK3sKKyAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0g
cGF0aDsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmls
ZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEg
ZmlsZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2
aWV3LAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1
NjcuCisKKyAgICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gbW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9yeUV4
aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVj
dG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRpcmVj
dG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVj
dG9yeSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2Vs
bCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KKyAgICBh
dXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsK
KyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0
YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVt
OjpjbG9zZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2b2lk
IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAgIGlmICht
X2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsK
K30KKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisKK3ZvaWQg
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwmIG1vZGVs
U291cmNlLCBXZWJDb3JlOjpMYXlvdXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJvbmdDbGll
bnQgPSBtX2NsaWVudC5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAoIXN0
cm9uZ1BhZ2UpIHsKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIG1vZGVsU291cmNlLnVybCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsKKworICAg
IG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNl
KCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXI6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQg
c2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmlu
ZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtTZWxm
ID0gV2Vha1B0ciB7ICp0aGlzIH1dIChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJf
dD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQgPSBzdHJv
bmdTZWxmLT5tX2NsaWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIExP
RyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9jZXNzIik7
CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCBy
ZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBhdXRvJiBbdXVpZCwgY29udGV4dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmluZyBleHBl
Y3RlZFVVSUQgPSBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmc7
CisKKyAgICAgICAgaWYgKHV1aWQgIT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAgICBMT0co
TW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhw
ZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgpLmRhdGEo
KSk7CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRl
cm5hbCwgMCwgeyB9LCBtYWtlU3RyaW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6
aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVk
ICIsIHV1aWQsICIgYnV0IGV4cGVjdGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5tX2lubGlu
ZVByZXZpZXcgc2V0UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0coTW9kZWxF
bGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRP
YnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rp
b24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBzdHJvbmdD
bGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAgCisgICAg
c3Ryb25nUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1v
ZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lubGluZVBy
ZXZpZXcgbGF5ZXJdOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSwxMSBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgogCisj
aWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVz
Lmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIApAQCAtOTEsNyArOTYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlCiAgICAgICAgIH07CiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykK
LSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVp
bHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBpZiAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90
aWZpY2F0aW9uc0VuYWJsZWQoKSAmJiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9u
KCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2Fn
ZUhhbmRsZXI6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3Jp
Z2luLnRvU3RyaW5nKCkpLCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2Ut
PnNlc3Npb25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE1MjcsMTEgKzE1MjcsNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
dGFrZU1vZGVsRWxlbWVudEZ1CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRl
UHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpIGNv
bnN0Ci17Ci0gICAgbV9wYWdlLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxlbWVudCwg
dXJsLCB1dWlkLCBzaXplKTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtNDU4LDkgKzQ1OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX0lPUykKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkgY29uc3QgZmlu
YWw7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZv
aWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikg
Y29uc3QgZmluYWw7Ci0jZW5kaWYKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFt
ZUhhc0hvcml6b250YWxTY3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2Nh
Y2hlZE1haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODU0
MzApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9y
YWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3lzdGVtQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVyUHJvdmlk
ZXIuaCIKICNpbmNsdWRlICJXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0
aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKQEAg
LTI3MywxMCArMjc0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
aD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUg
PFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9E
RVRFQ1RJT04pCiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogI2VuZGlmCkBAIC01
NzUsNyArNTcyLDggQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAog
ICAgICAgICBtYWtlVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKnRoaXMpLAogICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSwK
ICAgICAgICAgV2ViUGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyksCi0gICAgICAg
IG1ha2VVbmlxdWVSZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVS
ZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYk1vZGVs
UGxheWVyUHJvdmlkZXI+KCp0aGlzKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hy
b21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkBAIC03NzM5LDIxICs3NzM3LDYgQEAgdm9pZCBXZWJQYWdlOjp0YWtlTW9kZWxF
bGVtZW50RnVsbHNjcmVlbgogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQotdm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAo
YXV0byBlbGVtZW50Q29udGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpKQotICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZp
ZXcoKmVsZW1lbnRDb250ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKLX0KLQotdm9pZCBXZWJQYWdl
Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJf
dCBjb250ZXh0SWQpCi17Ci0gICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQoZWxl
bWVudENvbnRleHQpOwotICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PihlbGVt
ZW50KSkKLSAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4oKmVsZW1l
bnQpLmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29udGV4dElkKTsKLX0K
LSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNjcm9sbFRvUmVjdChjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9yaWdpbikKIHsK
ICAgICBtYWluRnJhbWVWaWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHRhcmdldFJl
Y3QubWluWE1pbllDb3JuZXIoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTAgKzIyMCw2
IEBAIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNs
YXNzIFZpc2libGVQb3NpdGlvbjsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykK
LWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQ7Ci0jZW5kaWYKLQogZW51bSBTeW50aGV0aWNDbGlja1R5
cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIENPRVBEaXNwb3NpdGlvbiA6IGJvb2w7CiBlbnVtIGNs
YXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKQEAgLTE0OTYsMTAgKzE0OTIs
NiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICB2
b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmll
dyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3
RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3Qg
U3RyaW5nJiwgdWludDMyX3QpOwotI2VuZGlmCiAKICAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFs
SmF2YVNjcmlwdERpYWxvZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NTQzMCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTY0Nyw4ICs2NDcsNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKGVudW06dWluCiAjZW5kaWYKIAogICAgIFNjcm9sbFRvUmVjdChXZWJDb3JlOjpGbG9h
dFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0KLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudFByZXZpZXdEaWRP
YnRhaW5Db250ZXh0SWQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250
ZXh0LCBTdHJpbmcgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotI2VuZGlmCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFj
dG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9j
dW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDIxLTEx
LTA2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGVtcHR5IGRpcmVjdG9yaWVzIGZyb20gZnJvbSBzdm4ud2Via2l0Lm9yZyByZXBvc2l0b3J5IGFz
IG9mIHIyODUzNTcKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL0R1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlkZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgpAQCAtMTU0Myw3ICsxNTQ0LDggQEAgLSAodm9p
ZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBtYWtlVW5pcXVlUmVm
PFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHByaXZhdGVC
cm93c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJv
bGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3Jh
Z2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2Vs
Zik7CkBAIC0xODIzLDcgKzE4MjUsOCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0
aFN0eWxlOihOCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
b3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3Jl
YXRlKFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAg
ICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAg
bWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVu
dElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMDgg
IFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9y
bSBzcGVjaWZpYyBjb2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAo
V2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiByZW5hbWUgYWN0aW9uVmVy
YigpIGFzIGxvY2FsaXplZEFjdGlvblZlcmIoKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1t
eVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3Rv
cmFnZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTMwNjUsNyAr
MzA2Niw4IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoZmFsc2UpLAogICAgICAgICBXZWJD
b3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAgICAg
Y29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQo=
</data>
<flag name="commit-queue"
          id="468401"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443629</attachid>
            <date>2021-11-08 16:31:09 -0800</date>
            <delta_ts>2021-11-08 16:57:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108163109.patch</filename>
            <type>text/plain</type>
            <size>102896</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtXZWJHUFVdIENvbm5lY3QgSlMgYmluZGluZ3MgY29kZSB0byBpbnRl
cm5hbCBXZWJHUFUgaW50ZXJmYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
Mjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9uYXZpZ2F0b3Jj
b250ZW50dXRpbHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbm90aWZpY2F0aW9ucyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9wYXltZW50cmVxdWVzdCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxMSBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDVXRpbHMuaAogCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCisgICAgTW9k
dWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKKyAgICBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50
L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1t
eS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAogCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNs
aWVudC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2ICsyMzQsMTEgQEAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1lLmNwcAogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9ydEJhY2tlbmQuY3BwCiBN
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKK01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNw
cAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCitNb2R1
bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAogTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVsZXMvbm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXltZW50cmVxdWVzdC9NZXJj
aGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkocmV2
aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksNyArOTksNiBAQCBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0
L0FwcGxlUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFk
ZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRl
ck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29h
LmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQogTW9k
dWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1bGVzL3NwZWVj
aC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2Ev
V2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKICNp
bmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1MTW9kZWxFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgorI2luY2x1ZGUg
Ik1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVs
ZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgICAg
ICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9CiAKIFJlZjxIVE1MTW9k
ZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsxMjksMTYgQEAgdm9pZCBI
VE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAgICBtX3Jlc291cmNlID0g
bnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikKKyAgICAgICAgbV9tb2Rl
bFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxl
ZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJy
b3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVSZWY8UmVhZHlQcm9taXNl
PigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJlc29sdmUpOwogCi0gICAg
aWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisgICAgaWYgKG1fc291cmNl
VVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25z
OjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBAIEhUTUxNb2RlbEVsZW1l
bnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLSNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgcmV0dXJuIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNl
dE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKLX0KLQotY29uc3QgU3Ry
aW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0g
ICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci19Ci0jZW5kaWYK
LQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRp
ZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0Rv
Y3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3Rp
ZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogCi0j
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBtb2RlbERpZENoYW5nZSgp
OwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3VwcG9ydAorCit2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBGSVhNRTogRm9yIHRo
ZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBpbmZvcm0gdGhlIHBhZ2Ug
dGhhdCB0aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJlbmRlcj8gRm9yIHRoZSBj
YXNlIG9mIG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxzbyBidWlsZCB0aGUgbW9k
ZWwgd2hlbi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4KKworICAgIGF1dG8gcGFn
ZSA9IGRvY3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVy
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBub3csIGNyZWF0ZU1vZGVs
UGxheWVyIHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1c2VkLCBidXQgdGhhdCBu
ZWVkcyB0byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlv
biBiZXR3ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhlIEhUTUxNb2RlbEVsZW1l
bnQuIE9uY2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBsYXllcigpIHNob3VsZCBi
ZSB1cGRhdGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQbGF5ZXIgPSBwYWdlLT5t
b2RlbFBsYXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRoaXMpOworICAgIGlmICgh
bV9tb2RlbFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQg
dG8gdGVsbCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMgd2VsbCwgc28gcGFzc2lu
ZyB0aGlzCisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNuJ3QgbWFrZSBzZW5zZS4K
KyAgICBhdXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2Up
LnNpemUoKTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9kZWwsIHNpemUpOworfQor
Citib29sIEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQbGF0Zm9ybUxheWVyKiBI
VE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9t
b2RlbFBsYXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5p
c2hMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAgICBBU1NFUlRfVU5VU0VE
KG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXllcik7CisKKyAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRGYWlsTG9h
ZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQorewor
ICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXllciA9PSBtX21vZGVsUGxh
eWVyKTsKK30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQuCisKIHZvaWQgSFRNTE1v
ZGVsRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1FOiBBZGQgYSBuZXcgbWV0
aG9kIHRvIE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVuIGFuZCBtb3ZlIHRoaXMg
aW50byB0aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxheWVyIGltcGxlbWVudGF0
aW9uLgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgYXV0byogcGFn
ZSA9IGRvY3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
aAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjEgKzMyLDE5IEBA
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi1PQkpDX0NMQVNTIEFTVklu
bGluZVByZXZpZXc7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2Rl
bDsKK2NsYXNzIE1vZGVsUGxheWVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFz
cyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwogCi1jbGFzcyBIVE1MTW9kZWxF
bGVtZW50IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50IHsKK2NsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVs
ZW1lbnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQsIHB1YmxpYyBNb2RlbFBsYXll
ckNsaWVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MTW9kZWxFbGVtZW50KTsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU1LDIxICs1MywxNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNvbnN0IFVSTCYgY3VycmVudFNyYygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAgICAvLyBNQVJLOiBET00gRnVuY3Rpb25z
IGFuZCBBdHRyaWJ1dGVzCisKICAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlUHJv
eHlXaXRoUmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9kZWxFbGVtZW50Pj47CiAg
ICAgUmVhZHlQcm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQcm9taXNlLmdldCgpOyB9
CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtb2RlbERhdGEoKSBjb25zdDsKICAgICBSZWZQ
dHI8TW9kZWw+IG1vZGVsKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVcpCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0
IFN0cmluZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBib29sIHVzZXNQbGF0Zm9ybUxheWVy
KCkgY29uc3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25z
dCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCk7Ci0jZW5kaWYKIAogICAgIHZvaWQg
ZW50ZXJGdWxsc2NyZWVuKCk7CiAKQEAgLTc5LDEzICs3Miw5IEBAIHByaXZhdGU6CiAgICAgSFRN
TE1vZGVsRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZv
aWQgc2V0U291cmNlVVJMKGNvbnN0IFVSTCYpOwotICAgIEhUTUxNb2RlbEVsZW1lbnQmIHJlYWR5
UHJvbWlzZVJlc29sdmUoKTsKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0gICAgdm9pZCBjbGVhckZpbGUoKTsKLSAgICB2b2lkIGNyZWF0ZUZpbGUoKTsKICAgICB2b2lk
IG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKKworICAgIEhUTUxNb2RlbEVsZW1lbnQmIHJlYWR5
UHJvbWlzZVJlc29sdmUoKTsKIAogICAgIC8vIERPTSBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRN
b3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1
bWVudCkgZmluYWw7CkBAIC05Nyw2ICs4NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGF0YVJl
Y2VpdmVkKENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5n
dGgpIGZpbmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25z
dCBOZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAorICAgIC8vIE1vZGVsUGxheWVyQ2xpZW50
IG92ZXJyaWRlcy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImKSBmaW5h
bDsKKyAgICB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwgY29uc3QgUmVzb3VyY2VF
cnJvciYpIGZpbmFsOworCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsKQEAgLTEwNCwxMCArOTcsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJl
ZjxSZWFkeVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUg
eyBmYWxzZSB9OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICBT
dHJpbmcgbV9maWxlUGF0aDsKLSAgICBSZXRhaW5QdHI8QVNWSW5saW5lUHJldmlldz4gbV9pbmxp
bmVQcmV2aWV3OwotI2VuZGlmCisgICAgUmVmUHRyPE1vZGVsUGxheWVyPiBtX21vZGVsUGxheWVy
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENv
Y29hLm1tCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTMz
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgotCi0jaWYg
RU5BQkxFKE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0KLSNpbmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNs
dWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgotI2luY2x1ZGUgIlNldHRp
bmdzLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgotI2luY2x1
ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3
dGYvVVVJRC5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwot
U09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUoKQotewot
ICAgIC8vIFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBu
YXR1cmUgb2YgQVNWSW5saW5lUHJldmlldywKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY3LgotCi0gICAgY2xlYXJGaWxlKCk7Ci0KLSAgICBhdXRv
IHBhdGhUb0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KCk7Ci0gICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0
cyhwYXRoVG9EaXJlY3RvcnkpOwotICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3Rl
bTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0
ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZp
bGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
V2UgbmVlZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCi0gICAgYXV0byBmaWxlTmFtZSA9IEZp
bGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkg
KyAiLnVzZHoiOwotICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7Ci0gICAgYXV0byBmaWxlID0g
RmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6
V3JpdGUpOwotICAgIGlmIChmaWxlIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIEZpbGVT
eXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7
Ci0gICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgIG1fZmlsZVBhdGggPSBmaWxl
UGF0aDsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUoKQotewotICAgIGlm
IChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKLSAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmco
KTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgpCi17Ci0gICAg
Y3JlYXRlRmlsZSgpOwotCi0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwot
ICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc2l6ZSA9IHJl
bmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOwotCi0gICAgbV9p
bmxpbmVQcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KV0pOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENo
YW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAlZi4iLCAo
KFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCks
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgobV9maWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZywgc2l6ZSk7
Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRl
eHRJZChjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAo
IWRvY3VtZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5V
VUlEU3RyaW5nKSB7Ci0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50
OjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2
ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgKChTdHJpbmcpW21f
aW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIFttX2lubGluZVByZXZpZXcgc2V0UmVtb3RlQ29udGV4dDpj
b250ZXh0SWRdOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojppbmxp
bmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIHJl
bW90ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7Ci0KLSAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICByZW5kZXJl
ci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKLX0KLQotUGxhdGZvcm1MYXllciogSFRNTE1vZGVsRWxl
bWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2lubGluZVByZXZp
ZXcgbGF5ZXJdOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitNb2RlbFBsYXllcjo6fk1vZGVsUGxheWVyKCkgPSBkZWZhdWx0OworCit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvTW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1vZGVsUGxh
eWVyIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kZWxQbGF5ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Nb2RlbFBs
YXllcigpOworCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSA9IDA7
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpID0gMDsKK307CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyQ2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBs
YXllckNsaWVudDo6fk1vZGVsUGxheWVyQ2xpZW50KCkgPSBkZWZhdWx0OworCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQ
bGF5ZXJDbGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBSZXNvdXJjZUVycm9yOworCitjbGFzcyBNb2RlbFBs
YXllckNsaWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2RlbFBsYXllckNsaWVudD4gewor
cHVibGljOgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJQcm92aWRlcjo6fk1vZGVsUGxheWVyUHJvdmlk
ZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQ
cm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBNb2RlbFBsYXllckNsaWVudDsKKwor
Y2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXJQcm92aWRlciB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXJQcm92aWRl
cigpOworCisgICAgLy8gRklYTUU6IE9uY2UgYWxsIGNsaWVudHMgaGF2ZSBhZG9wdGVkIE1vZGVs
UGxheWVyUHJvdmlkZXIsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgY2hhbmdlZCB0byByZXR1cm4g
YSBSZWY8TW9kZWxQbGF5ZXI+CisgICAgdmlydHVhbCBSZWZQdHI8TW9kZWxQbGF5ZXI+IGNyZWF0
ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JikgPSAwOworfTsKKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9k
dW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKKyNpbmNsdWRlICJNb2RlbC5oIgor
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8
RHVtbXlNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRlKE1vZGVsUGxheWVyQ2xp
ZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlNb2RlbFBsYXll
cihjbGllbnQpKTsKK30KKworRHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcihNb2Rl
bFBsYXllckNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQgeyBjbGllbnQgfQoreworfQor
CitEdW1teU1vZGVsUGxheWVyOjp+RHVtbXlNb2RlbFBsYXllcigpID0gZGVmYXVsdDsKKwordm9p
ZCBEdW1teU1vZGVsUGxheWVyOjpsb2FkKE1vZGVsJiBtb2RlbCwgTGF5b3V0U2l6ZSkKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywg
UmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1vZGVsLnVybCgp
LCAiVHJ5aW5nIHRvIGxvYWQgbW9kZWwgdmlhIER1bW15TW9kZWxQbGF5ZXIiX3MgfSk7Cit9CisK
K1BsYXRmb3JtTGF5ZXIqIER1bW15TW9kZWxQbGF5ZXI6OmxheWVyKCkKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1t
eU1vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKyNpbmNsdWRlICJN
b2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VY
UE9SVCBEdW1teU1vZGVsUGxheWVyIGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyIHsKK3B1Ymxp
YzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPER1bW15TW9kZWxQbGF5ZXI+IGNyZWF0
ZShNb2RlbFBsYXllckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkR1bW15
TW9kZWxQbGF5ZXIoKTsKKworcHJpdmF0ZToKKyAgICBEdW1teU1vZGVsUGxheWVyKE1vZGVsUGxh
eWVyQ2xpZW50Jik7CisKKyAgICAvLyBNb2RlbFBsYXllciBvdmVycmlkZXMuCisgICAgdmlydHVh
bCB2b2lkIGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICBXZWFrUHRyPE1vZGVsUGxheWVy
Q2xpZW50PiBtX2NsaWVudDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKKyNpbmNsdWRl
ICJEdW1teU1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CitE
dW1teU1vZGVsUGxheWVyUHJvdmlkZXI6On5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRl
ZmF1bHQ7CisKK1JlZlB0cjxNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjpj
cmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVy
biBEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUoY2xpZW50KTsKK30KKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXJQcm92
aWRlciBmaW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBX
RUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKworcHJpdmF0ZToKKyAg
ICAvLyBNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIFJlZlB0cjxN
b2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKSBvdmVycmlk
ZTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA2NSw2
ICs0MDY1LDExIEBACiAJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzIzRUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjNGMERC
MERBRkY0QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyM0YwREEwREFGRjRBNDAwOUZEQzkxIC8qIEdl
bmVyYXRlZEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
NzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9
OworCQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTEzMjczMkYwNjIwMEEy
RDE5MSAvKiBNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCUJDMkI0MTE4MjczMkY0MjMwMEEyRDE5MSAvKiBNb2RlbFBsYXllclBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzJCNDExNTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTE5MjczMkY0
MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1vZGVs
UGxheWVyQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTIzMjcz
MzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMzEyNzM0QTA4NjAwQTJEMTkxIC8q
IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0
QjE0MEYxQTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQlCQzJD
Q0ExMDI2NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50
LmggKi87IH07CkBAIC0xMDc5NSw3ICsxMDgwMCw2IEBACiAJCTcxQzI5RTMxMjAzQ0U3NkMwMDhG
MzZEMiAvKiBDU1NBbmltYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0FuaW1h
dGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQzVCQjFCMUZCNjExRUEw
MDA3QTJBRSAvKiBBbmltYXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbmltYXRh
YmxlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDOTE2MDcxRDE0ODNBMzAw
QUNBNDdEIC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3MUNBQTNEOTI2OEQwQkY5MDBGMjU0MTAgLyogSFRNTE1v
ZGVsRWxlbWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTE1vZGVsRWxlbWVu
dENvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNFMkM1MTIyMDlEQzdG
MDBDNDk0QkQgLyogTW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNzFEMDJEOTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmphdmFzY3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MUQwMkQ5MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29udHJvbGxlci5qcyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRpYS1jb250cm9sbGVyLmpz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzI2LDYgKzE0NzMwLDE2IEBACiAJ
CUJDMjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc0QjMwMTQwRUJFRDgwMEVBREZB
NiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRU
eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5wdXRU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEUyNzMyRUZFNDAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVsUGxheWVy
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTEyMjczMkYwM0Mw
MEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2Rl
bFBsYXllckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTEz
MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBs
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNDI3MzJGMDYyMDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNTI3MzJGMEM3MDBBMkQx
OTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBsYXllclBy
b3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTE2MjczMkYwQzcw
MEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1v
ZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJC
NDEyMDI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVtbXlNb2RlbFBs
YXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjRCMTQwRjFBNjUw
MDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNDQTBFMjY1NUREQjIwMEI4
QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVzdGluYXRp
b25Db2xvclNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg5OCwxMSAr
MTg5MTIsMTEgQEAKIAkJMUE1NjlDQzQwRDdFMkI2MDAwN0MzOTgzIC8qIGJyaWRnZSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNTlCNTk3NzExMTA4NjU1
NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNFMjBEN0UyQjgyMDA3QzM5ODMgLyogb2Jq
YyAqLywKIAkJCQk1OTlFNzU4RjExMDU1QTFGMDBEOTA0RkEgLyogQnJpZGdlLmggKi8sCiAJCQkJ
MUE3MUQ1NzkwRjMzODE5MDAwRjlDRTRFIC8qIElkZW50aWZpZXJSZXAuY3BwICovLAogCQkJCTFB
NzFENTdBMEYzMzgxOTAwMEY5Q0U0RSAvKiBJZGVudGlmaWVyUmVwLmggKi8sCi0JCQkJNTlCNTk3
NzExMTA4NjU1NjAwNzE1OUU4IC8qIGpzYyAqLywKIAkJCQkxQTU2OUNFRjBEN0UyQjgyMDA3QzM5
ODMgLyogcnVudGltZV9hcnJheS5jcHAgKi8sCiAJCQkJMUE1NjlDRjAwRDdFMkI4MjAwN0MzOTgz
IC8qIHJ1bnRpbWVfYXJyYXkuaCAqLywKIAkJCQkxQTU2OUNGMTBEN0UyQjgyMDA3QzM5ODMgLyog
cnVudGltZV9tZXRob2QuY3BwICovLApAQCAtMjM3NDAsMTAgKzIzNzU0LDE2IEBACiAJCTcxRjg0
OUNDMjU2NUFCN0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVtZW50ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEyMjI3MzM1RTBDMDBBMkQxOTEgLyog
ZHVtbXkgKi8sCiAJCQkJNzFBM0QxODAyNTYyQjgyNTAwNjRFMkE2IC8qIEhUTUxNb2RlbEVsZW1l
bnQuY3BwICovLAogCQkJCTcxQTNEMTdEMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVt
ZW50LmggKi8sCiAJCQkJNzFBM0QxN0YyNTYyQjgyNDAwNjRFMkE2IC8qIEhUTUxNb2RlbEVsZW1l
bnQuaWRsICovLAotCQkJCTcxQ0FBM0Q5MjY4RDBCRjkwMEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVt
ZW50Q29jb2EubW0gKi8sCisJCQkJQkMyQjQxMTQyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxh
eWVyLmNwcCAqLywKKwkJCQlCQzJCNDExMzI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIu
aCAqLywKKwkJCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQu
Y3BwICovLAorCQkJCUJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVu
dC5oICovLAorCQkJCUJDMkI0MTE2MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3Zp
ZGVyLmNwcCAqLywKKwkJCQlCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQ
cm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSAibW9kZWwtZWxlbWVudCI7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzMDksNiArMjgzMjksMTcgQEAKIAkJCXBhdGggPSBq
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUJDMkI0MTIyMjczMzVFMEMw
MEEyRDE5MSAvKiBkdW1teSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuY3Bw
ICovLAorCQkJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmgg
Ki8sCisJCQkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBkdW1teTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzMxNzYs
NiArMzMyMDcsOCBAQAogCQkJCTgxRjY1RkY2MTM3ODhGQUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEcmF3R2x5
cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE5MUY2MjREMzJEREMwMEJGRDg5
QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMjUy
NzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRDZCN0E4MjU1MUQ0MUYwMDU4REQzQSAvKiBEdW1teVNwZWVj
aFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMDg1REY4MjZFODIy
QzcwMDBFQzZBNyAvKiBEdW1teVN0b3JhZ2VQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNMaW5rZXJJbnRlcnBvc2luZy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zNTA4Niw2ICszNTExOSw5IEBACiAJCQkJQ0RGMkIwMTkxODIwNTQw
NzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MTU2MTBDMjM0
QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3MDBDRkNCQUIgLyogTW9kZWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTkyNzMyRjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxh
eWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExODI3MzJGNDIzMDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzZENzRBRDUwOUFB
MjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzA5QTAxRkUxRTNEMEJERDAwNkIwRDRDIC8qIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjAxQzFBMUY4RTgyMTMwMDc2QTAzMiAvKiBNb2R1bGVG
ZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAj
aW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgi
CiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIgogI2lu
Y2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50Lmgi
CkBAIC01ODgsMTIgKzU4OSw2IEBAIHZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVs
ZW1lbnQKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykK
LXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0Ci17Ci19Ci0jZW5kaWYKLQogdm9pZCBFbXB0eUZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRl
KiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYpCiB7CiB9CkBAIC0xMTk4LDcgKzExOTMsOCBAQCBQYWdlQ29uZmlndXJhdGlvbiBwYWdl
Q29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8RW1wdHlNZWRpYVJlY29y
ZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIEVtcHR5QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
cmVhdGUoKSwKICAgICAgICAgRHVtbXlQZXJtaXNzaW9uQ29udHJvbGxlcjo6Y3JlYXRlKCksCi0g
ICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJl
ZjxEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICB9OwogCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNocm9tZUNsaWVudDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjIyLDEw
ICsyMjIsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6IHB1YmxpYyBDaHJvbWVDCiAjZW5k
aWYKIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0jaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOwotI2Vu
ZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYgZW1wdHlEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAy
ODU0MzApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MDcsOSArNjA3LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19JT1MpCiAgICAgdmlydHVhbCB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVu
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCkgY29uc3QgeyB9CiAjZW5k
aWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZpcnR1YWwgdm9p
ZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBj
b25zdCB7IH07Ci0jZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkNocm9tZUNsaWVu
dCgpID0gZGVmYXVsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjg1NDMwKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNiAr
ODksNyBAQAogI2luY2x1ZGUgIkxvd1Bvd2VyTW9kZU5vdGlmaWVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgi
CisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIk5hdmlnYXRvci5o
IgogI2luY2x1ZGUgIlBhZ2VDb2xvclNhbXBsZXIuaCIKICNpbmNsdWRlICJQYWdlQ29uZmlndXJh
dGlvbi5oIgpAQCAtMzMzLDYgKzMzNCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24m
JiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xsZXIoV1RGTW92ZShwYWdlQ29u
ZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBtX3JlcG9ydGluZ0VuZHBv
aW50c0NhY2hlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucmVwb3J0aW5nRW5kcG9pbnRzQ2Fj
aGUpKQogICAgICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5z
dG9yYWdlUHJvdmlkZXIpKQorICAgICwgbV9tb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUocGFn
ZUNvbmZpZ3VyYXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikpCiB7CiAgICAgdXBkYXRlVGltZXJU
aHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMzc1NSw0ICszNzU3LDkgQEAgU3RvcmFnZUNvbm5lY3Rp
b24mIFBhZ2U6OnN0b3JhZ2VDb25uZWN0aQogICAgIHJldHVybiBtX3N0b3JhZ2VQcm92aWRlci0+
c3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAorTW9kZWxQbGF5ZXJQcm92aWRlciYgUGFnZTo6bW9k
ZWxQbGF5ZXJQcm92aWRlcigpCit7CisgICAgcmV0dXJuIG1fbW9kZWxQbGF5ZXJQcm92aWRlci5n
ZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjQsNiArMTI0LDcgQEAgY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xh
c3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUmVjb3JkZXJQcm92aWRlcjsKIGNs
YXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsKK2NsYXNzIE1vZGVsUGxheWVyUHJv
dmlkZXI7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNzIFBhZ2VDb25zb2xlQ2xpZW50
OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkBAIC04OTYsNiArODk3LDggQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIFBlcm1pc3Npb25Db250cm9sbGVyJiBwZXJtaXNzaW9uQ29udHJvbGxl
cigpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VDb25uZWN0aW9uJiBzdG9yYWdlQ29ubmVj
dGlvbigpOwogCisgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYgbW9kZWxQbGF5ZXJQcm92aWRlcigp
OworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsKICAgICAgICAgUmVnaXN0cmFi
bGVEb21haW4gZG9tYWluOwpAQCAtMTIyOCw2ICsxMjMxLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
UGVybWlzc2lvbkNvbnRyb2xsZXI+IG1fcGVybWlzc2lvbkNvbnRyb2xsZXI7CiAgICAgUmVmUHRy
PFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBtX3JlcG9ydGluZ0VuZHBvaW50c0NhY2hlOwogICAg
IFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFnZVByb3ZpZGVyOworICAgIFVuaXF1
ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxheWVyUHJvdmlkZXI7CiAKICNpZiBF
TkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVkVGV4dFJlY29nbml0aW9uUmVz
dWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwgSW50UmVjdD47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjg1NDMw
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgog
I2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFSZWNvcmRlclBy
b3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIlBlcm1pc3Npb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCkBAIC02Miw3ICs2Myw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0
aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiBl
ZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwgVW5pcXVl
UmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2FjaGVTdG9y
YWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVudFByb3Zp
ZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBiYWNr
Rm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJlZjxQcm9n
cmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVSZWY8RnJh
bWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVSZWY8U3Bl
ZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLCBVbmlx
dWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRlciwgUmVm
PEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0cnksIFJl
ZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJvbGxlciwgVW5pcXVlUmVm
PFN0b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIpCitQYWdlQ29uZmlndXJhdGlvbjo6
UGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVbmlxdWVSZWY8RWRp
dG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFBy
b3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIs
IFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlciwgUmVmPFVz
ZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlciwgUmVmPEJhY2tGb3J3YXJk
Q2xpZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2llSmFyPiYmIGNvb2tpZUphciwg
VW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9ncmVzc1RyYWNrZXJDbGllbnQs
IFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnRGb3JNYWluRnJhbWUs
IFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmIHNwZWVjaFJlY29nbml0aW9u
UHJvdmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYgbWVkaWFSZWNvcmRl
clByb3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmIGJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmIHBlcm1pc3Npb25Db250cm9s
bGVyLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3JhZ2VQcm92aWRlciwgVW5pcXVl
UmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+JiYgbW9kZWxQbGF5ZXJQcm92aWRlcikKICAgICA6IHNl
c3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBlZGl0b3JDbGllbnQoV1RGTW92ZShlZGl0b3JDbGll
bnQpKQogICAgICwgc29ja2V0UHJvdmlkZXIoV1RGTW92ZShzb2NrZXRQcm92aWRlcikpCkBAIC03
OCw2ICs3OSw3IEBAIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUwKICAg
ICAsIG1lZGlhUmVjb3JkZXJQcm92aWRlcihXVEZNb3ZlKG1lZGlhUmVjb3JkZXJQcm92aWRlcikp
CiAgICAgLCBwZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBlcm1pc3Npb25Db250cm9sbGVy
KSkKICAgICAsIHN0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHN0b3JhZ2VQcm92aWRlcikpCisgICAg
LCBtb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUobW9kZWxQbGF5ZXJQcm92aWRlcikpCiB7CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9u
IDI4NTQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNsYXNzIEJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeTsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVyOwotY2xhc3MgQ29va2llSmFy
OwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CitjbGFzcyBD
b29raWVKYXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwogY2xhc3MgRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQ7CiBjbGFzcyBEcmFnQ2xpZW50OwpAQCAtNTcsNiArNTcsNyBAQCBjbGFzcyBGcmFt
ZUxvYWRlckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIExpYldlYlJUQ1By
b3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOworY2xhc3MgTW9kZWxQbGF5ZXJQ
cm92aWRlcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIFBlcmZvcm1h
bmNlTG9nZ2luZ0NsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250cm9sbGVyOwpAQCAtNjUsNiAr
NjYsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBjbGFzcyBSZXBvcnRpbmdFbmRw
b2ludHNDYWNoZTsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xhc3MgU3BlZWNoUmVjb2duaXRp
b25Qcm92aWRlcjsKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0NsaWVudDsKIGNsYXNzIFN0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VQcm92aWRlcjsKIGNsYXNzIFVzZXJDb250
ZW50UHJvdmlkZXI7CkBAIC03MiwxMiArNzQsMTEgQEAgY2xhc3MgVXNlckNvbnRlbnRVUkxQYXR0
ZXJuOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBjbGFzcyBWaXNpdGVkTGlua1N0
b3JlOwogY2xhc3MgV2ViR0xTdGF0ZVRyYWNrZXI7Ci1jbGFzcyBTcGVlY2hTeW50aGVzaXNDbGll
bnQ7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBVbmlx
dWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxM
aWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmLCBSZWY8VXNl
ckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmLCBSZWY8Q29va2ll
SmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmLCBVbmlxdWVSZWY8RnJh
bWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYm
LCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmLCBSZWY8QnJvYWRjYXN0Q2hhbm5l
bFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYsIFVuaXF1ZVJlZjxTdG9y
YWdlUHJvdmlkZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFBB
TDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJvdmlk
ZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFnZVBy
b3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJkQ2xp
ZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmLCBS
ZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+
JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxNb2RlbFBsYXllclBy
b3ZpZGVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNvbmZpZ3VyYXRpb24oKTsKICAg
ICBQYWdlQ29uZmlndXJhdGlvbihQYWdlQ29uZmlndXJhdGlvbiYmKTsKIApAQCAtMTQ1LDYgKzE0
Niw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4gcGVybWlzc2lv
bkNvbnRyb2xsZXI7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gc3RvcmFnZVByb3Zp
ZGVyOworCisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1vZGVsUGxheWVyUHJv
dmlkZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTcs
MTMgKzEwOTcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNvbmZpZ3VyYQog
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGVsc2UgaWYgKGlzPFJlbmRlck1vZGVsPihy
ZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBkb3duY2FzdDxIVE1MTW9kZWxF
bGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7Ci0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKLSAgICAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTGF5ZXIgPSBlbGVtZW50LT5w
bGF0Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
VG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5
ZXJQdXJwb3NlOjpNb2RlbCk7Ci0jZWxzZQotICAgICAgICBpZiAoYXV0byBtb2RlbCA9IGVsZW1l
bnQtPm1vZGVsKCkpCisKKyAgICAgICAgLy8gU29tZSBNb2RlbFBsYXllcnMgdXNlIGEgcGxhdGZv
cm1MYXllcigpIGFuZCBzb21lIHBhc3MgdGhlIE1vZGVsIHRvIHRoZSBsYXllciBhcyBjb250ZW50
cywKKyAgICAgICAgLy8gYnV0IHRoaXMgaXMgYSBydW50aW1lIGRlY2lzaW9uLgorICAgICAgICBp
ZiAoZWxlbWVudC0+dXNlc1BsYXRmb3JtTGF5ZXIoKSkgeworICAgICAgICAgICAgbV9ncmFwaGlj
c0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihlbGVtZW50LT5wbGF0Zm9ybUxheWVy
KCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7CisgICAgICAg
IH0gZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCiAgICAgICAgICAgICBt
X2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3ZlKG1vZGVsKSk7Ci0jZW5k
aWYKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQg
b2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW06
CisgICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVsRWxlbWVudERp
ZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNv
bnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
b2RlbDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYk1vZGVsUGxheWVyUHJvdmlk
ZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJNb2RlbFBs
YXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9N
b2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvTW9kZWwvbWFjOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbTogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6fkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6c2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0
Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6Cisg
ICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGVGaWxl
KToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNsZWFy
RmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjps
b2FkKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6Omxh
eWVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViQ2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6bV9hcHBIaWdobGlnaHRzVmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnNl
dFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKwogMjAyMS0xMS0wOCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgd2ViVmlldy5zY3JvbGxWaWV3LmluZGlj
YXRvclN0eWxlIGRvZXMgbm90IHdvcmsgb24gaU9TIDE1CkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlz
aW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTU5Miw2ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNl
c3NpCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMu
Y3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcAor
CiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3Jh
cGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApJbmRleDogU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAgV2ViUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2Vi
TWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQ
bHVnaW4ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5o
CShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1l
bnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQ
cmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBtb2RlbEVsZW1l
bnREaWRDcmVhdGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpGbG9hdFNpemUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI4NTQzMCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwODA1LDE1ICsxMDgwNSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlTW9kZWxF
bGVtZW50RnVsbHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2VQcm94eTo6
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhw
ZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVtZW50Q29udHJvbGxlcigp
LT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVybCwgdXVpZCwgc2l6ZSk7
Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAoaGFzUnVubmluZ1Byb2Nl
c3MoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9kZWxFbGVtZW50UHJldmll
d0RpZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0SWQpKTsKKyAgICBtb2Rl
bEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcodXJsLCB1
dWlkLCBzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI4NTQzMCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01ODksOCArNTg5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRM
YXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0g
ICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElk
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3Qp
OworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KHN0cnVjdCBXZWJDb3Jl
OjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdl
YkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXco
VVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKSAtPiAoRXhwZWN0
ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiBy
ZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uKHN0cnVjdCBXZWJD
b3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6UGVybWlzc2lvbkRlc2Ny
aXB0b3IgZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpQZXJtaXNzaW9uU3Rh
dGUgc3RhdGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2Rl
bEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAy
ODU0MzApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNlbmRpZgog
CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5o
PgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAtMTI0LDEwICsxMjUsMTIg
QEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9kZWxFbAogCiAjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVy
Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVy
Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxlVVJMLCBTdHJpbmcgdXVpZCwg
V2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8
c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNl
cygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fd2ViUGFnZVByb3h5LnByZWZl
cmVuY2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJv
ckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBlbGVtZW50IGRpc2FibGVkIl9z
IH0pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gbnNVVUlEID0gYWRvcHRO
UyhbW05TVVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRdKTsKICAgICBhdXRvIHBy
ZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpIFVVSUQ6
bnNVVUlELmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2b2lkIE1vZGVsRWxlbWVudENv
bnRyb2xsZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAgICBpdGVyYXRvci0+dmFsdWUg
PSBwcmV2aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5vdCBqdXN0IHVzaW5nIG5v
cm1hbCBVUkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRvIHVybCA9IGFkb3B0TlMoW1tO
U1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0ZW1QYXRoKCld
KTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgV2Vha1B0ciB3
ZWFrVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29udGV4dENvcHkgPSBjb250ZXh0
OwotICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07Ci0gICAgW3ByZXZpZXcgc2V0
dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxs
YWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1cFJlbW90ZUNvbm5lY3Rpb25X
aXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAq
dGhpcyB9LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJsID0gV1RGTW92ZSh1cmwp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNFcnJv
ciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoY29udGV4
dEVycm9yKSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGNyZWF0
ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwgdXVpZENvcHkudXRmOCgpLmRh
dGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAgICAgICAgICAg
TE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3RlIGNvbm5lY3Rpb24gZm9y
IHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29udGV4dEVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGNvbnRleHRFcnJv
ciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNo
ZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5l
Y3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgW3By
ZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6XihO
U0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICBbcHJldmlldyBwcmVwYXJl
UHJldmlld09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQ
dHIoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZpZXcsIHV1aWQgPSBXVEZNb3Zl
KHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1v
ZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVALiIsIHV1aWRD
b3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAg
ICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGxvYWQgZmlsZSBmb3Ig
dXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2FkRXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGxvYWRFcnJvciB9
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTE9H
KE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4iLCB1dWlkQ29weS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3
aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENvcHksIHV1aWRDb3B5LCBjb250
ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRleHRJZCk7CisgICAgICAg
ICAgICBhdXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF07CisgICAgICAgICAgICBj
YWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdXVpZCA9IFdU
Rk1vdmUodXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4dElkKSk7CiAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9KS5n
ZXQoKV07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjE2
LDYgKzUyMTYsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFn
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZVBhZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIxMjExODI2MDgxMDAyNDNF
MTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEQyNzMy
RUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2Rl
bFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1vZGVsUGxheWVyUHJvdmlkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUIyNzMyRjY2RTAwQTJEMTkx
IC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQw
MjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEyQUM0MjZDMDBFNzMyQTMg
LyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdL
UGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVGOTEy
NTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NzY4
LDYgKzk3NzIsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJFNCAvKiBNZWRpYUNhY2hl
ICovLAogCQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBNZWRpYVNlc3Npb24gKi8sCiAJ
CQkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICovLAorCQkJCUJDMkI0
MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1MTA1QjBEMjE2MkY3QTVFMDBF
Mjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURFQjkgLyogTm90
aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIxMzcxIC8qIFBs
dWdpbnMgKi8sCkBAIC0xMDU5Nyw2ICsxMDYwMiwyNSBAQAogCQkJcGF0aCA9IGM7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3MzJFRjY1MDBBMkQxOTEgLyog
TW9kZWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJD
MkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJQkMyQjQxMUIyNzMyRjY2RTAw
QTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJDMkI0MTFBMjcz
MkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJ
cGF0aCA9IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkMyQjQx
MEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8q
IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBt
YWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzJFNkU3NDExNDE5NkYw
MDBBNjNCMUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2
aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNpbmNsdWRlIDx3dGYvVVJMUGFy
c2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5o
PgorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW5jbHVkZSAiQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAjaWYgIU9TKFdJTkRPV1MpCkBA
IC01NzYsOSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFy
YQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0
b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQogICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeS5pc0Vt
cHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOwor
ICAgICAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk7CiAjZW5k
aWYKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5
ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2RlbFBsYXllclByb3ZpZGVy
LmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+CisKKyNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1vZGVsUGxheWVy
UHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1f
cGFnZSB7IHBhZ2UgfQoreworICAgIFVOVVNFRF9QQVJBTShtX3BhZ2UpOworfQorCitXZWJNb2Rl
bFBsYXllclByb3ZpZGVyOjp+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKwor
Ly8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKworUmVm
UHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVN
b2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgcmV0dXJuIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyOjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY2xpZW50KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2Rl
bFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3Jl
L01vZGVsUGxheWVyUHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlBhZ2U7CisKK2NsYXNzIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViTW9kZWxQbGF5ZXJQ
cm92aWRlcihXZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigp
OworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJp
ZGVzLgorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBjcmVhdGVNb2Rl
bFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpIGZpbmFsOworCisgICAgV2ViUGFn
ZSYgbV9wYWdlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFj
L0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQbGF5ZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBp
bGVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFTVklubGlu
ZVByZXZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpNb2RlbFBsYXllciwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiB7CitwdWJsaWM6
CisgICAgc3RhdGljIFJlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4gY3JlYXRlKFdl
YlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpOworICAgIHZpcnR1YWwgfkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyKCk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJD
bGllbnQmKTsKKworICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyIG92ZXJyaWRlcy4KKyAgICB2
aXJ0dWFsIHZvaWQgbG9hZChXZWJDb3JlOjpNb2RlbCYsIFdlYkNvcmU6OkxheW91dFNpemUpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYpOworICAgIHZvaWQgY2xlYXJGaWxl
KCk7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsKKyAgICBXZWFrUHRyPFdlYkNvcmU6
Ok1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAgIFN0cmluZyBtX2ZpbGVQYXRoOwor
ICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7Cit9OworCit9
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShBUktJVF9J
TkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9T
eXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQg
PHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7
CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcpOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiBBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6
Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwgY2xpZW50KSk7Cit9CisKK0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihX
ZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQorICAgIDog
bV9wYWdlIHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNsaWVudCB9Cit7Cit9CisKK0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIo
KQoreworICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0aWMgY29uc3QgU3RyaW5nJiBtb2Rl
bEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sK
KyAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKK30KKwordm9p
ZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2Rl
bCYgbW9kZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRl
bXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAorICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCisKKyAgICBjbGVh
ckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gbW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhp
c3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lz
dGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5
c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAh
RmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9yeSkpIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAv
LyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KKyAgICBhdXRvIGZpbGVOYW1lID0g
RmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
KSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKKyAgICBhdXRvIGZpbGUg
PSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2Rl
OjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmls
ZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1v
ZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2b2lkIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2Zp
bGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsKK30KKworLy8gTUFSSzog
LSBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlLCBXZWJDb3Jl
OjpMYXlvdXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJvbmdDbGllbnQgPSBtX2NsaWVudC5n
ZXQoKTsKKyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ1BhZ2UpIHsKKyAg
ICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1vZGVsU291
cmNlLnVybCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsKKworICAgIG1faW5saW5lUHJldmll
dyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldKTsKKyAgICBM
T0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6Om1vZGVsRGlk
Q2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIs
ICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEo
KSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtTZWxmID0gV2Vha1B0ciB7ICp0
aGlzIH1dIChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJl
c291cmNlRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9
IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQgPSBzdHJvbmdTZWxmLT5tX2NsaWVu
dC5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQs
ICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNv
bnRleHRJZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9jZXNzIik7CisgICAgICAgICAgICBz
dHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCByZXN1bHQuZXJyb3IoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBbdXVpZCwg
Y29udGV4dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFVVSUQgPSBbc3Ry
b25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmc7CisKKyAgICAgICAgaWYg
KHV1aWQgIT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAi
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250
ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVp
ZC51dGY4KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAg
ICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBt
YWtlU3RyaW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICIsIHV1aWQsICIgYnV0
IGV4cGVjdGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5tX2lubGluZVByZXZpZXcgc2V0UmVt
b3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
KSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMu
IiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZpbmlz
aExvYWRpbmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAgCisgICAgc3Ryb25nUGFnZS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENy
ZWF0ZVByZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBb
bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lubGluZVByZXZpZXcgbGF5ZXJdOwor
fQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQAogI2luY2x1
ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEJVSUxU
X0lOX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CisjZW5kaWYKKwog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTEsNyAr
OTYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlCiAgICAgICAg
IH07CiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKLSAgICAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlv
bnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBpZiAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQoKSAmJiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlJlcXVl
c3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkp
LCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2UtPnNlc3Npb25JRCgpLnRv
VUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1MjcsMTEgKzE1MjcsNCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZU1vZGVsRWxlbWVu
dEZ1CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12
b2lkIFdlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3Jl
OjpIVE1MTW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB1dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpIGNvbnN0Ci17Ci0gICAgbV9w
YWdlLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxlbWVudCwgdXJsLCB1dWlkLCBzaXpl
KTsKLX0KLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmgJKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDU4LDkgKzQ1
OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAg
ICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6
OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkgY29uc3QgZmluYWw7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgZmluYWw7Ci0j
ZW5kaWYKIAogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhhc0hvcml6b250YWxT
Y3JvbGxiYXIgeyBmYWxzZSB9OwogICAgIG11dGFibGUgYm9vbCBtX2NhY2hlZE1haW5GcmFtZUhh
c1ZlcnRpY2FsU2Nyb2xsYmFyIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5oIgog
I2luY2x1ZGUgIldlYk1lZGlhS2V5U3lzdGVtQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFT
dHJhdGVneS5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAj
aW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKQEAgLTI3MywxMCArMjc0LDYg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodFN0b3JhZ2UuaD4KICNlbmRpZgogCi0j
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1v
ZGVsRWxlbWVudC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAjaW5j
bHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogI2VuZGlmCkBAIC01NzUsNyArNTcyLDggQEAg
V2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAogICAgICAgICBtYWtlVW5p
cXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKnRoaXMpLAogICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSwKICAgICAgICAgV2ViUGVy
bWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8
V2ViU3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViU3RvcmFnZVBy
b3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYk1vZGVsUGxheWVyUHJvdmlkZXI+
KCp0aGlzKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3
IFdlYkNocm9tZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC03
NzM5LDIxICs3NzM3LDYgQEAgdm9pZCBXZWJQYWdlOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVl
bgogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotdm9p
ZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAoYXV0byBlbGVtZW50Q29u
dGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpKQotICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKmVsZW1lbnRDb250
ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKLX0KLQotdm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnRQ
cmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBl
bGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17
Ci0gICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQoZWxlbWVudENvbnRleHQpOwot
ICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PihlbGVtZW50KSkKLSAgICAgICAg
ZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4oKmVsZW1lbnQpLmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29udGV4dElkKTsKLX0KLSNlbmRpZgotCiB2b2lk
IFdlYlBhZ2U6OnNjcm9sbFRvUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9yaWdpbikKIHsKICAgICBtYWluRnJhbWVW
aWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHRhcmdldFJlY3QubWluWE1pbllDb3Ju
ZXIoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkocmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTAgKzIyMCw2IEBAIGNsYXNzIFN1YnN0
aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQb3Np
dGlvbjsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLWNsYXNzIEhUTUxNb2Rl
bEVsZW1lbnQ7Ci0jZW5kaWYKLQogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CiBl
bnVtIGNsYXNzIENPRVBEaXNwb3NpdGlvbiA6IGJvb2w7CiBlbnVtIGNsYXNzIENyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKQEAgLTE0OTYsMTAgKzE0OTIsNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICB2b2lkIHRha2VNb2RlbEVs
ZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBj
b250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4
dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMy
X3QpOwotI2VuZGlmCiAKICAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERpYWxv
ZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAg
LTY0Nyw4ICs2NDcsNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06dWlu
CiAjZW5kaWYKIAogICAgIFNjcm9sbFRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVj
dCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
c3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBTdHJpbmcgdXVp
ZCwgdWludDMyX3QgY29udGV4dElkKQotI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyODU0MzApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0wOCAgU2Ft
IFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNw
ZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1l
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6
ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDIxLTExLTA2ICBEYXZpZCBLaWx6
ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGVtcHR5IGRpcmVjdG9y
aWVzIGZyb20gZnJvbSBzdm4ud2Via2l0Lm9yZyByZXBvc2l0b3J5IGFzIG9mIHIyODUzNTcKSW5k
ZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdD
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0RyYWdJdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL0R1bW15TW9kZWxQbGF5ZXJQcm92aWRl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvRWRpdGluZy5oPgpAQCAtMTU0Myw3ICsxNTQ0LDggQEAgLSAodm9pZClfY29tbW9uSW5pdGlh
bGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6Ok1lZGlh
UmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHByaXZhdGVCcm93c2luZ0VuYWJsZWRd
KSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJvbGxlcjo6Y3JlYXRlKCks
Ci0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCkK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKSwK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+
KCkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CkBAIC0xODIzLDcg
KzE4MjUsOCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOihOCiAgICAg
ICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAg
ICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRlKFtbc2VsZiBwcmVm
ZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAgICBXZWJDb3JlOjpEdW1t
eVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxX
ZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdl
YkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdl
YkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwko
cmV2aXNpb24gMjg1NDMwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMDggIFNhbSBXZWluaWcgIDx3
ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2Rl
IG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdp
dGhGcmFtZSk6CisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIEFYOiByZW5hbWUgYWN0aW9uVmVyYigpIGFzIGxvY2FsaXpl
ZEFjdGlvblZlcmIoKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDI4NTQzMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1teVNwZWVjaFJlY29nbml0
aW9uUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3RvcmFnZVByb3ZpZGVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTMwNjUsNyArMzA2Niw4IEBAIEhSRVNV
TFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICAgICAgbWFrZVVuaXF1ZVJl
ZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeTo6Z2V0T3JDcmVhdGUoZmFsc2UpLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1p
c3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3Jl
OjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6
OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6
OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAgICAgY29uZmlndXJhdGlvbi5j
aHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443632</attachid>
            <date>2021-11-08 16:57:57 -0800</date>
            <delta_ts>2021-11-08 19:36:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108165756.patch</filename>
            <type>text/plain</type>
            <size>102742</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgW1BheW1lbnQgUmVxdWVzdF0gQWRkIGEgbmV3IHBheW1lbnQgbWV0aG9kIGZvciBz
aG93aW5nIEFNUyBVSQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI4NTQ0NykK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2
ICs0Nyw3IEBAIHNldChXZWJDb3JlX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhc3RyZWFtIgogICAgICIke1dFQkNPUkVfRElSfS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0YyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxl
cy9tb2RlbC1lbGVtZW50IgorICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbmF2aWdhdG9yY29udGVudHV0
aWxzIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L01vZHVsZXMvcGF5bWVudHJlcXVlc3QiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsMTEgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1V0aWxzLmgKIAogICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgK
KyAgICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAorICAgIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50
L01vZGVsUGxheWVyUHJvdmlkZXIuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyLmgKKyAgICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyLmgKIAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DbGllbnQuaApJ
bmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNiArMjM0LDExIEBAIE1vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1IKIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAKIE1vZHVsZXMvbWVkaWFzdHJl
YW0vbGlid2VicnRjL0xpYldlYlJUQ1NjdHBUcmFuc3BvcnRCYWNrZW5kLmNwcAogTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQu
Y3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKK01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcAorTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCiBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvcGF5bWVudHJlcXVlc3QvTWVyY2hhbnRWYWxp
ZGF0aW9uRXZlbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4
NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEwMSw3ICsxMDEsNiBAQCBNb2R1bGVzL2FwcGxlcGF5LWFtcy11aS9BcHBsZVBheUFNU1VJ
UGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJvYXJkSW1hZ2VSZWFkZXJJT1Mu
bW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9hcmRJbWFnZVJlYWRlck1hYy5t
bQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFuc2Zvcm1lckNvY29hLmNwcAot
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQogTW9kdWxlcy9z
cGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2Nv
YS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3Bl
ZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyODU0NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDggQEAKICNpbmNsdWRl
ICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1MTW9kZWxFbGVtZW50LmgiCiAjaW5j
bHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgorI2luY2x1ZGUgIk1vZGVs
UGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5o
PgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVsZW1lbnQo
KQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRoaXMpOwogICAgICAgICBtX3Jl
c291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9CiAKIFJlZjxIVE1MTW9kZWxFbGVt
ZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFt
ZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsxMjksMTYgQEAgdm9pZCBIVE1MTW9k
ZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0
cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikKKyAgICAgICAgbV9tb2RlbFBsYXll
ciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9taXNlLT5pc0Z1bGZpbGxlZCgpKQog
ICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlvbiB7IEFib3J0RXJyb3IgfSk7
CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVSZWY8UmVhZHlQcm9taXNlPigqdGhp
cywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJlc29sdmUpOwogCi0gICAgaWYgKG1f
c291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisgICAgaWYgKG1fc291cmNlVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0gRmV0Y2hPcHRpb25zOjpEZXN0
aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBAIEhUTUxNb2RlbEVsZW1lbnQmIEhU
TUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKLSNpZiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2hh
cmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxl
bWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldE1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKLXsKLSAgICBzaGFyZWRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKLX0KLQotY29uc3QgU3RyaW5nJiBI
VE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgcmV0
dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci19Ci0jZW5kaWYKLQogLy8g
TUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmRpZE1vdmVU
b05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50
KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpub3RpZnlGaW5p
c2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUoKnRoaXMpOwogCi0jaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBtb2RlbERpZENoYW5nZSgpOwotI2Vu
ZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3VwcG9ydAorCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBGSVhNRTogRm9yIHRoZSBlYXJs
eSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBpbmZvcm0gdGhlIHBhZ2UgdGhhdCB0
aGF0IHRoaW5ncyBoYXZlCisgICAgLy8gZmFpbGVkIHRvIHJlbmRlcj8gRm9yIHRoZSBjYXNlIG9m
IG5vLXJlbmRlcmVyLCB3ZSBzaG91bGQgcHJvYmFibHkgYWxzbyBidWlsZCB0aGUgbW9kZWwgd2hl
bi9pZgorICAgIC8vIGEgcmVuZGVyZXIgaXMgY3JlYXRlZC4KKworICAgIGF1dG8gcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
YXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIE5PVEU6IEZvciBub3csIGNyZWF0ZU1vZGVsUGxheWVy
IHJldHVybmluZyBudWxscHRyIG1lYW5zIHRoYXQgdGhlIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzVG9Nb2RlbCgpIHBhdGgKKyAgICAvLyBpcyBiZWluZyB1c2VkLCBidXQgdGhhdCBuZWVkcyB0
byBiZSBwaGFzZWQgb3V0IHRvIGFsbG93IGJpZGlyZWN0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3
ZWVuIHRoZSBtb2RlbCBwbGF5ZXIKKyAgICAvLyBhbmQgdGhlIEhUTUxNb2RlbEVsZW1lbnQuIE9u
Y2UgdGhhdCBpcyBwaGFzZWQgb3V0LCBjcmVhdGVNb2RlbFBsYXllcigpIHNob3VsZCBiZSB1cGRh
dGVkIHRvIHJldHVybiBhIFJlZjw+LgorICAgIG1fbW9kZWxQbGF5ZXIgPSBwYWdlLT5tb2RlbFBs
YXllclByb3ZpZGVyKCkuY3JlYXRlTW9kZWxQbGF5ZXIoKnRoaXMpOworICAgIGlmICghbV9tb2Rl
bFBsYXllcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gdGVs
bCB0aGUgcGxheWVyIGlmIHRoZSBzaXplIGNoYW5nZXMgYXMgd2VsbCwgc28gcGFzc2luZyB0aGlz
CisgICAgLy8gaW4gd2l0aCBsb2FkIHByb2JhYmx5IGRvZXNuJ3QgbWFrZSBzZW5zZS4KKyAgICBh
dXRvIHNpemUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUo
KTsKKworICAgIG1fbW9kZWxQbGF5ZXItPmxvYWQoKm1fbW9kZWwsIHNpemUpOworfQorCitib29s
IEhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9tb2RlbFBsYXllciAhPSBudWxscHRyOworfQorCitQbGF0Zm9ybUxheWVyKiBIVE1MTW9k
ZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBs
YXllci0+bGF5ZXIoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2Fk
aW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllcikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG1vZGVs
UGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2RlbFBsYXllcik7CisKKyAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKK30KKwordm9pZCBIVE1MTW9kZWxFbGVtZW50OjpkaWRGYWlsTG9hZGluZyhN
b2RlbFBsYXllciYgbW9kZWxQbGF5ZXIsIGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworICAgIEFT
U0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXllciA9PSBtX21vZGVsUGxheWVyKTsK
K30KKworLy8gTUFSSzogLSBGdWxsc2NyZWVuIHN1cHBvcnQuCisKIHZvaWQgSFRNTE1vZGVsRWxl
bWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKy8vIEZJWE1FOiBBZGQgYSBuZXcgbWV0aG9kIHRv
IE1vZGVsUGxheWVyIGZvciBlbnRlcmluZyBmdWxsc2NyZWVuIGFuZCBtb3ZlIHRoaXMgaW50byB0
aGUgaU9TIEFSS2l0IGlubGluZSBwcmV2aWV3IE1vZGVsUGxheWVyIGltcGxlbWVudGF0aW9uLgog
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgYXV0byogcGFnZSA9IGRv
Y3VtZW50KCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAkocmV2
aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hU
TUxNb2RlbEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjEgKzMyLDE5IEBACiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgog
I2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKyNp
bmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5j
bHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVX
X01BQykKLSNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCi1PQkpDX0NMQVNTIEFTVklubGluZVBy
ZXZpZXc7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNb2RlbDsKK2Ns
YXNzIE1vZGVsUGxheWVyOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Q
cm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwogCi1jbGFzcyBIVE1MTW9kZWxFbGVtZW50
IGZpbmFsIDogcHVibGljIEhUTUxFbGVtZW50LCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xp
ZW50IHsKK2NsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQs
IHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQsIHB1YmxpYyBNb2RlbFBsYXllckNsaWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChIVE1MTW9kZWxFbGVtZW50KTsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQmKTsKQEAgLTU1LDIxICs1MywxNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzb3VyY2VzQ2hhbmdlZCgpOwogICAgIGNvbnN0IFVSTCYgY3VycmVudFNyYygpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlVVJMOyB9CiAKKyAgICAvLyBNQVJLOiBET00gRnVuY3Rpb25zIGFuZCBB
dHRyaWJ1dGVzCisKICAgICB1c2luZyBSZWFkeVByb21pc2UgPSBET01Qcm9taXNlUHJveHlXaXRo
UmVzb2x2ZUNhbGxiYWNrPElETEludGVyZmFjZTxIVE1MTW9kZWxFbGVtZW50Pj47CiAgICAgUmVh
ZHlQcm9taXNlJiByZWFkeSgpIHsgcmV0dXJuIG1fcmVhZHlQcm9taXNlLmdldCgpOyB9CiAKICAg
ICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtb2RlbERhdGEoKSBjb25zdDsKICAgICBSZWZQdHI8TW9k
ZWw+IG1vZGVsKCkgY29uc3Q7CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi0g
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoY29uc3QgU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGNvbnN0IFN0cmlu
ZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICBib29sIHVzZXNQbGF0Zm9ybUxheWVyKCkgY29u
c3Q7CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgaW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBTdHJp
bmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCk7CiAKQEAgLTc5LDEzICs3Miw5IEBAIHByaXZhdGU6CiAgICAgSFRNTE1vZGVs
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIAogICAgIHZvaWQgc2V0
U291cmNlVVJMKGNvbnN0IFVSTCYpOwotICAgIEhUTUxNb2RlbEVsZW1lbnQmIHJlYWR5UHJvbWlz
ZVJlc29sdmUoKTsKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAg
dm9pZCBjbGVhckZpbGUoKTsKLSAgICB2b2lkIGNyZWF0ZUZpbGUoKTsKICAgICB2b2lkIG1vZGVs
RGlkQ2hhbmdlKCk7Ci0jZW5kaWYKKworICAgIEhUTUxNb2RlbEVsZW1lbnQmIHJlYWR5UHJvbWlz
ZVJlc29sdmUoKTsKIAogICAgIC8vIERPTSBvdmVycmlkZXMuCiAgICAgdm9pZCBkaWRNb3ZlVG9O
ZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkg
ZmluYWw7CkBAIC05Nyw2ICs4NiwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGF0YVJlY2VpdmVk
KENhY2hlZFJlc291cmNlJiwgY29uc3QgdWludDhfdCogZGF0YSwgaW50IGRhdGFMZW5ndGgpIGZp
bmFsOwogICAgIHZvaWQgbm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKIAorICAgIC8vIE1vZGVsUGxheWVyQ2xpZW50IG92ZXJy
aWRlcy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImKSBmaW5hbDsKKyAg
ICB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
IGZpbmFsOworCiAgICAgVVJMIG1fc291cmNlVVJMOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJhd1Jlc291cmNlPiBtX3Jlc291cmNlOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsKQEAgLTEwNCwxMCArOTcsNyBAQCBwcml2YXRlOgogICAgIFVuaXF1ZVJlZjxSZWFk
eVByb21pc2U+IG1fcmVhZHlQcm9taXNlOwogICAgIGJvb2wgbV9kYXRhQ29tcGxldGUgeyBmYWxz
ZSB9OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICBTdHJpbmcg
bV9maWxlUGF0aDsKLSAgICBSZXRhaW5QdHI8QVNWSW5saW5lUHJldmlldz4gbV9pbmxpbmVQcmV2
aWV3OwotI2VuZGlmCisgICAgUmVmUHRyPE1vZGVsUGxheWVyPiBtX21vZGVsUGxheWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1t
CShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudENvY29hLm1tCShub25leGlzdGVudCkKQEAgLTEsMTMzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSFRNTE1vZGVsRWxlbWVudC5oIgotCi0jaWYgRU5BQkxF
KE1PREVMX0VMRU1FTlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0KLSNp
bmNsdWRlICJDaHJvbWUuaCIKLSNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJM
b2dnaW5nLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCi0j
aW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgotI2luY2x1ZGUgIlNldHRpbmdzLmgi
Ci0jaW5jbHVkZSA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgotI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9Tb2Z0TGlua2luZy5oPgotI2luY2x1ZGUgPHd0Zi9VUkwuaD4KLSNpbmNsdWRlIDx3dGYvVVVJ
RC5oPgotCi1TT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOwotU09GVF9M
SU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZUZpbGUoKQotewotICAgIC8v
IFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBuYXR1cmUg
b2YgQVNWSW5saW5lUHJldmlldywKLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI3NTY3LgotCi0gICAgY2xlYXJGaWxlKCk7Ci0KLSAgICBhdXRvIHBhdGhU
b0RpcmVjdG9yeSA9IEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCk7Ci0gICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRo
VG9EaXJlY3RvcnkpOwotICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6Zmls
ZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZp
bGVUeXBlOjpEaXJlY3RvcnkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7Ci0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gV2UgbmVl
ZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCi0gICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0
ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVz
ZHoiOwotICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7Ci0gICAgYXV0byBmaWxlID0gRmlsZVN5
c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUp
OwotICAgIGlmIChmaWxlIDw9IDApCi0gICAgICAgIHJldHVybjsKLQotICAgIEZpbGVTeXN0ZW06
OndyaXRlVG9GaWxlKGZpbGUsIG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSk7Ci0gICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOwotICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsK
LX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjbGVhckZpbGUoKQotewotICAgIGlmIChtX2Zp
bGVQYXRoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmlsZVN5c3RlbTo6ZGVs
ZXRlRmlsZShtX2ZpbGVQYXRoKTsKLSAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsKLX0K
LQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgpCi17Ci0gICAgY3JlYXRl
RmlsZSgpOwotCi0gICAgYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwotICAgIGlm
ICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gc2l6ZSA9IHJlbmRlcmVy
LT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOwotCi0gICAgbV9pbmxpbmVQ
cmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV0pOwot
ICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgp
IGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAlZi4iLCAoKFN0cmlu
ZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCksIHNpemUu
d2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0KLSAgICBpZiAoYXV0byogcGFnZSA9IGRvY3VtZW50
KCkucGFnZSgpKQotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5tb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3KCp0aGlzLCBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9m
aWxlUGF0aCksIFttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZywgc2l6ZSk7Ci19Ci0K
LXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZChj
b25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAoIWRvY3Vt
ZW50KCkuc2V0dGluZ3MoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGlmICh1dWlkICE9IChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3Ry
aW5nKSB7Ci0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50Ojppbmxp
bmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2ZWQgJXMg
YnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgKChTdHJpbmcpW21faW5saW5l
UHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIFttX2lubGluZVByZXZpZXcgc2V0UmVtb3RlQ29udGV4dDpjb250ZXh0
SWRdOwotICAgIExPRyhNb2RlbEVsZW1lbnQsICJIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIHJlbW90ZSBj
b25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7Ci0KLSAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICByZW5kZXJlci0+dXBk
YXRlRnJvbUVsZW1lbnQoKTsKLX0KLQotUGxhdGZvcm1MYXllciogSFRNTE1vZGVsRWxlbWVudDo6
cGxhdGZvcm1MYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFttX2lubGluZVByZXZpZXcgbGF5
ZXJdOwotfQotCi19Ci0KLSNlbmRpZiAvLyBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNb2RlbFBsYXllcjo6fk1vZGVsUGxheWVyKCkgPSBkZWZhdWx0OworCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9k
ZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMYXlvdXRTaXplLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1MYXllci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgTW9kZWw7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1vZGVsUGxheWVyIDog
cHVibGljIFJlZkNvdW50ZWQ8TW9kZWxQbGF5ZXI+IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5Nb2RlbFBsYXllcigp
OworCisgICAgdmlydHVhbCB2b2lkIGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSA9IDA7CisgICAg
dmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyQ2xpZW50LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9k
ZWxQbGF5ZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllckNs
aWVudDo6fk1vZGVsUGxheWVyQ2xpZW50KCkgPSBkZWZhdWx0OworCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJD
bGllbnQuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
TW9kZWxQbGF5ZXI7CitjbGFzcyBSZXNvdXJjZUVycm9yOworCitjbGFzcyBNb2RlbFBsYXllckNs
aWVudCA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNb2RlbFBsYXllckNsaWVudD4geworcHVibGlj
OgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyQ2xpZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImLCBjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOworfTsK
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJQcm92aWRlcjo6fk1vZGVsUGxheWVyUHJvdmlkZXIoKSA9
IGRlZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTW9kZWxQbGF5ZXI7CitjbGFzcyBNb2RlbFBsYXllckNsaWVudDsKKworY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXJQcm92aWRlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXJQcm92aWRlcigpOwor
CisgICAgLy8gRklYTUU6IE9uY2UgYWxsIGNsaWVudHMgaGF2ZSBhZG9wdGVkIE1vZGVsUGxheWVy
UHJvdmlkZXIsIHRoaXMgc2hvdWxkCisgICAgLy8gYmUgY2hhbmdlZCB0byByZXR1cm4gYSBSZWY8
TW9kZWxQbGF5ZXI+CisgICAgdmlydHVhbCBSZWZQdHI8TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVs
UGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JikgPSAwOworfTsKKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJEdW1teU1vZGVsUGxheWVyLmgiCisKKyNpbmNsdWRlICJNb2RlbC5oIgorI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitSZWY8RHVtbXlN
b2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRlKE1vZGVsUGxheWVyQ2xpZW50JiBj
bGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRHVtbXlNb2RlbFBsYXllcihjbGll
bnQpKTsKK30KKworRHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcihNb2RlbFBsYXll
ckNsaWVudCYgY2xpZW50KQorICAgIDogbV9jbGllbnQgeyBjbGllbnQgfQoreworfQorCitEdW1t
eU1vZGVsUGxheWVyOjp+RHVtbXlNb2RlbFBsYXllcigpID0gZGVmYXVsdDsKKwordm9pZCBEdW1t
eU1vZGVsUGxheWVyOjpsb2FkKE1vZGVsJiBtb2RlbCwgTGF5b3V0U2l6ZSkKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywgUmVzb3Vy
Y2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1vZGVsLnVybCgpLCAiVHJ5
aW5nIHRvIGxvYWQgbW9kZWwgdmlhIER1bW15TW9kZWxQbGF5ZXIiX3MgfSk7Cit9CisKK1BsYXRm
b3JtTGF5ZXIqIER1bW15TW9kZWxQbGF5ZXI6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbnVsbHB0
cjsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1
bW15L0R1bW15TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKyNpbmNsdWRlICJNb2RlbFBs
YXllckNsaWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBE
dW1teU1vZGVsUGxheWVyIGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyIHsKK3B1YmxpYzoKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPER1bW15TW9kZWxQbGF5ZXI+IGNyZWF0ZShNb2Rl
bFBsYXllckNsaWVudCYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkR1bW15TW9kZWxQ
bGF5ZXIoKTsKKworcHJpdmF0ZToKKyAgICBEdW1teU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xp
ZW50Jik7CisKKyAgICAvLyBNb2RlbFBsYXllciBvdmVycmlkZXMuCisgICAgdmlydHVhbCB2b2lk
IGxvYWQoTW9kZWwmLCBMYXlvdXRTaXplKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBsYXRmb3Jt
TGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICBXZWFrUHRyPE1vZGVsUGxheWVyQ2xpZW50
PiBtX2NsaWVudDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJEdW1t
eU1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CitEdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXI6On5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7
CisKK1JlZlB0cjxNb2RlbFBsYXllcj4gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVN
b2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBEdW1t
eU1vZGVsUGxheWVyOjpjcmVhdGUoY2xpZW50KTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1t
eS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlciBm
aW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JF
X0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBN
b2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIFJlZlB0cjxNb2RlbFBs
YXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKSBvdmVycmlkZTsKK307
CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA2OCw2ICs0MDY4
LDExIEBACiAJCUJDMjNFRTkyMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIz
RUU5MTBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMjNGMERCMERBRkY0
QTQwMDlGREM5MSAvKiBHZW5lcmF0ZWRJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyM0YwREEwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRl
ZEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQkMyNzRCMkYxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyNzRCMkUx
NDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oICovOyB9OworCQlC
QzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTEzMjczMkYwNjIwMEEyRDE5MSAv
KiBNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUJDMkI0MTE4MjczMkY0MjMwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEx
NTI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTE5MjczMkY0MjkwMEEy
RDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMyQjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1vZGVsUGxheWVy
Q2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTIzMjczMzVFMUYw
MEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMzEyNzM0QTA4NjAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQ
cm92aWRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUJDMkNCRjRFMTQwRjFBQkQwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQkY0QjE0MEYx
QTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovOyB9OwogCQlCQzJDQ0ExMDI2
NTVEREIyMDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJDQ0EwRTI2NTVEREIyMDBCOEMwMzUg
LyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMzMDVDN0EwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9i
amVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi87
IH07CkBAIC0xMDc5OSw3ICsxMDgwNCw2IEBACiAJCTcxQzI5RTMxMjAzQ0U3NkMwMDhGMzZEMiAv
KiBDU1NBbmltYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENTU0FuaW1hdGlvbi5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQzVCQjFCMUZCNjExRUEwMDA3QTJB
RSAvKiBBbmltYXRhYmxlLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBbmltYXRhYmxlLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDOTE2MDcxRDE0ODNBMzAwQUNBNDdE
IC8qIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk3MUNBQTNEOTI2OEQwQkY5MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxl
bWVudENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSFRNTE1vZGVsRWxlbWVudENvY29h
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUNFMkM1MTIyMDlEQzdGMDBDNDk0
QkQgLyogTW91c2VFdmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb3VzZUV2ZW50SU9TLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFE
MDJEOTAxREI1NUM0RTAwREQ1Q0Y1IC8qIG1haW4uanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmph
dmFzY3JpcHQ7IHBhdGggPSBtYWluLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUQwMkQ5MjFEQjU1QzRFMDBERDVDRjUgLyogbWVkaWEtY29udHJvbGxlci5qcyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9ICJtZWRpYS1jb250cm9sbGVyLmpzIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NzM1LDYgKzE0NzM5LDE2IEBACiAJCUJDMjc0
QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjc0QjMwMTQwRUJFRDgwMEVBREZBNiAvKiBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMyOTkzNUMxN0ExREQ1ODAwQkNFODgwIC8qIENvbG9ySW5wdXRUeXBlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9ySW5wdXRUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEUyNzMyRUZFNDAwQTJEMTkx
IC8qIE1vZGVsUGxheWVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGVsUGxheWVyQ2xpZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTEyMjczMkYwM0MwMEEyRDE5
MSAvKiBNb2RlbFBsYXllckNsaWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RlbFBsYXll
ckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTEzMjczMkYw
NjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBsYXllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNDI3MzJGMDYyMDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNTI3MzJGMEM3MDBBMkQxOTEgLyog
TW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBsYXllclByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTE2MjczMkYwQzcwMEEyRDE5
MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGVsUGxh
eWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyMDI3
MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAvKiBE
dW1teU1vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IER1bW15TW9kZWxQbGF5ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkxIC8qIER1
bW15TW9kZWxQbGF5ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNCRjRCMTQwRjFBNjUwMDM4NzlC
RSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTV2ViR0xDb250ZXh0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyQ0JGN0ExNDBGMUQ1ODAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkNDQTBFMjY1NUREQjIwMEI4QzAzNSAv
KiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVzdGluYXRpb25Db2xv
clNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzc1MCwxMCArMjM3NjQs
MTYgQEAKIAkJNzFGODQ5Q0MyNTY1QUI3RTAwOEMzN0YyIC8qIG1vZGVsLWVsZW1lbnQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTIyMjczMzVF
MEMwMEEyRDE5MSAvKiBkdW1teSAqLywKIAkJCQk3MUEzRDE4MDI1NjJCODI1MDA2NEUyQTYgLyog
SFRNTE1vZGVsRWxlbWVudC5jcHAgKi8sCiAJCQkJNzFBM0QxN0QyNTYyQjgyNDAwNjRFMkE2IC8q
IEhUTUxNb2RlbEVsZW1lbnQuaCAqLywKIAkJCQk3MUEzRDE3RjI1NjJCODI0MDA2NEUyQTYgLyog
SFRNTE1vZGVsRWxlbWVudC5pZGwgKi8sCi0JCQkJNzFDQUEzRDkyNjhEMEJGOTAwRjI1NDEwIC8q
IEhUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbSAqLywKKwkJCQlCQzJCNDExNDI3MzJGMDYyMDBBMkQx
OTEgLyogTW9kZWxQbGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTEzMjczMkYwNjIwMEEyRDE5MSAv
KiBNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0MTEyMjczMkYwM0MwMEEyRDE5MSAvKiBNb2Rl
bFBsYXllckNsaWVudC5jcHAgKi8sCisJCQkJQkMyQjQxMEUyNzMyRUZFNDAwQTJEMTkxIC8qIE1v
ZGVsUGxheWVyQ2xpZW50LmggKi8sCisJCQkJQkMyQjQxMTYyNzMyRjBDNzAwQTJEMTkxIC8qIE1v
ZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAv
KiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9ICJtb2RlbC1lbGVt
ZW50IjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yODMzMiw2ICsyODM1MiwxNyBA
QAogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkMy
QjQxMjIyNzMzNUUwQzAwQTJEMTkxIC8qIGR1bW15ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEyNDI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlN
b2RlbFBsYXllci5jcHAgKi8sCisJCQkJQkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15
TW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDEyMTI3MzM1Q0I5MDBBMkQxOTEgLyogRHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDEyMDI3MzM1Q0I5MDBBMkQxOTEg
LyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGR1bW15
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQkM0RURFRjcwQzA4RjQxNDAw
N0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0zMzIwMSw2ICszMzIzMiw4IEBACiAJCQkJODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJE
IC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNBRjU2REIyNTMwMUFDODAwMTdC
NDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEwQTkxRjYy
NEQzMkREQzAwQkZEODlDIC8qIER1YWxzaG9jazNISURHYW1lcGFkLmggaW4gSGVhZGVycyAqLywK
KwkJCQlCQzJCNDEyNTI3MzM2MDA1MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMyQjQxMzEyNzM0QTA4NjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5
ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENkI3QTgyNTUxRDQxRjAwNThERDNB
IC8qIER1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTMwODVERjgyNkU4MjJDNzAwMEVDNkE3IC8qIER1bW15U3RvcmFnZVByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUJBNjZGMTE3NDJCRDg2MDBDMjAyNTEgLyogRHluYW1pY0xpbmtlcklu
dGVycG9zaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MTExLDYgKzM1MTQ0LDkgQEAKIAkJCQlD
REYyQjAxOTE4MjA1NDA3MDBGMkI0MjQgLyogTW9ja1RyYWNrcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTcxNTYxMEMyMzRDMUNBMTAwOEZDN0FCIC8qIE1vY2tXZWJBdXRoZW50aWNhdGlvbkNvbmZp
Z3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJEQzhEMzk4MjVGMkZFOTcwMENGQ0JBQiAv
KiBNb2RlbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8q
IE1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDExOTI3MzJGNDI5MDBBMkQx
OTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE4Mjcz
MkY0MjMwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogTW9kdWxlRmV0
Y2hGYWlsdXJlS2luZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTMyMDFDMUExRjhFODIxMzAwNzZB
MDMyIC8qIE1vZHVsZUZldGNoUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCisjaW5jbHVkZSAiRHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmgiCiAjaW5jbHVkZSAiRHVtbXlTdG9yYWdlUHJvdmlkZXIuaCIKICNpbmNsdWRlICJF
ZGl0b3JDbGllbnQuaCIKQEAgLTU4OCwxMiArNTg5LDYgQEAgdm9pZCBFbXB0eUNocm9tZUNsaWVu
dDo6dGFrZU1vZGVsRWxlbWVudAogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotdm9pZCBFbXB0eUNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QKLXsKLX0KLSNlbmRpZgot
CiB2b2lkIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmLCBQb2xpY3lDaGVja0lkZW50aWZpZXIsIEZy
YW1lUG9saWN5RnVuY3Rpb24mJikKIHsKIH0KQEAgLTExOTgsNyArMTE5Myw4IEBAIFBhZ2VDb25m
aWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uV2l0aEUKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxF
bXB0eU1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgRW1wdHlCcm9hZGNhc3RDaGFu
bmVsUmVnaXN0cnk6OmNyZWF0ZSgpLAogICAgICAgICBEdW1teVBlcm1pc3Npb25Db250cm9sbGVy
OjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4o
KQorICAgICAgICBtYWtlVW5pcXVlUmVmPER1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAg
ICBtYWtlVW5pcXVlUmVmPER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgIH07CiAKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15Q2hyb21lQ2xp
ZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gMjg1
NDQ3KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjIsMTAgKzIyMiw2IEBAIGNsYXNzIEVtcHR5Q2hyb21lQ2xpZW50IDogcHVibGlj
IENocm9tZUMKICNlbmRpZgogCiAgICAgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSBmaW5hbCB7IHJldHVybiBudWxs
cHRyOyB9Ci0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQg
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29u
c3QgZmluYWw7Ci0jZW5kaWYKIH07CiAKIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50JiBlbXB0eURp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwOCw5ICs2MDgsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICB2aXJ0dWFsIHZvaWQgdGFrZU1vZGVsRWxl
bWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEKSBj
b25zdCB7IH0KICNlbmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0g
ICAgdmlydHVhbCB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpIGNvbnN0IHsgfTsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9B
TVNfVUkpCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0QXBwbGVQYXlBTVNVSVNlc3Npb24oY29uc3Qg
VVJMJiwgY29uc3QgQXBwbGVQYXlBTVNVSVJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlv
bkhhbmRsZXIoc3RkOjpudWxsb3B0KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lv
biAyODU0NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04OSw2ICs4OSw3IEBACiAjaW5jbHVkZSAiTG93UG93ZXJNb2RlTm90aWZpZXIuaCIKICNp
bmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKICNpbmNsdWRlICJNZWRpYVJlY29yZGVy
UHJvdmlkZXIuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiUGFnZUNvbG9yU2FtcGxlci5oIgogI2luY2x1ZGUgIlBh
Z2VDb25maWd1cmF0aW9uLmgiCkBAIC0zMzcsNiArMzM4LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29u
ZmlndXJhdGlvbiYmIHBhZ2VDb25maQogICAgICwgbV9wZXJtaXNzaW9uQ29udHJvbGxlcihXVEZN
b3ZlKHBhZ2VDb25maWd1cmF0aW9uLnBlcm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIG1fcmVw
b3J0aW5nRW5kcG9pbnRzQ2FjaGUoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5yZXBvcnRpbmdF
bmRwb2ludHNDYWNoZSkpCiAgICAgLCBtX3N0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uLnN0b3JhZ2VQcm92aWRlcikpCisgICAgLCBtX21vZGVsUGxheWVyUHJvdmlkZXIo
V1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5tb2RlbFBsYXllclByb3ZpZGVyKSkKIHsKICAgICB1
cGRhdGVUaW1lclRocm90dGxpbmdTdGF0ZSgpOwogCkBAIC0zNzk1LDQgKzM3OTcsOSBAQCBTdG9y
YWdlQ29ubmVjdGlvbiYgUGFnZTo6c3RvcmFnZUNvbm5lY3RpCiAgICAgcmV0dXJuIG1fc3RvcmFn
ZVByb3ZpZGVyLT5zdG9yYWdlQ29ubmVjdGlvbigpOwogfQogCitNb2RlbFBsYXllclByb3ZpZGVy
JiBQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKCkKK3sKKyAgICByZXR1cm4gbV9tb2RlbFBsYXll
clByb3ZpZGVyLmdldCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNSw2ICsxMjUsNyBAQCBjbGFzcyBNZWRpYUNhblN0YXJ0TGlz
dGVuZXI7CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFSZWNvcmRlclBy
b3ZpZGVyOwogY2xhc3MgTWVkaWFTZXNzaW9uQ29vcmRpbmF0b3JQcml2YXRlOworY2xhc3MgTW9k
ZWxQbGF5ZXJQcm92aWRlcjsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uOwogY2xhc3MgUGFnZUNv
bnNvbGVDbGllbnQ7CiBjbGFzcyBQYWdlRGVidWdnYWJsZTsKQEAgLTkwNCw2ICs5MDUsOCBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUGVybWlzc2lvbkNvbnRyb2xsZXImIHBlcm1pc3Np
b25Db250cm9sbGVyKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RvcmFnZUNvbm5lY3Rpb24mIHN0
b3JhZ2VDb25uZWN0aW9uKCk7CiAKKyAgICBNb2RlbFBsYXllclByb3ZpZGVyJiBtb2RlbFBsYXll
clByb3ZpZGVyKCk7CisKIHByaXZhdGU6CiAgICAgc3RydWN0IE5hdmlnYXRpb24gewogICAgICAg
ICBSZWdpc3RyYWJsZURvbWFpbiBkb21haW47CkBAIC0xMjQwLDYgKzEyNDMsNyBAQCBwcml2YXRl
OgogICAgIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4gbV9wZXJtaXNzaW9uQ29udHJvbGxlcjsK
ICAgICBSZWZQdHI8UmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU+IG1fcmVwb3J0aW5nRW5kcG9pbnRz
Q2FjaGU7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4gbV9zdG9yYWdlUHJvdmlkZXI7
CisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+IG1fbW9kZWxQbGF5ZXJQcm92aWRl
cjsKIAogI2lmIEVOQUJMRShJTUFHRV9BTkFMWVNJUykKICAgICB1c2luZyBDYWNoZWRUZXh0UmVj
b2duaXRpb25SZXN1bHQgPSBzdGQ6OnBhaXI8VGV4dFJlY29nbml0aW9uUmVzdWx0LCBJbnRSZWN0
PjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZp
c2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAjaW5jbHVkZSAiTGliV2ViUlRDUHJvdmlkZXIuaCIKICNpbmNsdWRlICJNZWRp
YVJlY29yZGVyUHJvdmlkZXIuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGVybWlzc2lv
bkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvUHJvdmlkZXIuaCIKQEAgLTYyLDcg
KzYzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29uZmlndXJhdGlvbjo6UGFn
ZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9y
Q2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFByb3ZpZGVyPiYmIHNvY2tldFByb3Zp
ZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJl
ZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3JhZ2VQcm92aWRlciwgUmVmPFVzZXJD
b250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRlciwgUmVmPEJhY2tGb3J3YXJkQ2xp
ZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2llSmFyPiYmIGNvb2tpZUphciwgVW5p
cXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9ncmVzc1RyYWNrZXJDbGllbnQsIFVu
aXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJDbGllbnRGb3JNYWluRnJhbWUsIFVu
aXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmIHNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYgbWVkaWFSZWNvcmRlclBy
b3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmIGJyb2FkY2FzdENoYW5uZWxS
ZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmIHBlcm1pc3Npb25Db250cm9sbGVy
LCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3JhZ2VQcm92aWRlcikKK1BhZ2VDb25m
aWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVu
aXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8U29ja2V0UHJvdmlkZXI+
JiYgc29ja2V0UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiBsaWJXZWJS
VENQcm92aWRlciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNhY2hlU3RvcmFnZVByb3Zp
ZGVyLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3ZpZGVyLCBSZWY8
QmFja0ZvcndhcmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJlZjxDb29raWVKYXI+JiYg
Y29va2llSmFyLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIHByb2dyZXNzVHJh
Y2tlckNsaWVudCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGxvYWRlckNsaWVudEZv
ck1haW5GcmFtZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYgc3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiBt
ZWRpYVJlY29yZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYgYnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYgcGVybWlz
c2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYgc3RvcmFnZVByb3Zp
ZGVyLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJiBtb2RlbFBsYXllclByb3ZpZGVy
KQogICAgIDogc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIGVkaXRvckNsaWVudChXVEZNb3Zl
KGVkaXRvckNsaWVudCkpCiAgICAgLCBzb2NrZXRQcm92aWRlcihXVEZNb3ZlKHNvY2tldFByb3Zp
ZGVyKSkKQEAgLTc4LDYgKzc5LDcgQEAgUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0
aW9uKFBBTAogICAgICwgbWVkaWFSZWNvcmRlclByb3ZpZGVyKFdURk1vdmUobWVkaWFSZWNvcmRl
clByb3ZpZGVyKSkKICAgICAsIHBlcm1pc3Npb25Db250cm9sbGVyKFdURk1vdmUocGVybWlzc2lv
bkNvbnRyb2xsZXIpKQogICAgICwgc3RvcmFnZVByb3ZpZGVyKFdURk1vdmUoc3RvcmFnZVByb3Zp
ZGVyKSkKKyAgICAsIG1vZGVsUGxheWVyUHJvdmlkZXIoV1RGTW92ZShtb2RlbFBsYXllclByb3Zp
ZGVyKSkKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24u
aAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw5ICs0Niw5IEBAIGNsYXNzIEF1dGhlbnRpY2F0
b3JDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIEJhY2tGb3J3YXJkQ2xpZW50OwogY2xhc3MgQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OwogY2xhc3MgQ2FjaGVTdG9yYWdlUHJvdmlkZXI7Ci1jbGFz
cyBDb29raWVKYXI7CiBjbGFzcyBDaHJvbWVDbGllbnQ7CiBjbGFzcyBDb250ZXh0TWVudUNsaWVu
dDsKK2NsYXNzIENvb2tpZUphcjsKIGNsYXNzIERhdGFiYXNlUHJvdmlkZXI7CiBjbGFzcyBEaWFn
bm9zdGljTG9nZ2luZ0NsaWVudDsKIGNsYXNzIERyYWdDbGllbnQ7CkBAIC01Nyw2ICs1Nyw3IEBA
IGNsYXNzIEZyYW1lTG9hZGVyQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3Mg
TGliV2ViUlRDUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CitjbGFzcyBN
b2RlbFBsYXllclByb3ZpZGVyOwogY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OwogY2xh
c3MgUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50OwogY2xhc3MgUGVybWlzc2lvbkNvbnRyb2xsZXI7
CkBAIC02NSw2ICs2Niw3IEBAIGNsYXNzIFByb2dyZXNzVHJhY2tlckNsaWVudDsKIGNsYXNzIFJl
cG9ydGluZ0VuZHBvaW50c0NhY2hlOwogY2xhc3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTcGVl
Y2hSZWNvZ25pdGlvblByb3ZpZGVyOworY2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogY2xh
c3MgU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOwogY2xhc3MgU3RvcmFnZVByb3ZpZGVyOwogY2xh
c3MgVXNlckNvbnRlbnRQcm92aWRlcjsKQEAgLTcyLDEyICs3NCwxMSBAQCBjbGFzcyBVc2VyQ29u
dGVudFVSTFBhdHRlcm47CiBjbGFzcyBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKIGNsYXNzIFZp
c2l0ZWRMaW5rU3RvcmU7CiBjbGFzcyBXZWJHTFN0YXRlVHJhY2tlcjsKLWNsYXNzIFNwZWVjaFN5
bnRoZXNpc0NsaWVudDsKIAogY2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFBhZ2VDb25maWd1cmF0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNz
aW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiwg
VW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+
JiYsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYs
IFJlZjxDb29raWVKYXI+JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYsIFVu
aXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9u
UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+JiYsIFJlZjxCcm9h
ZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiwgVW5p
cXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZp
Z3VyYXRpb24oUEFMOjpTZXNzaW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYsIFJlZjxT
b2NrZXRQcm92aWRlcj4mJiwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmLCBSZWY8Q2Fj
aGVTdG9yYWdlUHJvdmlkZXI+JiYsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmLCBSZWY8QmFj
a0ZvcndhcmRDbGllbnQ+JiYsIFJlZjxDb29raWVKYXI+JiYsIFVuaXF1ZVJlZjxQcm9ncmVzc1Ry
YWNrZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiwgVW5pcXVlUmVm
PFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJv
dmlkZXI+JiYsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk+JiYsIFJlZjxQZXJtaXNzaW9u
Q29udHJvbGxlcj4mJiwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1v
ZGVsUGxheWVyUHJvdmlkZXI+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJh
dGlvbigpOwogICAgIFBhZ2VDb25maWd1cmF0aW9uKFBhZ2VDb25maWd1cmF0aW9uJiYpOwogCkBA
IC0xNDUsNiArMTQ2LDggQEAgcHVibGljOgogCiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9sbGVy
PiBwZXJtaXNzaW9uQ29udHJvbGxlcjsKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiBz
dG9yYWdlUHJvdmlkZXI7CisKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4gbW9k
ZWxQbGF5ZXJQcm92aWRlcjsKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA5NywxMyArMTA5NywxMyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q29uZmlndXJhCiAjaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCiAgICAgZWxzZSBpZiAoaXM8UmVu
ZGVyTW9kZWw+KHJlbmRlcmVyKCkpKSB7CiAgICAgICAgIGF1dG8gZWxlbWVudCA9IGRvd25jYXN0
PEhUTUxNb2RlbEVsZW1lbnQ+KHJlbmRlcmVyKCkuZWxlbWVudCgpKTsKLSNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgICAgICBpZiAoYXV0byogcGxhdGZvcm1MYXllciA9
IGVsZW1lbnQtPnBsYXRmb3JtTGF5ZXIoKSkKLSAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+
c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5ZXIocGxhdGZvcm1MYXllciwgR3JhcGhpY3NMYXllcjo6
Q29udGVudHNMYXllclB1cnBvc2U6Ok1vZGVsKTsKLSNlbHNlCi0gICAgICAgIGlmIChhdXRvIG1v
ZGVsID0gZWxlbWVudC0+bW9kZWwoKSkKKworICAgICAgICAvLyBTb21lIE1vZGVsUGxheWVycyB1
c2UgYSBwbGF0Zm9ybUxheWVyKCkgYW5kIHNvbWUgcGFzcyB0aGUgTW9kZWwgdG8gdGhlIGxheWVy
IGFzIGNvbnRlbnRzLAorICAgICAgICAvLyBidXQgdGhpcyBpcyBhIHJ1bnRpbWUgZGVjaXNpb24u
CisgICAgICAgIGlmIChlbGVtZW50LT51c2VzUGxhdGZvcm1MYXllcigpKSB7CisgICAgICAgICAg
ICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKGVsZW1lbnQtPnBs
YXRmb3JtTGF5ZXIoKSwgR3JhcGhpY3NMYXllcjo6Q29udGVudHNMYXllclB1cnBvc2U6Ok1vZGVs
KTsKKyAgICAgICAgfSBlbHNlIGlmIChhdXRvIG1vZGVsID0gZWxlbWVudC0+bW9kZWwoKSkKICAg
ICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01vZGVsKFdURk1vdmUobW9k
ZWwpKTsKLSNlbmRpZgogCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTMgQEAKKzIwMjEtMTEtMDggIFNhbSBXZWlu
aWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZp
YyBjb2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xs
ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6TW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9k
ZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL01vZGVsRWxl
bWVudENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3
RGlkT2J0YWluQ29udGV4dElkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoK
KyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL01vZGVsOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL1dlYk1v
ZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViTW9kZWxQ
bGF5ZXJQcm92aWRlcjo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYk1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaDogQWRkZWQuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWM6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9k
ZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmg6IEFkZGVkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6CisgICAg
ICAgIChXZWJLaXQ6Om1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktp
dDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
OmNyZWF0ZUZpbGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllcjo6Y2xlYXJGaWxlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllcjo6bGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZp
ZXcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjptX2FwcEhpZ2hsaWdodHNWaXNpYmxlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpOgorCiAyMDIxLTExLTA4ICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBbUGF5bWVudCBSZXF1
ZXN0XSBBZGQgYSBuZXcgcGF5bWVudCBtZXRob2QgZm9yIHNob3dpbmcgQU1TIFVJCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTU5Miw2ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lv
bi9SZW1vdGVNZWRpYVNlc3NpCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2Fu
ZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXll
clByb3ZpZGVyLmNwcAorCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAK
IFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cApJbmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDgg
QEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNz
L01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2lu
QW5ub3RhdGlvbi5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5v
dGF0aW9uLm1tCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVt
ZW50Q29udHJvbGxlci5oCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29y
ZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAg
dm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpG
bG9hdFNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmlu
ZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwODA1LDE1ICsxMDgwNSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVsbHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lk
IFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVt
ZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVy
bCwgdXVpZCwgc2l6ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAo
aGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9k
ZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0
SWQpKTsKKyAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcodXJsLCB1dWlkLCBzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJl
dmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC01OTAsOCArNTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0
IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlk
T2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3Ry
aW5nJiwgdWludDMyX3QpOworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9BTVNfVUkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3
ICs1ODcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1l
bnRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KHN0cnVjdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVy
bCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcoVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBzaXplKSAtPiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJt
aXNzaW9uKHN0cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29y
ZTo6UGVybWlzc2lvbkRlc2NyaXB0b3IgZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJD
b3JlOjpQZXJtaXNzaW9uU3RhdGUgc3RhdGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNv
Y29hLm1tCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykK
KyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMv
U3lzdGVtUHJldmlld1NQSS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpA
QCAtMTI0LDEwICsxMjUsMTIgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9k
ZWxFbAogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2Rl
bEVsZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0
IFN0cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2Rl
bEVsZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxl
VVJMLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBh
Z2VQcm94eS5wcmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1f
d2ViUGFnZVByb3h5LnByZWZlcmVuY2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBl
bGVtZW50IGRpc2FibGVkIl9zIH0pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1
dG8gbnNVVUlEID0gYWRvcHROUyhbW05TVVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1
aWRdKTsKICAgICBhdXRvIHByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJ
bnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpIFVVSUQ6bnNVVUlELmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2
b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAg
ICBpdGVyYXRvci0+dmFsdWUgPSBwcmV2aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlz
IG5vdCBqdXN0IHVzaW5nIG5vcm1hbCBVUkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRv
IHVybCA9IGFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJM
LmZpbGVTeXN0ZW1QYXRoKCldKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3Ao
KSk7Ci0gICAgV2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29u
dGV4dENvcHkgPSBjb250ZXh0OwotICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJM
ICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07
Ci0gICAgW3ByZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVy
Ol4oTlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1
cFJlbW90ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFr
VGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwg
dXJsID0gV1RGTW92ZSh1cmwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoTlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewog
ICAgICAgICBpZiAoY29udGV4dEVycm9yKSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50
LCAiVW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwg
dXVpZENvcHkudXRmOCgpLmRhdGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlv
bl0pOworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVt
b3RlIGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29u
dGV4dEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciB7IGNvbnRleHRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxF
bGVtZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1
aWRDb3B5LnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJs
aXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29t
cGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAg
ICBbcHJldmlldyBwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZp
ZXcsIHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxl
IGxvYWRFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAg
ICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1
aWQgJXM6ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVk
RGVzY3JpcHRpb25dKTsKKyAgICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxl
IHRvIGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2Fk
RXJyb3IubG9jYWxpemVkRGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFp
blJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciB7IGxvYWRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAl
cy4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1l
bnQsICJMb2FkZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAot
ICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENv
cHksIHV1aWRDb3B5LCBjb250ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUg
ewotICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQ
cmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNv
bnRleHRJZCk7CisgICAgICAgICAgICBhdXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJ
ZF07CisgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdl
YWtUaGlzKSwgdXVpZCA9IFdURk1vdmUodXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4
dElkKSk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0p
LmdldCgpXTsKKyAgICB9KS5nZXQoKV07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0NDcp
CisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MjIyLDYgKzUyMjIsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYz
Mzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0J1bmRsZVBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2
NTIxMjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdB
cmVhUHJveHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQ
cm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBB
MkQxOTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyQjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUw
MEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1v
ZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQx
MUIyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIx
ODEyQUM0MjZDMDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC05NzgwLDYgKzk3ODQsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcw
OUJFNCAvKiBNZWRpYUNhY2hlICovLAogCQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBN
ZWRpYVNlc3Npb24gKi8sCiAJCQkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3Ry
ZWFtICovLAorCQkJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1
MTA1QjBEMjE2MkY3QTVFMDBFMjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4
QUE4MDAyOURFQjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2
NEI0OTAwREIxMzcxIC8qIFBsdWdpbnMgKi8sCkBAIC0xMDYwOSw2ICsxMDYxNCwyNSBAQAogCQkJ
cGF0aCA9IGM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3
MzJFRjY1MDBBMkQxOTEgLyogTW9kZWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJ
QkMyQjQxMUIyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICov
LAorCQkJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVy
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKwkJQkMyQjQxMEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJE
MTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQy
NzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAor
CQkJKTsKKwkJCXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQlCQzJFNkU3NDExNDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNp
bmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5o
PgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUv
SFRNTE1vZGVsRWxlbWVudC5oPgorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
CisjaW5jbHVkZSAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAj
aWYgIU9TKFdJTkRPV1MpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRX
ZWJzaXRlRGF0YVN0b3JlUGFyYQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpz
ZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQogICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50
Q2FjaGVEaXJlY3RvcnkpOworICAgICAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6
c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSk7CiAjZW5kaWYKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFi
bGVkKHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXll
clByb3ZpZGVyLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJN
b2RlbFBsYXllclByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+
CisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK1dlYk1vZGVsUGxheWVyUHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFn
ZSYgcGFnZSkKKyAgICA6IG1fcGFnZSB7IHBhZ2UgfQoreworICAgIFVOVVNFRF9QQVJBTShtX3Bh
Z2UpOworfQorCitXZWJNb2RlbFBsYXllclByb3ZpZGVyOjp+V2ViTW9kZWxQbGF5ZXJQcm92aWRl
cigpID0gZGVmYXVsdDsKKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVy
IG92ZXJyaWRlcy4KKworUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBXZWJNb2RlbFBsYXll
clByb3ZpZGVyOjpjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYg
Y2xpZW50KQoreworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgcmV0
dXJuIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGUobV9wYWdlLCBjbGllbnQp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
KyNlbmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyUHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6Cisg
ICAgV2ViTW9kZWxQbGF5ZXJQcm92aWRlcihXZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViTW9k
ZWxQbGF5ZXJQcm92aWRlcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxh
eWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok1vZGVs
UGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpIGZp
bmFsOworCisgICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgPFdlYkNvcmUv
TW9kZWxQbGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyQ2xpZW50Lmg+Cisj
aW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitP
QkpDX0NMQVNTIEFTVklubGluZVByZXZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpN
b2RlbFBsYXllciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllcj4gY3JlYXRlKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpOwor
ICAgIHZpcnR1YWwgfkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKCk7CisKKyAgICBzdGF0
aWMgdm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKwor
cHJpdmF0ZToKKyAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiwgV2Vi
Q29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVy
IG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChXZWJDb3JlOjpNb2RlbCYsIFdlYkNv
cmU6OkxheW91dFNpemUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5
ZXIoKSBvdmVycmlkZTsKKworICAgIHZvaWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYpOwor
ICAgIHZvaWQgY2xlYXJGaWxlKCk7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsKKyAg
ICBXZWFrUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAgIFN0
cmluZyBtX2ZpbGVQYXRoOworICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGlu
ZVByZXZpZXc7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CisjaW1w
b3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExp
bmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1F
V09SSyhBc3NldFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGlu
ZVByZXZpZXcpOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyPiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdlYlBh
Z2UmIHBhZ2UsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwgY2xp
ZW50KSk7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVu
dCYgY2xpZW50KQorICAgIDogbV9wYWdlIHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNsaWVu
dCB9Cit7Cit9CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIoKQoreworICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMgU3Ry
aW5nJiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Cisg
ICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0aWMg
Y29uc3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJu
IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0
IFN0cmluZyYgcGF0aCkKK3sKKyAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgp
ID0gcGF0aDsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRl
RmlsZShXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQgZm9y
IGEgZmlsZSBpcyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQ
cmV2aWV3LAorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc1NjcuCisKKyAgICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0g
bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5Lmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBG
aWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9y
eUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0Rp
cmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRp
cmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0Rp
cmVjdG9yeSkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMg
d2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KKyAg
ICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fu
b25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVT
eXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1l
KTsKKyAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2Uu
ZGF0YSgpLT5kYXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lz
dGVtOjpjbG9zZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2
b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAgIGlm
IChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3Rl
bTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmco
KTsKK30KKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisKK3Zv
aWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwmIG1v
ZGVsU291cmNlLCBXZWJDb3JlOjpMYXlvdXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJvbmdD
bGllbnQgPSBtX2NsaWVudC5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAo
IXN0cm9uZ1BhZ2UpIHsKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhp
cywgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50
ZXJuYWwsIDAsIG1vZGVsU291cmNlLnVybCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsKKwor
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBh
bmQgc2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0
cmluZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAg
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMy
X3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtT
ZWxmID0gV2Vha1B0ciB7ICp0aGlzIH1dIChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAg
IGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1Nl
bGYpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQgPSBz
dHJvbmdTZWxmLT5tX2NsaWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAg
IExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5l
UHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9jZXNz
Iik7CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxm
LCByZXN1bHQuZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvJiBbdXVpZCwgY29udGV4dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmluZyBl
eHBlY3RlZFVVSUQgPSBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJp
bmc7CisKKyAgICAgICAgaWYgKHV1aWQgIT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAgICBM
T0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVBy
ZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQg
ZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdT
ZWxmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJ
bnRlcm5hbCwgMCwgeyB9LCBtYWtlU3RyaW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXll
cjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2Vp
dmVkICIsIHV1aWQsICIgYnV0IGV4cGVjdGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5tX2lu
bGluZVByZXZpZXcgc2V0UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0coTW9k
ZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdE
aWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5l
Y3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBzdHJv
bmdDbGllbnQtPmRpZEZpbmlzaExvYWRpbmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAgCisg
ICAgc3Ryb25nUGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
Ok1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lubGlu
ZVByZXZpZXcgbGF5ZXJdOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAy
ODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2
ICs0MSwxMSBAQAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIApAQCAtOTEsNyArOTYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlCiAgICAgICAgIH07CiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9O
UykKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
YnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBpZiAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdElu
Tm90aWZpY2F0aW9uc0VuYWJsZWQoKSAmJiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVz
c2FnZUhhbmRsZXI6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5
T3JpZ2luLnRvU3RyaW5nKCkpLCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3Bh
Z2UtPnNlc3Npb25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MzEsMTMgKzE1MzEsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6dGFrZU1vZGVsRWxlbWVudEZ1CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUp
IGNvbnN0Ci17Ci0gICAgbV9wYWdlLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxlbWVu
dCwgdXJsLCB1dWlkLCBzaXplKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9B
TVNfVUkpCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdGFydEFwcGxlUGF5QU1TVUlTZXNzaW9u
KGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IEFwcGxlUGF5QU1TVUlSZXF1ZXN0JiBy
ZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyODU0
NDcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw5ICs0NTgsNiBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVt
ZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29u
dGVudExheWVySWQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAKICNpZiBFTkFCTEUo
QVBQTEVfUEFZX0FNU19VSSkKICAgICB2b2lkIHN0YXJ0QXBwbGVQYXlBTVNVSVNlc3Npb24oY29u
c3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlBTVNVSVJlcXVlc3QmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYpIGZpbmFsOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4
NTQ0NykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTeXN0ZW1DbGllbnQuaCIKICNp
bmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiV2ViTW9kZWxQbGF5ZXJQcm92
aWRlci5oIgogI2luY2x1ZGUgIldlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmlj
YXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpA
QCAtMjczLDEwICsyNzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9IVE1MTW9kZWxFbGVtZW50Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRB
X0RFVEVDVElPTikKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKQEAg
LTU3NSw3ICs1NzIsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
CiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigqdGhpcyksCiAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgp
LAogICAgICAgICBXZWJQZXJtaXNzaW9uQ29udHJvbGxlcjo6Y3JlYXRlKCp0aGlzKSwKLSAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxXZWJTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1
ZVJlZjxXZWJTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViTW9k
ZWxQbGF5ZXJQcm92aWRlcj4oKnRoaXMpCiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5j
aHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KCp0aGlzKTsKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKQEAgLTc3MzksMjEgKzc3MzcsNiBAQCB2b2lkIFdlYlBhZ2U6OnRha2VNb2Rl
bEVsZW1lbnRGdWxsc2NyZWVuCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi12b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXco
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQotewotICAgIGlm
IChhdXRvIGVsZW1lbnRDb250ZXh0ID0gY29udGV4dEZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJl
dmlldygqZWxlbWVudENvbnRleHQsIHVybCwgdXVpZCwgc2l6ZSkpOwotfQotCi12b2lkIFdlYlBh
Z2U6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQmIGVsZW1lbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQz
Ml90IGNvbnRleHRJZCkKLXsKLSAgICBhdXRvIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChl
bGVtZW50Q29udGV4dCk7Ci0gICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KGVs
ZW1lbnQpKQotICAgICAgICBkb3duY2FzdDxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PigqZWxl
bWVudCkuaW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCh1dWlkLCBjb250ZXh0SWQpOwot
fQotI2VuZGlmCi0KIHZvaWQgV2ViUGFnZTo6c2Nyb2xsVG9SZWN0KGNvbnN0IFdlYkNvcmU6OkZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgb3JpZ2luKQog
ewogICAgIG1haW5GcmFtZVZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQodGFyZ2V0
UmVjdC5taW5YTWluWUNvcm5lcigpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCwxMCArMjIw
LDYgQEAgY2xhc3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0Owog
Y2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVX
KQotY2xhc3MgSFRNTE1vZGVsRWxlbWVudDsKLSNlbmRpZgotCiBlbnVtIFN5bnRoZXRpY0NsaWNr
VHlwZSA6IGludDhfdDsKIGVudW0gY2xhc3MgQ09FUERpc3Bvc2l0aW9uIDogYm9vbDsKIGVudW0g
Y2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwpAQCAtMTQ5NiwxMCArMTQ5
Miw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAg
IHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25z
dCBTdHJpbmcmLCB1aW50MzJfdCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9k
YWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg1NDQ3KQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtNjQ3LDggKzY0Nyw0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW4KICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZs
b2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgTW9kZWxFbGVtZW50UHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENv
bnRleHQsIFN0cmluZyB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi0jZW5kaWYKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ0NykKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBA
CisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBG
YWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxE
b2N1bWVudFdpdGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNlczpncm91cE5hbWU6XSk6CisKIDIwMjEt
MTEtMDYgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1v
dmUgZW1wdHkgZGlyZWN0b3JpZXMgZnJvbSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkg
YXMgb2YgcjI4NTM1NwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDcgQEAKICNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEu
aD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0R1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CkBAIC0xNTQzLDcgKzE1NDQsOCBAQCAtICh2
b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIG1ha2VVbmlxdWVS
ZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNh
c3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRlKFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250
cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0
b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3Rv
cmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChz
ZWxmKTsKQEAgLTE4MjMsNyArMTgyNSw4IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6KE4KICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JD
cmVhdGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAg
ICAgIFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAg
ICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAg
IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAg
IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAg
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xp
ZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU0NDcpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0w
OCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRm
b3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAg
IChXZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKwogMjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IHJlbmFtZSBhY3Rpb25W
ZXJiKCkgYXMgbG9jYWxpemVkQWN0aW9uVmVyYigpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMjg1NDQ3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJh
Z0NvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1
bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlT
dG9yYWdlUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgpAQCAtMzA2NSw3
ICszMDY2LDggQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogICAg
ICAgICBtYWtlVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShmYWxzZSksCiAgICAgICAgIFdl
YkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VV
bmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VV
bmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsKICAg
ICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443649</attachid>
            <date>2021-11-08 19:36:52 -0800</date>
            <delta_ts>2021-11-09 08:56:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211108193651.patch</filename>
            <type>text/plain</type>
            <size>103816</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgbm9uY2UtaGlkaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
bm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9wYXltZW50cmVxdWVz
dCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxMSBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAogCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKKyAg
ICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCisgICAgTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAorICAgIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAogCiAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNsaWVudC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDc4
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIE1vZHVsZXMvYXBwbGVw
YXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXkKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyQ29jb2EuY3BwCi1Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudENvY29hLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0hU
TUxNb2RlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJNb2RlbC5oIgorI2luY2x1ZGUgIk1vZGVsUGxh
eWVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJNb2RlbC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC03MCwxMCArNzIsNiBAQCBIVE1MTW9kZWxFbGVt
ZW50Ojp+SFRNTE1vZGVsRWxlbWVudCgpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiAgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0KLQotI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgY2xlYXJGaWxlKCk7Ci0jZW5kaWYK
IH0KIAogUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMzEsMTcg
KzEyOSwxNiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zCiAgICAg
ICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX21vZGVsUGxheWVy
KQorICAgICAgICBtX21vZGVsUGxheWVyID0gbnVsbHB0cjsKKwogICAgIGlmICghbV9yZWFkeVBy
b21pc2UtPmlzRnVsZmlsbGVkKCkpCiAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZWplY3QoRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNl
UmVzb2x2ZSk7CiAKLSAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKSB7Ci0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgY2xlYXJGaWxlKCk7Ci0jZW5kaWYK
KyAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMuZGVzdGluYXRp
b24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpNb2RlbDsKQEAgLTE2OCwyNCArMTY1LDYg
QEAgSFRNTE1vZGVsRWxlbWVudCYgSFRNTE1vZGVsRWxlbWVudDo6cmVhZAogICAgIHJldHVybiAq
dGhpczsKIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLXN0YXRpYyBTdHJp
bmcmIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKLSAg
ICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci19Ci0KLXZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkgPSBwYXRo
OwotfQotCi1jb25zdCBTdHJpbmcmIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKTsKLX0KLSNlbmRpZgotCiAvLyBNQVJLOiAtIERPTSBvdmVycmlkZXMuCiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50
LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCkBAIC0yMzYsMTMgKzIxNSw2NyBAQCB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhCiAKICAgICBtX3JlYWR5UHJvbWlzZS0+cmVz
b2x2ZSgqdGhpcyk7CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQogICAg
IG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKIH0KIAorLy8gTUFSSzogLSBNb2RlbFBsYXllciBz
dXBwb3J0CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAg
IC8vIEZJWE1FOiBGb3IgdGhlIGVhcmx5IHJldHVybnMgaGVyZSwgd2Ugc2hvdWxkIHByb2JhYmx5
IGluZm9ybSB0aGUgcGFnZSB0aGF0IHRoYXQgdGhpbmdzIGhhdmUKKyAgICAvLyBmYWlsZWQgdG8g
cmVuZGVyPyBGb3IgdGhlIGNhc2Ugb2Ygbm8tcmVuZGVyZXIsIHdlIHNob3VsZCBwcm9iYWJseSBh
bHNvIGJ1aWxkIHRoZSBtb2RlbCB3aGVuL2lmCisgICAgLy8gYSByZW5kZXJlciBpcyBjcmVhdGVk
LgorCisgICAgYXV0byBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTk9URTogRm9y
IG5vdywgY3JlYXRlTW9kZWxQbGF5ZXIgcmV0dXJuaW5nIG51bGxwdHIgbWVhbnMgdGhhdCB0aGUg
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01vZGVsKCkgcGF0aAorICAgIC8vIGlzIGJlaW5n
IHVzZWQsIGJ1dCB0aGF0IG5lZWRzIHRvIGJlIHBoYXNlZCBvdXQgdG8gYWxsb3cgYmlkaXJlY3Rp
b25hbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIG1vZGVsIHBsYXllcgorICAgIC8vIGFuZCB0
aGUgSFRNTE1vZGVsRWxlbWVudC4gT25jZSB0aGF0IGlzIHBoYXNlZCBvdXQsIGNyZWF0ZU1vZGVs
UGxheWVyKCkgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmV0dXJuIGEgUmVmPD4uCisgICAgbV9tb2Rl
bFBsYXllciA9IHBhZ2UtPm1vZGVsUGxheWVyUHJvdmlkZXIoKS5jcmVhdGVNb2RlbFBsYXllcigq
dGhpcyk7CisgICAgaWYgKCFtX21vZGVsUGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byB0ZWxsIHRoZSBwbGF5ZXIgaWYgdGhlIHNpemUgY2hhbmdlcyBh
cyB3ZWxsLCBzbyBwYXNzaW5nIHRoaXMKKyAgICAvLyBpbiB3aXRoIGxvYWQgcHJvYmFibHkgZG9l
c24ndCBtYWtlIHNlbnNlLgorICAgIGF1dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOworCisgICAgbV9tb2RlbFBsYXllci0+bG9hZCgqbV9t
b2RlbCwgc2l6ZSk7Cit9CisKK2Jvb2wgSFRNTE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGVsUGxheWVyICE9IG51bGxwdHI7Cit9CisK
K1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX21vZGVsUGxheWVyLT5sYXllcigpOworfQorCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OmRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImIG1vZGVsUGxheWVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXllciA9PSBtX21vZGVsUGxh
eWVyKTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAg
ICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOworfQorCit2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpCit7CisgICAgQVNTRVJUX1VOVVNFRChtb2RlbFBsYXllciwgJm1vZGVsUGxh
eWVyID09IG1fbW9kZWxQbGF5ZXIpOworfQorCisvLyBNQVJLOiAtIEZ1bGxzY3JlZW4gc3VwcG9y
dC4KKwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogeworLy8gRklY
TUU6IEFkZCBhIG5ldyBtZXRob2QgdG8gTW9kZWxQbGF5ZXIgZm9yIGVudGVyaW5nIGZ1bGxzY3Jl
ZW4gYW5kIG1vdmUgdGhpcyBpbnRvIHRoZSBpT1MgQVJLaXQgaW5saW5lIHByZXZpZXcgTW9kZWxQ
bGF5ZXIgaW1wbGVtZW50YXRpb24uCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lP
UykKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMSArMzIsMTkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJN
b2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
LU9CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1vZGVsOworY2xhc3MgTW9kZWxQbGF5ZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAK
LWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZh
dGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTE1vZGVsRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwg
cHVibGljIE1vZGVsUGxheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhU
TUxNb2RlbEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1vZGVsRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNTUsMjEgKzUz
LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZXNDaGFuZ2VkKCk7CiAgICAgY29uc3QgVVJM
JiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KIAorICAgIC8vIE1B
Uks6IERPTSBGdW5jdGlvbnMgYW5kIEF0dHJpYnV0ZXMKKwogICAgIHVzaW5nIFJlYWR5UHJvbWlz
ZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNlPEhUTUxN
b2RlbEVsZW1lbnQ+PjsKICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFk
eVByb21pc2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1vZGVsRGF0YSgp
IGNvbnN0OwogICAgIFJlZlB0cjxNb2RlbD4gbW9kZWwoKSBjb25zdDsKIAotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFVykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGJvb2wg
dXNlc1BsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmxpbmVQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKTsKLSNl
bmRpZgogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKIApAQCAtNzksMTMgKzcyLDkgQEAg
cHJpdmF0ZToKICAgICBIVE1MTW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCiAgICAgdm9pZCBzZXRTb3VyY2VVUkwoY29uc3QgVVJMJik7Ci0gICAgSFRNTE1v
ZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwotCi0jaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIGNsZWFyRmlsZSgpOwotICAgIHZvaWQgY3JlYXRl
RmlsZSgpOwogICAgIHZvaWQgbW9kZWxEaWRDaGFuZ2UoKTsKLSNlbmRpZgorCisgICAgSFRNTE1v
ZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwogCiAgICAgLy8gRE9NIG92ZXJyaWRl
cy4KICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKQEAgLTk3LDYgKzg2LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCisgICAgLy8g
TW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhN
b2RlbFBsYXllciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXIm
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwpAQCAtMTA0LDEwICs5Nyw3IEBAIHByaXZh
dGU6CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQotICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFJldGFpblB0cjxBU1ZJbmxp
bmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7Ci0jZW5kaWYKKyAgICBSZWZQdHI8TW9kZWxQbGF5
ZXI+IG1fbW9kZWxQbGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTW9kZWxF
bGVtZW50LmgiCi0KLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2
aWV3U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1VS
TC5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09S
SyhBc3NldFZpZXdlcik7Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVBy
ZXZpZXcpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
Y3JlYXRlRmlsZSgpCi17Ci0gICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBv
cmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCi0KLSAgICBjbGVhckZp
bGUoKTsKLQotICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeUV4
aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVj
dG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWRpcmVj
dG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVj
dG9yeSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2Vs
bCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KLSAgICBh
dXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7Ci0gICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsK
LSAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPD0gMCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Ci0gICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFy
RmlsZSgpCi17Ci0gICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwotICAgIG1fZmlsZVBh
dGggPSBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlk
Q2hhbmdlKCkKLXsKLSAgICBjcmVhdGVGaWxlKCk7Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5z
aXplKCk7Ci0KLSAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVBy
ZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpXSk7Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVs
ZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQg
c2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmlu
ZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLQotICAgIGlm
IChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5V
VUlEU3RyaW5nLCBzaXplKTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4
dElkKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxp
bmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpIHsKLSAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlE
IG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0
YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW21faW5saW5lUHJldmlldyBz
ZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJZF07Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxN
b2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVs
bHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4
KCkuZGF0YSgpKTsKLQotICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotfQotCi1QbGF0Zm9ybUxh
eWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShN
T0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVsUGxheWVyOjp+TW9kZWxQbGF5ZXIoKSA9IGRl
ZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9N
b2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxheW91dFNp
emUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbDsKKworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTW9kZWxQbGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbFBsYXllcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfk1vZGVsUGxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYs
IExheW91dFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgPSAw
OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK01vZGVsUGxheWVyQ2xpZW50Ojp+TW9kZWxQbGF5ZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2Rl
bFBsYXllckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIFJlc291cmNlRXJyb3I7
CisKK2NsYXNzIE1vZGVsUGxheWVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vZGVs
UGxheWVyQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXJDbGllbnQo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9N
b2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJv
dmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllclByb3ZpZGVyOjp+
TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92
aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIE1vZGVs
UGxheWVyQ2xpZW50OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2RlbFBsYXllclByb3ZpZGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
b2RlbFBsYXllclByb3ZpZGVyKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBhbGwgY2xpZW50cyBo
YXZlIGFkb3B0ZWQgTW9kZWxQbGF5ZXJQcm92aWRlciwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSBj
aGFuZ2VkIHRvIHJldHVybiBhIFJlZjxNb2RlbFBsYXllcj4KKyAgICB2aXJ0dWFsIFJlZlB0cjxN
b2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKSA9IDA7Cit9
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworI2lu
Y2x1ZGUgIk1vZGVsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZjxEdW1teU1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxheWVyOjpjcmVh
dGUoTW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEdW1teU1vZGVsUGxheWVyKGNsaWVudCkpOworfQorCitEdW1teU1vZGVsUGxheWVyOjpEdW1t
eU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudCB7
IGNsaWVudCB9Cit7Cit9CisKK0R1bW15TW9kZWxQbGF5ZXI6On5EdW1teU1vZGVsUGxheWVyKCkg
PSBkZWZhdWx0OworCit2b2lkIER1bW15TW9kZWxQbGF5ZXI6OmxvYWQoTW9kZWwmIG1vZGVsLCBM
YXlvdXRTaXplKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZEZh
aWxMb2FkaW5nKCp0aGlzLCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbW9kZWwudXJsKCksICJUcnlpbmcgdG8gbG9hZCBtb2RlbCB2aWEgRHVtbXlNb2RlbFBs
YXllciJfcyB9KTsKK30KKworUGxhdGZvcm1MYXllciogRHVtbXlNb2RlbFBsYXllcjo6bGF5ZXIo
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXIgZmluYWwgOiBwdWJsaWMgTW9k
ZWxQbGF5ZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RHVtbXlN
b2RlbFBsYXllcj4gY3JlYXRlKE1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHVtbXlNb2RlbFBsYXllcigpOworCitwcml2YXRlOgorICAgIER1bW15TW9k
ZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIE1vZGVsUGxheWVyIG92ZXJy
aWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYsIExheW91dFNpemUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKworICAgIFdl
YWtQdHI8TW9kZWxQbGF5ZXJDbGllbnQ+IG1fY2xpZW50OworfTsKKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5
ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuaCIKKworI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRl
cigpID0gZGVmYXVsdDsKK0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6fkR1bW15TW9kZWxQbGF5
ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworUmVmUHRyPE1vZGVsUGxheWVyPiBEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGll
bnQpCit7CisgICAgcmV0dXJuIER1bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShjbGllbnQpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3Zp
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyIGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyUHJvdmlkZXIg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigp
OworCitwcml2YXRlOgorICAgIC8vIE1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorICAg
IHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXll
ckNsaWVudCYpIG92ZXJyaWRlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NDc4KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDY4LDYgKzQwNjgsMTEgQEAKIAkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlLmggKi87IH07CisJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAvKiBNb2RlbFBs
YXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
QjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkx
IC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQkMyQjQxMTkyNzMyRjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEwRTI3MzJFRkU0
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEyNTI3MzM2MDA1MDBBMkQxOTEgLyogRHVt
bXlNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEzMTI3
MzRBMDg2MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEyMDI3MzM1Q0I5MDBBMkQx
OTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyQ0JGNEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpT
V2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50
LmggKi87IH07CiAJCUJDMkNDQTEwMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MkNDQTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzMwNUM3QTBDMDc2
QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNzk5LDcgKzEwODA0LDYgQEAKIAkJNzFD
MjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENTU0FuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxQ0FBM0Q5MjY4RDBCRjkw
MEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxQ0UyQzUxMjIwOURDN0YwMEM0OTRCRCAvKiBNb3VzZUV2ZW50SU9TLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlRXZlbnRJT1MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MDFEQjU1QzRFMDBERDVDRjUgLyogbWFpbi5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1haW4uanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRDAyRDkyMURCNTVDNEUwMERENUNGNSAvKiBtZWRpYS1j
b250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gIm1l
ZGlhLWNvbnRyb2xsZXIuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MzUs
NiArMTQ3MzksMTYgQEAKIAkJQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNzRC
MzAxNDBFQkVEODAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4
ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzJCNDEwRTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kZWxQbGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMTIyNzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMyQjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2RlbFBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0
MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMTYyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIxMjczMzVDQjkwMEEyRDE5MSAvKiBE
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQx
MjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHVtbXlNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEy
NDI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEdW1teU1vZGVsUGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJH
TENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
Q0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNzUwLDEwICsyMzc2NCwxNiBAQAogCQk3MUY4NDlDQzI1NjVBQjdFMDA4QzM3RjIg
LyogbW9kZWwtZWxlbWVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQkMyQjQxMjIyNzMzNUUwQzAwQTJEMTkxIC8qIGR1bW15ICovLAogCQkJCTcxQTNE
MTgwMjU2MkI4MjUwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJCQk3MUEz
RDE3RDI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJCTcxQTNE
MTdGMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKLQkJCQk3MUNB
QTNEOTI2OEQwQkY5MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovLAorCQkJ
CUJDMkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8sCisJCQkJQkMy
QjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMTIy
NzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLywKKwkJCQlCQzJCNDEw
RTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLywKKwkJCQlCQzJCNDEx
NjI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMy
QjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gIm1vZGVsLWVsZW1lbnQiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI4MzMyLDYgKzI4MzUyLDE3IEBACiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQlCQzJCNDEyMjI3MzM1RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTI0Mjcz
MzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDEyMzI3
MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0MTIxMjcz
MzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJD
MkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gZHVtbXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMzMjAxLDYgKzMzMjMyLDggQEAKIAkJCQk4
MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5MSAvKiBE
dW1teU1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDEzMTI3MzRBMDg2MDBB
MkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NURGODI2RTgyMkM3MDAwRUM2QTcgLyogRHVtbXlT
dG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYwMEMy
MDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzUx
MTEsNiArMzUxNDQsOSBAQAogCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJh
Y2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRD
OEQzOTgyNUYyRkU5NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJC
NDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMkI0MTE5MjczMkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZFMUUzRDBC
REQwMDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzIwMUMxQTFGOEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdDbGll
bnQuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgpAQCAtNTg4LDEyICs1ODksNiBA
QCB2b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50CiB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIEVtcHR5Q2hyb21lQ2xp
ZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
KSBjb25zdAotewotfQotI2VuZGlmCi0KIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBv
bGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQpAQCAtMTE5
OCw3ICsxMTkzLDggQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRQog
ICAgICAgICBtYWtlVW5pcXVlUmVmPEVtcHR5TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAg
ICAgICBFbXB0eUJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAgICAgIER1
bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVm
PER1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyPigpCiAgICAgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUNocm9t
ZUNsaWVudD4gZHVtbXlDaHJvbWVDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMiwxMCArMjIyLDYgQEAgY2xhc3MgRW1w
dHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQwogI2VuZGlmCiAKICAgICBSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMg
Ki8pIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogfTsKIAogRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQmIGVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDkgKzYwOCw2
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZp
cnR1YWwgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQpIGNvbnN0IHsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2aXJ0dWFsIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgeyB9OwotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBcHBs
ZVBheUFNU1VJU2Vzc2lvbihjb25zdCBVUkwmLCBjb25zdCBBcHBsZVBheUFNU1VJUmVxdWVzdCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJMb3dQ
b3dlck1vZGVOb3RpZmllci5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVy
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYWdlQ29sb3JT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTMzNyw2ICszMzgs
NyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX3Bl
cm1pc3Npb25Db250cm9sbGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVybWlzc2lvbkNv
bnRyb2xsZXIpKQogICAgICwgbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZShXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLnJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKSkKICAgICAsIG1fc3RvcmFnZVBy
b3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVByb3ZpZGVyKSkKKyAgICAs
IG1fbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxh
eWVyUHJvdmlkZXIpKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKQEAg
LTM3OTUsNCArMzc5Nyw5IEBAIFN0b3JhZ2VDb25uZWN0aW9uJiBQYWdlOjpzdG9yYWdlQ29ubmVj
dGkKICAgICByZXR1cm4gbV9zdG9yYWdlUHJvdmlkZXItPnN0b3JhZ2VDb25uZWN0aW9uKCk7CiB9
CiAKK01vZGVsUGxheWVyUHJvdmlkZXImIFBhZ2U6Om1vZGVsUGxheWVyUHJvdmlkZXIoKQorewor
ICAgIHJldHVybiBtX21vZGVsUGxheWVyUHJvdmlkZXIuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByaXZhdGU7CitjbGFzcyBNb2RlbFBsYXllclByb3ZpZGVyOwogY2xhc3MgUGFnZUNvbmZp
Z3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxl
OwpAQCAtOTA0LDYgKzkwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQZXJtaXNz
aW9uQ29udHJvbGxlciYgcGVybWlzc2lvbkNvbnRyb2xsZXIoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdG9yYWdlQ29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIE1vZGVsUGxh
eWVyUHJvdmlkZXImIG1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEy
NDAsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiBt
X3Blcm1pc3Npb25Db250cm9sbGVyOwogICAgIFJlZlB0cjxSZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZT4gbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3Zp
ZGVyPiBtX3N0b3JhZ2VQcm92aWRlcjsKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRl
cj4gbV9tb2RlbFBsYXllclByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQog
ICAgIHVzaW5nIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxUZXh0UmVj
b2duaXRpb25SZXN1bHQsIEludFJlY3Q+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92
aWRlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1v
ZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
aCIKICNpbmNsdWRlICJQZXJtaXNzaW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBsdWdpbklu
Zm9Qcm92aWRlci5oIgpAQCAtNjIsNyArNjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8U29ja2V0
UHJvdmlkZXI+JiYgc29ja2V0UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4m
JiBsaWJXZWJSVENQcm92aWRlciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3Zp
ZGVyLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJlZjxDb29r
aWVKYXI+JiYgY29va2llSmFyLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIHBy
b2dyZXNzVHJhY2tlckNsaWVudCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGxvYWRl
ckNsaWVudEZvck1haW5GcmFtZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+
JiYgc3BlZWNoUmVjb2duaXRpb25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92
aWRlcj4mJiBtZWRpYVJlY29yZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnk+JiYgYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+
JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYgc3Rv
cmFnZVByb3ZpZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGll
bnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldl
YlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlk
ZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVz
ZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBiYWNrRm9yd2FyZENs
aWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJD
bGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLCBVbmlxdWVSZWY8TWVk
aWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRlciwgUmVmPEJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0cnksIFJlZjxQZXJtaXNz
aW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJvbGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQ
cm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIsIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVy
PiYmIG1vZGVsUGxheWVyUHJvdmlkZXIpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tldFByb3Zp
ZGVyKFdURk1vdmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtNzgsNiArNzksNyBAQCBQYWdlQ29uZmln
dXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBtZWRpYVJlY29yZGVyUHJvdmlk
ZXIoV1RGTW92ZShtZWRpYVJlY29yZGVyUHJvdmlkZXIpKQogICAgICwgcGVybWlzc2lvbkNvbnRy
b2xsZXIoV1RGTW92ZShwZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBzdG9yYWdlUHJvdmlk
ZXIoV1RGTW92ZShzdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbW9kZWxQbGF5ZXJQcm92aWRlcihX
VEZNb3ZlKG1vZGVsUGxheWVyUHJvdmlkZXIpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2
LDkgQEAgY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgQmFja0Zv
cndhcmRDbGllbnQ7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBDYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKLWNsYXNzIENvb2tpZUphcjsKIGNsYXNzIENocm9tZUNsaWVudDsK
IGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgQ29va2llSmFyOwogY2xhc3MgRGF0YWJh
c2VQcm92aWRlcjsKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogY2xhc3MgRHJhZ0Ns
aWVudDsKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsKIGNsYXNzIE1lZGlhUmVj
b3JkZXJQcm92aWRlcjsKK2NsYXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7CiBjbGFz
cyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50OwogY2xhc3MgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU7CiBjbGFzcyBTb2Nr
ZXRQcm92aWRlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI7CitjbGFzcyBTcGVl
Y2hTeW50aGVzaXNDbGllbnQ7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiBjbGFz
cyBTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwpAQCAtNzIsMTIg
Kzc0LDExIEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkdMU3RhdGVU
cmFja2VyOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogCiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdl
Q29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiwg
UmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJl
ZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYsIFJl
ZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVmPFByb2dy
ZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlx
dWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVmPFBlcm1p
c3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVm
PEVkaXRvckNsaWVudD4mJiwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2Vi
UlRDUHJvdmlkZXI+JiYsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250
ZW50UHJvdmlkZXI+JiYsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4m
JiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9h
ZGVyQ2xpZW50PiYmLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5p
cXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVBy
b3ZpZGVyPiYmLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24oUGFn
ZUNvbmZpZ3VyYXRpb24mJik7CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBwdWJsaWM6CiAKICAgICBS
ZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IHBlcm1pc3Npb25Db250cm9sbGVyOwogICAgIFVuaXF1
ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKKworICAgIFVuaXF1ZVJlZjxN
b2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAkocmV2aXNpb24gMjg1
NDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTW9kZWwuaCIKIAotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw1ICs1Niwz
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKIH0KIAogfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLQogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgpAQCAtMTAxLDUgKzk5LDMgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVj
b2RlKERlY29kZXImIGRlYwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI4
NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDEzICsxMDk3LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb25maWd1cmEKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBl
bHNlIGlmIChpczxSZW5kZXJNb2RlbD4ocmVuZGVyZXIoKSkpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGlmIChhdXRvKiBw
bGF0Zm9ybUxheWVyID0gZWxlbWVudC0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6TW9kZWwpOwotI2Vsc2UKLSAgICAg
ICAgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50LT5tb2RlbCgpKQorCisgICAgICAgIC8vIFNvbWUg
TW9kZWxQbGF5ZXJzIHVzZSBhIHBsYXRmb3JtTGF5ZXIoKSBhbmQgc29tZSBwYXNzIHRoZSBNb2Rl
bCB0byB0aGUgbGF5ZXIgYXMgY29udGVudHMsCisgICAgICAgIC8vIGJ1dCB0aGlzIGlzIGEgcnVu
dGltZSBkZWNpc2lvbi4KKyAgICAgICAgaWYgKGVsZW1lbnQtPnVzZXNQbGF0Zm9ybUxheWVyKCkp
IHsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoZWxlbWVudC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6TW9kZWwpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50
LT5tb2RlbCgpKQogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvTW9k
ZWwoV1RGTW92ZShtb2RlbCkpOwotI2VuZGlmCiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0x
MS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBs
YXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxF
bGVtZW50Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVs
RWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWw6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYzogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OnNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisK
IDIwMjEtMTEtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0b2dnbGUgc2V2ZXJhbCBleHBlcmltZW50YWwgbWVk
aWEgZmVhdHVyZXMgd2hlbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVkCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJ
KHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTU5Miw2ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVN
ZWRpYVNlc3NpCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVu
c2lvbnMuY3BwCiBXZWJQcm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcAorCiBXZWJQcm9jZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApJbmRleDog
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAgV2ViUHJv
Y2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNzL01lZGlhQ2Fj
aGUvV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9QREZQbHVnaW4ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlv
bi5tbQogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1t
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJv
bGxlci5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2Rl
bEVsZW1lbnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRD
cmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBtb2Rl
bEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpGbG9hdFNpemUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMy
X3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI4
NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEwODA1LDE1ICsxMDgwNSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtl
TW9kZWxFbGVtZW50RnVsbHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVtZW50Q29udHJv
bGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVybCwgdXVpZCwg
c2l6ZSk7Ci19Ci0KLXZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAoaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9kZWxFbGVtZW50
UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0SWQpKTsKKyAg
ICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXco
dXJsLCB1dWlkLCBzaXplLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI4
NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC01OTAsOCArNTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxl
bWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNv
bnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWlu
dDMyX3QpOworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9BTVNf
VUkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcsNyBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1lbnRGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KHN0cnVj
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVybCwgU3RyaW5n
IHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKSAt
PiAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yPiByZXN1bHQpIEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uKHN0
cnVjdCBXZWJDb3JlOjpDbGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6UGVybWlz
c2lvbkRlc2NyaXB0b3IgZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpQZXJt
aXNzaW9uU3RhdGUgc3RhdGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShy
ZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbXBvcnQg
PFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJl
dmlld1NQSS5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAtMTI0LDEw
ICsxMjUsMTIgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9kZWxFbAogCiAj
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVs
ZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYg
dXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxlVVJMLCBTdHJp
bmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2VQcm94eS5w
cmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fd2ViUGFnZVBy
b3h5LnByZWZlcmVuY2VzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG1ha2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJD
b3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBlbGVtZW50IGRp
c2FibGVkIl9zIH0pKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gbnNVVUlE
ID0gYWRvcHROUyhbW05TVVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRdKTsKICAg
ICBhdXRvIHByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgp
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpIFVVSUQ6bnNVVUlELmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2b2lkIE1vZGVs
RWxlbWVudENvbnRyb2xsZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAgICBpdGVyYXRv
ci0+dmFsdWUgPSBwcmV2aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5vdCBqdXN0
IHVzaW5nIG5vcm1hbCBVUkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRvIHVybCA9IGFk
b3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0
ZW1QYXRoKCldKTsKKwogICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAg
V2Vha1B0ciB3ZWFrVGhpcyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29udGV4dENvcHkg
PSBjb250ZXh0OwotICAgIGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJMICp1cmwgPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07Ci0gICAgW3By
ZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJv
ciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1cFJlbW90ZUNv
bm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdl
YWtQdHIgeyAqdGhpcyB9LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJsID0gV1RG
TW92ZSh1cmwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSAoTlNFcnJvciAqIF9OdWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewogICAgICAgICBp
ZiAoY29udGV4dEVycm9yKSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxl
IHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwgdXVpZENvcHku
dXRmOCgpLmRhdGEoKSwgW2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAg
ICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3RlIGNvbm5l
Y3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29udGV4dEVycm9y
LmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGNv
bnRleHRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAi
RXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNoZWQgcmVt
b3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CiAKLSAg
ICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxldGlvbkhh
bmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICBbcHJldmll
dyBwcmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpt
YWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZpZXcsIHV1aWQg
PSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJv
cikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVA
LiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVzY3JpcHRp
b25dKTsKKyAgICAgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGxvYWQg
ZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2FkRXJyb3IubG9j
YWxpemVkRGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3Ao
W3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGxv
YWRFcnJvciB9XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4iLCB1dWlk
Q29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2Fk
ZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENvcHksIHV1aWRD
b3B5LCBjb250ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUgewotICAgICAg
ICAgICAgICAgIHdlYWtUaGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2aWV3RGlk
T2J0YWluQ29udGV4dElkKGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRleHRJZCk7
CisgICAgICAgICAgICBhdXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF07CisgICAg
ICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwg
dXVpZCA9IFdURk1vdmUodXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4dElkKSk7CiAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0pLmdldCgpXTsK
KyAgICB9KS5nZXQoKV07CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC01MjIyLDYgKzUyMjIsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdL
QnVuZGxlUGFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1
bmRsZVBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIxMjExODI2
MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMyNjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQxOTEgLyog
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJLaXRJbmxp
bmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
QjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAv
KiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1vZGVsUGxheWVy
UHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUIyNzMyRjY2
RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDMkQwMjE2MTJBQzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEyQUM0MjZD
MDBFNzMyQTMgLyogV0tQYWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUGFnZUxvYWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzMwNjVGOTEyNTkzNDRFMDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05NzgwLDYgKzk3ODQsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJFNCAvKiBN
ZWRpYUNhY2hlICovLAogCQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBNZWRpYVNlc3Np
b24gKi8sCiAJCQkJNEE0MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICovLAor
CQkJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1MTA1QjBEMjE2
MkY3QTVFMDBFMjc3MDkgLyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURF
QjkgLyogTm90aWZpY2F0aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIx
MzcxIC8qIFBsdWdpbnMgKi8sCkBAIC0xMDYwOSw2ICsxMDYxNCwyNSBAQAogCQkJcGF0aCA9IGM7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3MzJFRjY1MDBB
MkQxOTEgLyogTW9kZWwgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJQkMyQjQxMUIy
NzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJD
MkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8sCisJ
CQkpOworCQkJcGF0aCA9IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJQkMyQjQxMEIyNzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkxIC8qIEFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQyNzMyRUY5NjAw
QTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAorCQkJKTsKKwkJ
CXBhdGggPSBtYWM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzJFNkU3
NDExNDE5NkYwMDBBNjNCMUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNpbmNsdWRlIDx3
dGYvVVJMUGFyc2VyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVs
RWxlbWVudC5oPgorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW5jbHVk
ZSAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAjaWYgIU9TKFdJ
TkRPV1MpCkBAIC01NzYsOSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0
YVN0b3JlUGFyYQogICAgICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNh
Y2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQogICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkpOworICAgICAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eSk7CiAjZW5kaWYKIAogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFt
ZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2RlbFBsYXll
clByb3ZpZGVyLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+CisKKyNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1v
ZGVsUGxheWVyUHJvdmlkZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYgcGFnZSkK
KyAgICA6IG1fcGFnZSB7IHBhZ2UgfQoreworICAgIFVOVVNFRF9QQVJBTShtX3BhZ2UpOworfQor
CitXZWJNb2RlbFBsYXllclByb3ZpZGVyOjp+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVm
YXVsdDsKKworLy8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRl
cy4KKworUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBXZWJNb2RlbFBsYXllclByb3ZpZGVy
OjpjcmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQor
eworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgcmV0dXJuIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oY2xpZW50KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5
ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2Rl
bC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
IDxXZWJDb3JlL01vZGVsUGxheWVyUHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFdlYlBhZ2U7CisKK2NsYXNzIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBw
dWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlcihXZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViTW9kZWxQbGF5ZXJQ
cm92aWRlcigpOworCitwcml2YXRlOgorICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlk
ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBj
cmVhdGVNb2RlbFBsYXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpIGZpbmFsOworCisg
ICAgV2ViUGFnZSYgbV9wYWdlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQbGF5
ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8
d3RmL0NvbXBpbGVyLmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNT
IEFTVklubGluZVByZXZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpNb2RlbFBsYXll
ciwgcHVibGljIENhbk1ha2VXZWFrUHRyPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4g
Y3JlYXRlKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpOworICAgIHZpcnR1
YWwgfkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKCk7CisKKyAgICBzdGF0aWMgdm9pZCBz
ZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToK
KyAgICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiwgV2ViQ29yZTo6TW9k
ZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyIG92ZXJyaWRl
cy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChXZWJDb3JlOjpNb2RlbCYsIFdlYkNvcmU6OkxheW91
dFNpemUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYpOworICAgIHZvaWQg
Y2xlYXJGaWxlKCk7CisKKyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsKKyAgICBXZWFrUHRy
PFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAgIFN0cmluZyBtX2Zp
bGVQYXRoOworICAgIFJldGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7
Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyLm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9t
YWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLmgiCisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CisjaW1wb3J0IDxwYWwv
c3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4K
KyNpbXBvcnQgPHd0Zi9VVUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3Nl
dFZpZXdlcik7CitTT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcp
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyPiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2Us
IFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwgY2xpZW50KSk7Cit9
CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllcihXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50
KQorICAgIDogbV9wYWdlIHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNsaWVudCB9Cit7Cit9
CisKK0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXIoKQoreworICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMgU3RyaW5nJiBzaGFy
ZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7CisgICAgcmV0dXJu
IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0aWMgY29uc3QgU3Ry
aW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHNoYXJlZE1v
ZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYg
cGF0aCkKK3sKKyAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsK
K30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZShXZWJD
b3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBp
cyBvbmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCisK
KyAgICBjbGVhckZpbGUoKTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gbW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lzdGVt
OjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9yeUV4aXN0cyAm
JiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9yeSkg
IT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRpcmVjdG9yeUV4
aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9yeSkp
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KKyAgICBhdXRvIGZp
bGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJ
RFN0cmluZygpKSArICIudXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKKyAgICBh
dXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6Rmls
ZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5k
YXRhKCksIG1vZGVsU291cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoZmlsZSk7CisgICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2b2lkIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAgIGlmIChtX2ZpbGVQ
YXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX2ZpbGVQYXRoKTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsKK30KKwor
Ly8gTUFSSzogLSBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisKK3ZvaWQgQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNl
LCBXZWJDb3JlOjpMYXlvdXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJvbmdDbGllbnQgPSBt
X2NsaWVudC5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgYXV0byogc3Ryb25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ1Bh
Z2UpIHsKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IG1vZGVsU291cmNlLnVybCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsKKworICAgIG1faW5s
aW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSld
KTsKKyAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAl
ZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRm
OCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtTZWxmID0gV2Vh
a1B0ciB7ICp0aGlzIH1dIChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdl
YkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc3Ry
b25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQgPSBzdHJvbmdTZWxm
LT5tX2NsaWVudC5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhNb2Rl
bEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9jZXNzIik7CisgICAg
ICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCByZXN1bHQu
ZXJyb3IoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRv
JiBbdXVpZCwgY29udGV4dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFVV
SUQgPSBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmc7CisKKyAg
ICAgICAgaWYgKHV1aWQgIT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAgICBMT0coTW9kZWxF
bGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRP
YnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQg
JXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwg
MCwgeyB9LCBtYWtlU3RyaW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5l
UHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICIsIHV1
aWQsICIgYnV0IGV4cGVjdGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5tX2lubGluZVByZXZp
ZXcgc2V0UmVtb3RlQ29udGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0coTW9kZWxFbGVtZW50
LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQoKSBzdWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9y
IFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBzdHJvbmdDbGllbnQt
PmRpZEZpbmlzaExvYWRpbmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAgCisgICAgc3Ryb25n
UGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxl
bWVudERpZENyZWF0ZVByZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG1fZmls
ZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lubGluZVByZXZpZXcg
bGF5ZXJdOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyODU0NzgpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBA
QAogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5B
QkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+Cisj
ZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApA
QCAtOTEsNyArOTYsNyBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
CiAgICAgICAgIH07CiAKICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKLSAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5v
dGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBpZiAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0
aW9uc0VuYWJsZWQoKSAmJiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRs
ZXI6OlJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRv
U3RyaW5nKCkpLCBXVEZNb3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2UtPnNlc3Np
b25JRCgpLnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MzEsMTMgKzE1MzEsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZU1v
ZGVsRWxlbWVudEZ1CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmll
dyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpIGNvbnN0Ci17
Ci0gICAgbV9wYWdlLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxlbWVudCwgdXJsLCB1
dWlkLCBzaXplKTsKLX0KLSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9BTVNfVUkpCiAK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzdGFydEFwcGxlUGF5QU1TVUlTZXNzaW9uKGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IEFwcGxlUGF5QU1TVUlSZXF1ZXN0JiByZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1OCw5ICs0NTgsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNj
cmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVy
SWQpIGNvbnN0IGZpbmFsOwogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVX
X01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0U2l6ZSYpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
X0FNU19VSSkKICAgICB2b2lkIHN0YXJ0QXBwbGVQYXlBTVNVSVNlc3Npb24oY29uc3QgVVJMJiwg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlBTVNVSVJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDcsNiArMTA3LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5h
Z2VyLmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTeXN0ZW1DbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJNZWRpYVN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oIgog
I2luY2x1ZGUgIldlYk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGll
bnQuaCIKICNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtMjczLDEw
ICsyNzQsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oPgogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi0jaW5jbHVkZSA8V2ViQ29y
ZS9IVE1MTW9kZWxFbGVtZW50Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElP
TikKICNpbmNsdWRlICJEYXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKQEAgLTU3NSw3ICs1
NzIsOCBAQCBXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAg
IG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPigqdGhpcyksCiAgICAgICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLAogICAgICAg
ICBXZWJQZXJtaXNzaW9uQ29udHJvbGxlcjo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJT
dG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViTW9kZWxQbGF5ZXJQ
cm92aWRlcj4oKnRoaXMpCiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGll
bnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KCp0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKQEAgLTc3MzksMjEgKzc3MzcsNiBAQCB2b2lkIFdlYlBhZ2U6OnRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuCiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCi12b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKQotewotICAgIGlmIChhdXRvIGVs
ZW1lbnRDb250ZXh0ID0gY29udGV4dEZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqZWxl
bWVudENvbnRleHQsIHVybCwgdXVpZCwgc2l6ZSkpOwotfQotCi12b2lkIFdlYlBhZ2U6Om1vZGVs
RWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENv
bnRleHQmIGVsZW1lbnRDb250ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRl
eHRJZCkKLXsKLSAgICBhdXRvIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29u
dGV4dCk7Ci0gICAgaWYgKGlzPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KGVsZW1lbnQpKQot
ICAgICAgICBkb3duY2FzdDxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PigqZWxlbWVudCkuaW5s
aW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCh1dWlkLCBjb250ZXh0SWQpOwotfQotI2VuZGlm
Ci0KIHZvaWQgV2ViUGFnZTo6c2Nyb2xsVG9SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgb3JpZ2luKQogewogICAgIG1h
aW5GcmFtZVZpZXcoKS0+c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQodGFyZ2V0UmVjdC5taW5Y
TWluWUNvcm5lcigpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCwxMCArMjIwLDYgQEAgY2xh
c3MgU3Vic3RpdHV0ZURhdGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlz
aWJsZVBvc2l0aW9uOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotY2xhc3Mg
SFRNTE1vZGVsRWxlbWVudDsKLSNlbmRpZgotCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGlu
dDhfdDsKIGVudW0gY2xhc3MgQ09FUERpc3Bvc2l0aW9uIDogYm9vbDsKIGVudW0gY2xhc3MgQ3Jl
YXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgOiBib29sOwpAQCAtMTQ5NiwxMCArMTQ5Miw2IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFr
ZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1M
YXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKTsKLSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcm
LCB1aW50MzJfdCk7Ci0jZW5kaWYKIAogICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2Ny
aXB0RGlhbG9nKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtNjQ3LDggKzY0Nyw0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW4KICNlbmRpZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0
YXJnZXRSZWN0LCBXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgTW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNv
bnRleHRJZChzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQsIFN0
cmluZyB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDIxLTEx
LTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxh
dGZvcm0gc3BlY2lmaWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06
CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpn
cm91cE5hbWU6XSk6CisgICAgICAgICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdp
dGhTdHlsZTpmcmFtZTpwcmVmZXJlbmNlczpncm91cE5hbWU6XSk6CisKIDIwMjEtMTEtMDYgIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgZW1wdHkg
ZGlyZWN0b3JpZXMgZnJvbSBmcm9tIHN2bi53ZWJraXQub3JnIHJlcG9zaXRvcnkgYXMgb2YgcjI4
NTM1NwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
cmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNiArMTQ5LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4KKyNpbXBvcnQgPFdlYkNvcmUvRHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92
aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9FZGl0aW5nLmg+CkBAIC0xNTQzLDcgKzE1NDQsOCBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk6OmdldE9yQ3JlYXRlKFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZF0pLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpj
cmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92
aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3Zp
ZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQ
cm92aWRlcj4oKQogICAgICk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNv
bmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKQEAg
LTE4MjMsNyArMTgyNSw4IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6
KE4KICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJvdmlkZXI+
KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoW1tz
ZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAgIFdlYkNv
cmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlx
dWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlx
dWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsKICAgICBw
YWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNl
bGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0xMS0wOCAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3
Ojppbml0V2l0aEZyYW1lKToKKwogMjAyMS0xMS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IHJlbmFtZSBhY3Rpb25WZXJiKCkgYXMg
bG9jYWxpemVkQWN0aW9uVmVyYigpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJW
aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNw
cAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0NvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9E
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJv
dmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgpAQCAtMzA2NSw3ICszMDY2LDgg
QEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogICAgICAgICBtYWtl
VW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJvYWRjYXN0
Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShmYWxzZSksCiAgICAgICAgIFdlYkNvcmU6OkR1
bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVm
PFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8
V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsKICAgICBjb25maWd1
cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443693</attachid>
            <date>2021-11-09 08:56:33 -0800</date>
            <delta_ts>2021-11-09 16:24:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211109085632.patch</filename>
            <type>text/plain</type>
            <size>104370</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOCAgUGF0cmljayBHcmlmZmlzICA8cGdyaWZmaXNAaWdhbGlhLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgbm9uY2UtaGlkaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0i
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgogICAg
ICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQiCisgICAgIiR7V0VCQ09SRV9E
SVJ9L01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMv
bm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9wYXltZW50cmVxdWVz
dCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxMSBAQCBz
ZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9tZWRpYXN0
cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAogCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllci5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKKyAg
ICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCisgICAgTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAorICAgIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAogCiAgICAgTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCiAgICAgTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNsaWVudC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDc4
KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2
ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUgogTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3JtYWJsZUZyYW1l
LmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0cFRyYW5zcG9y
dEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAK
K01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBs
YXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKIE1vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIE1vZHVsZXMvYXBwbGVw
YXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXkKIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL2lvcy9D
bGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvbWFjL0Ns
aXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1J0cFNGcmFt
ZVRyYW5zZm9ybWVyQ29jb2EuY3BwCi1Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudENvY29hLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25pemVyQ29jb2Eu
bW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1
bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0hU
TUxNb2RlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJNb2RlbC5oIgorI2luY2x1ZGUgIk1vZGVsUGxh
eWVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJNb2RlbC5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC03MCwxMCArNzIsNiBAQCBIVE1MTW9kZWxFbGVt
ZW50Ojp+SFRNTE1vZGVsRWxlbWVudCgpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJlbW92ZUNsaWVu
dCgqdGhpcyk7CiAgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0KLQotI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgY2xlYXJGaWxlKCk7Ci0jZW5kaWYK
IH0KIAogUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBAIC0xMzEsMTcg
KzEyOSwxNiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChjb25zCiAgICAg
ICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX21vZGVsUGxheWVy
KQorICAgICAgICBtX21vZGVsUGxheWVyID0gbnVsbHB0cjsKKwogICAgIGlmICghbV9yZWFkeVBy
b21pc2UtPmlzRnVsZmlsbGVkKCkpCiAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5yZWplY3QoRXhj
ZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIG1fcmVhZHlQcm9taXNlID0gbWFrZVVuaXF1
ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVhZHlQcm9taXNl
UmVzb2x2ZSk7CiAKLSAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKSB7Ci0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgY2xlYXJGaWxlKCk7Ci0jZW5kaWYK
KyAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMuZGVzdGluYXRp
b24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpNb2RlbDsKQEAgLTE2OCwyNCArMTY1LDYg
QEAgSFRNTE1vZGVsRWxlbWVudCYgSFRNTE1vZGVsRWxlbWVudDo6cmVhZAogICAgIHJldHVybiAq
dGhpczsKIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLXN0YXRpYyBTdHJp
bmcmIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKLSAg
ICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci19Ci0KLXZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5n
JiBwYXRoKQotewotICAgIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkgPSBwYXRo
OwotfQotCi1jb25zdCBTdHJpbmcmIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKTsKLX0KLSNlbmRpZgotCiAvLyBNQVJLOiAtIERPTSBvdmVycmlkZXMuCiAKIHZvaWQgSFRN
TE1vZGVsRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50
LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCkBAIC0yMzYsMTMgKzIxNSw2NyBAQCB2b2lkIEhUTUxN
b2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhCiAKICAgICBtX3JlYWR5UHJvbWlzZS0+cmVz
b2x2ZSgqdGhpcyk7CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQogICAg
IG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKIH0KIAorLy8gTUFSSzogLSBNb2RlbFBsYXllciBz
dXBwb3J0CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQoreworICAg
IC8vIEZJWE1FOiBGb3IgdGhlIGVhcmx5IHJldHVybnMgaGVyZSwgd2Ugc2hvdWxkIHByb2JhYmx5
IGluZm9ybSB0aGUgcGFnZSB0aGF0IHRoYXQgdGhpbmdzIGhhdmUKKyAgICAvLyBmYWlsZWQgdG8g
cmVuZGVyPyBGb3IgdGhlIGNhc2Ugb2Ygbm8tcmVuZGVyZXIsIHdlIHNob3VsZCBwcm9iYWJseSBh
bHNvIGJ1aWxkIHRoZSBtb2RlbCB3aGVuL2lmCisgICAgLy8gYSByZW5kZXJlciBpcyBjcmVhdGVk
LgorCisgICAgYXV0byBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gTk9URTogRm9y
IG5vdywgY3JlYXRlTW9kZWxQbGF5ZXIgcmV0dXJuaW5nIG51bGxwdHIgbWVhbnMgdGhhdCB0aGUg
R3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01vZGVsKCkgcGF0aAorICAgIC8vIGlzIGJlaW5n
IHVzZWQsIGJ1dCB0aGF0IG5lZWRzIHRvIGJlIHBoYXNlZCBvdXQgdG8gYWxsb3cgYmlkaXJlY3Rp
b25hbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIG1vZGVsIHBsYXllcgorICAgIC8vIGFuZCB0
aGUgSFRNTE1vZGVsRWxlbWVudC4gT25jZSB0aGF0IGlzIHBoYXNlZCBvdXQsIGNyZWF0ZU1vZGVs
UGxheWVyKCkgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmV0dXJuIGEgUmVmPD4uCisgICAgbV9tb2Rl
bFBsYXllciA9IHBhZ2UtPm1vZGVsUGxheWVyUHJvdmlkZXIoKS5jcmVhdGVNb2RlbFBsYXllcigq
dGhpcyk7CisgICAgaWYgKCFtX21vZGVsUGxheWVyKQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBGSVhNRTogV2UgbmVlZCB0byB0ZWxsIHRoZSBwbGF5ZXIgaWYgdGhlIHNpemUgY2hhbmdlcyBh
cyB3ZWxsLCBzbyBwYXNzaW5nIHRoaXMKKyAgICAvLyBpbiB3aXRoIGxvYWQgcHJvYmFibHkgZG9l
c24ndCBtYWtlIHNlbnNlLgorICAgIGF1dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5k
aW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOworCisgICAgbV9tb2RlbFBsYXllci0+bG9hZCgqbV9t
b2RlbCwgc2l6ZSk7Cit9CisKK2Jvb2wgSFRNTE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5
ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGVsUGxheWVyICE9IG51bGxwdHI7Cit9CisK
K1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAor
eworICAgIHJldHVybiBtX21vZGVsUGxheWVyLT5sYXllcigpOworfQorCit2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OmRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImIG1vZGVsUGxheWVyKQorewor
ICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXllciA9PSBtX21vZGVsUGxh
eWVyKTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAg
ICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOworfQorCit2b2lkIEhUTUxNb2RlbEVs
ZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllciwgY29uc3QgUmVz
b3VyY2VFcnJvciYpCit7CisgICAgQVNTRVJUX1VOVVNFRChtb2RlbFBsYXllciwgJm1vZGVsUGxh
eWVyID09IG1fbW9kZWxQbGF5ZXIpOworfQorCisvLyBNQVJLOiAtIEZ1bGxzY3JlZW4gc3VwcG9y
dC4KKwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogeworLy8gRklY
TUU6IEFkZCBhIG5ldyBtZXRob2QgdG8gTW9kZWxQbGF5ZXIgZm9yIGVudGVyaW5nIGZ1bGxzY3Jl
ZW4gYW5kIG1vdmUgdGhpcyBpbnRvIHRoZSBpT1MgQVJLaXQgaW5saW5lIHByZXZpZXcgTW9kZWxQ
bGF5ZXIgaW1wbGVtZW50YXRpb24uCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lP
UykKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
SFRNTE1vZGVsRWxlbWVudC5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiwyMSArMzIsMTkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNpbmNsdWRlICJN
b2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
LU9CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1vZGVsOworY2xhc3MgTW9kZWxQbGF5ZXI7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CiAK
LWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1lbnQsIHByaXZh
dGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTE1vZGVsRWxlbWVudCBmaW5h
bCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCwg
cHVibGljIE1vZGVsUGxheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKEhU
TUxNb2RlbEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1vZGVsRWxlbWVu
dD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAtNTUsMjEgKzUz
LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZXNDaGFuZ2VkKCk7CiAgICAgY29uc3QgVVJM
JiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KIAorICAgIC8vIE1B
Uks6IERPTSBGdW5jdGlvbnMgYW5kIEF0dHJpYnV0ZXMKKwogICAgIHVzaW5nIFJlYWR5UHJvbWlz
ZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJmYWNlPEhUTUxN
b2RlbEVsZW1lbnQ+PjsKICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1cm4gbV9yZWFk
eVByb21pc2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1vZGVsRGF0YSgp
IGNvbnN0OwogICAgIFJlZlB0cjxNb2RlbD4gbW9kZWwoKSBjb25zdDsKIAotI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFVykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRN
b2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIGJvb2wg
dXNlc1BsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxh
eWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmxpbmVQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKTsKLSNl
bmRpZgogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKIApAQCAtNzksMTMgKzcyLDkgQEAg
cHJpdmF0ZToKICAgICBIVE1MTW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCYpOwogCiAgICAgdm9pZCBzZXRTb3VyY2VVUkwoY29uc3QgVVJMJik7Ci0gICAgSFRNTE1v
ZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwotCi0jaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIGNsZWFyRmlsZSgpOwotICAgIHZvaWQgY3JlYXRl
RmlsZSgpOwogICAgIHZvaWQgbW9kZWxEaWRDaGFuZ2UoKTsKLSNlbmRpZgorCisgICAgSFRNTE1v
ZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwogCiAgICAgLy8gRE9NIG92ZXJyaWRl
cy4KICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwg
RG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKQEAgLTk3LDYgKzg2LDEwIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1aW50OF90KiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5pc2hlZChDYWNo
ZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwogCisgICAgLy8g
TW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyhN
b2RlbFBsYXllciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9kZWxQbGF5ZXIm
LCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisKICAgICBVUkwgbV9zb3VyY2VVUkw7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVzb3VyY2U7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwpAQCAtMTA0LDEwICs5Nyw3IEBAIHByaXZh
dGU6CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7CiAgICAgYm9v
bCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQotICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFJldGFpblB0cjxBU1ZJbmxp
bmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7Ci0jZW5kaWYKKyAgICBSZWZQdHI8TW9kZWxQbGF5
ZXI+IG1fbW9kZWxQbGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudENvY29h
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9I
VE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJIVE1MTW9kZWxF
bGVtZW50LmgiCi0KLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1ZGUgIkNocm9t
ZUNsaWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5j
bHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0Lmgi
Ci0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2
aWV3U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVkZSA8d3RmL1VS
TC5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0KLVNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09S
SyhBc3NldFZpZXdlcik7Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVBy
ZXZpZXcpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
Y3JlYXRlRmlsZSgpCi17Ci0gICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBv
cmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAotICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCi0KLSAgICBjbGVhckZp
bGUoKTsKLQotICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxl
U3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7Ci0gICAgaWYgKGRpcmVjdG9yeUV4
aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVj
dG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoIWRpcmVj
dG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVj
dG9yeSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2Vs
bCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KLSAgICBh
dXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25p
Y2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7Ci0gICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsK
LSAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPD0gMCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRhLT5kYXRhKCks
IG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Ci0gICAg
bV9maWxlUGF0aCA9IGZpbGVQYXRoOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmNsZWFy
RmlsZSgpCi17Ci0gICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwotICAgIG1fZmlsZVBh
dGggPSBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlk
Q2hhbmdlKCkKLXsKLSAgICBjcmVhdGVGaWxlKCk7Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKS5z
aXplKCk7Ci0KLSAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVBy
ZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpXSk7Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxNb2RlbEVs
ZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQg
c2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmlu
ZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLQotICAgIGlm
IChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2UtPmNocm9tZSgp
LmNsaWVudCgpLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVSTDo6ZmlsZVVS
TFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5V
VUlEU3RyaW5nLCBzaXplKTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjppbmxpbmVQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4
dElkKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1vZGVsRWxlbWVudEVuYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHV1aWQgIT0gKFN0cmluZylbbV9pbmxp
bmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpIHsKLSAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlE
IG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4KCkuZGF0
YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW21faW5saW5lUHJldmlldyBz
ZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJZF07Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhUTUxN
b2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNjZXNzZnVs
bHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVpZC51dGY4
KCkuZGF0YSgpKTsKLQotICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotfQotCi1QbGF0Zm9ybUxh
eWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Ci19Ci0KLX0KLQotI2VuZGlmIC8vIEVOQUJMRShN
T0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQpJbmRleDog
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5
ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVsUGxheWVyOjp+TW9kZWxQbGF5ZXIoKSA9IGRl
ZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9N
b2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxheW91dFNp
emUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbDsKKworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgTW9kZWxQbGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbFBsYXllcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JU
IHZpcnR1YWwgfk1vZGVsUGxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYs
IExheW91dFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgPSAw
OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK01vZGVsUGxheWVyQ2xpZW50Ojp+TW9kZWxQbGF5ZXJDbGllbnQoKSA9IGRlZmF1
bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2Rl
bFBsYXllckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIFJlc291cmNlRXJyb3I7
CisKK2NsYXNzIE1vZGVsUGxheWVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPE1vZGVs
UGxheWVyQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXJDbGllbnQo
KTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9N
b2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJv
dmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllclByb3ZpZGVyOjp+
TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92
aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIE1vZGVs
UGxheWVyQ2xpZW50OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2RlbFBsYXllclByb3ZpZGVy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5N
b2RlbFBsYXllclByb3ZpZGVyKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBhbGwgY2xpZW50cyBo
YXZlIGFkb3B0ZWQgTW9kZWxQbGF5ZXJQcm92aWRlciwgdGhpcyBzaG91bGQKKyAgICAvLyBiZSBj
aGFuZ2VkIHRvIHJldHVybiBhIFJlZjxNb2RlbFBsYXllcj4KKyAgICB2aXJ0dWFsIFJlZlB0cjxN
b2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKSA9IDA7Cit9
OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworI2lu
Y2x1ZGUgIk1vZGVsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JlZjxEdW1teU1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxheWVyOjpjcmVh
dGUoTW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEdW1teU1vZGVsUGxheWVyKGNsaWVudCkpOworfQorCitEdW1teU1vZGVsUGxheWVyOjpEdW1t
eU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX2NsaWVudCB7
IGNsaWVudCB9Cit7Cit9CisKK0R1bW15TW9kZWxQbGF5ZXI6On5EdW1teU1vZGVsUGxheWVyKCkg
PSBkZWZhdWx0OworCit2b2lkIER1bW15TW9kZWxQbGF5ZXI6OmxvYWQoTW9kZWwmIG1vZGVsLCBM
YXlvdXRTaXplKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPmRpZEZh
aWxMb2FkaW5nKCp0aGlzLCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJLaXRJbnRlcm5h
bCwgMCwgbW9kZWwudXJsKCksICJUcnlpbmcgdG8gbG9hZCBtb2RlbCB2aWEgRHVtbXlNb2RlbFBs
YXllciJfcyB9KTsKK30KKworUGxhdGZvcm1MYXllciogRHVtbXlNb2RlbFBsYXllcjo6bGF5ZXIo
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXll
ci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXIgZmluYWwgOiBwdWJsaWMgTW9k
ZWxQbGF5ZXIgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8RHVtbXlN
b2RlbFBsYXllcj4gY3JlYXRlKE1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgV0VCQ09SRV9FWFBP
UlQgdmlydHVhbCB+RHVtbXlNb2RlbFBsYXllcigpOworCitwcml2YXRlOgorICAgIER1bW15TW9k
ZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQmKTsKKworICAgIC8vIE1vZGVsUGxheWVyIG92ZXJy
aWRlcy4KKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYsIExheW91dFNpemUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKworICAgIFdl
YWtQdHI8TW9kZWxQbGF5ZXJDbGllbnQ+IG1fY2xpZW50OworfTsKKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5
ZXJQcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuaCIKKworI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRl
cigpID0gZGVmYXVsdDsKK0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6fkR1bW15TW9kZWxQbGF5
ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworUmVmUHRyPE1vZGVsUGxheWVyPiBEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGll
bnQpCit7CisgICAgcmV0dXJuIER1bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShjbGllbnQpOworfQor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3Zp
ZGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyIGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyUHJvdmlkZXIg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigp
OworCitwcml2YXRlOgorICAgIC8vIE1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorICAg
IHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXll
ckNsaWVudCYpIG92ZXJyaWRlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NDc4KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC00MDY4LDYgKzQwNjgsMTEgQEAKIAkJQkMyM0VFOTIwREFFRDJCQzAwOUZEQzkx
IC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBEQTBEQUZG
NEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYgLyogQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlLmggKi87IH07CisJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAvKiBNb2RlbFBs
YXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
QjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkx
IC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclBy
b3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJQkMyQjQxMTkyNzMyRjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEwRTI3MzJFRkU0
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEyNTI3MzM2MDA1MDBBMkQxOTEgLyogRHVt
bXlNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEzMTI3
MzRBMDg2MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEyMDI3MzM1Q0I5MDBBMkQx
OTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyQ0JGNEUxNDBGMUFCRDAwMzg3OUJFIC8qIEpT
V2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDMkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50
LmggKi87IH07CiAJCUJDMkNDQTEwMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9y
U3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
MkNDQTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzMwNUM3QTBDMDc2
QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYwIC8qIEpT
SFRNTE9iamVjdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNzk5LDcgKzEwODA0LDYgQEAKIAkJNzFD
MjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENTU0FuaW1hdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxQ0FBM0Q5MjY4RDBCRjkw
MEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcxQ0UyQzUxMjIwOURDN0YwMEM0OTRCRCAvKiBNb3VzZUV2ZW50SU9TLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlRXZlbnRJT1MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MDFEQjU1QzRFMDBERDVDRjUgLyogbWFpbi5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1haW4uanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRDAyRDkyMURCNTVDNEUwMERENUNGNSAvKiBtZWRpYS1j
b250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gIm1l
ZGlhLWNvbnRyb2xsZXIuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ3MzUs
NiArMTQ3MzksMTYgQEAKIAkJQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0JvcmRlcklt
YWdlU2xpY2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNzRC
MzAxNDBFQkVEODAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI5OTM1QzE3QTFERDU4MDBCQ0U4
ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzJCNDEwRTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTW9kZWxQbGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMTIyNzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkMyQjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNb2RlbFBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0
MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMTYyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVy
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIxMjczMzVDQjkwMEEyRDE5MSAvKiBE
dW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQx
MjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RHVtbXlNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEy
NDI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEdW1teU1vZGVsUGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyogSlNXZWJH
TENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
U1dlYkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
Q0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTIzNzUwLDEwICsyMzc2NCwxNiBAQAogCQk3MUY4NDlDQzI1NjVBQjdFMDA4QzM3RjIg
LyogbW9kZWwtZWxlbWVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQkMyQjQxMjIyNzMzNUUwQzAwQTJEMTkxIC8qIGR1bW15ICovLAogCQkJCTcxQTNE
MTgwMjU2MkI4MjUwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJCQk3MUEz
RDE3RDI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJCTcxQTNE
MTdGMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKLQkJCQk3MUNB
QTNEOTI2OEQwQkY5MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICovLAorCQkJ
CUJDMkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8sCisJCQkJQkMy
QjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMTIy
NzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLywKKwkJCQlCQzJCNDEw
RTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLywKKwkJCQlCQzJCNDEx
NjI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMy
QjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gIm1vZGVsLWVsZW1lbnQiOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTI4MzMyLDYgKzI4MzUyLDE3IEBACiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwogCQl9OworCQlCQzJCNDEyMjI3MzM1RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTI0Mjcz
MzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDEyMzI3
MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0MTIxMjcz
MzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJD
MkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywK
KwkJCSk7CisJCQlwYXRoID0gZHVtbXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OwogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMzMjAxLDYgKzMzMjMyLDggQEAKIAkJCQk4
MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVhbHNob2NrM0hJREdh
bWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5MSAvKiBE
dW1teU1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDEzMTI3MzRBMDg2MDBB
MkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NURGODI2RTgyMkM3MDAwRUM2QTcgLyogRHVtbXlT
dG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJEODYwMEMy
MDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLApAQCAtMzUx
MTEsNiArMzUxNDQsOSBAQAogCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBNb2NrVHJh
Y2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIgLyogTW9j
a1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRD
OEQzOTgyNUYyRkU5NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJC
NDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUJDMkI0MTE5MjczMkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZFMUUzRDBC
REQwMDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzIwMUMxQTFGOEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RnJh
Z21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRyYWdDbGll
bnQuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJE
dW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0b3JhZ2VQ
cm92aWRlci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgpAQCAtNTg4LDEyICs1ODksNiBA
QCB2b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50CiB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIEVtcHR5Q2hyb21lQ2xp
ZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1l
bnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUm
KSBjb25zdAotewotfQotI2VuZGlmCi0KIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlv
biYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYsIFBv
bGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQpAQCAtMTE5
OCw3ICsxMTkzLDggQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25XaXRoRQog
ICAgICAgICBtYWtlVW5pcXVlUmVmPEVtcHR5TWVkaWFSZWNvcmRlclByb3ZpZGVyPigpLAogICAg
ICAgICBFbXB0eUJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAgICAgIER1
bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVm
PER1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyPigpCiAgICAgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUNocm9t
ZUNsaWVudD4gZHVtbXlDaHJvbWVDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1w
dHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMiwxMCArMjIyLDYgQEAgY2xhc3MgRW1w
dHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQwogI2VuZGlmCiAKICAgICBSZWZQdHI8SWNv
bj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMg
Ki8pIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogfTsKIAogRGlhZ25vc3Rp
Y0xvZ2dpbmdDbGllbnQmIGVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDkgKzYwOCw2
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZp
cnR1YWwgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xh
eWVyOjpQbGF0Zm9ybUxheWVySUQpIGNvbnN0IHsgfQogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2aXJ0dWFsIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgeyB9OwotI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBcHBs
ZVBheUFNU1VJU2Vzc2lvbihjb25zdCBVUkwmLCBjb25zdCBBcHBsZVBheUFNU1VJUmVxdWVzdCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOyB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRlICJMb3dQ
b3dlck1vZGVOb3RpZmllci5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVy
UHJvdmlkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYWdlQ29sb3JT
YW1wbGVyLmgiCiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTMzNyw2ICszMzgs
NyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX3Bl
cm1pc3Npb25Db250cm9sbGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVybWlzc2lvbkNv
bnRyb2xsZXIpKQogICAgICwgbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZShXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uLnJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKSkKICAgICAsIG1fc3RvcmFnZVBy
b3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVByb3ZpZGVyKSkKKyAgICAs
IG1fbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLm1vZGVsUGxh
eWVyUHJvdmlkZXIpKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKQEAg
LTM3OTUsNCArMzc5Nyw5IEBAIFN0b3JhZ2VDb25uZWN0aW9uJiBQYWdlOjpzdG9yYWdlQ29ubmVj
dGkKICAgICByZXR1cm4gbV9zdG9yYWdlUHJvdmlkZXItPnN0b3JhZ2VDb25uZWN0aW9uKCk7CiB9
CiAKK01vZGVsUGxheWVyUHJvdmlkZXImIFBhZ2U6Om1vZGVsUGxheWVyUHJvdmlkZXIoKQorewor
ICAgIHJldHVybiBtX21vZGVsUGxheWVyUHJvdmlkZXIuZ2V0KCk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVNlc3Npb25Db29yZGlu
YXRvclByaXZhdGU7CitjbGFzcyBNb2RlbFBsYXllclByb3ZpZGVyOwogY2xhc3MgUGFnZUNvbmZp
Z3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1Z2dhYmxl
OwpAQCAtOTA0LDYgKzkwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQZXJtaXNz
aW9uQ29udHJvbGxlciYgcGVybWlzc2lvbkNvbnRyb2xsZXIoKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBTdG9yYWdlQ29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIE1vZGVsUGxh
eWVyUHJvdmlkZXImIG1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKwogcHJpdmF0ZToKICAgICBzdHJ1
Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsKQEAgLTEy
NDAsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiBt
X3Blcm1pc3Npb25Db250cm9sbGVyOwogICAgIFJlZlB0cjxSZXBvcnRpbmdFbmRwb2ludHNDYWNo
ZT4gbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKICAgICBVbmlxdWVSZWY8U3RvcmFnZVByb3Zp
ZGVyPiBtX3N0b3JhZ2VQcm92aWRlcjsKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRl
cj4gbV9tb2RlbFBsYXllclByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZU0lTKQog
ICAgIHVzaW5nIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxUZXh0UmVj
b2duaXRpb25SZXN1bHQsIEludFJlY3Q+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
Q29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJMaWJXZWJSVENQcm92
aWRlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1v
ZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
aCIKICNpbmNsdWRlICJQZXJtaXNzaW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBsdWdpbklu
Zm9Qcm92aWRlci5oIgpAQCAtNjIsNyArNjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8U29ja2V0
UHJvdmlkZXI+JiYgc29ja2V0UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4m
JiBsaWJXZWJSVENQcm92aWRlciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNhY2hlU3Rv
cmFnZVByb3ZpZGVyLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVudFByb3Zp
ZGVyLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJlZjxDb29r
aWVKYXI+JiYgY29va2llSmFyLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmIHBy
b2dyZXNzVHJhY2tlckNsaWVudCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmIGxvYWRl
ckNsaWVudEZvck1haW5GcmFtZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI+
JiYgc3BlZWNoUmVjb2duaXRpb25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92
aWRlcj4mJiBtZWRpYVJlY29yZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVsUmVnaXN0
cnk+JiYgYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+
JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYgc3Rv
cmFnZVByb3ZpZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGll
bnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldl
YlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlk
ZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVz
ZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBiYWNrRm9yd2FyZENs
aWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJD
bGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLCBVbmlxdWVSZWY8TWVk
aWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRlciwgUmVmPEJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0cnksIFJlZjxQZXJtaXNz
aW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJvbGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQ
cm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIsIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVy
PiYmIG1vZGVsUGxheWVyUHJvdmlkZXIpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICwgZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tldFByb3Zp
ZGVyKFdURk1vdmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtNzgsNiArNzksNyBAQCBQYWdlQ29uZmln
dXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBtZWRpYVJlY29yZGVyUHJvdmlk
ZXIoV1RGTW92ZShtZWRpYVJlY29yZGVyUHJvdmlkZXIpKQogICAgICwgcGVybWlzc2lvbkNvbnRy
b2xsZXIoV1RGTW92ZShwZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBzdG9yYWdlUHJvdmlk
ZXIoV1RGTW92ZShzdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbW9kZWxQbGF5ZXJQcm92aWRlcihX
VEZNb3ZlKG1vZGVsUGxheWVyUHJvdmlkZXIpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDkgKzQ2
LDkgQEAgY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgQmFja0Zv
cndhcmRDbGllbnQ7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFzcyBDYWNo
ZVN0b3JhZ2VQcm92aWRlcjsKLWNsYXNzIENvb2tpZUphcjsKIGNsYXNzIENocm9tZUNsaWVudDsK
IGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgQ29va2llSmFyOwogY2xhc3MgRGF0YWJh
c2VQcm92aWRlcjsKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogY2xhc3MgRHJhZ0Ns
aWVudDsKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsKIGNsYXNzIE1lZGlhUmVj
b3JkZXJQcm92aWRlcjsKK2NsYXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYXltZW50
Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7CiBjbGFz
cyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgUHJvZ3Jlc3NU
cmFja2VyQ2xpZW50OwogY2xhc3MgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU7CiBjbGFzcyBTb2Nr
ZXRQcm92aWRlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI7CitjbGFzcyBTcGVl
Y2hTeW50aGVzaXNDbGllbnQ7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7CiBjbGFz
cyBTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwpAQCAtNzIsMTIg
Kzc0LDExIEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZhbGlkYXRpb25N
ZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkdMU3RhdGVU
cmFja2VyOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogCiBjbGFzcyBQYWdlQ29uZmln
dXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdl
Q29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiwg
UmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJl
ZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYsIFJl
ZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVmPFByb2dy
ZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlx
dWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVmPFBlcm1p
c3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVm
PEVkaXRvckNsaWVudD4mJiwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2Vi
UlRDUHJvdmlkZXI+JiYsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250
ZW50UHJvdmlkZXI+JiYsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4m
JiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9h
ZGVyQ2xpZW50PiYmLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5p
cXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdp
c3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVBy
b3ZpZGVyPiYmLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRpb24oUGFn
ZUNvbmZpZ3VyYXRpb24mJik7CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBwdWJsaWM6CiAKICAgICBS
ZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IHBlcm1pc3Npb25Db250cm9sbGVyOwogICAgIFVuaXF1
ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKKworICAgIFVuaXF1ZVJlZjxN
b2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOwogfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAkocmV2aXNpb24gMjg1
NDc4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiTW9kZWwuaCIKIAotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw1ICs1Niwz
IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKIH0KIAogfQotCi0j
ZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL01vZGVsLmgJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDggKzI1LDYg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLQogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgpAQCAtMTAxLDUgKzk5LDMgQEAgUmVmUHRyPE1vZGVsPiBNb2RlbDo6ZGVj
b2RlKERlY29kZXImIGRlYwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlzaW9uIDI4
NTQ3OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDEzICsxMDk3LDEzIEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjp1cGRhdGVDb25maWd1cmEKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKICAgICBl
bHNlIGlmIChpczxSZW5kZXJNb2RlbD4ocmVuZGVyZXIoKSkpIHsKICAgICAgICAgYXV0byBlbGVt
ZW50ID0gZG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50KCkpOwot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGlmIChhdXRvKiBw
bGF0Zm9ybUxheWVyID0gZWxlbWVudC0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxheWVyLCBH
cmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6TW9kZWwpOwotI2Vsc2UKLSAgICAg
ICAgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50LT5tb2RlbCgpKQorCisgICAgICAgIC8vIFNvbWUg
TW9kZWxQbGF5ZXJzIHVzZSBhIHBsYXRmb3JtTGF5ZXIoKSBhbmQgc29tZSBwYXNzIHRoZSBNb2Rl
bCB0byB0aGUgbGF5ZXIgYXMgY29udGVudHMsCisgICAgICAgIC8vIGJ1dCB0aGlzIGlzIGEgcnVu
dGltZSBkZWNpc2lvbi4KKyAgICAgICAgaWYgKGVsZW1lbnQtPnVzZXNQbGF0Zm9ybUxheWVyKCkp
IHsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRmb3JtTGF5
ZXIoZWxlbWVudC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVy
UHVycG9zZTo6TW9kZWwpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50
LT5tb2RlbCgpKQogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvTW9k
ZWwoV1RGTW92ZShtb2RlbCkpOwotI2VuZGlmCiAKICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2Vk
ID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0x
MS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBs
YXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAg
ICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxF
bGVtZW50Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1lbnRD
b250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVs
RWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOiBEZWxldGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWw6IEFkZGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBB
ZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYzogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaDogQWRk
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OnNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGly
ZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgor
ICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRS
ZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0c1Zpc2li
bGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisK
IDIwMjEtMTEtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byB0b2dnbGUgc2V2ZXJhbCBleHBlcmltZW50YWwgbWVk
aWEgZmVhdHVyZXMgd2hlbiBHUFUgUHJvY2VzcyBpcyBlbmFibGVkCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsNyBAQCBzZXQoV2ViS2l0X0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL0xhdW5jaGluZyIKICAgICAi
JHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL01lZGlhQ2FjaGUiCiAgICAgIiR7V0VCS0lUX0RJUn0v
V2ViUHJvY2Vzcy9NZWRpYVN0cmVhbSIKKyAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL01v
ZGVsIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTmV0d29yayIKICAgICAiJHtXRUJL
SVRfRElSfS9XZWJQcm9jZXNzL05ldHdvcmsvd2VicnRjIgogICAgICIke1dFQktJVF9ESVJ9L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucyIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkocmV2aXNpb24gMjg1NDc4
KQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTkyLDYg
KzU5Miw4IEBAIFdlYlByb2Nlc3MvTWVkaWFTZXNzaW9uL1JlbW90ZU1lZGlhU2Vzc2kKIFdlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vTWVkaWFEZXZpY2VTYW5kYm94RXh0ZW5zaW9ucy5jcHAKIFdlYlBy
b2Nlc3MvTWVkaWFTdHJlYW0vVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAog
CitXZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCisKIFdlYlByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NDb25uZWN0aW9uLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
RGlzcGxheUxpc3RXcml0ZXJIYW5kbGUuY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFn
ZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTY1NSw2ICs2NTUsOCBAQCBXZWJQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV2ViSW5zcGVjdG9yVUlNCiAKIFdlYlByb2Nlc3MvTWVkaWFDYWNoZS9XZWJNZWRpYUtleVN0
b3JhZ2VNYW5hZ2VyLmNwcAogCitXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5tbQorCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQog
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW5Bbm5vdGF0aW9uLm1tCiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL1BERlBsdWdpbkNob2ljZUFubm90YXRpb24ubW0KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgJKHJldmlzaW9u
IDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0
YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9y
bUxheWVySUQgY29udGVudExheWVySWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0
ZVByZXZpZXcoVVJMLCBTdHJpbmcsIFdlYkNvcmU6OkZsb2F0U2l6ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJl
c291cmNlRXJyb3I+KT4mJik7CiAjZW5kaWYKIAogcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4
MDUsMTUgKzEwODA1LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VNb2RlbEVsZW1lbnRGdWxs
cwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotdm9pZCBX
ZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6
RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1
aWQsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1l
bnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6
OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBtb2RlbEVsZW1lbnRDb250cm9sbGVyKCktPm1vZGVsRWxl
bWVudERpZENyZWF0ZVByZXZpZXcoY29udGV4dCwgdXJsLCB1dWlkLCBzaXplKTsKLX0KLQotdm9p
ZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXVpZCwg
dWludDMyX3QgY29udGV4dElkKQotewotICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWlu
Q29udGV4dElkKGNvbnRleHQsIHV1aWQsIGNvbnRleHRJZCkpOworICAgIG1vZGVsRWxlbWVudENv
bnRyb2xsZXIoKS0+bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyh1cmwsIHV1aWQsIHNpemUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5MCw4
ICs1OTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihX
ZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIG1v
ZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKTsK
LSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmLCB1aW50MzJfdCk7CisgICAgdm9p
ZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0
ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+
JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlz
aW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNTg3LDcgKzU4Nyw3IEBAIG1lc3NhZ2VzIC0+IFdl
YlBhZ2VQcm94eSB7CiAgICAgVGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGVudExheWVySUQpCiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQotICAgIE1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoc3RydWN0IFdlYkNvcmU6OkVsZW1l
bnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBVUkwgdXJsLCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6
RmxvYXRTaXplIHNpemUpCisgICAgTW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhVUkwgdXJs
LCBTdHJpbmcgdXVpZCwgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUpIC0+IChFeHBlY3RlZDxzdGQ6
OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+IHJlc3VsdCkg
QXN5bmMKICNlbmRpZgogCiAgICAgcmVxdWVzdFBlcm1pc3Npb24oc3RydWN0IFdlYkNvcmU6OkNs
aWVudE9yaWdpbiBvcmlnaW4sIHN0cnVjdCBXZWJDb3JlOjpQZXJtaXNzaW9uRGVzY3JpcHRvciBk
ZXNjcmlwdG9yKSAtPiAoZW51bTp1aW50OF90IFdlYkNvcmU6OlBlcm1pc3Npb25TdGF0ZSBzdGF0
ZSkgQXN5bmMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVu
dENvbnRyb2xsZXJDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVyQ29jb2EubW0JKHJldmlzaW9uIDI4NTQ3OCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW1wb3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1QcmV2aWV3U1BJLmg+CiAjaW1w
b3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2VuZGlmCkBAIC0xMjQsMTAgKzEyNSwxMiBAQCB2b2lk
IE1vZGVsRWxlbWVudENvbnRyb2xsZXI6OnRha2VNb2RlbEVsCiAKICNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQogCi12b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVs
RWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGNv
bnRleHQsIGNvbnN0IFVSTCYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUpCit2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1vZGVs
RWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMIGZpbGVVUkwsIFN0cmluZyB1dWlkLCBXZWJDb3Jl
OjpGbG9hdFNpemUgc2l6ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBh
aXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoIW1fd2ViUGFnZVByb3h5LnByZWZlcmVuY2VzKCkubW9k
ZWxFbGVtZW50RW5hYmxlZCgpKQorICAgIGlmICghbV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMo
KS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFr
ZVVuZXhwZWN0ZWQoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgIk1vZGVsIGVsZW1lbnQgZGlzYWJsZWQiX3MgfSkpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgYXV0byBuc1VVSUQgPSBhZG9wdE5TKFtbTlNV
VUlEIGFsbG9jXSBpbml0V2l0aFVVSURTdHJpbmc6dXVpZF0pOwogICAgIGF1dG8gcHJldmlldyA9
IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSkgVVVJRDpuc1VVSUQu
Z2V0KCldKTsKQEAgLTE0MCwzMiArMTQzLDQ5IEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxl
cjo6bW9kZWxFbGVtZW4KICAgICBlbHNlCiAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZSA9IHByZXZp
ZXc7CiAKKyAgICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgbm90IGp1c3QgdXNpbmcgbm9ybWFsIFVS
TCAtPiBOU1VSTCBjb252ZXJzaW9uPworICAgIGF1dG8gdXJsID0gYWRvcHROUyhbW05TVVJMIGFs
bG9jXSBpbml0RmlsZVVSTFdpdGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV0pOworCiAg
ICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICBXZWFrUHRyIHdlYWtUaGlz
IHsgKnRoaXMgfTsKLSAgICBhdXRvIGVsZW1lbnRDb250ZXh0Q29weSA9IGNvbnRleHQ7Ci0gICAg
YXV0byB1dWlkQ29weSA9IHV1aWQ7Ci0gICAgTlNVUkwgKnVybCA9IFtOU1VSTCBmaWxlVVJMV2l0
aFBhdGg6ZmlsZVVSTC5maWxlU3lzdGVtUGF0aCgpXTsKLSAgICBbcHJldmlldyBzZXR1cFJlbW90
ZUNvbm5lY3Rpb25XaXRoQ29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9yICogX051bGxhYmxlIGNv
bnRleHRFcnJvcikgeworICAgIFtwcmV2aWV3IHNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21w
bGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH0s
IHByZXZpZXcsIHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChOU0Vycm9yICogX051
bGxhYmxlIGNvbnRleHRFcnJvcikgbXV0YWJsZSB7CiAgICAgICAgIGlmIChjb250ZXh0RXJyb3Ip
IHsKLSAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gY3JlYXRlIHJlbW90
ZSBjb25uZWN0aW9uIGZvciB1dWlkICVzOiAlQC4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpLCBb
Y29udGV4dEVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgICAgICBMT0coTW9k
ZWxFbGVtZW50LCAiVW5hYmxlIHRvIGNyZWF0ZSByZW1vdGUgY29ubmVjdGlvbiBmb3IgdXVpZCAl
czogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBjb250ZXh0RXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24pOworCisgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgY29udGV4dEVycm9yIH1dICgp
IG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VV
bmV4cGVjdGVkKGVycm9yKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJFc3RhYmxpc2hlZCByZW1v
dGUgY29ubmVjdGlvbiB3aXRoIFVVSUQgJXMuIiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJFc3RhYmxpc2hlZCByZW1vdGUgY29ubmVjdGlvbiB3
aXRoIFVVSUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICBbcHJldmlldyBw
cmVwYXJlUHJldmlld09mRmlsZUF0VVJMOnVybCBjb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3Ig
KiBfTnVsbGFibGUgbG9hZEVycm9yKSB7CisgICAgICAgIFtwcmV2aWV3IHByZXBhcmVQcmV2aWV3
T2ZGaWxlQXRVUkw6dXJsLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vh
a1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgcHJldmlldywgdXVpZCA9IFdURk1vdmUodXVpZCks
IHVybCA9IFdURk1vdmUodXJsKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKE5TRXJyb3IgKiBfTnVsbGFibGUgbG9hZEVycm9yKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmIChsb2FkRXJyb3IpIHsKLSAgICAgICAgICAgICAgICBMT0coTW9kZWxFbGVt
ZW50LCAiVW5hYmxlIHRvIGxvYWQgZmlsZSBmb3IgdXVpZCAlczogJUAuIiwgdXVpZENvcHkudXRm
OCgpLmRhdGEoKSwgW2xvYWRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAgICAgICAg
ICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gbG9hZCBmaWxlIGZvciB1dWlkICVz
OiAlQC4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksIGxvYWRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlv
bik7CisKKyAgICAgICAgICAgICAgICBjYWxsT25NYWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZN
b3ZlKHdlYWtUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgZXJyb3IgPSBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgbG9hZEVycm9yIH1dICgpIG11
dGFibGUgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKG1ha2VVbmV4cGVjdGVkKGVycm9yKSk7CisgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBMT0coTW9kZWxF
bGVtZW50LCAiTG9hZGVkIGZpbGUgd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJ
RCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAgICAgICBjYWxsT25NYWluUnVu
TG9vcChbd2Vha1RoaXMsIGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRleHRJZCA9
IFtwcmV2aWV3IGNvbnRleHRJZF1dKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgd2Vha1Ro
aXMtPm1fd2ViUGFnZVByb3h5Lm1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
ZWxlbWVudENvbnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4dElkKTsKKyAgICAgICAgICAgIGF1
dG8gY29udGV4dElkID0gW3ByZXZpZXcgY29udGV4dElkXTsKKyAgICAgICAgICAgIGNhbGxPbk1h
aW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB1dWlkID0gV1RGTW92ZSh1
dWlkKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29u
dGV4dElkXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihzdGQ6Om1ha2VfcGFpcih1dWlkLCBjb250ZXh0SWQpKTsKICAgICAgICAgICAgIH0pOwot
ICAgICAgICB9XTsKLSAgICB9XTsKKyAgICAgICAgfSkuZ2V0KCldOworICAgIH0pLmdldCgpXTsK
IH0KIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyMjIsNiArNTIy
MiwxMCBAQAogCQlCQzIwNTI4MDExQzk0Mjg0MDA4RjMzNzUgLyogV0tCdW5kbGVQYWdlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLQnVuZGxlUGFnZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1MjEyMTE4MjYwODEwMDI0M0UxMiAvKiBE
cmF3aW5nQXJlYVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERyYXdpbmdBcmVhUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2
NTIxMzExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTBDMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUktpdElubGluZVByZXZpZXdNb2RlbFBs
YXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEwRDI3MzJFRjk2MDBB
MkQxOTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUEyNzMyRjY2RTAwQTJEMTkxIC8qIFdlYk1vZGVsUGxheWVy
UHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExQjI3MzJGNjZFMDBBMkQxOTEgLyogV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNb2RlbFBsYXll
clByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRDAyMTYxMkFD
NDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQwMjE4MTJBQzQyNkMwMEU3MzJBMyAvKiBXS1Bh
Z2VMb2FkVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQYWdlTG9h
ZFR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA2NUY5MTI1OTM0NEUw
MEU3MTI3OCAvKiBDYWNoZU1vZGVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENhY2hlTW9kZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk3ODAsNiArOTc4
NCw3IEBACiAJCQkJMzNEM0EzQkQxMzM5NjA5ODAwNzA5QkU0IC8qIE1lZGlhQ2FjaGUgKi8sCiAJ
CQkJMDczNkI3NTIyNjBEMDM5RjAwRTA2OTk0IC8qIE1lZGlhU2Vzc2lvbiAqLywKIAkJCQk0QTQx
MEY0MTE5QUY3QjI3MDAyRUJBQjUgLyogTWVkaWFTdHJlYW0gKi8sCisJCQkJQkMyQjQxMEEyNzMy
RUY2NTAwQTJEMTkxIC8qIE1vZGVsICovLAogCQkJCTUxMDVCMEQyMTYyRjdBNUUwMEUyNzcwOSAv
KiBOZXR3b3JrICovLAogCQkJCTMxMDk5OTc0MTQ2QzhBQTgwMDI5REVCOSAvKiBOb3RpZmljYXRp
b25zIChVc2VyKSAqLywKIAkJCQkxQTZGQjdBQTExRTY0QjQ5MDBEQjEzNzEgLyogUGx1Z2lucyAq
LywKQEAgLTEwNjA5LDYgKzEwNjE0LDI1IEBACiAJCQlwYXRoID0gYzsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CiAJCX07CisJCUJDMkI0MTBBMjczMkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMEIy
NzMyRUY3NTAwQTJEMTkxIC8qIG1hYyAqLywKKwkJCQlCQzJCNDExQjI3MzJGNjZFMDBBMkQxOTEg
LyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMUEyNzMyRjY2RTAw
QTJEMTkxIC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
TW9kZWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlCQzJCNDEwQjI3MzJF
Rjc1MDBBMkQxOTEgLyogbWFjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJbmxpbmVQcmV2aWV3
TW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDEwRDI3MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IG1hYzsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDMkU2RTc0MTE0MTk2RjAwMEE2M0Ix
RSAvKiBQbGF0Zm9ybSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAy
ODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NCw4ICsxNDQsOCBAQAogI2luY2x1ZGUgPHd0Zi9VUkxQYXJzZXIuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5M
SU5FX1BSRVZJRVcpCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MTW9kZWxFbGVtZW50Lmg+CisjaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbmNsdWRlICJBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllci5oIgogI2VuZGlmCiAKICNpZiAhT1MoV0lORE9XUykKQEAgLTU3Niw5
ICs1NzYsOSBAQCB2b2lkIFdlYlByb2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhCiAgICAg
ICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhQ2FjaGVEaXJlY3RvcnkocGFy
YW1ldGVycy5tZWRpYUNhY2hlRGlyZWN0b3J5KTsKICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXKQorI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAg
ICAgaWYgKCFwYXJhbWV0ZXJzLm1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5LmlzRW1wdHkoKSkK
LSAgICAgICAgV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk7CisgICAgICAg
IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeShwYXJhbWV0ZXJzLm1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KTsKICNlbmRpZgogCiAg
ICAgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRW5hYmxlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3Zp
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKKwor
I2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQbGF5ZXIuaD4KKworI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCisjaW5jbHVkZSAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIu
aCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViTW9kZWxQbGF5ZXJQcm92aWRl
cjo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcihXZWJQYWdlJiBwYWdlKQorICAgIDogbV9wYWdlIHsg
cGFnZSB9Cit7CisgICAgVU5VU0VEX1BBUkFNKG1fcGFnZSk7Cit9CisKK1dlYk1vZGVsUGxheWVy
UHJvdmlkZXI6On5XZWJNb2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCisvLyBNQVJL
OiAtIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgorCitSZWZQdHI8V2Vi
Q29yZTo6TW9kZWxQbGF5ZXI+IFdlYk1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxh
eWVyKFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisjaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKKyAgICByZXR1cm4gQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmNyZWF0ZShtX3BhZ2UsIGNsaWVudCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShjbGllbnQpOworICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCit9CisKK30KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVy
UHJvdmlkZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9k
ZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQ
bGF5ZXJQcm92aWRlci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZTsK
KworY2xhc3MgV2ViTW9kZWxQbGF5ZXJQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpN
b2RlbFBsYXllclByb3ZpZGVyIHsKK3B1YmxpYzoKKyAgICBXZWJNb2RlbFBsYXllclByb3ZpZGVy
KFdlYlBhZ2UmKTsKKyAgICB2aXJ0dWFsIH5XZWJNb2RlbFBsYXllclByb3ZpZGVyKCk7CisKK3By
aXZhdGU6CisgICAgLy8gV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisg
ICAgdmlydHVhbCBSZWZQdHI8V2ViQ29yZTo6TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVy
KFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JikgZmluYWw7CisKKyAgICBXZWJQYWdlJiBtX3Bh
Z2U7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BS
RVZJRVdfTUFDKQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTW9kZWxQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGlsZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmll
dzsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Ok1vZGVsUGxheWVyLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiBjcmVhdGUoV2ViUGFnZSYs
IFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgdmlydHVhbCB+QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIoKTsKKworICAgIHN0YXRpYyB2b2lkIHNldE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyKFdlYlBhZ2UmLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYp
OworCisgICAgLy8gV2ViQ29yZTo6TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwg
dm9pZCBsb2FkKFdlYkNvcmU6Ok1vZGVsJiwgV2ViQ29yZTo6TGF5b3V0U2l6ZSkgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJik7CisgICAgdm9pZCBjbGVhckZpbGUoKTsKKwor
ICAgIFdlYWtQdHI8V2ViUGFnZT4gbV9wYWdlOworICAgIFdlYWtQdHI8V2ViQ29yZTo6TW9kZWxQ
bGF5ZXJDbGllbnQ+IG1fY2xpZW50OworCisgICAgU3RyaW5nIG1fZmlsZVBhdGg7CisgICAgUmV0
YWluUHRyPEFTVklubGluZVByZXZpZXc+IG1faW5saW5lUHJldmlldzsKK307CisKK30KKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0JKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllci5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKKworI2ltcG9ydCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaCIK
KworI2ltcG9ydCAiV2ViUGFnZS5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
KyNpbXBvcnQgPFdlYkNvcmUvTW9kZWwuaD4KKyNpbXBvcnQgPHBhbC9zcGkvbWFjL1N5c3RlbVBy
ZXZpZXdTUEkuaD4KKyNpbXBvcnQgPHd0Zi9Tb2Z0TGlua2luZy5oPgorI2ltcG9ydCA8d3RmL1VV
SUQuaD4KKworU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2VyKTsKK1NPRlRf
TElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitSZWY8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpjcmVhdGUoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6TW9kZWxQ
bGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllcihwYWdlLCBjbGllbnQpKTsKK30KKworQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKFdlYlBhZ2Um
IHBhZ2UsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBtX3BhZ2Ug
eyBwYWdlIH0KKyAgICAsIG1fY2xpZW50IHsgY2xpZW50IH0KK3sKK30KKworQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcigpCit7Cisg
ICAgY2xlYXJGaWxlKCk7Cit9CisKK3N0YXRpYyBTdHJpbmcmIHNoYXJlZE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFy
ZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3Rvcnk7Cit9CisKK3N0YXRpYyBjb25zdCBTdHJpbmcmIG1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KCkKK3sKKyAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVE
aXJlY3RvcnkoKTsKK30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIHNo
YXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkgPSBwYXRoOworfQorCit2b2lkIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjcmVhdGVGaWxlKFdlYkNvcmU6Ok1vZGVsJiBtb2Rl
bFNvdXJjZSkKK3sKKyAgICAvLyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5
IGR1ZSB0byB0aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZpZXcsCisgICAgLy8gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2Ny4KKworICAgIGNsZWFyRmlsZSgp
OworCisgICAgYXV0byBwYXRoVG9EaXJlY3RvcnkgPSBtb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eSgpOworICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0
aFRvRGlyZWN0b3J5KTsKKyAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVTeXN0ZW06OmZp
bGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxlU3lzdGVtOjpG
aWxlVHlwZTo6RGlyZWN0b3J5KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYmICFGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFdlIG5l
ZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgorICAgIGF1dG8gZmlsZU5hbWUgPSBGaWxlU3lz
dGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpICsgIi51
c2R6IjsKKyAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOworICAgIGF1dG8gZmlsZSA9IEZpbGVT
eXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRl
KTsKKyAgICBpZiAoZmlsZSA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVt
Ojp3cml0ZVRvRmlsZShmaWxlLCBtb2RlbFNvdXJjZS5kYXRhKCktPmRhdGEoKSwgbW9kZWxTb3Vy
Y2UuZGF0YSgpLT5zaXplKCkpOworICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKKyAg
ICBtX2ZpbGVQYXRoID0gZmlsZVBhdGg7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmNsZWFyRmlsZSgpCit7CisgICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgp
OworICAgIG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOworfQorCisvLyBNQVJLOiAtIFdlYkNv
cmU6Ok1vZGVsUGxheWVyIG92ZXJyaWRlcy4KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllcjo6bG9hZChXZWJDb3JlOjpNb2RlbCYgbW9kZWxTb3VyY2UsIFdlYkNvcmU6OkxheW91
dFNpemUgc2l6ZSkKK3sKKyAgICBhdXRvIHN0cm9uZ0NsaWVudCA9IG1fY2xpZW50LmdldCgpOwor
ICAgIGlmICghc3Ryb25nQ2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBzdHJv
bmdQYWdlID0gbV9wYWdlLmdldCgpOworICAgIGlmICghc3Ryb25nUGFnZSkgeworICAgICAgICBz
dHJvbmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCp0aGlzLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgbW9kZWxTb3VyY2UudXJs
KCksICJXZWJQYWdlIGRlc3Ryb3llZCJfcyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGNyZWF0ZUZpbGUobW9kZWxTb3VyY2UpOworCisgICAgbV9pbmxpbmVQcmV2aWV3ID0gYWRv
cHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKV0pOworICAgIExPRyhNb2Rl
bEVsZW1lbnQsICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6bW9kZWxEaWRDaGFuZ2Uo
KSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYuIiwgKChTdHJp
bmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0YSgpLCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChF
eHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJy
b3I+KT4gY29tcGxldGlvbkhhbmRsZXIgPSBbd2Vha1NlbGYgPSBXZWFrUHRyIHsgKnRoaXMgfV0g
KEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcj4gcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1Nl
bGYuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nU2VsZikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBhdXRvIHN0cm9uZ0NsaWVudCA9IHN0cm9uZ1NlbGYtPm1fY2xpZW50LmdldCgp
OworICAgICAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElk
KCkgcmVjZWl2ZWQgZXJyb3IgZnJvbSBVSVByb2Nlc3MiKTsKKyAgICAgICAgICAgIHN0cm9uZ0Ns
aWVudC0+ZGlkRmFpbExvYWRpbmcoKnN0cm9uZ1NlbGYsIHJlc3VsdC5lcnJvcigpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8mIFt1dWlkLCBjb250ZXh0
SWRdID0gKnJlc3VsdDsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkVVVJRCA9IFtzdHJvbmdTZWxm
LT5tX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZzsKKworICAgICAgICBpZiAodXVpZCAh
PSBleHBlY3RlZFVVSUQpIHsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgp
IFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0Zjgo
KS5kYXRhKCksIGV4cGVjdGVkVVVJRC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIHN0cm9u
Z0NsaWVudC0+ZGlkRmFpbExvYWRpbmcoKnN0cm9uZ1NlbGYsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB7IH0sIG1ha2VTdHJp
bmcoIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWlu
Q29udGV4dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2ZWQgIiwgdXVpZCwgIiBidXQgZXhwZWN0
ZWQgIiwgZXhwZWN0ZWRVVUlELCAiLiIpIH0pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgW3N0cm9uZ1NlbGYtPm1faW5saW5lUHJldmlldyBzZXRSZW1vdGVDb250
ZXh0OmNvbnRleHRJZF07CisgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nl
c3NmdWxseSBlc3RhYmxpc2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlk
LnV0ZjgoKS5kYXRhKCkpOworCisgICAgICAgIHN0cm9uZ0NsaWVudC0+ZGlkRmluaXNoTG9hZGlu
Zygqc3Ryb25nU2VsZik7CisgICAgfTsKKyAgICAKKyAgICBzdHJvbmdQYWdlLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJl
dmlldyhVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9maWxlUGF0aCksIFttX2lubGlu
ZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZywgc2l6ZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKworUGxhdGZvcm1MYXllciogQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
OmxheWVyKCkKK3sKKyAgICByZXR1cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Cit9CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlci5jcHAJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFu
YWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDExIEBACiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9U
SUZJQ0FUSU9OUykKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC05MSw3ICs5Niw3IEBA
IHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2UKICAgICAgICAgfTsKIAog
I2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQotICAgICAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJs
ZWQoKSAmJiBhbGxvd2VkKSB7CisgICAgICAgIGlmIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgpICYm
IGFsbG93ZWQpIHsKICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxlcjo6UmVxdWVzdFN5c3Rl
bU5vdGlmaWNhdGlvblBlcm1pc3Npb24oc2VjdXJpdHlPcmlnaW4udG9TdHJpbmcoKSksIFdURk1v
dmUoaW5uZXJQZXJtaXNzaW9uSGFuZGxlciksIG1fcGFnZS0+c2Vzc2lvbklEKCkudG9VSW50NjQo
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUzMSwx
MyArMTUzMSw2IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50RnUKIH0K
ICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgV2Vi
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkgY29uc3QKLXsKLSAgICBtX3BhZ2UubW9k
ZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhlbGVtZW50LCB1cmwsIHV1aWQsIHNpemUpOwotfQot
I2VuZGlmCi0KICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKIAogdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnN0YXJ0QXBwbGVQYXlBTVNVSVNlc3Npb24oY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VS
TCwgY29uc3QgQXBwbGVQYXlBTVNVSVJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDU4LDkgKzQ1OCw2IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX0lPUykKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCkgY29uc3QgZmluYWw7
CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQg
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29u
c3QgZmluYWw7Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfQU1TX1VJKQogICAgIHZv
aWQgc3RhcnRBcHBsZVBheUFNU1VJU2Vzc2lvbihjb25zdCBVUkwmLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheUFNU1VJUmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25h
bDxib29sPiYmKT4mJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsx
MDcsNyBAQAogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuaCIKICNpbmNsdWRl
ICJXZWJNZWRpYUtleVN5c3RlbUNsaWVudC5oIgogI2luY2x1ZGUgIldlYk1lZGlhU3RyYXRlZ3ku
aCIKKyNpbmNsdWRlICJXZWJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiV2ViTW91
c2VFdmVudC5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUg
IldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmgiCkBAIC0yNzMsMTAgKzI3NCw2IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9BcHBIaWdobGlnaHRTdG9yYWdlLmg+CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFVykKLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNb2RlbEVsZW1l
bnQuaD4KLSNlbmRpZgotCiAjaWYgRU5BQkxFKERBVEFfREVURUNUSU9OKQogI2luY2x1ZGUgIkRh
dGFEZXRlY3Rpb25SZXN1bHQuaCIKICNlbmRpZgpAQCAtNTc1LDcgKzU3Miw4IEBAIFdlYlBhZ2U6
OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCAKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxN
ZWRpYVJlY29yZGVyUHJvdmlkZXI+KCp0aGlzKSwKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5KCksCiAgICAgICAgIFdlYlBlcm1pc3Npb25D
b250cm9sbGVyOjpjcmVhdGUoKnRoaXMpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3Jh
Z2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYlN0b3JhZ2VQcm92aWRlcj4o
KSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJNb2RlbFBsYXllclByb3ZpZGVyPigqdGhpcykK
ICAgICApOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJv
bWVDbGllbnQoKnRoaXMpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtNzczOSwyMSAr
NzczNyw2IEBAIHZvaWQgV2ViUGFnZTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4KIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgV2ViUGFn
ZTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFNpemUmIHNpemUpCi17Ci0gICAgaWYgKGF1dG8gZWxlbWVudENvbnRleHQgPSBj
b250ZXh0Rm9yRWxlbWVudChlbGVtZW50KSkKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KCplbGVtZW50Q29udGV4dCwgdXJs
LCB1dWlkLCBzaXplKSk7Ci19Ci0KLXZvaWQgV2ViUGFnZTo6bW9kZWxFbGVtZW50UHJldmlld0Rp
ZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgZWxlbWVudENv
bnRleHQsIGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotewotICAgIGF1
dG8gZWxlbWVudCA9IGVsZW1lbnRGb3JDb250ZXh0KGVsZW1lbnRDb250ZXh0KTsKLSAgICBpZiAo
aXM8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4oZWxlbWVudCkpCi0gICAgICAgIGRvd25jYXN0
PFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KCplbGVtZW50KS5pbmxpbmVQcmV2aWV3RGlkT2J0
YWluQ29udGV4dElkKHV1aWQsIGNvbnRleHRJZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYWdl
OjpzY3JvbGxUb1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBvcmlnaW4pCiB7CiAgICAgbWFpbkZyYW1lVmlldygpLT5z
ZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCh0YXJnZXRSZWN0Lm1pblhNaW5ZQ29ybmVyKCkpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlz
aW9uIDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDEwICsyMjAsNiBAQCBjbGFzcyBTdWJzdGl0dXRlRGF0
YTsKIGNsYXNzIFRleHRDaGVja2luZ1JlcXVlc3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAK
LSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1jbGFzcyBIVE1MTW9kZWxFbGVtZW50
OwotI2VuZGlmCi0KIGVudW0gU3ludGhldGljQ2xpY2tUeXBlIDogaW50OF90OwogZW51bSBjbGFz
cyBDT0VQRGlzcG9zaXRpb24gOiBib29sOwogZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCA6IGJvb2w7CkBAIC0xNDk2LDEwICsxNDkyLDYgQEAgcHVibGljOgogI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVs
bHNjcmVlbihXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExh
eWVySWQpOwogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAg
ICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpOwotICAgIHZvaWQgbW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25z
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHVpbnQzMl90KTsKLSNl
bmRpZgogCiAgICAgdm9pZCBwcmVwYXJlVG9SdW5Nb2RhbEphdmFTY3JpcHREaWFsb2coKTsKIApJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyODU0NzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC02NDcsOCAr
NjQ3LDQgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbgogI2VuZGlm
CiAKICAgICBTY3JvbGxUb1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHRhcmdldFJlY3QsIFdlYkNv
cmU6OkZsb2F0UG9pbnQgb3JpZ2luKQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVX
X01BQykKLSAgICBNb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKHN0cnVjdCBX
ZWJDb3JlOjpFbGVtZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgU3RyaW5nIHV1aWQsIHVpbnQz
Ml90IGNvbnRleHRJZCkKLSNlbmRpZgogfQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjg1NDc4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTEtMDggIFNhbSBXZWluaWcg
IDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZpYyBj
b2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnBy
ZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAyMS0xMS0wNiAgRGF2aWQgS2lsemVyICA8ZGRr
aWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBlbXB0eSBkaXJlY3RvcmllcyBmcm9t
IGZyb20gc3ZuLndlYmtpdC5vcmcgcmVwb3NpdG9yeSBhcyBvZiByMjg1MzU3CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyODU0Nzgp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxl
ci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
SXRlbS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0R1bW15U3RvcmFnZVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRp
bmcuaD4KQEAgLTE1NDMsNyArMTU0NCw4IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9u
V2l0aEZyYW1lTmEKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVy
UHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JD
cmVhdGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAg
ICAgIFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAg
ICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAg
IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAg
IG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAg
KTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwpAQCAtMTgyMyw3ICsxODI1LDgg
QEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2Vi
QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNd
IHByaXZhdGVCcm93c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNz
aW9uQ29udHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6
RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpE
dW1teVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpE
dW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAjaWYgRU5BQkxF
KERSQUdfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI4NTQ3OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFw
cGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQgb2Yg
SFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUp
OgorCiAyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNv
bT4KIAogICAgICAgICBBWDogcmVuYW1lIGFjdGlvblZlcmIoKSBhcyBsb2NhbGl6ZWRBY3Rpb25W
ZXJiKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODU0
NzgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRHJhZ0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0R1bW15TW9kZWxQbGF5ZXJQ
cm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0zMDY1LDcgKzMwNjYsOCBAQCBIUkVTVUxUIFdlYlZp
ZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFS
ZWNvcmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6
OmdldE9yQ3JlYXRlKGZhbHNlKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29u
dHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlT
dG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0
b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xp
ZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443752</attachid>
            <date>2021-11-09 16:25:02 -0800</date>
            <delta_ts>2021-11-10 12:33:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211109162501.patch</filename>
            <type>text/plain</type>
            <size>104310</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDIxLTExLTA4ICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50
L0hUTUxNb2RlbEVsZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXk6IEFkZGVkLgorICAgICAgICAqIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RHVtbXlNb2RlbFBsYXllcjo6RHVtbXlNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpEdW1teU1vZGVsUGxheWVyOjpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkR1bW15TW9k
ZWxQbGF5ZXI6OmxheWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0ZU1vZGVsUGxheWVyKToKKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFn
ZUNvbmZpZ3VyYXRpb25XaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkVtcHR5
Q2hyb21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGFnZS9DaHJv
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om1fbW9kZWxQbGF5ZXJQcm92aWRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjptb2RlbFBsYXllclByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1f
c3RvcmFnZVByb3ZpZGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAg
ICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VD
b25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29u
ZmlndXJhdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmF0
aW9uKToKKwogMjAyMS0xMS0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODUyNDYuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdlYkNvcmVfUFJJ
VkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVk
aWFzdHJlYW0iCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2Vi
cnRjIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQiCisgICAgIiR7
V0VCQ09SRV9ESVJ9L01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teSIKICAgICAiJHtXRUJDT1JF
X0RJUn0vTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvbm90aWZpY2F0aW9ucyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9wYXlt
ZW50cmVxdWVzdCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkocmV2aXNpb24gMjg1NTQwKQorKysg
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEz
NywxMSBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDVXRpbHMuaAogCiAgICAgTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllci5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xp
ZW50LmgKKyAgICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCisg
ICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAorICAgIE1v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAogCiAg
ICAgTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCiAgICAgTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNsaWVudC5oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAkocmV2aXNp
b24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTIzNCw2ICsyMzQsMTEgQEAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2Vi
UlRDUgogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNmb3Jt
YWJsZUZyYW1lLmNwcAogTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDU2N0
cFRyYW5zcG9ydEJhY2tlbmQuY3BwCiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAKK01vZHVsZXMv
bW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1
bW15TW9kZWxQbGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyLmNwcAogTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5j
cHAKIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25Db250cm9sbGVyLmNwcAogTW9k
dWxlcy9wYXltZW50cmVxdWVzdC9NZXJjaGFudFZhbGlkYXRpb25FdmVudC5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw2IEBAIE1vZHVs
ZXMvYXBwbGVwYXktYW1zLXVpL0FwcGxlUGF5QU1TVUlQYXkKIE1vZHVsZXMvYXN5bmMtY2xpcGJv
YXJkL2lvcy9DbGlwYm9hcmRJbWFnZVJlYWRlcklPUy5tbQogTW9kdWxlcy9hc3luYy1jbGlwYm9h
cmQvbWFjL0NsaXBib2FyZEltYWdlUmVhZGVyTWFjLm1tCiBNb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1J0cFNGcmFtZVRyYW5zZm9ybWVyQ29jb2EuY3BwCi1Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudENvY29hLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9TcGVlY2hSZWNvZ25p
emVyQ29jb2EubW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
Lm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsOCBAQAogI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXQuaCIKICNpbmNs
dWRlICJKU0hUTUxNb2RlbEVsZW1lbnQuaCIKICNpbmNsdWRlICJNb2RlbC5oIgorI2luY2x1ZGUg
Ik1vZGVsUGxheWVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJNb2RlbC5oIgog
I2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC03MCwxMCArNzIsNiBAQCBIVE1M
TW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxlbWVudCgpCiAgICAgICAgIG1fcmVzb3VyY2UtPnJl
bW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0K
LQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgY2xlYXJGaWxlKCk7
Ci0jZW5kaWYKIH0KIAogUmVmPEhUTUxNb2RlbEVsZW1lbnQ+IEhUTUxNb2RlbEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCkBA
IC0xMzEsMTcgKzEyOSwxNiBAQCB2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OnNldFNvdXJjZVVSTChj
b25zCiAgICAgICAgIG1fcmVzb3VyY2UgPSBudWxscHRyOwogICAgIH0KIAorICAgIGlmIChtX21v
ZGVsUGxheWVyKQorICAgICAgICBtX21vZGVsUGxheWVyID0gbnVsbHB0cjsKKwogICAgIGlmICgh
bV9yZWFkeVByb21pc2UtPmlzRnVsZmlsbGVkKCkpCiAgICAgICAgIG1fcmVhZHlQcm9taXNlLT5y
ZWplY3QoRXhjZXB0aW9uIHsgQWJvcnRFcnJvciB9KTsKIAogICAgIG1fcmVhZHlQcm9taXNlID0g
bWFrZVVuaXF1ZVJlZjxSZWFkeVByb21pc2U+KCp0aGlzLCAmSFRNTE1vZGVsRWxlbWVudDo6cmVh
ZHlQcm9taXNlUmVzb2x2ZSk7CiAKLSAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKSB7Ci0j
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgY2xlYXJGaWxlKCk7
Ci0jZW5kaWYKKyAgICBpZiAobV9zb3VyY2VVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
Ci0gICAgfQogCiAgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zIG9wdGlvbnMgPSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpOwogICAgIG9wdGlvbnMu
ZGVzdGluYXRpb24gPSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpNb2RlbDsKQEAgLTE2OCwy
NCArMTY1LDYgQEAgSFRNTE1vZGVsRWxlbWVudCYgSFRNTE1vZGVsRWxlbWVudDo6cmVhZAogICAg
IHJldHVybiAqdGhpczsKIH0KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLXN0
YXRpYyBTdHJpbmcmIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeTsKLSAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci19Ci0K
LXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29u
c3QgU3RyaW5nJiBwYXRoKQotewotICAgIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KCkgPSBwYXRoOwotfQotCi1jb25zdCBTdHJpbmcmIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRWxl
bWVudENhY2hlRGlyZWN0b3J5KCkKLXsKLSAgICByZXR1cm4gc2hhcmVkTW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkoKTsKLX0KLSNlbmRpZgotCiAvLyBNQVJLOiAtIERPTSBvdmVycmlkZXMuCiAK
IHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9s
ZERvY3VtZW50LCBEb2N1bWVudCYgbmV3RG9jdW1lbnQpCkBAIC0yMzYsMTMgKzIxNSw2NyBAQCB2
b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhCiAKICAgICBtX3JlYWR5UHJv
bWlzZS0+cmVzb2x2ZSgqdGhpcyk7CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQogICAgIG1vZGVsRGlkQ2hhbmdlKCk7Ci0jZW5kaWYKIH0KIAorLy8gTUFSSzogLSBNb2Rl
bFBsYXllciBzdXBwb3J0CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2Uo
KQoreworICAgIC8vIEZJWE1FOiBGb3IgdGhlIGVhcmx5IHJldHVybnMgaGVyZSwgd2Ugc2hvdWxk
IHByb2JhYmx5IGluZm9ybSB0aGUgcGFnZSB0aGF0IHRoYXQgdGhpbmdzIGhhdmUKKyAgICAvLyBm
YWlsZWQgdG8gcmVuZGVyPyBGb3IgdGhlIGNhc2Ugb2Ygbm8tcmVuZGVyZXIsIHdlIHNob3VsZCBw
cm9iYWJseSBhbHNvIGJ1aWxkIHRoZSBtb2RlbCB3aGVuL2lmCisgICAgLy8gYSByZW5kZXJlciBp
cyBjcmVhdGVkLgorCisgICAgYXV0byBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CisgICAgaWYg
KCFwYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
Tk9URTogRm9yIG5vdywgY3JlYXRlTW9kZWxQbGF5ZXIgcmV0dXJuaW5nIG51bGxwdHIgbWVhbnMg
dGhhdCB0aGUgR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb01vZGVsKCkgcGF0aAorICAgIC8v
IGlzIGJlaW5nIHVzZWQsIGJ1dCB0aGF0IG5lZWRzIHRvIGJlIHBoYXNlZCBvdXQgdG8gYWxsb3cg
YmlkaXJlY3Rpb25hbCBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIG1vZGVsIHBsYXllcgorICAg
IC8vIGFuZCB0aGUgSFRNTE1vZGVsRWxlbWVudC4gT25jZSB0aGF0IGlzIHBoYXNlZCBvdXQsIGNy
ZWF0ZU1vZGVsUGxheWVyKCkgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmV0dXJuIGEgUmVmPD4uCisg
ICAgbV9tb2RlbFBsYXllciA9IHBhZ2UtPm1vZGVsUGxheWVyUHJvdmlkZXIoKS5jcmVhdGVNb2Rl
bFBsYXllcigqdGhpcyk7CisgICAgaWYgKCFtX21vZGVsUGxheWVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byB0ZWxsIHRoZSBwbGF5ZXIgaWYgdGhlIHNpemUg
Y2hhbmdlcyBhcyB3ZWxsLCBzbyBwYXNzaW5nIHRoaXMKKyAgICAvLyBpbiB3aXRoIGxvYWQgcHJv
YmFibHkgZG9lc24ndCBtYWtlIHNlbnNlLgorICAgIGF1dG8gc2l6ZSA9IHJlbmRlcmVyLT5hYnNv
bHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSkuc2l6ZSgpOworCisgICAgbV9tb2RlbFBsYXllci0+
bG9hZCgqbV9tb2RlbCwgc2l6ZSk7Cit9CisKK2Jvb2wgSFRNTE1vZGVsRWxlbWVudDo6dXNlc1Bs
YXRmb3JtTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGVsUGxheWVyICE9IG51bGxw
dHI7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAoreworICAgIHJldHVybiBtX21vZGVsUGxheWVyLT5sYXllcigpOworfQorCit2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImIG1vZGVsUGxh
eWVyKQoreworICAgIEFTU0VSVF9VTlVTRUQobW9kZWxQbGF5ZXIsICZtb2RlbFBsYXllciA9PSBt
X21vZGVsUGxheWVyKTsKKworICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCisgICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOworfQorCit2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiBtb2RlbFBsYXllciwg
Y29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgQVNTRVJUX1VOVVNFRChtb2RlbFBsYXllciwg
Jm1vZGVsUGxheWVyID09IG1fbW9kZWxQbGF5ZXIpOworfQorCisvLyBNQVJLOiAtIEZ1bGxzY3Jl
ZW4gc3VwcG9ydC4KKwogdm9pZCBIVE1MTW9kZWxFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQog
eworLy8gRklYTUU6IEFkZCBhIG5ldyBtZXRob2QgdG8gTW9kZWxQbGF5ZXIgZm9yIGVudGVyaW5n
IGZ1bGxzY3JlZW4gYW5kIG1vdmUgdGhpcyBpbnRvIHRoZSBpT1MgQVJLaXQgaW5saW5lIHByZXZp
ZXcgTW9kZWxQbGF5ZXIgaW1wbGVtZW50YXRpb24uCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX0lPUykKICAgICBhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCk7CiAgICAgaWYg
KCFwYWdlKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxN
b2RlbEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwyMSArMzIsMTkgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUhhbmRs
ZS5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiSURMVHlwZXMuaCIKKyNp
bmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAK
LSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotI2luY2x1ZGUgIlBsYXRmb3Jt
TGF5ZXIuaCIKLU9CSkNfQ0xBU1MgQVNWSW5saW5lUHJldmlldzsKLSNlbmRpZgotCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1vZGVsOworY2xhc3MgTW9kZWxQbGF5ZXI7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2Fs
bGJhY2s7CiAKLWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQgZmluYWwgOiBwdWJsaWMgSFRNTEVsZW1l
bnQsIHByaXZhdGUgQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQgeworY2xhc3MgSFRNTE1vZGVsRWxl
bWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdSZXNvdXJj
ZUNsaWVudCwgcHVibGljIE1vZGVsUGxheWVyQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKEhUTUxNb2RlbEVsZW1lbnQpOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8SFRNTE1v
ZGVsRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwpAQCAt
NTUsMjEgKzUzLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNvdXJjZXNDaGFuZ2VkKCk7CiAgICAg
Y29uc3QgVVJMJiBjdXJyZW50U3JjKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VVUkw7IH0KIAor
ICAgIC8vIE1BUks6IERPTSBGdW5jdGlvbnMgYW5kIEF0dHJpYnV0ZXMKKwogICAgIHVzaW5nIFJl
YWR5UHJvbWlzZSA9IERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s8SURMSW50ZXJm
YWNlPEhUTUxNb2RlbEVsZW1lbnQ+PjsKICAgICBSZWFkeVByb21pc2UmIHJlYWR5KCkgeyByZXR1
cm4gbV9yZWFkeVByb21pc2UuZ2V0KCk7IH0KIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1v
ZGVsRGF0YSgpIGNvbnN0OwogICAgIFJlZlB0cjxNb2RlbD4gbW9kZWwoKSBjb25zdDsKIAotI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgY29uc3QgU3RyaW5nJiBtb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeSgpOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQor
ICAgIGJvb2wgdXNlc1BsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICAgICBQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbmxpbmVQcmV2
aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMyX3QgY29udGV4
dElkKTsKLSNlbmRpZgogCiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKIApAQCAtNzksMTMg
KzcyLDkgQEAgcHJpdmF0ZToKICAgICBIVE1MTW9kZWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCYpOwogCiAgICAgdm9pZCBzZXRTb3VyY2VVUkwoY29uc3QgVVJMJik7Ci0g
ICAgSFRNTE1vZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwotCi0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lkIGNsZWFyRmlsZSgpOwotICAgIHZv
aWQgY3JlYXRlRmlsZSgpOwogICAgIHZvaWQgbW9kZWxEaWRDaGFuZ2UoKTsKLSNlbmRpZgorCisg
ICAgSFRNTE1vZGVsRWxlbWVudCYgcmVhZHlQcm9taXNlUmVzb2x2ZSgpOwogCiAgICAgLy8gRE9N
IG92ZXJyaWRlcy4KICAgICB2b2lkIGRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KSBmaW5hbDsKQEAgLTk3LDYgKzg2LDEwIEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UmLCBjb25zdCB1
aW50OF90KiBkYXRhLCBpbnQgZGF0YUxlbmd0aCkgZmluYWw7CiAgICAgdm9pZCBub3RpZnlGaW5p
c2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYpIGZpbmFsOwog
CisgICAgLy8gTW9kZWxQbGF5ZXJDbGllbnQgb3ZlcnJpZGVzLgorICAgIHZvaWQgZGlkRmluaXNo
TG9hZGluZyhNb2RlbFBsYXllciYpIGZpbmFsOworICAgIHZvaWQgZGlkRmFpbExvYWRpbmcoTW9k
ZWxQbGF5ZXImLCBjb25zdCBSZXNvdXJjZUVycm9yJikgZmluYWw7CisKICAgICBVUkwgbV9zb3Vy
Y2VVUkw7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IG1fcmVz
b3VyY2U7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOwpAQCAtMTA0LDEwICs5Nyw3
IEBAIHByaXZhdGU6CiAgICAgVW5pcXVlUmVmPFJlYWR5UHJvbWlzZT4gbV9yZWFkeVByb21pc2U7
CiAgICAgYm9vbCBtX2RhdGFDb21wbGV0ZSB7IGZhbHNlIH07CiAKLSNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIFN0cmluZyBtX2ZpbGVQYXRoOwotICAgIFJldGFpblB0
cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7Ci0jZW5kaWYKKyAgICBSZWZQdHI8
TW9kZWxQbGF5ZXI+IG1fbW9kZWxQbGF5ZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxl
bWVudENvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0JKHJldmlzaW9uIDI4NTU0MCkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2Eu
bW0JKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJI
VE1MTW9kZWxFbGVtZW50LmgiCi0KLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkgJiYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLQotI2luY2x1ZGUgIkNocm9tZS5oIgotI2luY2x1
ZGUgIkNocm9tZUNsaWVudC5oIgotI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJQYWdl
LmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVs
T2JqZWN0LmgiCi0jaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlIDxwYWwvc3BpL21hYy9T
eXN0ZW1QcmV2aWV3U1BJLmg+Ci0jaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KLSNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1NvZnRMaW5raW5nLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9VVUlELmg+Ci0KLVNPRlRfTElOS19QUklWQVRF
X0ZSQU1FV09SSyhBc3NldFZpZXdlcik7Ci1TT0ZUX0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFT
VklubGluZVByZXZpZXcpOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgSFRNTE1vZGVs
RWxlbWVudDo6Y3JlYXRlRmlsZSgpCi17Ci0gICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBv
bmx5IHRlbXBvcmFyeSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAotICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCi0KLSAg
ICBjbGVhckZpbGUoKTsKLQotICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gSFRNTE1vZGVsRWxl
bWVudDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKTsKLSAgICBpZiAocGF0aFRvRGlyZWN0
b3J5LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkaXJlY3RvcnlFeGlz
dHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhUb0RpcmVjdG9yeSk7Ci0gICAgaWYgKGRp
cmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpmaWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBh
dGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6RmlsZVR5cGU6OkRpcmVjdG9yeSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBh
dGhUb0RpcmVjdG9yeSkpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXZSBuZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmls
ZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2
OC4KLSAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3Jl
YXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIudXNkeiI7Ci0gICAgYXV0byBmaWxlUGF0aCA9
IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZp
bGVOYW1lKTsKLSAgICBhdXRvIGZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwg
RmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7Ci0gICAgaWYgKGZpbGUgPD0gMCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgRmlsZVN5c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgbV9kYXRh
LT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKTsKLSAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmls
ZSk7Ci0gICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1l
bnQ6OmNsZWFyRmlsZSgpCi17Ci0gICAgaWYgKG1fZmlsZVBhdGguaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fZmlsZVBhdGgpOwotICAg
IG1fZmlsZVBhdGggPSBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6
Om1vZGVsRGlkQ2hhbmdlKCkKLXsKLSAgICBjcmVhdGVGaWxlKCk7Ci0KLSAgICBhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KGZhbHNlKS5zaXplKCk7Ci0KLSAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FT
VklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXSk7Ci0gICAgTE9HKE1vZGVsRWxlbWVudCwgIkhU
TUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJ
RCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIsICgoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0u
VVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
LQotICAgIGlmIChhdXRvKiBwYWdlID0gZG9jdW1lbnQoKS5wYWdlKCkpCi0gICAgICAgIHBhZ2Ut
PmNocm9tZSgpLmNsaWVudCgpLm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKnRoaXMsIFVS
TDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmll
dyB1dWlkXS5VVUlEU3RyaW5nLCBzaXplKTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50Ojpp
bmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFN0cmluZyYgdXVpZCwgdWludDMy
X3QgY29udGV4dElkKQotewotICAgIGlmICghZG9jdW1lbnQoKS5zZXR0aW5ncygpLm1vZGVsRWxl
bWVudEVuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHV1aWQgIT0gKFN0cmlu
ZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpIHsKLSAgICAgICAgTE9HKE1vZGVs
RWxlbWVudCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51
dGY4KCkuZGF0YSgpLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgW21faW5saW5l
UHJldmlldyBzZXRSZW1vdGVDb250ZXh0OmNvbnRleHRJZF07Ci0gICAgTE9HKE1vZGVsRWxlbWVu
dCwgIkhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBz
dWNjZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwg
dXVpZC51dGY4KCkuZGF0YSgpKTsKLQotICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpCi0gICAgICAgIHJlbmRlcmVyLT51cGRhdGVGcm9tRWxlbWVudCgpOwotfQotCi1Q
bGF0Zm9ybUxheWVyKiBIVE1MTW9kZWxFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gW21faW5saW5lUHJldmlldyBsYXllcl07Ci19Ci0KLX0KLQotI2VuZGlmIC8v
IEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNb2RlbFBs
YXllci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVsUGxheWVyOjp+TW9kZWxQbGF5
ZXIoKSA9IGRlZmF1bHQ7CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkxheW91dFNpemUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCisjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbDsKKworY2xh
c3MgV0VCQ09SRV9FWFBPUlQgTW9kZWxQbGF5ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2RlbFBs
YXllcj4geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1
YWwgfk1vZGVsUGxheWVyKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZChNb2RlbCYsIExheW91
dFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgPSAwOworfTsK
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVs
LWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJNb2RlbFBsYXllckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK01vZGVsUGxheWVyQ2xpZW50Ojp+TW9kZWxQbGF5ZXJDbGllbnQoKSA9IGRlZmF1bHQ7CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllckNsaWVudC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2NsYXNzIFJlc291cmNlRXJyb3I7CisKK2Ns
YXNzIFdFQkNPUkVfRVhQT1JUIE1vZGVsUGxheWVyQ2xpZW50IDogcHVibGljIENhbk1ha2VXZWFr
UHRyPE1vZGVsUGxheWVyQ2xpZW50PiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5
ZXJDbGllbnQoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxh
eWVyJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJv
dmlkZXIuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVs
UGxheWVyUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitNb2RlbFBsYXllclBy
b3ZpZGVyOjp+TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQ
bGF5ZXJQcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBNb2RlbFBsYXllcjsKK2Ns
YXNzIE1vZGVsUGxheWVyQ2xpZW50OworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2RlbFBsYXll
clByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5Nb2RlbFBsYXllclByb3ZpZGVyKCk7CisKKyAgICAvLyBGSVhNRTogT25jZSBhbGwg
Y2xpZW50cyBoYXZlIGFkb3B0ZWQgTW9kZWxQbGF5ZXJQcm92aWRlciwgdGhpcyBzaG91bGQKKyAg
ICAvLyBiZSBjaGFuZ2VkIHRvIHJldHVybiBhIFJlZjxNb2RlbFBsYXllcj4KKyAgICB2aXJ0dWFs
IFJlZlB0cjxNb2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJDbGllbnQm
KSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15TW9kZWxQbGF5ZXIu
aCIKKworI2luY2x1ZGUgIk1vZGVsLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK1JlZjxEdW1teU1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxh
eWVyOjpjcmVhdGUoTW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBEdW1teU1vZGVsUGxheWVyKGNsaWVudCkpOworfQorCitEdW1teU1vZGVsUGxh
eWVyOjpEdW1teU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCisgICAgOiBt
X2NsaWVudCB7IGNsaWVudCB9Cit7Cit9CisKK0R1bW15TW9kZWxQbGF5ZXI6On5EdW1teU1vZGVs
UGxheWVyKCkgPSBkZWZhdWx0OworCit2b2lkIER1bW15TW9kZWxQbGF5ZXI6OmxvYWQoTW9kZWwm
IG1vZGVsLCBMYXlvdXRTaXplKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPmRpZEZhaWxMb2FkaW5nKCp0aGlzLCBSZXNvdXJjZUVycm9yIHsgZXJyb3JEb21haW5XZWJL
aXRJbnRlcm5hbCwgMCwgbW9kZWwudXJsKCksICJUcnlpbmcgdG8gbG9hZCBtb2RlbCB2aWEgRHVt
bXlNb2RlbFBsYXllciJfcyB9KTsKK30KKworUGxhdGZvcm1MYXllciogRHVtbXlNb2RlbFBsYXll
cjo6bGF5ZXIoKQoreworICAgIHJldHVybiBudWxscHRyOworfQorCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9E
dW1teU1vZGVsUGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJN
b2RlbFBsYXllci5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyQ2xpZW50LmgiCisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIER1bW15TW9kZWxQbGF5ZXIgZmluYWwgOiBw
dWJsaWMgTW9kZWxQbGF5ZXIgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8RHVtbXlNb2RlbFBs
YXllcj4gY3JlYXRlKE1vZGVsUGxheWVyQ2xpZW50Jik7CisgICAgdmlydHVhbCB+RHVtbXlNb2Rl
bFBsYXllcigpOworCitwcml2YXRlOgorICAgIER1bW15TW9kZWxQbGF5ZXIoTW9kZWxQbGF5ZXJD
bGllbnQmKTsKKworICAgIC8vIE1vZGVsUGxheWVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIHZv
aWQgbG9hZChNb2RlbCYsIExheW91dFNpemUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGxhdGZv
cm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKworICAgIFdlYWtQdHI8TW9kZWxQbGF5ZXJDbGll
bnQ+IG1fY2xpZW50OworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIkR1
bW15TW9kZWxQbGF5ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXI6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKK0R1bW15
TW9kZWxQbGF5ZXJQcm92aWRlcjo6fkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVs
dDsKKworUmVmUHRyPE1vZGVsUGxheWVyPiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI6OmNyZWF0
ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIER1
bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShjbGllbnQpOworfQorCit9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1
bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
IGZpbmFsIDogcHVibGljIE1vZGVsUGxheWVyUHJvdmlkZXIgeworcHVibGljOgorICAgIER1bW15
TW9kZWxQbGF5ZXJQcm92aWRlcigpOworICAgIHZpcnR1YWwgfkR1bW15TW9kZWxQbGF5ZXJQcm92
aWRlcigpOworCitwcml2YXRlOgorICAgIC8vIE1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVz
LgorICAgIHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXllcihNb2Rl
bFBsYXllckNsaWVudCYpIG92ZXJyaWRlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NTQw
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00MDY3LDYgKzQwNjcsMTEgQEAKIAkJQkMyM0VFOTIwREFFRDJCQzAw
OUZEQzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNFRTkxMERBRUQyQkMwMDlGREM5MSAvKiBDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJQkMyM0YwREIwREFGRjRBNDAwOUZEQzkxIC8qIEdlbmVyYXRlZEltYWdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzIzRjBE
QTBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzI3NEIyRjE0MEVCRUIyMDBFQURGQTYg
LyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlLmggKi87IH07CisJCUJDMkI0MTE3MjczMkY0MUUwMEEyRDE5MSAvKiBN
b2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyQjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkMyQjQxMTgyNzMyRjQyMzAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBs
YXllclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQkMyQjQxMTkyNzMyRjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEwRTI3
MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDEyNTI3MzM2MDA1MDBBMkQxOTEg
LyogRHVtbXlNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJC
NDEzMTI3MzRBMDg2MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEyMDI3MzM1Q0I5
MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMyQ0JGNEUxNDBGMUFCRDAwMzg3OUJF
IC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMkNCRjRCMTQwRjFBNjUwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4
dEV2ZW50LmggKi87IH07CiAJCUJDMkNDQTEwMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlv
bkNvbG9yU3BhY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDMkNDQTBFMjY1NUREQjIwMEI4QzAzNSAvKiBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzMwNUM3
QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzMDVDNzgwQzA3NkJCMzAwQ0QyMEYw
IC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLzsgfTsKQEAgLTEwNzk5LDcgKzEwODA0LDYgQEAK
IAkJNzFDMjlFMzEyMDNDRTc2QzAwOEYzNkQyIC8qIENTU0FuaW1hdGlvbi5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gQ1NTQW5pbWF0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzFDNUJCMUIxRkI2MTFFQTAwMDdBMkFFIC8qIEFuaW1hdGFibGUuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IEFuaW1hdGFibGUuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MUM5MTYwNzFEMTQ4M0EzMDBBQ0E0N0QgLyogVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTcxQ0FBM0Q5MjY4
RDBCRjkwMEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxQ0UyQzUxMjIwOURDN0YwMEM0OTRCRCAvKiBNb3VzZUV2ZW50SU9TLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vdXNlRXZlbnRJT1MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUQwMkQ5MDFEQjU1QzRFMDBERDVDRjUgLyogbWFp
bi5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IG1haW4uanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxRDAyRDkyMURCNTVDNEUwMERENUNGNSAvKiBt
ZWRpYS1jb250cm9sbGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gIm1lZGlhLWNvbnRyb2xsZXIuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQ3MzUsNiArMTQ3MzksMTYgQEAKIAkJQkMyNzRCMkUxNDBFQkVCMjAwRUFERkE2IC8qIENTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyNzRCMzAxNDBFQkVEODAwRUFERkE2IC8qIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI5OTM1QzE3QTFERDU4
MDBCQ0U4ODAgLyogQ29sb3JJbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29sb3JJbnB1dFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCQzJCNDEwRTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTW9kZWxQbGF5ZXJDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyQjQxMTIyNzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGVsUGxheWVyQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDMkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNb2RlbFBsYXllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkI0MTE1MjczMkYwQzcwMEEyRDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkMyQjQxMTYyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTIxMjczMzVDQjkwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMjMyNzMzNUUxRjAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRHVtbXlNb2RlbFBsYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzJCNDEyNDI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMyQ0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNXZWJHTENvbnRleHRFdmVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY3QTE0MEYxRDU4MDAzODc5QkUgLyog
SlNXZWJHTENvbnRleHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU1dlYkdMQ29udGV4dEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyQ0NBMEUyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIzNzUwLDEwICsyMzc2NCwxNiBAQAogCQk3MUY4NDlDQzI1NjVBQjdFMDA4
QzM3RjIgLyogbW9kZWwtZWxlbWVudCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJQkMyQjQxMjIyNzMzNUUwQzAwQTJEMTkxIC8qIGR1bW15ICovLAogCQkJ
CTcxQTNEMTgwMjU2MkI4MjUwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmNwcCAqLywKIAkJ
CQk3MUEzRDE3RDI1NjJCODI0MDA2NEUyQTYgLyogSFRNTE1vZGVsRWxlbWVudC5oICovLAogCQkJ
CTcxQTNEMTdGMjU2MkI4MjQwMDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmlkbCAqLywKLQkJ
CQk3MUNBQTNEOTI2OEQwQkY5MDBGMjU0MTAgLyogSFRNTE1vZGVsRWxlbWVudENvY29hLm1tICov
LAorCQkJCUJDMkI0MTE0MjczMkYwNjIwMEEyRDE5MSAvKiBNb2RlbFBsYXllci5jcHAgKi8sCisJ
CQkJQkMyQjQxMTMyNzMyRjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMy
QjQxMTIyNzMyRjAzQzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmNwcCAqLywKKwkJCQlC
QzJCNDEwRTI3MzJFRkU0MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCAqLywKKwkJCQlC
QzJCNDExNjI3MzJGMEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJ
CQkJQkMyQjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gIm1vZGVsLWVsZW1lbnQiOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTI4MzMxLDYgKzI4MzUxLDE3IEBACiAJCQlwYXRoID0ganM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEyMjI3MzM1RTBDMDBBMkQxOTEgLyogZHVt
bXkgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0
MTI0MjczMzVFMUYwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJC
NDEyMzI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0
MTIxMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAor
CQkJCUJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIu
aCAqLywKKwkJCSk7CisJCQlwYXRoID0gZHVtbXk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9tICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTMzMjAyLDYgKzMzMjMzLDggQEAK
IAkJCQk4MUY2NUZGNjEzNzg4RkFBMDBGRjZGMkQgLyogRHJhZ1N0YXRlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRHJhd0dseXBoc1JlY29yZGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MTBBOTFGNjI0RDMyRERDMDBCRkQ4OUMgLyogRHVhbHNob2Nr
M0hJREdhbWVwYWQuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJCNDEzMTI3MzRB
MDg2MDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyogRHVtbXlTcGVlY2hSZWNvZ25pdGlvblBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4NURGODI2RTgyMkM3MDAwRUM2QTcgLyog
RHVtbXlTdG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkE2NkYxMTc0MkJE
ODYwMEMyMDI1MSAvKiBEeW5hbWljTGlua2VySW50ZXJwb3NpbmcuaCBpbiBIZWFkZXJzICovLApA
QCAtMzUxMTIsNiArMzUxNDUsOSBAQAogCQkJCUNERjJCMDE5MTgyMDU0MDcwMEYyQjQyNCAvKiBN
b2NrVHJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzE1NjEwQzIzNEMxQ0ExMDA4RkM3QUIg
LyogTW9ja1dlYkF1dGhlbnRpY2F0aW9uQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkRDOEQzOTgyNUYyRkU5NzAwQ0ZDQkFCIC8qIE1vZGVsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlCQzJCNDExNzI3MzJGNDFFMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUJDMkI0MTE5MjczMkY0MjkwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTgyNzMyRjQyMzAwQTJEMTkxIC8qIE1vZGVsUGxheWVy
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTcwOUEwMUZF
MUUzRDBCREQwMDZCMEQ0QyAvKiBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kLmggaW4gSGVhZGVycyAq
LywKIAkJCQlFMzIwMUMxQTFGOEU4MjEzMDA3NkEwMzIgLyogTW9kdWxlRmV0Y2hQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkRvY3Vt
ZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRy
YWdDbGllbnQuaCIKKyNpbmNsdWRlICJEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCIKICNpbmNsdWRlICJEdW1teVN0
b3JhZ2VQcm92aWRlci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgpAQCAtNTg4LDEyICs1
ODksNiBAQCB2b2lkIEVtcHR5Q2hyb21lQ2xpZW50Ojp0YWtlTW9kZWxFbGVtZW50CiB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIEVtcHR5Q2hy
b21lQ2xpZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKSBjb25zdAotewotfQotI2VuZGlmCi0KIHZvaWQgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmlu
ZyYsIFBvbGljeUNoZWNrSWRlbnRpZmllciwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmKQogewogfQpA
QCAtMTE5OCw3ICsxMTkzLDggQEAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb25X
aXRoRQogICAgICAgICBtYWtlVW5pcXVlUmVmPEVtcHR5TWVkaWFSZWNvcmRlclByb3ZpZGVyPigp
LAogICAgICAgICBFbXB0eUJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Y3JlYXRlKCksCiAgICAg
ICAgIER1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5p
cXVlUmVmPER1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVt
bXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlNb2RlbFBs
YXllclByb3ZpZGVyPigpCiAgICAgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0
eUNocm9tZUNsaWVudD4gZHVtbXlDaHJvbWVDbGllbnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMiwxMCArMjIyLDYgQEAgY2xh
c3MgRW1wdHlDaHJvbWVDbGllbnQgOiBwdWJsaWMgQ2hyb21lQwogI2VuZGlmCiAKICAgICBSZWZQ
dHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxl
bmFtZXMgKi8pIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotI2lmIEVOQUJMRShBUktJVF9J
TkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogfTsKIAogRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQmIGVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjg1NTQwKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjA4LDkg
KzYwOCw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQog
ICAgIHZpcnR1YWwgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQpIGNvbnN0IHsgfQogI2VuZGlmCi0jaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2aXJ0dWFsIHZvaWQgbW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJikgY29uc3QgeyB9OwotI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnRBcHBsZVBheUFNU1VJU2Vzc2lvbihjb25zdCBVUkwmLCBjb25zdCBBcHBsZVBheUFNU1VJUmVx
dWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxib29sPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihzdGQ6Om51bGxvcHQpOyB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5LDYgKzg5LDcgQEAKICNpbmNsdWRl
ICJMb3dQb3dlck1vZGVOb3RpZmllci5oIgogI2luY2x1ZGUgIk1lZGlhQ2FuU3RhcnRMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1ZGUgIk1vZGVs
UGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJQYWdl
Q29sb3JTYW1wbGVyLmgiCiAjaW5jbHVkZSAiUGFnZUNvbmZpZ3VyYXRpb24uaCIKQEAgLTMzNyw2
ICszMzgsNyBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAg
LCBtX3Blcm1pc3Npb25Db250cm9sbGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucGVybWlz
c2lvbkNvbnRyb2xsZXIpKQogICAgICwgbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZShXVEZNb3Zl
KHBhZ2VDb25maWd1cmF0aW9uLnJlcG9ydGluZ0VuZHBvaW50c0NhY2hlKSkKICAgICAsIG1fc3Rv
cmFnZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uc3RvcmFnZVByb3ZpZGVyKSkK
KyAgICAsIG1fbW9kZWxQbGF5ZXJQcm92aWRlcihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLm1v
ZGVsUGxheWVyUHJvdmlkZXIpKQogewogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7
CiAKQEAgLTM3OTUsNCArMzc5Nyw5IEBAIFN0b3JhZ2VDb25uZWN0aW9uJiBQYWdlOjpzdG9yYWdl
Q29ubmVjdGkKICAgICByZXR1cm4gbV9zdG9yYWdlUHJvdmlkZXItPnN0b3JhZ2VDb25uZWN0aW9u
KCk7CiB9CiAKK01vZGVsUGxheWVyUHJvdmlkZXImIFBhZ2U6Om1vZGVsUGxheWVyUHJvdmlkZXIo
KQoreworICAgIHJldHVybiBtX21vZGVsUGxheWVyUHJvdmlkZXIuZ2V0KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyODU1NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEy
NSw3IEBAIGNsYXNzIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcjsKIGNsYXNzIE1lZGlhUGxheWJhY2tU
YXJnZXQ7CiBjbGFzcyBNZWRpYVJlY29yZGVyUHJvdmlkZXI7CiBjbGFzcyBNZWRpYVNlc3Npb25D
b29yZGluYXRvclByaXZhdGU7CitjbGFzcyBNb2RlbFBsYXllclByb3ZpZGVyOwogY2xhc3MgUGFn
ZUNvbmZpZ3VyYXRpb247CiBjbGFzcyBQYWdlQ29uc29sZUNsaWVudDsKIGNsYXNzIFBhZ2VEZWJ1
Z2dhYmxlOwpAQCAtOTA0LDYgKzkwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBQ
ZXJtaXNzaW9uQ29udHJvbGxlciYgcGVybWlzc2lvbkNvbnRyb2xsZXIoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCBTdG9yYWdlQ29ubmVjdGlvbiYgc3RvcmFnZUNvbm5lY3Rpb24oKTsKIAorICAgIE1v
ZGVsUGxheWVyUHJvdmlkZXImIG1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKwogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgTmF2aWdhdGlvbiB7CiAgICAgICAgIFJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbjsK
QEAgLTEyNDAsNiArMTI0Myw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFBlcm1pc3Npb25Db250cm9s
bGVyPiBtX3Blcm1pc3Npb25Db250cm9sbGVyOwogICAgIFJlZlB0cjxSZXBvcnRpbmdFbmRwb2lu
dHNDYWNoZT4gbV9yZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKICAgICBVbmlxdWVSZWY8U3RvcmFn
ZVByb3ZpZGVyPiBtX3N0b3JhZ2VQcm92aWRlcjsKKyAgICBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQ
cm92aWRlcj4gbV9tb2RlbFBsYXllclByb3ZpZGVyOwogCiAjaWYgRU5BQkxFKElNQUdFX0FOQUxZ
U0lTKQogICAgIHVzaW5nIENhY2hlZFRleHRSZWNvZ25pdGlvblJlc3VsdCA9IHN0ZDo6cGFpcjxU
ZXh0UmVjb2duaXRpb25SZXN1bHQsIEludFJlY3Q+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJMaWJXZWJS
VENQcm92aWRlci5oIgogI2luY2x1ZGUgIk1lZGlhUmVjb3JkZXJQcm92aWRlci5oIgorI2luY2x1
ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJQZXJmb3JtYW5jZUxvZ2dpbmdD
bGllbnQuaCIKICNpbmNsdWRlICJQZXJtaXNzaW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlBs
dWdpbkluZm9Qcm92aWRlci5oIgpAQCAtNjIsNyArNjMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50LCBSZWY8
U29ja2V0UHJvdmlkZXI+JiYgc29ja2V0UHJvdmlkZXIsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92
aWRlcj4mJiBsaWJXZWJSVENQcm92aWRlciwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmIGNh
Y2hlU3RvcmFnZVByb3ZpZGVyLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiB1c2VyQ29udGVu
dFByb3ZpZGVyLCBSZWY8QmFja0ZvcndhcmRDbGllbnQ+JiYgYmFja0ZvcndhcmRDbGllbnQsIFJl
ZjxDb29raWVKYXI+JiYgY29va2llSmFyLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
PiYmIHByb2dyZXNzVHJhY2tlckNsaWVudCwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYm
IGxvYWRlckNsaWVudEZvck1haW5GcmFtZSwgVW5pcXVlUmVmPFNwZWVjaFJlY29nbml0aW9uUHJv
dmlkZXI+JiYgc3BlZWNoUmVjb2duaXRpb25Qcm92aWRlciwgVW5pcXVlUmVmPE1lZGlhUmVjb3Jk
ZXJQcm92aWRlcj4mJiBtZWRpYVJlY29yZGVyUHJvdmlkZXIsIFJlZjxCcm9hZGNhc3RDaGFubmVs
UmVnaXN0cnk+JiYgYnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5LCBSZWY8UGVybWlzc2lvbkNvbnRy
b2xsZXI+JiYgcGVybWlzc2lvbkNvbnRyb2xsZXIsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+
JiYgc3RvcmFnZVByb3ZpZGVyKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VDb25maWd1cmF0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4mJiBlZGl0
b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2NrZXRQcm92aWRlciwgVW5pcXVlUmVm
PExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdl
UHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJlZjxVc2VyQ29udGVudFByb3ZpZGVy
PiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBiYWNrRm9y
d2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVKYXIsIFVuaXF1ZVJlZjxQcm9ncmVz
c1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xpZW50LCBVbmlxdWVSZWY8RnJhbWVM
b2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lLCBVbmlxdWVSZWY8U3BlZWNo
UmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLCBVbmlxdWVS
ZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVjb3JkZXJQcm92aWRlciwgUmVmPEJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RDaGFubmVsUmVnaXN0cnksIFJlZjxQ
ZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29udHJvbGxlciwgVW5pcXVlUmVmPFN0
b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIsIFVuaXF1ZVJlZjxNb2RlbFBsYXllclBy
b3ZpZGVyPiYmIG1vZGVsUGxheWVyUHJvdmlkZXIpCiAgICAgOiBzZXNzaW9uSUQoc2Vzc2lvbklE
KQogICAgICwgZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKICAgICAsIHNvY2tl
dFByb3ZpZGVyKFdURk1vdmUoc29ja2V0UHJvdmlkZXIpKQpAQCAtNzgsNiArNzksNyBAQCBQYWdl
Q29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMCiAgICAgLCBtZWRpYVJlY29yZGVy
UHJvdmlkZXIoV1RGTW92ZShtZWRpYVJlY29yZGVyUHJvdmlkZXIpKQogICAgICwgcGVybWlzc2lv
bkNvbnRyb2xsZXIoV1RGTW92ZShwZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAgLCBzdG9yYWdl
UHJvdmlkZXIoV1RGTW92ZShzdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbW9kZWxQbGF5ZXJQcm92
aWRlcihXVEZNb3ZlKG1vZGVsUGxheWVyUHJvdmlkZXIpKQogewogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDkgKzQ2LDkgQEAgY2xhc3MgQXV0aGVudGljYXRvckNvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3Mg
QmFja0ZvcndhcmRDbGllbnQ7CiBjbGFzcyBCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk7CiBjbGFz
cyBDYWNoZVN0b3JhZ2VQcm92aWRlcjsKLWNsYXNzIENvb2tpZUphcjsKIGNsYXNzIENocm9tZUNs
aWVudDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OworY2xhc3MgQ29va2llSmFyOwogY2xhc3Mg
RGF0YWJhc2VQcm92aWRlcjsKIGNsYXNzIERpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwogY2xhc3Mg
RHJhZ0NsaWVudDsKQEAgLTU3LDYgKzU3LDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnQ7CiBj
bGFzcyBJbnNwZWN0b3JDbGllbnQ7CiBjbGFzcyBMaWJXZWJSVENQcm92aWRlcjsKIGNsYXNzIE1l
ZGlhUmVjb3JkZXJQcm92aWRlcjsKK2NsYXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQ
YXltZW50Q29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQ7
CiBjbGFzcyBQZXJtaXNzaW9uQ29udHJvbGxlcjsKQEAgLTY1LDYgKzY2LDcgQEAgY2xhc3MgUHJv
Z3Jlc3NUcmFja2VyQ2xpZW50OwogY2xhc3MgUmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGU7CiBjbGFz
cyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXI7CitjbGFz
cyBTcGVlY2hTeW50aGVzaXNDbGllbnQ7CiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI7
CiBjbGFzcyBTdG9yYWdlUHJvdmlkZXI7CiBjbGFzcyBVc2VyQ29udGVudFByb3ZpZGVyOwpAQCAt
NzIsMTIgKzc0LDExIEBAIGNsYXNzIFVzZXJDb250ZW50VVJMUGF0dGVybjsKIGNsYXNzIFZhbGlk
YXRpb25NZXNzYWdlQ2xpZW50OwogY2xhc3MgVmlzaXRlZExpbmtTdG9yZTsKIGNsYXNzIFdlYkdM
U3RhdGVUcmFja2VyOwotY2xhc3MgU3BlZWNoU3ludGhlc2lzQ2xpZW50OwogCiBjbGFzcyBQYWdl
Q29uZmlndXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRp
b24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9S
VCBQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5pcXVlUmVmPEVkaXRvckNsaWVu
dD4mJiwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+
JiYsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+
JiYsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tpZUphcj4mJiwgVW5pcXVlUmVm
PFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZyYW1lTG9hZGVyQ2xpZW50PiYm
LCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiwgVW5pcXVlUmVmPE1lZGlh
UmVjb3JkZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiwgUmVm
PFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlvbihQQUw6OlNlc3Npb25JRCwgVW5p
cXVlUmVmPEVkaXRvckNsaWVudD4mJiwgUmVmPFNvY2tldFByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8
TGliV2ViUlRDUHJvdmlkZXI+JiYsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiwgUmVmPFVz
ZXJDb250ZW50UHJvdmlkZXI+JiYsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiwgUmVmPENvb2tp
ZUphcj4mJiwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiwgVW5pcXVlUmVmPEZy
YW1lTG9hZGVyQ2xpZW50PiYmLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4m
JiwgVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4mJiwgUmVmPEJyb2FkY2FzdENoYW5u
ZWxSZWdpc3RyeT4mJiwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYmLCBVbmlxdWVSZWY8U3Rv
cmFnZVByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TW9kZWxQbGF5ZXJQcm92aWRlcj4mJik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgflBhZ2VDb25maWd1cmF0aW9uKCk7CiAgICAgUGFnZUNvbmZpZ3VyYXRp
b24oUGFnZUNvbmZpZ3VyYXRpb24mJik7CiAKQEAgLTE0NSw2ICsxNDYsOCBAQCBwdWJsaWM6CiAK
ICAgICBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IHBlcm1pc3Npb25Db250cm9sbGVyOwogICAg
IFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IHN0b3JhZ2VQcm92aWRlcjsKKworICAgIFVuaXF1
ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtb2RlbFBsYXllclByb3ZpZGVyOwogfTsKIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmNwcAkocmV2aXNp
b24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiTW9kZWwuaCIKIAotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotCiAjaW5jbHVk
ZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw1
ICs1NiwzIEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGMKIH0KIAog
fQotCi0jZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDgg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkKLQog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMTAxLDUgKzk5LDMgQEAgUmVmUHRyPE1vZGVsPiBNb2Rl
bDo6ZGVjb2RlKERlY29kZXImIGRlYwogV0VCQ09SRV9FWFBPUlQgV1RGOjpUZXh0U3RyZWFtJiBv
cGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IE1vZGVsJik7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNT0RFTF9FTEVNRU5UKQpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHJldmlz
aW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk3LDEzICsxMDk3LDEzIEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVDb25maWd1cmEKICNpZiBFTkFCTEUoTU9ERUxfRUxFTUVOVCkK
ICAgICBlbHNlIGlmIChpczxSZW5kZXJNb2RlbD4ocmVuZGVyZXIoKSkpIHsKICAgICAgICAgYXV0
byBlbGVtZW50ID0gZG93bmNhc3Q8SFRNTE1vZGVsRWxlbWVudD4ocmVuZGVyZXIoKS5lbGVtZW50
KCkpOwotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGlmIChh
dXRvKiBwbGF0Zm9ybUxheWVyID0gZWxlbWVudC0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICAg
ICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihwbGF0Zm9ybUxh
eWVyLCBHcmFwaGljc0xheWVyOjpDb250ZW50c0xheWVyUHVycG9zZTo6TW9kZWwpOwotI2Vsc2UK
LSAgICAgICAgaWYgKGF1dG8gbW9kZWwgPSBlbGVtZW50LT5tb2RlbCgpKQorCisgICAgICAgIC8v
IFNvbWUgTW9kZWxQbGF5ZXJzIHVzZSBhIHBsYXRmb3JtTGF5ZXIoKSBhbmQgc29tZSBwYXNzIHRo
ZSBNb2RlbCB0byB0aGUgbGF5ZXIgYXMgY29udGVudHMsCisgICAgICAgIC8vIGJ1dCB0aGlzIGlz
IGEgcnVudGltZSBkZWNpc2lvbi4KKyAgICAgICAgaWYgKGVsZW1lbnQtPnVzZXNQbGF0Zm9ybUxh
eWVyKCkpIHsKKyAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb1BsYXRm
b3JtTGF5ZXIoZWxlbWVudC0+cGxhdGZvcm1MYXllcigpLCBHcmFwaGljc0xheWVyOjpDb250ZW50
c0xheWVyUHVycG9zZTo6TW9kZWwpOworICAgICAgICB9IGVsc2UgaWYgKGF1dG8gbW9kZWwgPSBl
bGVtZW50LT5tb2RlbCgpKQogICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50
c1RvTW9kZWwoV1RGTW92ZShtb2RlbCkpOwotI2VuZGlmCiAKICAgICAgICAgbGF5ZXJDb25maWdD
aGFuZ2VkID0gdHJ1ZTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NTQwKQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MyBAQAor
MjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFj
dG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU291cmNlcy50eHQ6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVs
ZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Om1vZGVs
RWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
Om1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWw6IEFkZGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViS2l0OjpXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVy
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQ
bGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYzogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXI6OkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKToKKyAgICAg
ICAgKFdlYktpdDo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6On5BUktpdElubGluZVBy
ZXZpZXdNb2RlbFBsYXllcik6CisgICAgICAgIChXZWJLaXQ6OnNoYXJlZE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KToKKyAgICAgICAgKFdlYktpdDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0
TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZSk6CisgICAgICAgIChXZWJLaXQ6OkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpjbGVhckZpbGUpOgorICAgICAgICAoV2ViS2l0OjpB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpsYXllcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6
c3RhcnRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6bW9kZWxF
bGVtZW50RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fYXBwSGlnaGxpZ2h0
c1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bW9kZWxFbGVt
ZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyk6CisKIDIwMjEtMTEtMDkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgaW50ZXJuYWwgYnVpbGQgZml4IGFmdGVyIHIyODU0NDQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSw3IEBAIHNldChXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTGF1bmNo
aW5nIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTWVkaWFDYWNoZSIKICAgICAiJHtX
RUJLSVRfRElSfS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIgorICAgICIke1dFQktJVF9ESVJ9L1dl
YlByb2Nlc3MvTW9kZWwiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9OZXR3b3JrIgog
ICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTmV0d29yay93ZWJydGMiCiAgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgpJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CShyZXZp
c2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC01OTIsNiArNTkyLDggQEAgV2ViUHJvY2Vzcy9NZWRpYVNlc3Npb24vUmVtb3RlTWVkaWFT
ZXNzaQogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURldmljZVNhbmRib3hFeHRlbnNpb25z
LmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCiAKK1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAK
KwogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCiBXZWJQcm9jZXNzL0dQ
VS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5jcHAKIFdlYlByb2Nlc3MvR1BVL2dy
YXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU1LDYgKzY1NSw4IEBAIFdlYlByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU0KIAogV2ViUHJvY2Vzcy9NZWRpYUNhY2hlL1dl
Yk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCiAKK1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCisKIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERG
UGx1Z2luLm1tCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbkFubm90YXRpb24ubW0K
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hvaWNlQW5ub3RhdGlvbi5tbQpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01vZGVsRWxlbWVudENvbnRyb2xsZXIu
aAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVt
ZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRl
UHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOworICAgIHZvaWQgbW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyhVUkwsIFN0cmluZywgV2ViQ29yZTo6RmxvYXRTaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRpZgogCiBwcml2YXRlOgpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyODU1NDAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDgyNSwxNSArMTA4MjUsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZU1vZGVs
RWxlbWVudEZ1bGxzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19N
QUMpCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25z
dCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXplKQordm9pZCBXZWJQYWdlUHJveHk6
Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4
cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1vZGVsRWxlbWVudENvbnRyb2xsZXIo
KS0+bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb250ZXh0LCB1cmwsIHV1aWQsIHNpemUp
OwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNv
bnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17Ci0gICAgaWYgKGhhc1J1bm5pbmdQcm9j
ZXNzKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vZGVsRWxlbWVudFByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoY29udGV4dCwgdXVpZCwgY29udGV4dElkKSk7CisgICAgbW9k
ZWxFbGVtZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KHVybCwg
dXVpZCwgc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyODU1NDAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtNTkwLDggKzU5MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRG
dWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50
TGF5ZXJJZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQot
ICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZs
b2F0U2l6ZSYpOwotICAgIHZvaWQgbW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJ
ZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHVpbnQzMl90
KTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291
cmNlRXJyb3I+KT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfQU1TX1VJKQpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC01ODcsNyArNTg3LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBUYWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZW50TGF5ZXJJRCkKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCi0gICAgTW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhzdHJ1Y3QgV2Vi
Q29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQsIFVSTCB1cmwsIFN0cmluZyB1dWlk
LCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkgLT4gKEV4
cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
cj4gcmVzdWx0KSBBc3luYwogI2VuZGlmCiAKICAgICByZXF1ZXN0UGVybWlzc2lvbihzdHJ1Y3Qg
V2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgc3RydWN0IFdlYkNvcmU6OlBlcm1pc3Npb25E
ZXNjcmlwdG9yIGRlc2NyaXB0b3IpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UGVybWlzc2lv
blN0YXRlIHN0YXRlKSBBc3luYwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
TW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRyb2xsZXJDb2NvYS5tbQkocmV2aXNp
b24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50
Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdT
UEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAjZW5kaWYKQEAgLTEyNCwxMCArMTI1
LDEyIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6dGFrZU1vZGVsRWwKIAogI2lmIEVO
QUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAKLXZvaWQgTW9kZWxFbGVtZW50Q29udHJv
bGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50
Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHV1aWQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3ZvaWQgTW9kZWxFbGVtZW50Q29udHJv
bGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhVUkwgZmlsZVVSTCwgU3RyaW5nIHV1
aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV93ZWJQYWdlUHJveHkucHJlZmVy
ZW5jZXMoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCisgICAgaWYgKCFtX3dlYlBhZ2VQcm94eS5w
cmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIHsgV2ViQ29yZTo6
ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAiTW9kZWwgZWxlbWVudCBkaXNhYmxl
ZCJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBhdXRvIG5zVVVJRCA9IGFk
b3B0TlMoW1tOU1VVSUQgYWxsb2NdIGluaXRXaXRoVVVJRFN0cmluZzp1dWlkXSk7CiAgICAgYXV0
byBwcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQcmV2aWV3SW5zdGFuY2UoKSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSBV
VUlEOm5zVVVJRC5nZXQoKV0pOwpAQCAtMTQwLDMyICsxNDMsNDkgQEAgdm9pZCBNb2RlbEVsZW1l
bnRDb250cm9sbGVyOjptb2RlbEVsZW1lbgogICAgIGVsc2UKICAgICAgICAgaXRlcmF0b3ItPnZh
bHVlID0gcHJldmlldzsKIAorICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBub3QganVzdCB1c2lu
ZyBub3JtYWwgVVJMIC0+IE5TVVJMIGNvbnZlcnNpb24/CisgICAgYXV0byB1cmwgPSBhZG9wdE5T
KFtbTlNVUkwgYWxsb2NdIGluaXRGaWxlVVJMV2l0aFBhdGg6ZmlsZVVSTC5maWxlU3lzdGVtUGF0
aCgpXSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgIFdlYWtQ
dHIgd2Vha1RoaXMgeyAqdGhpcyB9OwotICAgIGF1dG8gZWxlbWVudENvbnRleHRDb3B5ID0gY29u
dGV4dDsKLSAgICBhdXRvIHV1aWRDb3B5ID0gdXVpZDsKLSAgICBOU1VSTCAqdXJsID0gW05TVVJM
IGZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0ZW1QYXRoKCldOwotICAgIFtwcmV2aWV3
IHNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21wbGV0aW9uSGFuZGxlcjpeKE5TRXJyb3IgKiBf
TnVsbGFibGUgY29udGV4dEVycm9yKSB7CisgICAgW3ByZXZpZXcgc2V0dXBSZW1vdGVDb25uZWN0
aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbd2Vha1RoaXMgPSBXZWFrUHRy
IHsgKnRoaXMgfSwgcHJldmlldywgdXVpZCA9IFdURk1vdmUodXVpZCksIHVybCA9IFdURk1vdmUo
dXJsKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKE5T
RXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGNv
bnRleHRFcnJvcikgewotICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBj
cmVhdGUgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6ICVALiIsIHV1aWRDb3B5LnV0Zjgo
KS5kYXRhKCksIFtjb250ZXh0RXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAgICAgICAg
ICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gY3JlYXRlIHJlbW90ZSBjb25uZWN0aW9u
IGZvciB1dWlkICVzOiAlQC4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksIGNvbnRleHRFcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBjb250ZXh0
RXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkVzdGFi
bGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAlcy4iLCB1dWlkQ29weS51dGY4KCku
ZGF0YSgpKTsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkVzdGFibGlzaGVkIHJlbW90ZSBj
b25uZWN0aW9uIHdpdGggVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgICAg
IFtwcmV2aWV3IHByZXBhcmVQcmV2aWV3T2ZGaWxlQXRVUkw6dXJsIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNFcnJvciAqIF9OdWxsYWJsZSBsb2FkRXJyb3IpIHsKKyAgICAgICAgW3ByZXZpZXcgcHJl
cGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJs
b2NrUHRyKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBwcmV2aWV3LCB1dWlkID0gV1RG
TW92ZSh1dWlkKSwgdXJsID0gV1RGTW92ZSh1cmwpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNFcnJvciAqIF9OdWxsYWJsZSBsb2FkRXJyb3IpIG11
dGFibGUgewogICAgICAgICAgICAgaWYgKGxvYWRFcnJvcikgewotICAgICAgICAgICAgICAgIExP
RyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gbG9hZCBmaWxlIGZvciB1dWlkICVzOiAlQC4iLCB1
dWlkQ29weS51dGY4KCkuZGF0YSgpLCBbbG9hZEVycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSk7
CisgICAgICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUg
Zm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgbG9hZEVycm9yLmxvY2FsaXpl
ZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBsb2FkRXJy
b3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3aXRoIFVVSUQgJXMuIiwgdXVpZENvcHku
dXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiTG9hZGVkIGZp
bGUgd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgZWxlbWVudENvbnRleHRDb3B5LCB1dWlkQ29weSwg
Y29udGV4dElkID0gW3ByZXZpZXcgY29udGV4dElkXV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAg
ICAgICB3ZWFrVGhpcy0+bV93ZWJQYWdlUHJveHkubW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFp
bkNvbnRleHRJZChlbGVtZW50Q29udGV4dENvcHksIHV1aWRDb3B5LCBjb250ZXh0SWQpOworICAg
ICAgICAgICAgYXV0byBjb250ZXh0SWQgPSBbcHJldmlldyBjb250ZXh0SWRdOworICAgICAgICAg
ICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHV1aWQg
PSBXVEZNb3ZlKHV1aWQpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBjb250ZXh0SWRdICgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV9wYWlyKHV1aWQsIGNvbnRleHRJZCkpOwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH1dOwotICAgIH1dOworICAgICAgICB9KS5nZXQoKV07CisgICAg
fSkuZ2V0KCldOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NTIyMCw2ICs1MjIwLDEwIEBACiAJCUJDMjA1MjgwMTFDOTQyODQwMDhGMzM3NSAvKiBXS0J1bmRs
ZVBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tCdW5kbGVQ
YWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyNjUyMTIxMTgyNjA4MTAw
MjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBEcmF3aW5nQXJlYVByb3h5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhUHJveHkuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTBE
MjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExQTI3MzJGNjZFMDBBMkQxOTEgLyogV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNb2RlbFBsYXllclByb3Zp
ZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTFCMjczMkY2NkUwMEEy
RDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
Yk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMyRDAyMTgxMkFDNDI2QzAwRTcz
MkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDY1
RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
OTc3NCw2ICs5Nzc4LDcgQEAKIAkJCQkzM0QzQTNCRDEzMzk2MDk4MDA3MDlCRTQgLyogTWVkaWFD
YWNoZSAqLywKIAkJCQkwNzM2Qjc1MjI2MEQwMzlGMDBFMDY5OTQgLyogTWVkaWFTZXNzaW9uICov
LAogCQkJCTRBNDEwRjQxMTlBRjdCMjcwMDJFQkFCNSAvKiBNZWRpYVN0cmVhbSAqLywKKwkJCQlC
QzJCNDEwQTI3MzJFRjY1MDBBMkQxOTEgLyogTW9kZWwgKi8sCiAJCQkJNTEwNUIwRDIxNjJGN0E1
RTAwRTI3NzA5IC8qIE5ldHdvcmsgKi8sCiAJCQkJMzEwOTk5NzQxNDZDOEFBODAwMjlERUI5IC8q
IE5vdGlmaWNhdGlvbnMgKFVzZXIpICovLAogCQkJCTFBNkZCN0FBMTFFNjRCNDkwMERCMTM3MSAv
KiBQbHVnaW5zICovLApAQCAtMTA2MDMsNiArMTA2MDgsMjUgQEAKIAkJCXBhdGggPSBjOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkMyQjQxMEEyNzMyRUY2NTAwQTJEMTkx
IC8qIE1vZGVsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlCQzJCNDEwQjI3MzJFRjc1MDBBMkQxOTEgLyogbWFjICovLAorCQkJCUJDMkI0MTFCMjczMkY2
NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDEx
QTI3MzJGNjZFMDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsK
KwkJCXBhdGggPSBNb2RlbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUJD
MkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTBDMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllci5oICovLAorCQkJCUJDMkI0MTBEMjczMkVGOTYwMEEyRDE5
MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5tbSAqLywKKwkJCSk7CisJCQlwYXRo
ID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQkMyRTZFNzQxMTQx
OTZGMDAwQTYzQjFFIC8qIFBsYXRmb3JtICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJ
KHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4IEBACiAjaW5jbHVkZSA8d3RmL1VS
TFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIEVOQUJM
RShBUktJVF9JTkxJTkVfUFJFVklFVykKLSNpbmNsdWRlIDxXZWJDb3JlL0hUTUxNb2RlbEVsZW1l
bnQuaD4KKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCiAjZW5kaWYKIAogI2lmICFPUyhXSU5ET1dT
KQpAQCAtNTc2LDkgKzU3Niw5IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0V2Vic2l0ZURhdGFTdG9y
ZVBhcmEKICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0TWVkaWFDYWNoZURp
cmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3RvcnkpOwogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVW
SUVXX01BQykKICAgICBpZiAoIXBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnku
aXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5
KTsKKyAgICAgICAgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNldE1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOwog
I2VuZGlmCiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChwYXJhbWV0ZXJz
LnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVs
UGxheWVyUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViTW9kZWxQbGF5ZXJQcm92
aWRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllci5oPgorCisjaWYgRU5BQkxF
KEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbmNsdWRlICJBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJNb2RlbFBs
YXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVyKFdlYlBhZ2UmIHBhZ2UpCisgICAg
OiBtX3BhZ2UgeyBwYWdlIH0KK3sKKyAgICBVTlVTRURfUEFSQU0obV9wYWdlKTsKK30KKworV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlcjo6fldlYk1vZGVsUGxheWVyUHJvdmlkZXIoKSA9IGRlZmF1bHQ7
CisKKy8vIE1BUks6IC0gV2ViQ29yZTo6TW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisK
K1JlZlB0cjxXZWJDb3JlOjpNb2RlbFBsYXllcj4gV2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3Jl
YXRlTW9kZWxQbGF5ZXIoV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyNp
ZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorICAgIHJldHVybiBBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKG1fcGFnZSwgY2xpZW50KTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGNsaWVudCk7CisgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYKK30KKwor
fQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJv
dmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2Vi
TW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2Vi
Q29yZS9Nb2RlbFBsYXllclByb3ZpZGVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQYWdlOworCitjbGFzcyBXZWJNb2RlbFBsYXllclByb3ZpZGVyIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlkZXIgeworcHVibGljOgorICAgIFdlYk1vZGVsUGxh
eWVyUHJvdmlkZXIoV2ViUGFnZSYpOworICAgIHZpcnR1YWwgfldlYk1vZGVsUGxheWVyUHJvdmlk
ZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92
ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3JlOjpNb2RlbFBsYXllcj4gY3JlYXRl
TW9kZWxQbGF5ZXIoV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKSBmaW5hbDsKKworICAgIFdl
YlBhZ2UmIG1fcGFnZTsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9N
b2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVs
L21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllckNsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9D
b21waWxlci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKworT0JKQ19DTEFTUyBBU1ZJ
bmxpbmVQcmV2aWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6TW9kZWxQbGF5ZXIsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4geworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI+IGNyZWF0
ZShXZWJQYWdlJiwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcigpOworCisgICAgc3RhdGljIHZvaWQgc2V0TW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5nJik7CisKK3ByaXZhdGU6CisgICAg
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIoV2ViUGFnZSYsIFdlYkNvcmU6Ok1vZGVsUGxh
eWVyQ2xpZW50Jik7CisKKyAgICAvLyBXZWJDb3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisg
ICAgdmlydHVhbCB2b2lkIGxvYWQoV2ViQ29yZTo6TW9kZWwmLCBXZWJDb3JlOjpMYXlvdXRTaXpl
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIGxheWVyKCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIGNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmKTsKKyAgICB2b2lkIGNsZWFy
RmlsZSgpOworCisgICAgV2Vha1B0cjxXZWJQYWdlPiBtX3BhZ2U7CisgICAgV2Vha1B0cjxXZWJD
b3JlOjpNb2RlbFBsYXllckNsaWVudD4gbV9jbGllbnQ7CisKKyAgICBTdHJpbmcgbV9maWxlUGF0
aDsKKyAgICBSZXRhaW5QdHI8QVNWSW5saW5lUHJldmlldz4gbV9pbmxpbmVQcmV2aWV3OworfTsK
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMv
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5t
bQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW1wb3J0ICJBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllci5oIgorCisjaW1wb3J0ICJXZWJQYWdlLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHlN
ZXNzYWdlcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2RlbC5oPgorI2ltcG9ydCA8cGFsL3NwaS9t
YWMvU3lzdGVtUHJldmlld1NQSS5oPgorI2ltcG9ydCA8d3RmL1NvZnRMaW5raW5nLmg+CisjaW1w
b3J0IDx3dGYvVVVJRC5oPgorCitTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQXNzZXRWaWV3
ZXIpOworU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBBU1ZJbmxpbmVQcmV2aWV3KTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4g
QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdlLCBXZWJD
b3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKHBhZ2UsIGNsaWVudCkpOworfQorCitB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKKyAg
ICA6IG1fcGFnZSB7IHBhZ2UgfQorICAgICwgbV9jbGllbnQgeyBjbGllbnQgfQoreworfQorCitB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6fkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxh
eWVyKCkKK3sKKyAgICBjbGVhckZpbGUoKTsKK30KKworc3RhdGljIFN0cmluZyYgc2hhcmVkTW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OworICAgIHJldHVybiBzaGFy
ZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKK30KKworc3RhdGljIGNvbnN0IFN0cmluZyYg
bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHJldHVybiBzaGFyZWRNb2RlbEVs
ZW1lbnRDYWNoZURpcmVjdG9yeSgpOworfQorCit2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVs
UGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgp
Cit7CisgICAgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSA9IHBhdGg7Cit9CisK
K3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0ZUZpbGUoV2ViQ29yZTo6
TW9kZWwmIG1vZGVsU291cmNlKQoreworICAgIC8vIFRoZSBuZWVkIGZvciBhIGZpbGUgaXMgb25s
eSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBuYXR1cmUgb2YgQVNWSW5saW5lUHJldmlldywKKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY3LgorCisgICAg
Y2xlYXJGaWxlKCk7CisKKyAgICBhdXRvIHBhdGhUb0RpcmVjdG9yeSA9IG1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKHBhdGhUb0RpcmVjdG9yeS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gZGlyZWN0b3J5RXhpc3RzID0gRmlsZVN5c3RlbTo6Zmls
ZUV4aXN0cyhwYXRoVG9EaXJlY3RvcnkpOworICAgIGlmIChkaXJlY3RvcnlFeGlzdHMgJiYgRmls
ZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhwYXRoVG9EaXJlY3RvcnkpICE9IEZp
bGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFkaXJlY3RvcnlFeGlzdHMg
JiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhwYXRoVG9EaXJlY3RvcnkpKSB7Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZpbGVzIGFzIHdlbGwsIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjguCisgICAgYXV0byBmaWxlTmFt
ZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJp
bmcoKSkgKyAiLnVzZHoiOworICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlB
cHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBmaWxlTmFtZSk7CisgICAgYXV0byBm
aWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgsIEZpbGVTeXN0ZW06OkZpbGVPcGVu
TW9kZTo6V3JpdGUpOworICAgIGlmIChmaWxlIDw9IDApCisgICAgICAgIHJldHVybjsKKworICAg
IEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVsU291cmNlLmRhdGEoKS0+ZGF0YSgp
LCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxl
KGZpbGUpOworICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsKK30KKwordm9pZCBBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcjo6Y2xlYXJGaWxlKCkKK3sKKyAgICBpZiAobV9maWxlUGF0aC5p
c0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUo
bV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5U3RyaW5nKCk7Cit9CisKKy8vIE1B
Uks6IC0gV2ViQ29yZTo6TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorCit2b2lkIEFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpsb2FkKFdlYkNvcmU6Ok1vZGVsJiBtb2RlbFNvdXJjZSwgV2Vi
Q29yZTo6TGF5b3V0U2l6ZSBzaXplKQoreworICAgIGF1dG8gc3Ryb25nQ2xpZW50ID0gbV9jbGll
bnQuZ2V0KCk7CisgICAgaWYgKCFzdHJvbmdDbGllbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIHN0cm9uZ1BhZ2UgPSBtX3BhZ2UuZ2V0KCk7CisgICAgaWYgKCFzdHJvbmdQYWdlKSB7
CisgICAgICAgIHN0cm9uZ0NsaWVudC0+ZGlkRmFpbExvYWRpbmcoKnRoaXMsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtb2Rl
bFNvdXJjZS51cmwoKSwgIldlYlBhZ2UgZGVzdHJveWVkIl9zIH0pOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgY3JlYXRlRmlsZShtb2RlbFNvdXJjZSk7CisKKyAgICBtX2lubGluZVBy
ZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpXSk7Cisg
ICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjptb2Rl
bERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVVSUQgJXMgYW5kIHNpemUgJWYgeCAl
Zi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcpLnV0ZjgoKS5k
YXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisKKyAgICBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9IFt3ZWFrU2VsZiA9IFdlYWtQdHIg
eyAqdGhpcyB9XSAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIG11dGFibGUgeworICAgICAgICBhdXRvIHN0cm9uZ1Nl
bGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFzdHJvbmdTZWxmKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gc3Ryb25nQ2xpZW50ID0gc3Ryb25nU2VsZi0+bV9j
bGllbnQuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nQ2xpZW50KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVt
ZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoKSByZWNlaXZlZCBlcnJvciBmcm9tIFVJUHJvY2VzcyIpOworICAgICAgICAg
ICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqc3Ryb25nU2VsZiwgcmVzdWx0LmVycm9y
KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgYXV0byYgW3V1
aWQsIGNvbnRleHRJZF0gPSAqcmVzdWx0OworICAgICAgICBTdHJpbmcgZXhwZWN0ZWRVVUlEID0g
W3N0cm9uZ1NlbGYtPm1faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nOworCisgICAgICAg
IGlmICh1dWlkICE9IGV4cGVjdGVkVVVJRCkgeworICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVu
dCwgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWlu
Q29udGV4dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2ZWQgJXMgYnV0IGV4cGVjdGVkICVzLiIs
IHV1aWQudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRVVUlELnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqc3Ryb25nU2VsZiwgV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHsg
fSwgbWFrZVN0cmluZygiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZp
ZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAiLCB1dWlkLCAi
IGJ1dCBleHBlY3RlZCAiLCBleHBlY3RlZFVVSUQsICIuIikgfSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBbc3Ryb25nU2VsZi0+bV9pbmxpbmVQcmV2aWV3IHNl
dFJlbW90ZUNvbnRleHQ6Y29udGV4dElkXTsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4
dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIGZvciBVVUlE
ICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRG
aW5pc2hMb2FkaW5nKCpzdHJvbmdTZWxmKTsKKyAgICB9OworICAgIAorICAgIHN0cm9uZ1BhZ2Ut
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpNb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3KFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChtX2ZpbGVQYXRo
KSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nLCBzaXplKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworfQorCitQbGF0Zm9ybUxheWVyKiBBUktpdElubGluZVByZXZpZXdN
b2RlbFBsYXllcjo6bGF5ZXIoKQoreworICAgIHJldHVybiBbbV9pbmxpbmVQcmV2aWV3IGxheWVy
XTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2aXNpb24gMjg1NTQwKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTEgQEAKICNp
bmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShC
VUlMVF9JTl9OT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oPgorI2VuZGlm
CisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTkx
LDcgKzk2LDcgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZQogICAg
ICAgICB9OwogCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElGSUNBVElPTlMpCi0gICAgICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmJ1aWx0SW5Ob3RpZmlj
YXRpb25zRW5hYmxlZCgpICYmIGFsbG93ZWQpIHsKKyAgICAgICAgaWYgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNF
bmFibGVkKCkgJiYgYWxsb3dlZCkgewogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyOjpS
ZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihzZWN1cml0eU9yaWdpbi50b1N0cmlu
ZygpKSwgV1RGTW92ZShpbm5lclBlcm1pc3Npb25IYW5kbGVyKSwgbV9wYWdlLT5zZXNzaW9uSUQo
KS50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTMxLDEzICsxNTMxLDYgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnRha2VNb2RlbEVs
ZW1lbnRGdQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFD
KQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2Vi
Q29yZTo6SFRNTE1vZGVsRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBzaXplKSBjb25zdAotewotICAg
IG1fcGFnZS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGVsZW1lbnQsIHVybCwgdXVpZCwg
c2l6ZSk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBMRV9QQVlfQU1TX1VJKQogCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6c3RhcnRBcHBsZVBheUFNU1VJU2Vzc2lvbihjb25zdCBVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBBcHBsZVBheUFNU1VJUmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NTgsOSArNDU4LDYgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4o
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKSBj
b25zdCBmaW5hbDsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2Rl
bEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9BTVNf
VUkpCiAgICAgdm9pZCBzdGFydEFwcGxlUGF5QU1TVUlTZXNzaW9uKGNvbnN0IFVSTCYsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5QU1TVUlSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChz
dGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViTWVkaWFLZXlTdG9yYWdlTWFuYWdlci5o
IgogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3lzdGVtQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViTWVk
aWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNs
dWRlICJXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXIuaCIKQEAgLTI3MywxMCArMjc0
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdodFN0b3JhZ2UuaD4KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRN
TE1vZGVsRWxlbWVudC5oPgotI2VuZGlmCi0KICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAj
aW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogI2VuZGlmCkBAIC01NzUsNyArNTcyLDgg
QEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIAogICAgICAgICBtYWtl
VW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKnRoaXMpLAogICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVnaXN0cnkoKSwKICAgICAgICAgV2Vi
UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyksCi0gICAgICAgIG1ha2VVbmlxdWVS
ZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViU3RvcmFn
ZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYk1vZGVsUGxheWVyUHJvdmlk
ZXI+KCp0aGlzKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0g
bmV3IFdlYkNocm9tZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBA
IC03NzM5LDIxICs3NzM3LDYgQEAgdm9pZCBXZWJQYWdlOjp0YWtlTW9kZWxFbGVtZW50RnVsbHNj
cmVlbgogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQot
dm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxN
b2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHV1aWQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsKLSAgICBpZiAoYXV0byBlbGVtZW50
Q29udGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQpKQotICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKmVsZW1lbnRD
b250ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKLX0KLQotdm9pZCBXZWJQYWdlOjptb2RlbEVsZW1l
bnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQp
Ci17Ci0gICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNvbnRleHQoZWxlbWVudENvbnRleHQp
OwotICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PihlbGVtZW50KSkKLSAgICAg
ICAgZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudD4oKmVsZW1lbnQpLmlubGluZVBy
ZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29udGV4dElkKTsKLX0KLSNlbmRpZgotCiB2
b2lkIFdlYlBhZ2U6OnNjcm9sbFRvUmVjdChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9yaWdpbikKIHsKICAgICBtYWluRnJh
bWVWaWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50KHRhcmdldFJlY3QubWluWE1pbllD
b3JuZXIoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsMTAgKzIyMCw2IEBAIGNsYXNzIFN1
YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVxdWVzdDsKIGNsYXNzIFZpc2libGVQ
b3NpdGlvbjsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLWNsYXNzIEhUTUxN
b2RlbEVsZW1lbnQ7Ci0jZW5kaWYKLQogZW51bSBTeW50aGV0aWNDbGlja1R5cGUgOiBpbnQ4X3Q7
CiBlbnVtIGNsYXNzIENPRVBEaXNwb3NpdGlvbiA6IGJvb2w7CiBlbnVtIGNsYXNzIENyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKQEAgLTE0OTYsMTAgKzE0OTIsNiBAQCBwdWJsaWM6
CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lPUykKICAgICB2b2lkIHRha2VNb2Rl
bEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpI
VE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29u
dGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWlu
dDMyX3QpOwotI2VuZGlmCiAKICAgICB2b2lkIHByZXBhcmVUb1J1bk1vZGFsSmF2YVNjcmlwdERp
YWxvZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTY0Nyw4ICs2NDcsNCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWluCiAjZW5kaWYKIAogICAgIFNjcm9sbFRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgdGFyZ2V0
UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0KLSNpZiBFTkFCTEUoQVJLSVRfSU5M
SU5FX1BSRVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVsZW1lbnRDb250ZXh0LCBTdHJpbmcg
dXVpZCwgdWludDMyX3QgY29udGV4dElkKQotI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0xMS0wOCAg
U2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3Jt
IHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBO
YW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5
bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDIxLTEwLTI4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ0ZdIFJlZHVjZSBkdXBsaWNhdGlv
biBhbmQgdW5uZWVkZWQgYnVmZmVyIGFsbG9jYXRpb25zIGFuZCBjb3B5aW5nIGluIFVSTCBjb2Rl
LCBhbHNvIHJlbW92ZSB1bnVzZWQgbWV0aG9kcyBhbmQgZnVuY3Rpb25zCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyODU1NDApCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTE0OSw2ICsxNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFnSXRl
bS5oPgorI2ltcG9ydCA8V2ViQ29yZS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0R1bW15U3RvcmFnZVByb3ZpZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0VkaXRpbmcu
aD4KQEAgLTE1NDMsNyArMTU0NCw4IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aEZyYW1lTmEKICAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJv
dmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVh
dGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2YXRlQnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAg
IFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBt
YWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1h
a2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsK
ICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVD
bGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHNlbGYpOwpAQCAtMTgyMyw3ICsxODI1LDggQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVt
bXlTdG9yYWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eVN0b3JhZ2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1t
eU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNo
cm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnRJT1Moc2VsZik7CiAjaWYgRU5BQkxFKERS
QUdfU1VQUE9SVCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4
NTU0MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDIxLTExLTA4ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxl
LmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMgY29kZSBvdXQgb2YgSFRN
TE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmluaXRXaXRoRnJhbWUpOgor
CiAyMDIxLTExLTA1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBBWDogcmVuYW1lIGFjdGlvblZlcmIoKSBhcyBsb2NhbGl6ZWRBY3Rpb25WZXJi
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyODU1NDAp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTUsNiArOTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRNYXJrZXJDb250cm9s
bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQ29udHJvbGxlci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRHJhZ0RhdGEuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0R1bW15TW9kZWxQbGF5ZXJQcm92
aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWRpdG9yLmg+CkBAIC0zMDY1LDcgKzMwNjYsOCBAQCBIUkVTVUxUIFdlYlZpZXc6
OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8TWVkaWFSZWNv
cmRlclByb3ZpZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6Omdl
dE9yQ3JlYXRlKGZhbHNlKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJv
bGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3Jh
Z2VQcm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXI+KCkKICAgICApOwogICAgIGNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50
ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443849</attachid>
            <date>2021-11-10 12:33:15 -0800</date>
            <delta_ts>2021-11-11 08:50:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211110123314.patch</filename>
            <type>text/plain</type>
            <size>107521</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTU1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAyMS0xMS0wOSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvciBvdXQgbW9zdCBvZiB0aGUgcGxhdGZvcm0g
LyByZW5kZXJlciBzcGVjaWZpYyBkZXRhaWxzIGZyb20gSFRNTE1vZGVsRWxlbWVudAorICAgICAg
ICBpbnRvIGEgbmV3IE1vZGVsUGxheWVyL01vZGVsUGxheWVyUHJvdmlkZXIgYWJzdHJhY3Rpb24u
IFRoaXMgYWxsb3dzIGZvciBiZXR0ZXIKKyAgICAgICAgc2VwYXJhdGlvbiBvZiBjb25jZXJucywg
dGlnaHRlciBjb3VwbGluZyBpbiB0aGUgQVJLaXQgcGxheWVyIGltcGxlbWVudGF0aW9uIGJ5Cisg
ICAgICAgIGJlaW5nIGVudGlyZWx5IGluIFdlYktpdCBhbmQgdGhlIGFiaWxpdHkgdG8gc3VwcG9y
dCBtdWx0aXBsZSBiYWNrZW5kcy4gVGhlIHN1ZmZpeAorICAgICAgICAicGxheWVyIiB3YXMgY2hv
c2VuIHRvIHJvdWdobHkgYWxpZ24gd2l0aCB0aGUgZXhpc3RpbmcgY29uY2VwdCBvZiBhIE1lZGlh
UGxheWVyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSGVhZGVycy5j
bWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
QWRkIG5ldyBmaWxlcyAvIHJlbW92ZSBubyBsb25nZXIgbmVjZXNzYXJ5IEhUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQorCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojp+SFRNTE1vZGVsRWxl
bWVudCk6CisgICAgICAgIGNsZWFyRmlsZSgpIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBBUktpdCBz
cGVjaWZpYyBNb2RlbFBsYXllciBkZXN0cnVjdG9yLgorCisgICAgICAgIChXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwpOgorICAgICAgICBGb3Igc2ltcGxpY2l0eSwgd2Ug
Y2xlYXIgdGhlIHBsYXllciB3aGVuIHRoZSBVUkwgY2hhbmdlcyBhbmQgd2Ugc3RhcnQgYQorICAg
ICAgICBuZXcgbG9hZC4gSW4gdGhlIGZ1dHVyZSwgd2Ugc2hvdWxkIGNvbnNpZGVyIGtlZXBpbmcg
dGhlIHBsYXllciBhcm91bmQgYW5kCisgICAgICAgIHNpbXBseSByZXNldHRpbmcgaXQgaWYgdGhh
dCBwcm92ZXMgdG8gYmUgYSBwZXJmb3JtYW5jZSBiZW5lZml0LgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UpOgorICAgICAgICBSZXB1cnBvc2UgbW9k
ZWxEaWRDaGFuZ2UgdG8gbm93IGJlIHdoZXJlIHdlIGNyZWF0ZSB0aGUgcGxheWVyLCB2aWEgdGhl
CisgICAgICAgIHByb3ZpZGVyIGFuZCBpbnN0YW50aWF0ZSB0aGUgbG9hZC4KKworICAgICAgICAo
V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6dXNlc1BsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllciBjb25zdCk6Cisg
ICAgICAgIEFkZCBhY2Nlc3NvcnMgZm9yIHRoZSBwbGF5ZXIncyBsYXllciBhbmQgYSBwcmVkaWNh
dGUgaW5kaWNhdGluZworICAgICAgICB3aGV0aGVyIHRoZXJlIGlzIG9uZSB0aGF0IFJlbmRlckxh
eWVyQmFja2luZyB1c2VzIHRvIHBpY2sgd2hldGhlcgorICAgICAgICBpdCB3aWxsIHVzZSB0aGUg
cGxhdGZvcm0gbGF5ZXIgb3IgdGhlIG1vZGVsLWFzLWNvbnRlbnRzIHBhdGguIEl0CisgICAgICAg
IHdvdWxkIGJlIGdvb2QgdG8gbW92ZSB0byBqdXN0IGhhdmluZyBvbmUgaW4gdGhlIGZ1dHVyZS4K
KyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGaW5pc2hM
b2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OmRpZEZhaWxMb2Fk
aW5nKToKKyAgICAgICAgSW1wbGVtZW50IHRoZSBNb2RlbFBsYXllckNsaWVudCBmdW5jdGlvbnMg
dG8gdHJpZ2dlciB0aGUgcmVuZGVyIHRyZWUgdXBkYXRlLgorCisgICAgICAgIChXZWJDb3JlOjpz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MTW9kZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSk6IERlbGV0ZWQuCisgICAgICAgIE1vdmUgdG8gQVJLaXQgTW9kZWxQbGF5
ZXIgaW1wbGVtZW50YXRpb24KKworICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1M
TW9kZWxFbGVtZW50Q29jb2EubW06IFJlbW92ZWQuCisgICAgICAgIE1vdmUgdG8gQVJLaXQgTW9k
ZWxQbGF5ZXIgaW1wbGVtZW50YXRpb24KKworICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgVGhlIG1vZGVsIHBsYXllciBpcyB0aGUg
bWFpbiBpbnRlcmZhY2UgZm9yIGxvYWRpbmcgYW5kIGludGVyYWN0aW5nCisgICAgICAgIHdpdGgg
bW9kZWxzLgorCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xp
ZW50LmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICBUaGUgbW9kZWwgcGxheWVyIGNsaWVudCBhbGxv
d3MgdGhlIG1vZGVsIHBsYXllciB0byBjb21tdW5pY2F0ZSBiYWNrCisgICAgICAgIHRvIGl0cyBv
d25lciB0aGluZ3MgbGlrZSBsb2FkIHN1Y2Nlc3MgLyBmYWlsdXJlIGFuZCB3aWxsIGxpa2VseSBh
bHNvCisgICAgICAgIGFsbG93IHRyaWdnaW5nIHRoaW5ncyBsaWtlIHN1YnJlc291cmNlIGxvYWRz
IHRoZSBtb2RlbCBwbGF5ZXIgbmVlZHMKKyAgICAgICAgdG8ga2ljayBvZmYuCisKKyAgICAgICAg
KiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVkLgor
ICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmg6IEFk
ZGVkLgorICAgICAgICBUaGUgbW9kZWwgcGxheWVyIHByb3ZpZGVyIGFsbG93cyB0aGUgV2ViS2l0
IGxheWVyIHRvIHByb3ZpZGUgaXRzCisgICAgICAgIG93biBtb2RlbCBwbGF5ZXJzLgorCisgICAg
ICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15OiBBZGRlZC4KKyAgICAgICAgKiBNb2R1
bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmg6IEFk
ZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
ZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICBUaGUgZHVt
bXkgcGxheWVyIGFuZCBwcm92aWRlciBhcmUgdXNlZCBmb3IgcGxhdGZvcm1zIC8gY29uZmlndXJh
dGlvbnMKKyAgICAgICAgd2hlcmUgbW9kZWwgaXMgbm90IHN1cHBvcnRlZC4KKworICAgICAgICAq
IGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhZ2VDb25maWd1cmF0aW9uV2l0aEVtcHR5Q2xpZW50cyk6
CisgICAgICAgIFVzZSB0aGUgRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyIGZvciB0aGUgZW1wdHkg
Y2xpZW50LgorCisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIFRoaXMgaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCB0aGUg
QVJLaXQgaW1wbGVtZW50YXRpb24gaXMgaW4gV2ViS2l0LgorCisgICAgICAgICogcGFnZS9QYWdl
LmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmg6CisgICAgICAg
IEFkZCBhIG1vZGVsIHBsYXllciBwcm92aWRlciB0byB0aGUgbGlzdCBvZiBwcm92aWRlcnMgdGhl
IHBhZ2UgdmVuZHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHA6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuaDoKKyAgICAgICAgUmVtb3ZlICNpZiBF
TkFCTEUoTU9ERUxfRUxFTUVOVCkgZm9yIHBhcnRzIHRoYXQgYXJlbid0IGFjdHVhbGx5IHRoZQor
ICAgICAgICBlbGVtZW50IGl0c2VsZi4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgUmVtb3ZlIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUg
YW5kIHV0aWxpemUgdGhlIG5ldyBwbGF0Zm9ybUxheWVyIGFjY2Vzc29yCisgICAgICAgIGFuZCBw
cmVkaWNhdGUgb24gSFRNTE1vZGVsRWxlbWVudC4KKwogMjAyMS0xMS0wOSAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gTWlncmF0ZSBm
cm9tIENURm9udENvcHlWYXJpYXRpb25BeGVzKCkgdG8gQ1RGb250Q29weVZhcmlhdGlvbkF4ZXNJ
bnRlcm5hbCgpIGlmIHBvc3NpYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
Mjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDYgKzQ3LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0iCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjIgogICAgICIke1dFQkNPUkVfRElS
fS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQiCisgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teSIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9uYXZpZ2F0b3Jj
b250ZW50dXRpbHMiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L01vZHVsZXMvbm90aWZpY2F0aW9ucyIK
ICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9wYXltZW50cmVxdWVzdCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvSGVhZGVycy5j
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNywxMiBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMv
TGliV2ViUlRDVXRpbHMuaAogCiAgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuaAorICAgIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5oCisgICAgTW9k
dWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKKyAgICBNb2R1bGVzL21vZGVs
LWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCisKKyAgICBNb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1
bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCiAKICAgICBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmgKICAgICBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2xpZW50LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjM0LDYgKzIzNCwxMSBAQCBN
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSCiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2Zvcm1hYmxlRnJhbWUuY3BwCiBNb2R1bGVz
L21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENTY3RwVHJhbnNwb3J0QmFja2VuZC5jcHAK
IE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNwcAorTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L01vZGVsUGxheWVyLmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyQ2xpZW50LmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIu
Y3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAKK01v
ZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCiBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmNwcAogTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNvbnRyb2xsZXIuY3BwCiBNb2R1bGVzL3BheW1lbnRyZXF1ZXN0L01l
cmNoYW50VmFsaWRhdGlvbkV2ZW50LmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CShy
ZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDEsNyArMTAxLDYgQEAgTW9kdWxlcy9hcHBsZXBheS1hbXMtdWkvQXBw
bGVQYXlBTVNVSVBheQogTW9kdWxlcy9hc3luYy1jbGlwYm9hcmQvaW9zL0NsaXBib2FyZEltYWdl
UmVhZGVySU9TLm1tCiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9tYWMvQ2xpcGJvYXJkSW1hZ2VS
ZWFkZXJNYWMubW0KIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUnRwU0ZyYW1lVHJhbnNmb3JtZXJD
b2NvYS5jcHAKLU1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0K
IE1vZHVsZXMvc3BlZWNoL2NvY29hL1NwZWVjaFJlY29nbml6ZXJDb2NvYS5tbQogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVsZXMvc3BlZWNoL2Nv
Y29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQpJbmRleDogU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmNw
cAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBA
CiAjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTSFRNTE1vZGVsRWxlbWVu
dC5oIgogI2luY2x1ZGUgIk1vZGVsLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXIuaCIKKyNpbmNs
dWRlICJNb2RlbFBsYXllclByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlck1vZGVsLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxv
Y0lubGluZXMuaD4KQEAgLTcwLDEwICs3Miw2IEBAIEhUTUxNb2RlbEVsZW1lbnQ6On5IVE1MTW9k
ZWxFbGVtZW50KCkKICAgICAgICAgbV9yZXNvdXJjZS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKICAg
ICAgICAgbV9yZXNvdXJjZSA9IG51bGxwdHI7CiAgICAgfQotCi0jaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXX01BQykKLSAgICBjbGVhckZpbGUoKTsKLSNlbmRpZgogfQogCiBSZWY8SFRN
TE1vZGVsRWxlbWVudD4gSFRNTE1vZGVsRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEzMSwxNyArMTI5LDE2IEBAIHZv
aWQgSFRNTE1vZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKGNvbnMKICAgICAgICAgbV9yZXNvdXJj
ZSA9IG51bGxwdHI7CiAgICAgfQogCisgICAgaWYgKG1fbW9kZWxQbGF5ZXIpCisgICAgICAgIG1f
bW9kZWxQbGF5ZXIgPSBudWxscHRyOworCiAgICAgaWYgKCFtX3JlYWR5UHJvbWlzZS0+aXNGdWxm
aWxsZWQoKSkKICAgICAgICAgbV9yZWFkeVByb21pc2UtPnJlamVjdChFeGNlcHRpb24geyBBYm9y
dEVycm9yIH0pOwogCiAgICAgbV9yZWFkeVByb21pc2UgPSBtYWtlVW5pcXVlUmVmPFJlYWR5UHJv
bWlzZT4oKnRoaXMsICZIVE1MTW9kZWxFbGVtZW50OjpyZWFkeVByb21pc2VSZXNvbHZlKTsKIAot
ICAgIGlmIChtX3NvdXJjZVVSTC5pc0VtcHR5KCkpIHsKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5F
X1BSRVZJRVdfTUFDKQotICAgICAgICBjbGVhckZpbGUoKTsKLSNlbmRpZgorICAgIGlmIChtX3Nv
dXJjZVVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMgb3B0aW9ucyA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZWZhdWx0Q2Fj
aGVkUmVzb3VyY2VPcHRpb25zKCk7CiAgICAgb3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246Ok1vZGVsOwpAQCAtMTY4LDI0ICsxNjUsNiBAQCBIVE1MTW9kZWxF
bGVtZW50JiBIVE1MTW9kZWxFbGVtZW50OjpyZWFkCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi0j
aWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotc3RhdGljIFN0cmluZyYgc2hhcmVkTW9k
ZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQotewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotICAgIHJldHVybiBzaGFy
ZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKLX0KLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCi17Ci0g
ICAgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKSA9IHBhdGg7Ci19Ci0KLWNvbnN0
IFN0cmluZyYgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQot
ewotICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOwotfQotI2Vu
ZGlmCi0KIC8vIE1BUks6IC0gRE9NIG92ZXJyaWRlcy4KIAogdm9pZCBIVE1MTW9kZWxFbGVtZW50
OjpkaWRNb3ZlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBu
ZXdEb2N1bWVudCkKQEAgLTIzNiwxMyArMjE1LDY3IEBAIHZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
bm90aWZ5RmluaXNoZWQoQ2EKIAogICAgIG1fcmVhZHlQcm9taXNlLT5yZXNvbHZlKCp0aGlzKTsK
IAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAgICAgbW9kZWxEaWRDaGFu
Z2UoKTsKLSNlbmRpZgogfQogCisvLyBNQVJLOiAtIE1vZGVsUGxheWVyIHN1cHBvcnQKKwordm9p
ZCBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbERpZENoYW5nZSgpCit7CisgICAgLy8gRklYTUU6IEZv
ciB0aGUgZWFybHkgcmV0dXJucyBoZXJlLCB3ZSBzaG91bGQgcHJvYmFibHkgaW5mb3JtIHRoZSBw
YWdlIHRoYXQgdGhhdCB0aGluZ3MgaGF2ZQorICAgIC8vIGZhaWxlZCB0byByZW5kZXI/IEZvciB0
aGUgY2FzZSBvZiBuby1yZW5kZXJlciwgd2Ugc2hvdWxkIHByb2JhYmx5IGFsc28gYnVpbGQgdGhl
IG1vZGVsIHdoZW4vaWYKKyAgICAvLyBhIHJlbmRlcmVyIGlzIGNyZWF0ZWQuCisKKyAgICBhdXRv
IHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVy
bjsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOT1RFOiBGb3Igbm93LCBjcmVhdGVN
b2RlbFBsYXllciByZXR1cm5pbmcgbnVsbHB0ciBtZWFucyB0aGF0IHRoZSBHcmFwaGljc0xheWVy
OjpzZXRDb250ZW50c1RvTW9kZWwoKSBwYXRoCisgICAgLy8gaXMgYmVpbmcgdXNlZCwgYnV0IHRo
YXQgbmVlZHMgdG8gYmUgcGhhc2VkIG91dCB0byBhbGxvdyBiaWRpcmVjdGlvbmFsIGNvbW11bmlj
YXRpb24gYmV0d2VlbiB0aGUgbW9kZWwgcGxheWVyCisgICAgLy8gYW5kIHRoZSBIVE1MTW9kZWxF
bGVtZW50LiBPbmNlIHRoYXQgaXMgcGhhc2VkIG91dCwgY3JlYXRlTW9kZWxQbGF5ZXIoKSBzaG91
bGQgYmUgdXBkYXRlZCB0byByZXR1cm4gYSBSZWY8Pi4KKyAgICBtX21vZGVsUGxheWVyID0gcGFn
ZS0+bW9kZWxQbGF5ZXJQcm92aWRlcigpLmNyZWF0ZU1vZGVsUGxheWVyKCp0aGlzKTsKKyAgICBp
ZiAoIW1fbW9kZWxQbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBXZSBu
ZWVkIHRvIHRlbGwgdGhlIHBsYXllciBpZiB0aGUgc2l6ZSBjaGFuZ2VzIGFzIHdlbGwsIHNvIHBh
c3NpbmcgdGhpcworICAgIC8vIGluIHdpdGggbG9hZCBwcm9iYWJseSBkb2Vzbid0IG1ha2Ugc2Vu
c2UuCisgICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZh
bHNlKS5zaXplKCk7CisKKyAgICBtX21vZGVsUGxheWVyLT5sb2FkKCptX21vZGVsLCBzaXplKTsK
K30KKworYm9vbCBIVE1MTW9kZWxFbGVtZW50Ojp1c2VzUGxhdGZvcm1MYXllcigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fbW9kZWxQbGF5ZXIgIT0gbnVsbHB0cjsKK30KKworUGxhdGZvcm1MYXll
ciogSFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fbW9kZWxQbGF5ZXItPmxheWVyKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGlk
RmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIpCit7CisgICAgQVNTRVJUX1VO
VVNFRChtb2RlbFBsYXllciwgJm1vZGVsUGxheWVyID09IG1fbW9kZWxQbGF5ZXIpOworCisgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVyZXIt
PnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGlkRmFp
bExvYWRpbmcoTW9kZWxQbGF5ZXImIG1vZGVsUGxheWVyLCBjb25zdCBSZXNvdXJjZUVycm9yJikK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9tb2Rl
bFBsYXllcik7Cit9CisKKy8vIE1BUks6IC0gRnVsbHNjcmVlbiBzdXBwb3J0LgorCiB2b2lkIEhU
TUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7CisvLyBGSVhNRTogQWRkIGEgbmV3
IG1ldGhvZCB0byBNb2RlbFBsYXllciBmb3IgZW50ZXJpbmcgZnVsbHNjcmVlbiBhbmQgbW92ZSB0
aGlzIGludG8gdGhlIGlPUyBBUktpdCBpbmxpbmUgcHJldmlldyBNb2RlbFBsYXllciBpbXBsZW1l
bnRhdGlvbi4KICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIGF1dG8q
IHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50LmgJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIxICszMiwx
OSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRNTEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyQ2xp
ZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotT0JKQ19DTEFTUyBB
U1ZJbmxpbmVQcmV2aWV3OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
TW9kZWw7CitjbGFzcyBNb2RlbFBsYXllcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4g
Y2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAotY2xhc3MgSFRNTE1v
ZGVsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCB7CitjbGFzcyBIVE1MTW9kZWxFbGVtZW50IGZpbmFsIDogcHVibGljIEhU
TUxFbGVtZW50LCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgTW9kZWxQ
bGF5ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTE1vZGVsRWxlbWVu
dCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBjcmVhdGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC01NSwyMSArNTMsMTYgQEAgcHVibGlj
OgogICAgIHZvaWQgc291cmNlc0NoYW5nZWQoKTsKICAgICBjb25zdCBVUkwmIGN1cnJlbnRTcmMo
KSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfQogCisgICAgLy8gTUFSSzogRE9NIEZ1bmN0
aW9ucyBhbmQgQXR0cmlidXRlcworCiAgICAgdXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJvbWlz
ZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazxJRExJbnRlcmZhY2U8SFRNTE1vZGVsRWxlbWVudD4+
OwogICAgIFJlYWR5UHJvbWlzZSYgcmVhZHkoKSB7IHJldHVybiBtX3JlYWR5UHJvbWlzZS5nZXQo
KTsgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbW9kZWxEYXRhKCkgY29uc3Q7CiAgICAg
UmVmUHRyPE1vZGVsPiBtb2RlbCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1vZGVsRWxlbWVudENh
Y2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBj
b25zdCBTdHJpbmcmIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci0jZW5kaWYKLQotI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgYm9vbCB1c2VzUGxhdGZvcm1M
YXllcigpIGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
Y29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpOwotI2VuZGlmCiAKICAgICB2
b2lkIGVudGVyRnVsbHNjcmVlbigpOwogCkBAIC03OSwxMyArNzIsOSBAQCBwcml2YXRlOgogICAg
IEhUTUxNb2RlbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAKICAg
ICB2b2lkIHNldFNvdXJjZVVSTChjb25zdCBVUkwmKTsKLSAgICBIVE1MTW9kZWxFbGVtZW50JiBy
ZWFkeVByb21pc2VSZXNvbHZlKCk7Ci0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQotICAgIHZvaWQgY2xlYXJGaWxlKCk7Ci0gICAgdm9pZCBjcmVhdGVGaWxlKCk7CiAgICAg
dm9pZCBtb2RlbERpZENoYW5nZSgpOwotI2VuZGlmCisKKyAgICBIVE1MTW9kZWxFbGVtZW50JiBy
ZWFkeVByb21pc2VSZXNvbHZlKCk7CiAKICAgICAvLyBET00gb3ZlcnJpZGVzLgogICAgIHZvaWQg
ZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYgbmV3
RG9jdW1lbnQpIGZpbmFsOwpAQCAtOTcsNiArODYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRh
dGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBkYXRh
TGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlJiwg
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKKyAgICAvLyBNb2RlbFBsYXllckNs
aWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVyJikg
ZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYsIGNvbnN0IFJlc291
cmNlRXJyb3ImKSBmaW5hbDsKKwogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKICAgICBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBtX2RhdGE7CkBAIC0xMDQsMTAgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBVbmlx
dWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNvbXBs
ZXRlIHsgZmFsc2UgfTsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0g
ICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgUmV0YWluUHRyPEFTVklubGluZVByZXZpZXc+IG1f
aW5saW5lUHJldmlldzsKLSNlbmRpZgorICAgIFJlZlB0cjxNb2RlbFBsYXllcj4gbV9tb2RlbFBs
YXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbQkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
b2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQkobm9uZXhpc3RlbnQpCkBAIC0x
LDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIKLQot
I2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCi0j
aW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJM
YXllci5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKLSNpbmNsdWRlICJT
ZXR0aW5ncy5oIgotI2luY2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KLSNp
bmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5jbHVk
ZSA8d3RmL1VVSUQuaD4KLQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmlld2Vy
KTsKLVNPRlRfTElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxlKCkK
LXsKLSAgICAvLyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0byB0
aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZpZXcsCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2Ny4KLQotICAgIGNsZWFyRmlsZSgpOwotCi0gICAg
YXV0byBwYXRoVG9EaXJlY3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNo
ZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZpbGVF
eGlzdHMocGF0aFRvRGlyZWN0b3J5KTsKLSAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZpbGVT
eXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBGaWxl
U3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghZGlyZWN0b3J5RXhpc3RzICYm
ICFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgotICAgIGF1dG8gZmlsZU5hbWUg
PSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5n
KCkpICsgIi51c2R6IjsKLSAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBw
ZW5kaW5nQ29tcG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOwotICAgIGF1dG8gZmls
ZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Blbk1v
ZGU6OldyaXRlKTsKLSAgICBpZiAoZmlsZSA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBG
aWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXpl
KCkpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKLSAgICBtX2ZpbGVQYXRoID0g
ZmlsZVBhdGg7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKLXsKLSAg
ICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZpbGVT
eXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7Ci0gICAgbV9maWxlUGF0aCA9IGVtcHR5U3Ry
aW5nKCk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQotewot
ICAgIGNyZWF0ZUZpbGUoKTsKLQotICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNpemUg
PSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKLQotICAg
IG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNl
KCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSldKTsKLSAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxE
aWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHggJWYu
IiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCkuZGF0
YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotCi0gICAgaWYgKGF1dG8qIHBhZ2Ug
PSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCkubW9k
ZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0
ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNp
emUpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRhaW5D
b250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17Ci0gICAg
aWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcgdXVp
ZF0uVVVJRFN0cmluZykgewotICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxl
bWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJl
Y2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3RyaW5n
KVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRl
eHQ6Y29udGV4dElkXTsKLSAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6
aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hl
ZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkpOwot
Ci0gICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgcmVu
ZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEhUTUxNb2Rl
bEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBbbV9pbmxpbmVQ
cmV2aWV3IGxheWVyXTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQp
ICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworTW9kZWxQbGF5ZXI6On5Nb2RlbFBsYXllcigpID0gZGVmYXVsdDsKKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVs
UGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L01vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBNb2Rl
bFBsYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsUGxheWVyPiB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXIoKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVsJiwgTGF5b3V0U2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNs
aWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxh
eWVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJDbGllbnQ6
On5Nb2RlbFBsYXllckNsaWVudCgpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50
LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50
L01vZGVsUGxheWVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVs
UGxheWVyOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgTW9k
ZWxQbGF5ZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9kZWxQbGF5ZXJDbGllbnQ+
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2RlbFBsYXllckNsaWVudCgpOworCisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwgY29uc3QgUmVzb3VyY2VFcnJvciYp
ID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVu
dC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJv
dmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVsUGxheWVyUHJvdmlkZXI6On5Nb2RlbFBsYXllclBy
b3ZpZGVyKCkgPSBkZWZhdWx0OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxh
eWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsUGxheWVyOworY2xhc3MgTW9kZWxQbGF5ZXJDbGllbnQ7
CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1vZGVsUGxheWVyUHJvdmlkZXIgeworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVyUHJv
dmlkZXIoKTsKKworICAgIC8vIEZJWE1FOiBPbmNlIGFsbCBjbGllbnRzIGhhdmUgYWRvcHRlZCBN
b2RlbFBsYXllclByb3ZpZGVyLCB0aGlzIHNob3VsZAorICAgIC8vIGJlIGNoYW5nZWQgdG8gcmV0
dXJuIGEgUmVmPE1vZGVsUGxheWVyPgorICAgIHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVyPiBj
cmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpID0gMDsKK307CisKK30KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxh
eWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1l
bnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllci5oIgorCisjaW5jbHVkZSAiTW9kZWwu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
UmVmPER1bW15TW9kZWxQbGF5ZXI+IER1bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShNb2RlbFBsYXll
ckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER1bW15TW9kZWxQ
bGF5ZXIoY2xpZW50KSk7Cit9CisKK0R1bW15TW9kZWxQbGF5ZXI6OkR1bW15TW9kZWxQbGF5ZXIo
TW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0KK3sK
K30KKworRHVtbXlNb2RlbFBsYXllcjo6fkR1bW15TW9kZWxQbGF5ZXIoKSA9IGRlZmF1bHQ7CisK
K3ZvaWQgRHVtbXlNb2RlbFBsYXllcjo6bG9hZChNb2RlbCYgbW9kZWwsIExheW91dFNpemUpCit7
CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbExvYWRpbmcoKnRo
aXMsIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtb2RlbC51
cmwoKSwgIlRyeWluZyB0byBsb2FkIG1vZGVsIHZpYSBEdW1teU1vZGVsUGxheWVyIl9zIH0pOwor
fQorCitQbGF0Zm9ybUxheWVyKiBEdW1teU1vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAgcmV0
dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1vZGVsUGxheWVyLmgiCisjaW5jbHVk
ZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09S
RV9FWFBPUlQgRHVtbXlNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllciB7Citw
dWJsaWM6CisgICAgc3RhdGljIFJlZjxEdW1teU1vZGVsUGxheWVyPiBjcmVhdGUoTW9kZWxQbGF5
ZXJDbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyKCk7CisKK3ByaXZhdGU6
CisgICAgRHVtbXlNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpOworCisgICAgLy8gTW9k
ZWxQbGF5ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVsJiwgTGF5b3V0
U2l6ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpIG92ZXJy
aWRlOworCisgICAgV2Vha1B0cjxNb2RlbFBsYXllckNsaWVudD4gbV9jbGllbnQ7Cit9OworCit9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9u
ZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkv
RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15TW9k
ZWxQbGF5ZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6RHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyOjp+
RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitSZWZQdHI8TW9kZWxQbGF5
ZXI+IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQbGF5
ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gRHVtbXlNb2RlbFBsYXllcjo6Y3JlYXRl
KGNsaWVudCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclBy
b3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1l
bGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1v
ZGVsUGxheWVyUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXRUJD
T1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgTW9kZWxQ
bGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyKCk7
CisgICAgdmlydHVhbCB+RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyKCk7CisKK3ByaXZhdGU6Cisg
ICAgLy8gTW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisgICAgdmlydHVhbCBSZWZQdHI8
TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50Jikgb3ZlcnJp
ZGU7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwNjcs
NiArNDA2NywxMSBAQAogCQlCQzIzRUU5MjBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzIzRjBE
QjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAvKiBH
ZW5lcmF0ZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUJDMjc0QjJGMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNl
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
Mjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCAqLzsg
fTsKKwkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDExMzI3MzJGMDYyMDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQzJCNDExODI3MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQ
cm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkMyQjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDExOTI3MzJG
NDI5MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBNb2Rl
bFBsYXllckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEyMzI3
MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAv
KiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1vZGVs
UGxheWVyUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0JG
NEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJQkMy
Q0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERCMjAw
QjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAvKiBK
U0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oICovOyB9OwpAQCAtMTA3OTksNyArMTA4MDQsNiBAQAogCQk3MUMyOUUzMTIwM0NFNzZDMDA4
RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NBbmlt
YXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUM1QkIxQjFGQjYxMUVB
MDAwN0EyQUUgLyogQW5pbWF0YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQW5pbWF0
YWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQzkxNjA3MUQxNDgzQTMw
MEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzFDQUEzRDkyNjhEMEJGOTAwRjI1NDEwIC8qIEhUTUxN
b2RlbEVsZW1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxNb2RlbEVsZW1l
bnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDRTJDNTEyMjA5REM3
RjAwQzQ5NEJEIC8qIE1vdXNlRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW91c2VFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcxRDAyRDkwMURCNTVDNEUwMERENUNGNSAvKiBtYWluLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWFpbi5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzFEMDJEOTIxREI1NUM0RTAwREQ1Q0Y1IC8qIG1lZGlhLWNvbnRyb2xsZXIuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAibWVkaWEtY29udHJvbGxlci5q
cyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDczNSw2ICsxNDczOSwxNiBAQAog
CQlCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VWYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI3NEIzMDE0MEVCRUQ4MDBFQURG
QTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDMjk5MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklucHV0
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvcklucHV0
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTBFMjczMkVGRTQw
MEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBsYXll
ckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExMjI3MzJGMDND
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9k
ZWxQbGF5ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEx
MzI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWxQ
bGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTQyNzMyRjA2MjAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGVsUGxheWVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTUyNzMyRjBDNzAwQTJE
MTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWxQbGF5ZXJQ
cm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNjI3MzJGMEM3
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
b2RlbFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMy
QjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQ
cm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyMzI3MzM1RTFGMDBBMkQx
OTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1teU1vZGVsUGxheWVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTI0MjczMzVFMUYwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9kZWxQ
bGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY0QjE0MEYxQTY1
MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0RXZl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQ0EwRTI2NTVEREIyMDBC
OEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlc3RpbmF0
aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM3NTAsMTAg
KzIzNzY0LDE2IEBACiAJCTcxRjg0OUNDMjU2NUFCN0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVtZW50
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEy
MjI3MzM1RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8sCiAJCQkJNzFBM0QxODAyNTYyQjgyNTAwNjRF
MkE2IC8qIEhUTUxNb2RlbEVsZW1lbnQuY3BwICovLAogCQkJCTcxQTNEMTdEMjU2MkI4MjQwMDY0
RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmggKi8sCiAJCQkJNzFBM0QxN0YyNTYyQjgyNDAwNjRF
MkE2IC8qIEhUTUxNb2RlbEVsZW1lbnQuaWRsICovLAotCQkJCTcxQ0FBM0Q5MjY4RDBCRjkwMEYy
NTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8sCisJCQkJQkMyQjQxMTQyNzMyRjA2
MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDExMzI3MzJGMDYyMDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQxOTEg
LyogTW9kZWxQbGF5ZXJDbGllbnQuY3BwICovLAorCQkJCUJDMkI0MTBFMjczMkVGRTQwMEEyRDE5
MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICovLAorCQkJCUJDMkI0MTE2MjczMkYwQzcwMEEyRDE5
MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDExNTI3MzJGMEM3MDBB
MkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSAibW9k
ZWwtZWxlbWVudCI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzMzEsNiArMjgz
NTEsMTcgQEAKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCUJDMkI0MTIyMjczMzVFMEMwMEEyRDE5MSAvKiBkdW1teSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkxIC8q
IER1bW15TW9kZWxQbGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5MSAv
KiBEdW1teU1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8q
IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMjAyNzMzNUNCOTAw
QTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGgg
PSBkdW1teTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDNEVERUY3MEMw
OEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKApAQCAtMzMyMDIsNiArMzMyMzMsOCBAQAogCQkJCTgxRjY1RkY2MTM3ODhGQUEw
MEZGNkYyRCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUzMDFB
QzgwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
MEE5MUY2MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCN0E4MjU1MUQ0MUYw
MDU4REQzQSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMDg1REY4MjZFODIyQzcwMDBFQzZBNyAvKiBEdW1teVN0b3JhZ2VQcm92aWRlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFtaWNM
aW5rZXJJbnRlcnBvc2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTExMiw2ICszNTE0NSw5IEBA
CiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGljYXRp
b25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3MDBD
RkNCQUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE3MjczMkY0MUUwMEEy
RDE5MSAvKiBNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTkyNzMyRjQy
OTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzJC
NDExODI3MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5QTAxRkUxRTNEMEJERDAwNkIwRDRDIC8qIE1v
ZHVsZUZldGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjAxQzFBMUY4RTgy
MTMwMDc2QTAzMiAvKiBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4NTU0MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgorI2luY2x1ZGUg
IkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVjb2du
aXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiRWRpdG9yQ2xpZW50LmgiCkBAIC01ODgsMTIgKzU4OSw2IEBAIHZvaWQgRW1wdHlDaHJv
bWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnQKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0Ci17Ci19Ci0j
ZW5kaWYKLQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CkBAIC0xMTk4LDcgKzExOTMsOCBAQCBQ
YWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIG1ha2VVbmlx
dWVSZWY8RW1wdHlNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIEVtcHR5QnJvYWRj
YXN0Q2hhbm5lbFJlZ2lzdHJ5OjpjcmVhdGUoKSwKICAgICAgICAgRHVtbXlQZXJtaXNzaW9uQ29u
dHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdlUHJv
dmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4oKSwK
KyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAgICB9
OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1teUNo
cm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIyLDEwICsyMjIsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVudCA6
IHB1YmxpYyBDaHJvbWVDCiAjZW5kaWYKIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9y
RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyByZXR1
cm4gbnVsbHB0cjsgfQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAg
ICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxl
bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6
ZSYpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCYg
ZW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsOSArNjA4LDYgQEAgcHVibGljOgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdmlydHVhbCB2b2lkIHRha2VN
b2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5
ZXJJRCkgY29uc3QgeyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdf
TUFDKQotICAgIHZpcnR1YWwgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNv
cmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCB7IH07Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVlfQU1TX1VJKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFwcGxlUGF5QU1TVUlTZXNzaW9u
KGNvbnN0IFVSTCYsIGNvbnN0IEFwcGxlUGF5QU1TVUlSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkxvd1Bvd2VyTW9kZU5vdGlmaWVy
LmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVkaWFS
ZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2VDb2xvclNhbXBsZXIuaCIKICNpbmNs
dWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzM3LDYgKzMzOCw3IEBAIFBhZ2U6OlBhZ2Uo
UGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRyb2xs
ZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAgICAg
LCBtX3JlcG9ydGluZ0VuZHBvaW50c0NhY2hlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ucmVw
b3J0aW5nRW5kcG9pbnRzQ2FjaGUpKQogICAgICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92ZShw
YWdlQ29uZmlndXJhdGlvbi5zdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbV9tb2RlbFBsYXllclBy
b3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikpCiB7
CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMzc5NSw0ICszNzk3LDkg
QEAgU3RvcmFnZUNvbm5lY3Rpb24mIFBhZ2U6OnN0b3JhZ2VDb25uZWN0aQogICAgIHJldHVybiBt
X3N0b3JhZ2VQcm92aWRlci0+c3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAorTW9kZWxQbGF5ZXJQ
cm92aWRlciYgUGFnZTo6bW9kZWxQbGF5ZXJQcm92aWRlcigpCit7CisgICAgcmV0dXJuIG1fbW9k
ZWxQbGF5ZXJQcm92aWRlci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgY2xhc3MgTWVkaWFDYW5T
dGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlhUmVj
b3JkZXJQcm92aWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsKK2Ns
YXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNsYXNz
IFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkBAIC05MDQsNiArOTA1
LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBlcm1pc3Npb25Db250cm9sbGVyJiBw
ZXJtaXNzaW9uQ29udHJvbGxlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VDb25uZWN0
aW9uJiBzdG9yYWdlQ29ubmVjdGlvbigpOwogCisgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYgbW9k
ZWxQbGF5ZXJQcm92aWRlcigpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9uIHsK
ICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTI0MCw2ICsxMjQzLDcgQEAg
cHJpdmF0ZToKICAgICBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IG1fcGVybWlzc2lvbkNvbnRy
b2xsZXI7CiAgICAgUmVmUHRyPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBtX3JlcG9ydGluZ0Vu
ZHBvaW50c0NhY2hlOwogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFnZVBy
b3ZpZGVyOworICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxheWVy
UHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2FjaGVk
VGV4dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3VsdCwg
SW50UmVjdD47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRl
ci5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUgIlBl
cm1pc3Npb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgiCkBA
IC02Miw3ICs2Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRp
b246OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVlUmVm
PEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBzb2Nr
ZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1Byb3Zp
ZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIsIFJl
ZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNrRm9y
d2FyZENsaWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29raWVK
YXIsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFpbkZy
YW1lLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNvZ25p
dGlvblByb3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlhUmVj
b3JkZXJQcm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNhc3RD
aGFubmVsUmVnaXN0cnksIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9uQ29u
dHJvbGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIpCitQ
YWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tldFBy
b3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+JiYg
bGliV2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0b3Jh
Z2VQcm92aWRlciwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92aWRl
ciwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29va2ll
SmFyPiYmIGNvb2tpZUphciwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBwcm9n
cmVzc1RyYWNrZXJDbGllbnQsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2FkZXJD
bGllbnRGb3JNYWluRnJhbWUsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYm
IHNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlk
ZXI+JiYgbWVkaWFSZWNvcmRlclByb3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5
PiYmIGJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVyPiYm
IHBlcm1pc3Npb25Db250cm9sbGVyLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0b3Jh
Z2VQcm92aWRlciwgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+JiYgbW9kZWxQbGF5ZXJQ
cm92aWRlcikKICAgICA6IHNlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBlZGl0b3JDbGllbnQo
V1RGTW92ZShlZGl0b3JDbGllbnQpKQogICAgICwgc29ja2V0UHJvdmlkZXIoV1RGTW92ZShzb2Nr
ZXRQcm92aWRlcikpCkBAIC03OCw2ICs3OSw3IEBAIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29u
ZmlndXJhdGlvbihQQUwKICAgICAsIG1lZGlhUmVjb3JkZXJQcm92aWRlcihXVEZNb3ZlKG1lZGlh
UmVjb3JkZXJQcm92aWRlcikpCiAgICAgLCBwZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3ZlKHBl
cm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHN0b3Jh
Z2VQcm92aWRlcikpCisgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUobW9kZWxQbGF5
ZXJQcm92aWRlcikpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsKIGNs
YXNzIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3ZpZGVy
OwotY2xhc3MgQ29va2llSmFyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ29udGV4dE1l
bnVDbGllbnQ7CitjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwogY2xh
c3MgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBjbGFzcyBEcmFnQ2xpZW50OwpAQCAtNTcsNiAr
NTcsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsK
IGNsYXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVyOwor
Y2xhc3MgTW9kZWxQbGF5ZXJQcm92aWRlcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVu
dDsKIGNsYXNzIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25Db250
cm9sbGVyOwpAQCAtNjUsNiArNjYsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7CiBj
bGFzcyBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwogY2xh
c3MgU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcjsKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0NsaWVu
dDsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VQcm92aWRl
cjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CkBAIC03MiwxMiArNzQsMTEgQEAgY2xhc3Mg
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiBj
bGFzcyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViR0xTdGF0ZVRyYWNrZXI7Ci1jbGFzcyBT
cGVlY2hTeW50aGVzaXNDbGllbnQ7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFBB
TDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJvdmlk
ZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFnZVBy
b3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJkQ2xp
ZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xpZW50
PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmLCBS
ZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+
JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBh
Z2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYm
LCBSZWY8U29ja2V0UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwg
UmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwg
UmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJv
Z3Jlc3NUcmFja2VyQ2xpZW50PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVu
aXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNv
cmRlclByb3ZpZGVyPiYmLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVy
bWlzc2lvbkNvbnRyb2xsZXI+JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYsIFVuaXF1
ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNv
bmZpZ3VyYXRpb24oKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbihQYWdlQ29uZmlndXJhdGlvbiYm
KTsKIApAQCAtMTQ1LDYgKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQZXJtaXNzaW9uQ29u
dHJvbGxlcj4gcGVybWlzc2lvbkNvbnRyb2xsZXI7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQcm92
aWRlcj4gc3RvcmFnZVByb3ZpZGVyOworCisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlk
ZXI+IG1vZGVsUGxheWVyUHJvdmlkZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2RlbC5oIgogCi0j
aWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFt
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDUgKzU2LDMgQEAgVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgYwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFCTEUo
TU9ERUxfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01v
ZGVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9k
ZWwuaAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTW9kZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21hIG9u
Y2UKIAotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBA
IC0xMDEsNSArOTksMyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYgZGVj
CiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3Ry
ZWFtJiwgY29uc3QgTW9kZWwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwOTcsMTMgKzEwOTcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUNv
bmZpZ3VyYQogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGVsc2UgaWYgKGlzPFJlbmRl
ck1vZGVsPihyZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBkb3duY2FzdDxI
VE1MTW9kZWxFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7Ci0jaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTGF5ZXIgPSBl
bGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNl
dENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXI6OkNv
bnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7Ci0jZWxzZQotICAgICAgICBpZiAoYXV0byBtb2Rl
bCA9IGVsZW1lbnQtPm1vZGVsKCkpCisKKyAgICAgICAgLy8gU29tZSBNb2RlbFBsYXllcnMgdXNl
IGEgcGxhdGZvcm1MYXllcigpIGFuZCBzb21lIHBhc3MgdGhlIE1vZGVsIHRvIHRoZSBsYXllciBh
cyBjb250ZW50cywKKyAgICAgICAgLy8gYnV0IHRoaXMgaXMgYSBydW50aW1lIGRlY2lzaW9uLgor
ICAgICAgICBpZiAoZWxlbWVudC0+dXNlc1BsYXRmb3JtTGF5ZXIoKSkgeworICAgICAgICAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihlbGVtZW50LT5wbGF0
Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7
CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCiAgICAg
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3ZlKG1vZGVs
KSk7Ci0jZW5kaWYKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU1NzcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDIxLTExLTEwICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTW92ZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIG9mIHRoZSBt
YWNPUyBBVktpdCA8bW9kZWw+IGltcGxlbWVudGF0aW9uCisgICAgICAgIGludG8gYW4gQVZLaXQg
bW9kZWwgcGxheWVyIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5l
dyBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok1vZGVsRWxlbWVudENvbnRyb2xsZXI6Om1v
ZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Nb2RlbEVs
ZW1lbnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAg
IE1ha2UgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygpIGFuIGFzeW5jIGNhbGxiYWNrIHJh
dGhlciB0aGFuCisgICAgICAgIHVzaW5nIGEgRWxlbWVudENvbnRleHQgdG8gcmVjb25uZWN0IG9u
IHRoZSB3YXkgYmFjay4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWw6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5jcHA6IEFkZGVk
LgorICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBB
ZGRlZC4KKyAgICAgICAgQWRkIE1vZGVsUGxheWVyUHJvdmlkZXIgaW1wbGVtZW50YXRpb24gZm9y
IFdlYktpdC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTW9kZWwvbWFjOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5o
OiBBZGRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5tbTogQWRkZWQuCisgICAgICAgIE1vdmUgY29kZSBmcm9tIEhUTUxNb2Rl
bEVsZW1lbnRDb2NvYSBoZXJlLCBhbmQgaW1wbGVtZW50IHRoZSBNb2RlbFBsYXllcgorICAgICAg
ICBpbnRlcmZhY2UgdXNpbmcgaXQuIFJhdGhlciB0aGFuIHVzaW5nIHRoZSBDaHJvbWVDbGllbnQs
IHdlIGNhbiBub3cgZGlyZWN0bHkKKyAgICAgICAgdXNlIGFuIGFzeW5jIElQQyBtZXNzYWdlIHRv
IHNldCB1cCB0aGUgbGluay4KKworICAgICAgICAqIFdlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdCk6Cisg
ICAgICAgIEZpeCBidWlsZCBpc3N1ZSBjYXVzZWQgYnkgYWRkaW5nIG5ldyBmaWxlcy4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OnNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgVXBkYXRlIGNh
bGwgdG8gc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkgdG8gYmUgb24gdGhlIEFSS2l0SW5s
aW5lUHJldmlld01vZGVsUGxheWVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGll
bnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAg
IFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY2xp
ZW50IGZ1bmN0aW9uLgorCiAyMDIxLTExLTEwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxl
LmNvbT4KIAogICAgICAgICBVcGRhdGUgbGlid2VicnRjIHRvIE05NgpJbmRleDogU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9MYXVuY2hpbmciCiAgICAg
IiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9NZWRpYUNhY2hlIgogICAgICIke1dFQktJVF9ESVJ9
L1dlYlByb2Nlc3MvTWVkaWFTdHJlYW0iCisgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9N
b2RlbCIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL05ldHdvcmsiCiAgICAgIiR7V0VC
S0lUX0RJUn0vV2ViUHJvY2Vzcy9OZXR3b3JrL3dlYnJ0YyIKICAgICAiJHtXRUJLSVRfRElSfS9X
ZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMiCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHJldmlzaW9uIDI4NTU0
MCkKKysrIFNvdXJjZS9XZWJLaXQvU291cmNlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw2
ICs1OTIsOCBAQCBXZWJQcm9jZXNzL01lZGlhU2Vzc2lvbi9SZW1vdGVNZWRpYVNlc3NpCiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL01lZGlhRGV2aWNlU2FuZGJveEV4dGVuc2lvbnMuY3BwCiBXZWJQ
cm9jZXNzL01lZGlhU3RyZWFtL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAK
IAorV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcAorCiBXZWJQcm9j
ZXNzL0dQVS9HUFVQcm9jZXNzQ29ubmVjdGlvbi5jcHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0Rpc3BsYXlMaXN0V3JpdGVySGFuZGxlLmNwcAogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApJbmRleDogU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC02NTUsNiArNjU1LDggQEAgV2ViUHJvY2Vzcy9JbnNwZWN0b3Iv
bWFjL1dlYkluc3BlY3RvclVJTQogCiBXZWJQcm9jZXNzL01lZGlhQ2FjaGUvV2ViTWVkaWFLZXlT
dG9yYWdlTWFuYWdlci5jcHAKIAorV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIubW0KKwogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0K
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQW5ub3RhdGlvbi5tbQogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9QREZQbHVnaW5DaG9pY2VBbm5vdGF0aW9uLm1tCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCShyZXZpc2lv
biAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Nb2RlbEVsZW1lbnRDb250cm9s
bGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZvaWQg
dGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsKICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJ
TkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNv
bnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7CisgICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVh
dGVQcmV2aWV3KFVSTCwgU3RyaW5nLCBXZWJDb3JlOjpGbG9hdFNpemUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yPik+JiYpOwogI2VuZGlmCiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
ODI1LDE1ICsxMDgyNSw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0YWtlTW9kZWxFbGVtZW50RnVs
bHMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQg
V2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
dWlkLCBjb25zdCBGbG9hdFNpemUmIHNpemUpCit2b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVt
ZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlkLCBj
b25zdCBGbG9hdFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3Rk
OjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbW9kZWxFbGVtZW50Q29udHJvbGxlcigpLT5tb2RlbEVs
ZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnRleHQsIHVybCwgdXVpZCwgc2l6ZSk7Ci19Ci0KLXZv
aWQgV2ViUGFnZVByb3h5Ojptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNv
bnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQs
IHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFp
bkNvbnRleHRJZChjb250ZXh0LCB1dWlkLCBjb250ZXh0SWQpKTsKKyAgICBtb2RlbEVsZW1lbnRD
b250cm9sbGVyKCktPm1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcodXJsLCB1dWlkLCBzaXpl
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTAs
OCArNTkwLDcgQEAgcHVibGljOgogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1bGxzY3JlZW4o
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRMYXllcklkKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBt
b2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7
Ci0gICAgdm9pZCBtb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOworICAgIHZv
aWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVj
dGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4p
PiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9BTVNfVUkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU4Nyw3ICs1ODcsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIFRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRlbnRMYXllcklEKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01B
QykKLSAgICBNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KHN0cnVjdCBXZWJDb3JlOjpFbGVt
ZW50Q29udGV4dCBlbGVtZW50Q29udGV4dCwgVVJMIHVybCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6
OkZsb2F0U2l6ZSBzaXplKQorICAgIE1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoVVJMIHVy
bCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplKSAtPiAoRXhwZWN0ZWQ8c3Rk
OjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQp
IEFzeW5jCiAjZW5kaWYKIAogICAgIHJlcXVlc3RQZXJtaXNzaW9uKHN0cnVjdCBXZWJDb3JlOjpD
bGllbnRPcmlnaW4gb3JpZ2luLCBzdHJ1Y3QgV2ViQ29yZTo6UGVybWlzc2lvbkRlc2NyaXB0b3Ig
ZGVzY3JpcHRvcikgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpQZXJtaXNzaW9uU3RhdGUgc3Rh
dGUpIEFzeW5jCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1l
bnRDb250cm9sbGVyQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCShyZXZpc2lvbiAyODU1NDAp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Nb2RlbEVsZW1lbnRDb250cm9sbGVy
Q29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgogI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNlbmRpZgpAQCAtMTI0LDEwICsxMjUsMTIgQEAgdm9p
ZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjp0YWtlTW9kZWxFbAogCiAjaWYgRU5BQkxFKEFSS0lU
X0lOTElORV9QUkVWSUVXX01BQykKIAotdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjptb2Rl
bEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBVUkwmIGZpbGVVUkwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplKQordm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjptb2Rl
bEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCBmaWxlVVJMLCBTdHJpbmcgdXVpZCwgV2ViQ29y
ZTo6RmxvYXRTaXplIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoRXhwZWN0ZWQ8c3RkOjpw
YWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLm1v
ZGVsRWxlbWVudEVuYWJsZWQoKSkKKyAgICBpZiAoIW1fd2ViUGFnZVByb3h5LnByZWZlcmVuY2Vz
KCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1h
a2VVbmV4cGVjdGVkKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFp
bldlYktpdEludGVybmFsLCAwLCB7IH0sICJNb2RlbCBlbGVtZW50IGRpc2FibGVkIl9zIH0pKTsK
ICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGF1dG8gbnNVVUlEID0gYWRvcHROUyhbW05T
VVVJRCBhbGxvY10gaW5pdFdpdGhVVUlEU3RyaW5nOnV1aWRdKTsKICAgICBhdXRvIHByZXZpZXcg
PSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZpZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpIFVVSUQ6bnNVVUlE
LmdldCgpXSk7CkBAIC0xNDAsMzIgKzE0Myw0OSBAQCB2b2lkIE1vZGVsRWxlbWVudENvbnRyb2xs
ZXI6Om1vZGVsRWxlbWVuCiAgICAgZWxzZQogICAgICAgICBpdGVyYXRvci0+dmFsdWUgPSBwcmV2
aWV3OwogCisgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG5vdCBqdXN0IHVzaW5nIG5vcm1hbCBV
UkwgLT4gTlNVUkwgY29udmVyc2lvbj8KKyAgICBhdXRvIHVybCA9IGFkb3B0TlMoW1tOU1VSTCBh
bGxvY10gaW5pdEZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0ZW1QYXRoKCldKTsKKwog
ICAgIFJFTEVBU0VfQVNTRVJUKGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgV2Vha1B0ciB3ZWFrVGhp
cyB7ICp0aGlzIH07Ci0gICAgYXV0byBlbGVtZW50Q29udGV4dENvcHkgPSBjb250ZXh0OwotICAg
IGF1dG8gdXVpZENvcHkgPSB1dWlkOwotICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdp
dGhQYXRoOmZpbGVVUkwuZmlsZVN5c3RlbVBhdGgoKV07Ci0gICAgW3ByZXZpZXcgc2V0dXBSZW1v
dGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBj
b250ZXh0RXJyb3IpIHsKKyAgICBbcHJldmlldyBzZXR1cFJlbW90ZUNvbm5lY3Rpb25XaXRoQ29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9
LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJsID0gV1RGTW92ZSh1cmwpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNFcnJvciAqIF9O
dWxsYWJsZSBjb250ZXh0RXJyb3IpIG11dGFibGUgewogICAgICAgICBpZiAoY29udGV4dEVycm9y
KSB7Ci0gICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGNyZWF0ZSByZW1v
dGUgY29ubmVjdGlvbiBmb3IgdXVpZCAlczogJUAuIiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSwg
W2NvbnRleHRFcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0pOworICAgICAgICAgICAgTE9HKE1v
ZGVsRWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIHV1aWQg
JXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgY29udGV4dEVycm9yLmxvY2FsaXplZERlc2Ny
aXB0aW9uKTsKKworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGNvbnRleHRFcnJvciB9XSAo
KSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtl
VW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNoZWQgcmVt
b3RlIGNvbm5lY3Rpb24gd2l0aCBVVUlEICVzLiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiRXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24g
d2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CiAKLSAgICAgICAgW3ByZXZpZXcg
cHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwgY29tcGxldGlvbkhhbmRsZXI6XihOU0Vycm9y
ICogX051bGxhYmxlIGxvYWRFcnJvcikgeworICAgICAgICBbcHJldmlldyBwcmVwYXJlUHJldmll
d09mRmlsZUF0VVJMOnVybC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjptYWtlQmxvY2tQdHIoW3dl
YWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIHByZXZpZXcsIHV1aWQgPSBXVEZNb3ZlKHV1aWQp
LCB1cmwgPSBXVEZNb3ZlKHVybCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildIChOU0Vycm9yICogX051bGxhYmxlIGxvYWRFcnJvcikgbXV0YWJsZSB7CiAg
ICAgICAgICAgICBpZiAobG9hZEVycm9yKSB7Ci0gICAgICAgICAgICAgICAgTE9HKE1vZGVsRWxl
bWVudCwgIlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVALiIsIHV1aWRDb3B5LnV0
ZjgoKS5kYXRhKCksIFtsb2FkRXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dKTsKKyAgICAgICAg
ICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiVW5hYmxlIHRvIGxvYWQgZmlsZSBmb3IgdXVpZCAl
czogJUAuIiwgdXVpZC51dGY4KCkuZGF0YSgpLCBsb2FkRXJyb3IubG9jYWxpemVkRGVzY3JpcHRp
b24pOworCisgICAgICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGVycm9yID0gV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IGxvYWRFcnJvciB9XSAoKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihtYWtlVW5leHBlY3RlZChlcnJvcikpOworICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgTE9HKE1vZGVs
RWxlbWVudCwgIkxvYWRlZCBmaWxlIHdpdGggVVVJRCAlcy4iLCB1dWlkQ29weS51dGY4KCkuZGF0
YSgpKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3aXRoIFVV
SUQgJXMuIiwgdXVpZC51dGY4KCkuZGF0YSgpKTsKIAotICAgICAgICAgICAgY2FsbE9uTWFpblJ1
bkxvb3AoW3dlYWtUaGlzLCBlbGVtZW50Q29udGV4dENvcHksIHV1aWRDb3B5LCBjb250ZXh0SWQg
PSBbcHJldmlldyBjb250ZXh0SWRdXSgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT5tX3dlYlBhZ2VQcm94eS5tb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElk
KGVsZW1lbnRDb250ZXh0Q29weSwgdXVpZENvcHksIGNvbnRleHRJZCk7CisgICAgICAgICAgICBh
dXRvIGNvbnRleHRJZCA9IFtwcmV2aWV3IGNvbnRleHRJZF07CisgICAgICAgICAgICBjYWxsT25N
YWluUnVuTG9vcChbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgdXVpZCA9IFdURk1vdmUo
dXVpZCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNv
bnRleHRJZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc3RkOjptYWtlX3BhaXIodXVpZCwgY29udGV4dElkKSk7CiAgICAgICAgICAgICB9KTsK
LSAgICAgICAgfV07Ci0gICAgfV07CisgICAgICAgIH0pLmdldCgpXTsKKyAgICB9KS5nZXQoKV07
CiB9CiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01MjIwLDYgKzUy
MjAsMTAgQEAKIAkJQkMyMDUyODAxMUM5NDI4NDAwOEYzMzc1IC8qIFdLQnVuZGxlUGFnZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0J1bmRsZVBhZ2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI2NTIxMjExODI2MDgxMDAyNDNFMTIgLyog
RHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBEcmF3aW5nQXJlYVByb3h5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMy
NjUyMTMxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCQzJCNDEwQzI3MzJFRjk2MDBBMkQxOTEgLyogQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEQyNzMyRUY5NjAw
QTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDMkI0MTFBMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXll
clByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMUIyNzMyRjY2RTAwQTJEMTkxIC8qIFdl
Yk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViTW9kZWxQbGF5
ZXJQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMkQwMjE2MTJB
QzQxQ0IwMEU3MzJBMyAvKiBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxODEyQUM0MjZDMDBFNzMyQTMgLyogV0tQ
YWdlTG9hZFR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZUxv
YWRUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNjVGOTEyNTkzNDRF
MDBFNzEyNzggLyogQ2FjaGVNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWNoZU1vZGVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzc0LDYgKzk3
NzgsNyBAQAogCQkJCTMzRDNBM0JEMTMzOTYwOTgwMDcwOUJFNCAvKiBNZWRpYUNhY2hlICovLAog
CQkJCTA3MzZCNzUyMjYwRDAzOUYwMEUwNjk5NCAvKiBNZWRpYVNlc3Npb24gKi8sCiAJCQkJNEE0
MTBGNDExOUFGN0IyNzAwMkVCQUI1IC8qIE1lZGlhU3RyZWFtICovLAorCQkJCUJDMkI0MTBBMjcz
MkVGNjUwMEEyRDE5MSAvKiBNb2RlbCAqLywKIAkJCQk1MTA1QjBEMjE2MkY3QTVFMDBFMjc3MDkg
LyogTmV0d29yayAqLywKIAkJCQkzMTA5OTk3NDE0NkM4QUE4MDAyOURFQjkgLyogTm90aWZpY2F0
aW9ucyAoVXNlcikgKi8sCiAJCQkJMUE2RkI3QUExMUU2NEI0OTAwREIxMzcxIC8qIFBsdWdpbnMg
Ki8sCkBAIC0xMDYwMyw2ICsxMDYwOCwyNSBAQAogCQkJcGF0aCA9IGM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwogCQl9OworCQlCQzJCNDEwQTI3MzJFRjY1MDBBMkQxOTEgLyogTW9kZWwg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTBC
MjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8sCisJCQkJQkMyQjQxMUIyNzMyRjY2RTAwQTJEMTkx
IC8qIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwICovLAorCQkJCUJDMkI0MTFBMjczMkY2NkUw
MEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IE1vZGVsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQkMyQjQxMEIyNzMy
RUY3NTAwQTJEMTkxIC8qIG1hYyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQkMyQjQxMEMyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMEQyNzMyRUY5NjAwQTJEMTkxIC8qIEFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBtYWM7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlCQzJFNkU3NDExNDE5NkYwMDBBNjNC
MUUgLyogUGxhdGZvcm0gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24g
Mjg1NTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDQsOCArMTQ0LDggQEAKICNpbmNsdWRlIDx3dGYvVVJMUGFyc2VyLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgRU5BQkxFKEFSS0lUX0lO
TElORV9QUkVWSUVXKQotI2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5oPgorI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisjaW5jbHVkZSAiQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIuaCIKICNlbmRpZgogCiAjaWYgIU9TKFdJTkRPV1MpCkBAIC01NzYs
OSArNTc2LDkgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYQogICAg
ICAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRpYUNhY2hlRGlyZWN0b3J5KHBh
cmFtZXRlcnMubWVkaWFDYWNoZURpcmVjdG9yeSk7CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFVykKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQog
ICAgIGlmICghcGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeS5pc0VtcHR5KCkp
Ci0gICAgICAgIFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOworICAgICAg
ICBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkocGFyYW1ldGVycy5tb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSk7CiAjZW5kaWYKIAog
ICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKHBhcmFtZXRlcnMucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkobm9uZXhpc3Rl
bnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92
aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJNb2RlbFBsYXllclByb3ZpZGVyLmgiCisK
KyNpbmNsdWRlIDxXZWJDb3JlL01vZGVsUGxheWVyLmg+CisKKyNpZiBFTkFCTEUoQVJLSVRfSU5M
SU5FX1BSRVZJRVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYk1vZGVsUGxheWVyUHJvdmlk
ZXI6OldlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYgcGFnZSkKKyAgICA6IG1fcGFnZSB7
IHBhZ2UgfQoreworICAgIFVOVVNFRF9QQVJBTShtX3BhZ2UpOworfQorCitXZWJNb2RlbFBsYXll
clByb3ZpZGVyOjp+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpID0gZGVmYXVsdDsKKworLy8gTUFS
SzogLSBXZWJDb3JlOjpNb2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKworUmVmUHRyPFdl
YkNvcmU6Ok1vZGVsUGxheWVyPiBXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpjcmVhdGVNb2RlbFBs
YXllcihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQoreworI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgcmV0dXJuIEFSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyOjpjcmVhdGUobV9wYWdlLCBjbGllbnQpOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oY2xpZW50KTsKKyAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgorfQorCit9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXll
clByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJDb3JlL01vZGVs
UGxheWVyUHJvdmlkZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2U7
CisKK2NsYXNzIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6
TW9kZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgV2ViTW9kZWxQbGF5ZXJQcm92aWRl
cihXZWJQYWdlJik7CisgICAgdmlydHVhbCB+V2ViTW9kZWxQbGF5ZXJQcm92aWRlcigpOworCitw
cml2YXRlOgorICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlkZXIgb3ZlcnJpZGVzLgor
ICAgIHZpcnR1YWwgUmVmUHRyPFdlYkNvcmU6Ok1vZGVsUGxheWVyPiBjcmVhdGVNb2RlbFBsYXll
cihXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpIGZpbmFsOworCisgICAgV2ViUGFnZSYgbV9w
YWdlOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9B
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2NSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9Q
UkVWSUVXX01BQykKKworI2luY2x1ZGUgPFdlYkNvcmUvTW9kZWxQbGF5ZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL01vZGVsUGxheWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8d3RmL0NvbXBpbGVyLmg+
CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorCitPQkpDX0NMQVNTIEFTVklubGluZVByZXZp
ZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBBUktpdElubGluZVByZXZpZXdNb2Rl
bFBsYXllciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpNb2RlbFBsYXllciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcj4gY3JlYXRlKFdlYlBhZ2Um
LCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYpOworICAgIHZpcnR1YWwgfkFSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyKCk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeShjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0ZToKKyAgICBBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdlJiwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGllbnQm
KTsKKworICAgIC8vIFdlYkNvcmU6Ok1vZGVsUGxheWVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZChXZWJDb3JlOjpNb2RlbCYsIFdlYkNvcmU6OkxheW91dFNpemUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSBvdmVycmlkZTsKKworICAgIHZv
aWQgY3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYpOworICAgIHZvaWQgY2xlYXJGaWxlKCk7CisK
KyAgICBXZWFrUHRyPFdlYlBhZ2U+IG1fcGFnZTsKKyAgICBXZWFrUHRyPFdlYkNvcmU6Ok1vZGVs
UGxheWVyQ2xpZW50PiBtX2NsaWVudDsKKworICAgIFN0cmluZyBtX2ZpbGVQYXRoOworICAgIFJl
dGFpblB0cjxBU1ZJbmxpbmVQcmV2aWV3PiBtX2lubGluZVByZXZpZXc7Cit9OworCit9CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCShub25leGlz
dGVudCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNzcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFV19NQUMpCisKKyNpbXBvcnQgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgi
CisKKyNpbXBvcnQgIldlYlBhZ2UuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CisjaW1wb3J0IDxXZWJDb3JlL01vZGVsLmg+CisjaW1wb3J0IDxwYWwvc3BpL21hYy9TeXN0ZW1Q
cmV2aWV3U1BJLmg+CisjaW1wb3J0IDx3dGYvU29mdExpbmtpbmcuaD4KKyNpbXBvcnQgPHd0Zi9V
VUlELmg+CisKK1NPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhBc3NldFZpZXdlcik7CitTT0ZU
X0xJTktfQ0xBU1MoQXNzZXRWaWV3ZXIsIEFTVklubGluZVByZXZpZXcpOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworUmVmPEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyPiBBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6Ok1vZGVs
UGxheWVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIocGFnZSwgY2xpZW50KSk7Cit9CisKK0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjpBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcihXZWJQYWdl
JiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQorICAgIDogbV9wYWdl
IHsgcGFnZSB9CisgICAgLCBtX2NsaWVudCB7IGNsaWVudCB9Cit7Cit9CisKK0FSS2l0SW5saW5l
UHJldmlld01vZGVsUGxheWVyOjp+QVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIoKQorewor
ICAgIGNsZWFyRmlsZSgpOworfQorCitzdGF0aWMgU3RyaW5nJiBzaGFyZWRNb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc2hh
cmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7CisgICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxl
bWVudENhY2hlRGlyZWN0b3J5OworfQorCitzdGF0aWMgY29uc3QgU3RyaW5nJiBtb2RlbEVsZW1l
bnRDYWNoZURpcmVjdG9yeSgpCit7CisgICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hl
RGlyZWN0b3J5KCk7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OnNl
dE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKK30KKwordm9pZCBBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlRmlsZShXZWJDb3JlOjpNb2RlbCYgbW9k
ZWxTb3VyY2UpCit7CisgICAgLy8gVGhlIG5lZWQgZm9yIGEgZmlsZSBpcyBvbmx5IHRlbXBvcmFy
eSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBBU1ZJbmxpbmVQcmV2aWV3LAorICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1NjcuCisKKyAgICBjbGVhckZpbGUo
KTsKKworICAgIGF1dG8gcGF0aFRvRGlyZWN0b3J5ID0gbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rv
cnkoKTsKKyAgICBpZiAocGF0aFRvRGlyZWN0b3J5LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBkaXJlY3RvcnlFeGlzdHMgPSBGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBh
dGhUb0RpcmVjdG9yeSk7CisgICAgaWYgKGRpcmVjdG9yeUV4aXN0cyAmJiBGaWxlU3lzdGVtOjpm
aWxlVHlwZUZvbGxvd2luZ1N5bWxpbmtzKHBhdGhUb0RpcmVjdG9yeSkgIT0gRmlsZVN5c3RlbTo6
RmlsZVR5cGU6OkRpcmVjdG9yeSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWRpcmVjdG9yeUV4aXN0cyAmJiAhRmlsZVN5
c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKHBhdGhUb0RpcmVjdG9yeSkpIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXZSBu
ZWVkIHRvIHN1cHBvcnQgLnJlYWxpdHkgZmlsZXMgYXMgd2VsbCwgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2OC4KKyAgICBhdXRvIGZpbGVOYW1lID0gRmlsZVN5
c3RlbTo6ZW5jb2RlRm9yRmlsZU5hbWUoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKSArICIu
dXNkeiI7CisgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoVG9EaXJlY3RvcnksIGZpbGVOYW1lKTsKKyAgICBhdXRvIGZpbGUgPSBGaWxl
U3lzdGVtOjpvcGVuRmlsZShmaWxlUGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0
ZSk7CisgICAgaWYgKGZpbGUgPD0gMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3Rl
bTo6d3JpdGVUb0ZpbGUoZmlsZSwgbW9kZWxTb3VyY2UuZGF0YSgpLT5kYXRhKCksIG1vZGVsU291
cmNlLmRhdGEoKS0+c2l6ZSgpKTsKKyAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoZmlsZSk7Cisg
ICAgbV9maWxlUGF0aCA9IGZpbGVQYXRoOworfQorCit2b2lkIEFSS2l0SW5saW5lUHJldmlld01v
ZGVsUGxheWVyOjpjbGVhckZpbGUoKQoreworICAgIGlmIChtX2ZpbGVQYXRoLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX2ZpbGVQYXRo
KTsKKyAgICBtX2ZpbGVQYXRoID0gZW1wdHlTdHJpbmcoKTsKK30KKworLy8gTUFSSzogLSBXZWJD
b3JlOjpNb2RlbFBsYXllciBvdmVycmlkZXMuCisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmxvYWQoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlLCBXZWJDb3JlOjpMYXlv
dXRTaXplIHNpemUpCit7CisgICAgYXV0byBzdHJvbmdDbGllbnQgPSBtX2NsaWVudC5nZXQoKTsK
KyAgICBpZiAoIXN0cm9uZ0NsaWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogc3Ry
b25nUGFnZSA9IG1fcGFnZS5nZXQoKTsKKyAgICBpZiAoIXN0cm9uZ1BhZ2UpIHsKKyAgICAgICAg
c3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqdGhpcywgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciB7IFdlYkNvcmU6OmVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1vZGVsU291cmNlLnVy
bCgpLCAiV2ViUGFnZSBkZXN0cm95ZWQiX3MgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjcmVhdGVGaWxlKG1vZGVsU291cmNlKTsKKworICAgIG1faW5saW5lUHJldmlldyA9IGFk
b3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3RhbmNlKCkgaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSldKTsKKyAgICBMT0coTW9k
ZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6Om1vZGVsRGlkQ2hhbmdl
KCkgY3JlYXRlZCBwcmV2aWV3IHdpdGggVVVJRCAlcyBhbmQgc2l6ZSAlZiB4ICVmLiIsICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
RXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmluZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yPik+IGNvbXBsZXRpb25IYW5kbGVyID0gW3dlYWtTZWxmID0gV2Vha1B0ciB7ICp0aGlzIH1d
IChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4sIFdlYkNvcmU6OlJlc291cmNl
RXJyb3I+IHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIGF1dG8gc3Ryb25nU2VsZiA9IHdlYWtT
ZWxmLmdldCgpOworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgYXV0byBzdHJvbmdDbGllbnQgPSBzdHJvbmdTZWxmLT5tX2NsaWVudC5nZXQo
KTsKKyAgICAgICAgaWYgKCFzdHJvbmdDbGllbnQpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJBUktp
dElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJ
ZCgpIHJlY2VpdmVkIGVycm9yIGZyb20gVUlQcm9jZXNzIik7CisgICAgICAgICAgICBzdHJvbmdD
bGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCByZXN1bHQuZXJyb3IoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhdXRvJiBbdXVpZCwgY29udGV4
dElkXSA9ICpyZXN1bHQ7CisgICAgICAgIFN0cmluZyBleHBlY3RlZFVVSUQgPSBbc3Ryb25nU2Vs
Zi0+bV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmc7CisKKyAgICAgICAgaWYgKHV1aWQg
IT0gZXhwZWN0ZWRVVUlEKSB7CisgICAgICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQo
KSBVVUlEIG1pc21hdGNoLCByZWNlaXZlZCAlcyBidXQgZXhwZWN0ZWQgJXMuIiwgdXVpZC51dGY4
KCkuZGF0YSgpLCBleHBlY3RlZFVVSUQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBzdHJv
bmdDbGllbnQtPmRpZEZhaWxMb2FkaW5nKCpzdHJvbmdTZWxmLCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCBtYWtlU3Ry
aW5nKCJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6aW5saW5lUHJldmlld0RpZE9idGFp
bkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gsIHJlY2VpdmVkICIsIHV1aWQsICIgYnV0IGV4cGVj
dGVkICIsIGV4cGVjdGVkVVVJRCwgIi4iKSB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFtzdHJvbmdTZWxmLT5tX2lubGluZVByZXZpZXcgc2V0UmVtb3RlQ29u
dGV4dDpjb250ZXh0SWRdOworICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQ
cmV2aWV3TW9kZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBzdWNj
ZXNzZnVsbHkgZXN0YWJsaXNoZWQgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIFVVSUQgJXMuIiwgdXVp
ZC51dGY4KCkuZGF0YSgpKTsKKworICAgICAgICBzdHJvbmdDbGllbnQtPmRpZEZpbmlzaExvYWRp
bmcoKnN0cm9uZ1NlbGYpOworICAgIH07CisgICAgCisgICAgc3Ryb25nUGFnZS0+c2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENyZWF0ZVBy
ZXZpZXcoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxp
bmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcsIHNpemUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKK1BsYXRmb3JtTGF5ZXIqIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVy
OjpsYXllcigpCit7CisgICAgcmV0dXJuIFttX2lubGluZVByZXZpZXcgbGF5ZXJdOworfQorCit9
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuY3BwCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSwxMSBAQAogI2luY2x1ZGUgIldl
Yk5vdGlmaWNhdGlvbk1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEJVSUxUX0lOX05P
VElGSUNBVElPTlMpCisjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtOTEsNyArOTYsNyBA
QCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlCiAgICAgICAgIH07CiAK
ICNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKLSAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFi
bGVkKCkgJiYgYWxsb3dlZCkgeworICAgICAgICBpZiAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5idWlsdEluTm90aWZpY2F0aW9uc0VuYWJsZWQoKSAm
JiBhbGxvd2VkKSB7CiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhhbmRsZXI6OlJlcXVlc3RTeXN0
ZW1Ob3RpZmljYXRpb25QZXJtaXNzaW9uKHNlY3VyaXR5T3JpZ2luLnRvU3RyaW5nKCkpLCBXVEZN
b3ZlKGlubmVyUGVybWlzc2lvbkhhbmRsZXIpLCBtX3BhZ2UtPnNlc3Npb25JRCgpLnRvVUludDY0
KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MzEs
MTMgKzE1MzEsNiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6dGFrZU1vZGVsRWxlbWVudEZ1CiB9
CiAjZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdl
YkNocm9tZUNsaWVudDo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhXZWJDb3JlOjpIVE1M
TW9kZWxFbGVtZW50JiBlbGVtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1dWlk
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmIHNpemUpIGNvbnN0Ci17Ci0gICAgbV9wYWdlLm1v
ZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoZWxlbWVudCwgdXJsLCB1dWlkLCBzaXplKTsKLX0K
LSNlbmRpZgotCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9BTVNfVUkpCiAKIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzdGFydEFwcGxlUGF5QU1TVUlTZXNzaW9uKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdV
UkwsIGNvbnN0IEFwcGxlUGF5QU1TVUlSZXF1ZXN0JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKHN0ZDo6b3B0aW9uYWw8Ym9vbD4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCShyZXZpc2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1OCw5ICs0NTgsNiBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJF
VklFV19JT1MpCiAgICAgdm9pZCB0YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbihXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQgY29udGVudExheWVySWQpIGNvbnN0IGZpbmFs
OwogI2VuZGlmCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICB2b2lk
IG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYs
IGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNv
bnN0IGZpbmFsOwotI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX0FNU19VSSkKICAgICB2
b2lkIHN0YXJ0QXBwbGVQYXlBTVNVSVNlc3Npb24oY29uc3QgVVJMJiwgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlBTVNVSVJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9u
YWw8Ym9vbD4mJik+JiYpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiAr
MTA3LDcgQEAKICNpbmNsdWRlICJXZWJNZWRpYUtleVN0b3JhZ2VNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiV2ViTWVkaWFLZXlTeXN0ZW1DbGllbnQuaCIKICNpbmNsdWRlICJXZWJNZWRpYVN0cmF0ZWd5
LmgiCisjaW5jbHVkZSAiV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIldlYk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5oIgpAQCAtMjczLDEwICsyNzQsNiBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oPgogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi0jaW5jbHVkZSA8V2ViQ29yZS9IVE1MTW9kZWxFbGVt
ZW50Lmg+Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKICNpbmNsdWRlICJE
YXRhRGV0ZWN0aW9uUmVzdWx0LmgiCiAjZW5kaWYKQEAgLTU3NSw3ICs1NzIsOCBAQCBXZWJQYWdl
OjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8
TWVkaWFSZWNvcmRlclByb3ZpZGVyPigqdGhpcyksCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSgpLAogICAgICAgICBXZWJQZXJtaXNzaW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCp0aGlzKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJTdG9y
YWdlUHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJTdG9yYWdlUHJvdmlkZXI+
KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViTW9kZWxQbGF5ZXJQcm92aWRlcj4oKnRoaXMp
CiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hy
b21lQ2xpZW50KCp0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTc3MzksMjEg
Kzc3MzcsNiBAQCB2b2lkIFdlYlBhZ2U6OnRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuCiB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdlYlBh
Z2U6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRTaXplJiBzaXplKQotewotICAgIGlmIChhdXRvIGVsZW1lbnRDb250ZXh0ID0g
Y29udGV4dEZvckVsZW1lbnQoZWxlbWVudCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6TW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqZWxlbWVudENvbnRleHQsIHVy
bCwgdXVpZCwgc2l6ZSkpOwotfQotCi12b2lkIFdlYlBhZ2U6Om1vZGVsRWxlbWVudFByZXZpZXdE
aWRPYnRhaW5Db250ZXh0SWQoY29uc3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmIGVsZW1lbnRD
b250ZXh0LCBjb25zdCBTdHJpbmcmIHV1aWQsIHVpbnQzMl90IGNvbnRleHRJZCkKLXsKLSAgICBh
dXRvIGVsZW1lbnQgPSBlbGVtZW50Rm9yQ29udGV4dChlbGVtZW50Q29udGV4dCk7Ci0gICAgaWYg
KGlzPFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICBkb3duY2Fz
dDxXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50PigqZWxlbWVudCkuaW5saW5lUHJldmlld0RpZE9i
dGFpbkNvbnRleHRJZCh1dWlkLCBjb250ZXh0SWQpOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGFn
ZTo6c2Nyb2xsVG9SZWN0KGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgb3JpZ2luKQogewogICAgIG1haW5GcmFtZVZpZXcoKS0+
c2V0U2Nyb2xsUG9zaXRpb24oSW50UG9pbnQodGFyZ2V0UmVjdC5taW5YTWluWUNvcm5lcigpKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZp
c2lvbiAyODU1NDApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyMCwxMCArMjIwLDYgQEAgY2xhc3MgU3Vic3RpdHV0ZURh
dGE7CiBjbGFzcyBUZXh0Q2hlY2tpbmdSZXF1ZXN0OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwog
Ci0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQotY2xhc3MgSFRNTE1vZGVsRWxlbWVu
dDsKLSNlbmRpZgotCiBlbnVtIFN5bnRoZXRpY0NsaWNrVHlwZSA6IGludDhfdDsKIGVudW0gY2xh
c3MgQ09FUERpc3Bvc2l0aW9uIDogYm9vbDsKIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQgOiBib29sOwpAQCAtMTQ5NiwxMCArMTQ5Miw2IEBAIHB1YmxpYzoKICNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFrZU1vZGVsRWxlbWVudEZ1
bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEIGNvbnRlbnRM
YXllcklkKTsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0g
ICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVs
ZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFNp
emUmKTsKLSAgICB2b2lkIG1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29u
c3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQmLCBjb25zdCBTdHJpbmcmLCB1aW50MzJfdCk7Ci0j
ZW5kaWYKIAogICAgIHZvaWQgcHJlcGFyZVRvUnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKCk7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtNjQ3LDgg
KzY0Nyw0IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW4KICNlbmRp
ZgogCiAgICAgU2Nyb2xsVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCB0YXJnZXRSZWN0LCBXZWJD
b3JlOjpGbG9hdFBvaW50IG9yaWdpbikKLQotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCi0gICAgTW9kZWxFbGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChzdHJ1Y3Qg
V2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQsIFN0cmluZyB1dWlkLCB1aW50
MzJfdCBjb250ZXh0SWQpCi0jZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDIxLTExLTA4ICBTYW0gV2Vpbmln
ICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lmaWMg
Y29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6Cisg
ICAgICAgICgtW1dlYlZpZXcgaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTpmcmFtZTpw
cmVmZXJlbmNlczpncm91cE5hbWU6XSk6CisgICAgICAgIFVzZSBEdW1teU1vZGVsUGxheWVyUHJv
dmlkZXIgZm9yIHRoZSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgc2luY2UgdGhlIGZlYXR1cmUK
KyAgICAgICAgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViS2l0TGVnYWN5IGF0IHRoZSBtb21lbnQu
CisKIDIwMjEtMTAtMjggIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtDRl0gUmVkdWNlIGR1cGxpY2F0aW9uIGFuZCB1bm5lZWRlZCBidWZmZXIgYWxsb2NhdGlvbnMg
YW5kIGNvcHlpbmcgaW4gVVJMIGNvZGUsIGFsc28gcmVtb3ZlIHVudXNlZCBtZXRob2RzIGFuZCBm
dW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDI4NTU0MCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBACiAjaW1wb3J0IDxX
ZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0RyYWdJdGVtLmg+CisjaW1wb3J0IDxXZWJDb3JlL0R1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9EdW1teVNwZWVjaFJlY29nbml0aW9u
UHJvdmlkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHVtbXlTdG9yYWdlUHJvdmlkZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRWRpdGluZy5oPgpAQCAtMTU0Myw3ICsxNTQ0LDggQEAgLSAodm9pZClf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBtYWtlVW5pcXVlUmVmPFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKSwKICAgICAgICAgV2ViQnJvYWRjYXN0Q2hh
bm5lbFJlZ2lzdHJ5OjpnZXRPckNyZWF0ZShbW3NlbGYgcHJlZmVyZW5jZXNdIHByaXZhdGVCcm93
c2luZ0VuYWJsZWRdKSwKICAgICAgICAgV2ViQ29yZTo6RHVtbXlQZXJtaXNzaW9uQ29udHJvbGxl
cjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9yYWdl
UHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQ
cm92aWRlcj4oKSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teU1vZGVsUGxh
eWVyUHJvdmlkZXI+KCkKICAgICApOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7
CkBAIC0xODIzLDcgKzE4MjUsOCBAQCAtIChpZClpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0
eWxlOihOCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3Zp
ZGVyPigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRl
KFtbc2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAgICBX
ZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFr
ZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtl
VW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElP
UyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NTQwKQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMTEtMDggIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBz
cGVjaWZpYyBjb2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAgIFVzZSBEdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIgZm9yIHRoZSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgc2luY2UgdGhlIGZlYXR1cmUKKyAg
ICAgICAgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2ViS2l0TGVnYWN5IGF0IHRoZSBtb21lbnQuCisK
IDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIEFYOiByZW5hbWUgYWN0aW9uVmVyYigpIGFzIGxvY2FsaXplZEFjdGlvblZlcmIo
KQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDI4NTU0MCkK
KysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3RvcmFnZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTMwNjUsNyArMzA2Niw4IEBAIEhSRVNVTFQgV2ViVmlldzo6
aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICAgICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29y
ZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0
T3JDcmVhdGUoZmFsc2UpLAogICAgICAgICBXZWJDb3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9s
bGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVuaXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3Jh
Z2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFn
ZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQ
bGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAgICAgY29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQg
PSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMjg1NTkxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMTEtMTAgIFNhbSBXZWluaWcgIDx3ZWlu
aWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3RvciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIG91
dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAg
ICAgU2tpcCBtb2RlbCB0ZXN0cyBmb3IgV2ViS2l0TGVnYWN5IGFzIGl0IGlzIG5vdCBzdXBwb3J0
ZWQgdGhlcmUgY3VycmVudGx5LgorCiAyMDIxLTExLTEwICBHZXphIExvcmUgIDxnbG9yZUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtKU0NdW0FSTXY3XSBVbnNraXAgTGF5b3V0VGVzdHMvanMvc2Ny
aXB0LXRlc3RzL3N0YWNrLW92ZXJmbG93LXJlZ2V4cC5qcwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg1NDc4KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNv
cHkpCkBAIC00Niw2ICs0Niw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy0KIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkgWyBTa2lwIF0KIGNzcy10eXBlZG9tIFsg
U2tpcCBdCiBjc3MtZGFyay1tb2RlIFsgU2tpcCBdCittb2RlbC1lbGVtZW50IFsgU2tpcCBdCiAK
ICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdLMSB5ZXQu
CiBmYXN0L21lZGlhc3RyZWFtCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443950</attachid>
            <date>2021-11-11 08:50:34 -0800</date>
            <delta_ts>2021-11-11 10:19:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232848-20211111085033.patch</filename>
            <type>text/plain</type>
            <size>107470</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAyMS0xMS0wOSAgU2FtIFdl
aW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNp
ZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5IERl
YW4gSmFja3Nvbi4KKworICAgICAgICBGYWN0b3Igb3V0IG1vc3Qgb2YgdGhlIHBsYXRmb3JtIC8g
cmVuZGVyZXIgc3BlY2lmaWMgZGV0YWlscyBmcm9tIEhUTUxNb2RlbEVsZW1lbnQKKyAgICAgICAg
aW50byBhIG5ldyBNb2RlbFBsYXllci9Nb2RlbFBsYXllclByb3ZpZGVyIGFic3RyYWN0aW9uLiBU
aGlzIGFsbG93cyBmb3IgYmV0dGVyCisgICAgICAgIHNlcGFyYXRpb24gb2YgY29uY2VybnMsIHRp
Z2h0ZXIgY291cGxpbmcgaW4gdGhlIEFSS2l0IHBsYXllciBpbXBsZW1lbnRhdGlvbiBieQorICAg
ICAgICBiZWluZyBlbnRpcmVseSBpbiBXZWJLaXQgYW5kIHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQg
bXVsdGlwbGUgYmFja2VuZHMuIFRoZSBzdWZmaXgKKyAgICAgICAgInBsYXllciIgd2FzIGNob3Nl
biB0byByb3VnaGx5IGFsaWduIHdpdGggdGhlIGV4aXN0aW5nIGNvbmNlcHQgb2YgYSBNZWRpYVBs
YXllci4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEhlYWRlcnMuY21h
a2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFk
ZCBuZXcgZmlsZXMgLyByZW1vdmUgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBIVE1MTW9kZWxFbGVtZW50
Q29jb2EubW0KKworICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVt
ZW50Lmg6CisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6fkhUTUxNb2RlbEVsZW1l
bnQpOgorICAgICAgICBjbGVhckZpbGUoKSBpcyBub3cgaGFuZGxlZCBpbiB0aGUgQVJLaXQgc3Bl
Y2lmaWMgTW9kZWxQbGF5ZXIgZGVzdHJ1Y3Rvci4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTE1v
ZGVsRWxlbWVudDo6c2V0U291cmNlVVJMKToKKyAgICAgICAgRm9yIHNpbXBsaWNpdHksIHdlIGNs
ZWFyIHRoZSBwbGF5ZXIgd2hlbiB0aGUgVVJMIGNoYW5nZXMgYW5kIHdlIHN0YXJ0IGEKKyAgICAg
ICAgbmV3IGxvYWQuIEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBjb25zaWRlciBrZWVwaW5nIHRo
ZSBwbGF5ZXIgYXJvdW5kIGFuZAorICAgICAgICBzaW1wbHkgcmVzZXR0aW5nIGl0IGlmIHRoYXQg
cHJvdmVzIHRvIGJlIGEgcGVyZm9ybWFuY2UgYmVuZWZpdC4KKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKToKKyAgICAgICAgUmVwdXJwb3NlIG1vZGVs
RGlkQ2hhbmdlIHRvIG5vdyBiZSB3aGVyZSB3ZSBjcmVhdGUgdGhlIHBsYXllciwgdmlhIHRoZQor
ICAgICAgICBwcm92aWRlciBhbmQgaW5zdGFudGlhdGUgdGhlIGxvYWQuCisKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnVzZXNQbGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIgY29uc3QpOgorICAg
ICAgICBBZGQgYWNjZXNzb3JzIGZvciB0aGUgcGxheWVyJ3MgbGF5ZXIgYW5kIGEgcHJlZGljYXRl
IGluZGljYXRpbmcKKyAgICAgICAgd2hldGhlciB0aGVyZSBpcyBvbmUgdGhhdCBSZW5kZXJMYXll
ckJhY2tpbmcgdXNlcyB0byBwaWNrIHdoZXRoZXIKKyAgICAgICAgaXQgd2lsbCB1c2UgdGhlIHBs
YXRmb3JtIGxheWVyIG9yIHRoZSBtb2RlbC1hcy1jb250ZW50cyBwYXRoLiBJdAorICAgICAgICB3
b3VsZCBiZSBnb29kIHRvIG1vdmUgdG8ganVzdCBoYXZpbmcgb25lIGluIHRoZSBmdXR1cmUuCisg
ICAgICAgIAorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50OjpkaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgIEltcGxlbWVudCB0aGUgTW9kZWxQbGF5ZXJDbGllbnQgZnVuY3Rpb25zIHRv
IHRyaWdnZXIgdGhlIHJlbmRlciB0cmVlIHVwZGF0ZS4KKworICAgICAgICAoV2ViQ29yZTo6c2hh
cmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1vZGVsRWxlbWVudDo6c2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudDo6bW9kZWxFbGVtZW50Q2Fj
aGVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICBNb3ZlIHRvIEFSS2l0IE1vZGVsUGxheWVy
IGltcGxlbWVudGF0aW9uCisKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1v
ZGVsRWxlbWVudENvY29hLm1tOiBSZW1vdmVkLgorICAgICAgICBNb3ZlIHRvIEFSS2l0IE1vZGVs
UGxheWVyIGltcGxlbWVudGF0aW9uCisKKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXIuaDogQWRkZWQuCisgICAgICAgIFRoZSBtb2RlbCBwbGF5ZXIgaXMgdGhlIG1h
aW4gaW50ZXJmYWNlIGZvciBsb2FkaW5nIGFuZCBpbnRlcmFjdGluZworICAgICAgICB3aXRoIG1v
ZGVscy4KKworICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllckNsaWVu
dC5jcHA6IEFkZGVkLgorICAgICAgICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgVGhlIG1vZGVsIHBsYXllciBjbGllbnQgYWxsb3dz
IHRoZSBtb2RlbCBwbGF5ZXIgdG8gY29tbXVuaWNhdGUgYmFjaworICAgICAgICB0byBpdHMgb3du
ZXIgdGhpbmdzIGxpa2UgbG9hZCBzdWNjZXNzIC8gZmFpbHVyZSBhbmQgd2lsbCBsaWtlbHkgYWxz
bworICAgICAgICBhbGxvdyB0cmlnZ2luZyB0aGluZ3MgbGlrZSBzdWJyZXNvdXJjZSBsb2FkcyB0
aGUgbW9kZWwgcGxheWVyIG5lZWRzCisgICAgICAgIHRvIGtpY2sgb2ZmLgorCisgICAgICAgICog
TW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRl
ZC4KKyAgICAgICAgVGhlIG1vZGVsIHBsYXllciBwcm92aWRlciBhbGxvd3MgdGhlIFdlYktpdCBs
YXllciB0byBwcm92aWRlIGl0cworICAgICAgICBvd24gbW9kZWwgcGxheWVycy4KKworICAgICAg
ICAqIE1vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teTogQWRkZWQuCisgICAgICAgICogTW9kdWxl
cy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5oOiBBZGRl
ZC4KKyAgICAgICAgKiBNb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyLmNwcDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1
bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgVGhlIGR1bW15
IHBsYXllciBhbmQgcHJvdmlkZXIgYXJlIHVzZWQgZm9yIHBsYXRmb3JtcyAvIGNvbmZpZ3VyYXRp
b25zCisgICAgICAgIHdoZXJlIG1vZGVsIGlzIG5vdCBzdXBwb3J0ZWQuCisKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYWdlQ29uZmlndXJhdGlvbldpdGhFbXB0eUNsaWVudHMpOgor
ICAgICAgICBVc2UgdGhlIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlciBmb3IgdGhlIGVtcHR5IGNs
aWVudC4KKworICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICBUaGlzIGlzIGlzIG5vIGxvbmdlciBuZWVkZWQgbm93IHRoYXQgdGhlIEFS
S2l0IGltcGxlbWVudGF0aW9uIGlzIGluIFdlYktpdC4KKworICAgICAgICAqIHBhZ2UvUGFnZS5j
cHA6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5jcHA6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICBB
ZGQgYSBtb2RlbCBwbGF5ZXIgcHJvdmlkZXIgdG8gdGhlIGxpc3Qgb2YgcHJvdmlkZXJzIHRoZSBw
YWdlIHZlbmRzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01vZGVsLmg6CisgICAgICAgIFJlbW92ZSAjaWYgRU5B
QkxFKE1PREVMX0VMRU1FTlQpIGZvciBwYXJ0cyB0aGF0IGFyZW4ndCBhY3R1YWxseSB0aGUKKyAg
ICAgICAgZWxlbWVudCBpdHNlbGYuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJC
YWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
Q29uZmlndXJhdGlvbik6CisgICAgICAgIFJlbW92ZSBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGFu
ZCB1dGlsaXplIHRoZSBuZXcgcGxhdGZvcm1MYXllciBhY2Nlc3NvcgorICAgICAgICBhbmQgcHJl
ZGljYXRlIG9uIEhUTUxNb2RlbEVsZW1lbnQuCisKIDIwMjEtMTEtMTEgIFR5bGVyIFdpbGNvY2sg
IDx0eWxlcl93QGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogSW1wbGVtZW50IEFYQ29yZU9iamVj
dDo6dmFsdWUgZm9yIEFYSXNvbGF0ZWRPYmplY3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbSIKICAgICAi
JHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMiCiAgICAgIiR7V0VC
Q09SRV9ESVJ9L01vZHVsZXMvbW9kZWwtZWxlbWVudCIKKyAgICAiJHtXRUJDT1JFX0RJUn0vTW9k
dWxlcy9tb2RlbC1lbGVtZW50L2R1bW15IgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL25h
dmlnYXRvcmNvbnRlbnR1dGlscyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmlj
YXRpb25zIgogICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL3BheW1lbnRyZXF1ZXN0IgpJbmRl
eDogU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9I
ZWFkZXJzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDEyIEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENVdGlscy5oCiAKICAgICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRN
TE1vZGVsRWxlbWVudC5oCisgICAgTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyLmgK
KyAgICBNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuaAorICAgIE1vZHVs
ZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgKKworICAgIE1vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgKKyAgICBNb2R1bGVzL21vZGVsLWVs
ZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmgKIAogICAgIE1vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAogICAgIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DbGllbnQuaApJbmRleDogU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQJKHJldmlzaW9uIDI4NTYzMykKKysr
IFNvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMzQsNiArMjM0
LDExIEBAIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1IKIE1vZHVsZXMv
bWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zZm9ybWFibGVGcmFtZS5jcHAK
IE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1NjdHBUcmFuc3BvcnRCYWNr
ZW5kLmNwcAogTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnQuY3BwCitNb2R1
bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQv
TW9kZWxQbGF5ZXJDbGllbnQuY3BwCitNb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQ
cm92aWRlci5jcHAKK01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVy
LmNwcAorTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRl
ci5jcHAKIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCiBNb2R1bGVzL25v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ29udHJvbGxlci5jcHAKIE1vZHVsZXMvcGF5bWVudHJl
cXVlc3QvTWVyY2hhbnRWYWxpZGF0aW9uRXZlbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9T
b3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNiBAQCBNb2R1bGVzL2FwcGxlcGF5LWFt
cy11aS9BcHBsZVBheUFNU1VJUGF5CiBNb2R1bGVzL2FzeW5jLWNsaXBib2FyZC9pb3MvQ2xpcGJv
YXJkSW1hZ2VSZWFkZXJJT1MubW0KIE1vZHVsZXMvYXN5bmMtY2xpcGJvYXJkL21hYy9DbGlwYm9h
cmRJbWFnZVJlYWRlck1hYy5tbQogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENSdHBTRnJhbWVUcmFu
c2Zvcm1lckNvY29hLmNwcAotTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRD
b2NvYS5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvU3BlZWNoUmVjb2duaXplckNvY29hLm1tCiBN
b2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9z
cGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21v
ZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDggQEAKICNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSlNIVE1MTW9k
ZWxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTW9kZWwuaCIKKyNpbmNsdWRlICJNb2RlbFBsYXllci5o
IgorI2luY2x1ZGUgIk1vZGVsUGxheWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTW9kZWwuaCIKICNpbmNsdWRlIDx3dGYv
SXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtNzAsMTAgKzcyLDYgQEAgSFRNTE1vZGVsRWxlbWVudDo6
fkhUTUxNb2RlbEVsZW1lbnQoKQogICAgICAgICBtX3Jlc291cmNlLT5yZW1vdmVDbGllbnQoKnRo
aXMpOwogICAgICAgICBtX3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9Ci0KLSNpZiBFTkFCTEUo
QVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCiB9CiAK
IFJlZjxIVE1MTW9kZWxFbGVtZW50PiBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTMxLDE3ICsxMjks
MTYgQEAgdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpzZXRTb3VyY2VVUkwoY29ucwogICAgICAgICBt
X3Jlc291cmNlID0gbnVsbHB0cjsKICAgICB9CiAKKyAgICBpZiAobV9tb2RlbFBsYXllcikKKyAg
ICAgICAgbV9tb2RlbFBsYXllciA9IG51bGxwdHI7CisKICAgICBpZiAoIW1fcmVhZHlQcm9taXNl
LT5pc0Z1bGZpbGxlZCgpKQogICAgICAgICBtX3JlYWR5UHJvbWlzZS0+cmVqZWN0KEV4Y2VwdGlv
biB7IEFib3J0RXJyb3IgfSk7CiAKICAgICBtX3JlYWR5UHJvbWlzZSA9IG1ha2VVbmlxdWVSZWY8
UmVhZHlQcm9taXNlPigqdGhpcywgJkhUTUxNb2RlbEVsZW1lbnQ6OnJlYWR5UHJvbWlzZVJlc29s
dmUpOwogCi0gICAgaWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkgewotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgICAgIGNsZWFyRmlsZSgpOwotI2VuZGlmCisgICAg
aWYgKG1fc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAg
IFJlc291cmNlTG9hZGVyT3B0aW9ucyBvcHRpb25zID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKTsKICAgICBvcHRpb25zLmRlc3RpbmF0aW9uID0g
RmV0Y2hPcHRpb25zOjpEZXN0aW5hdGlvbjo6TW9kZWw7CkBAIC0xNjgsMjQgKzE2NSw2IEBAIEhU
TUxNb2RlbEVsZW1lbnQmIEhUTUxNb2RlbEVsZW1lbnQ6OnJlYWQKICAgICByZXR1cm4gKnRoaXM7
CiB9CiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCi1zdGF0aWMgU3RyaW5nJiBz
aGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpCi17Ci0gICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFN0cmluZz4gc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3Rvcnk7Ci0gICAgcmV0
dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5OwotfQotCi12b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0
aCkKLXsKLSAgICBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpID0gcGF0aDsKLX0K
LQotY29uc3QgU3RyaW5nJiBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRDYWNoZURpcmVj
dG9yeSgpCi17Ci0gICAgcmV0dXJuIHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7
Ci19Ci0jZW5kaWYKLQogLy8gTUFSSzogLSBET00gb3ZlcnJpZGVzLgogCiB2b2lkIEhUTUxNb2Rl
bEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9j
dW1lbnQmIG5ld0RvY3VtZW50KQpAQCAtMjM2LDEzICsyMTUsNjcgQEAgdm9pZCBIVE1MTW9kZWxF
bGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYQogCiAgICAgbV9yZWFkeVByb21pc2UtPnJlc29sdmUo
KnRoaXMpOwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBtb2Rl
bERpZENoYW5nZSgpOwotI2VuZGlmCiB9CiAKKy8vIE1BUks6IC0gTW9kZWxQbGF5ZXIgc3VwcG9y
dAorCit2b2lkIEhUTUxNb2RlbEVsZW1lbnQ6Om1vZGVsRGlkQ2hhbmdlKCkKK3sKKyAgICAvLyBG
SVhNRTogRm9yIHRoZSBlYXJseSByZXR1cm5zIGhlcmUsIHdlIHNob3VsZCBwcm9iYWJseSBpbmZv
cm0gdGhlIHBhZ2UgdGhhdCB0aGluZ3MgaGF2ZQorICAgIC8vIGZhaWxlZCB0byByZW5kZXIuIEZv
ciB0aGUgY2FzZSBvZiBuby1yZW5kZXJlciwgd2Ugc2hvdWxkIHByb2JhYmx5IGFsc28gYnVpbGQg
dGhlIG1vZGVsCisgICAgLy8gd2hlbi9pZiBhIHJlbmRlcmVyIGlzIGNyZWF0ZWQuCisKKyAgICBh
dXRvIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAo
IXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBOT1RFOiBGb3Igbm93LCBjcmVh
dGVNb2RlbFBsYXllciByZXR1cm5pbmcgbnVsbHB0ciBtZWFucyB0aGF0IHRoZSBHcmFwaGljc0xh
eWVyOjpzZXRDb250ZW50c1RvTW9kZWwoKSBwYXRoCisgICAgLy8gaXMgYmVpbmcgdXNlZCwgYnV0
IHRoYXQgbmVlZHMgdG8gYmUgcGhhc2VkIG91dCB0byBhbGxvdyBiaWRpcmVjdGlvbmFsIGNvbW11
bmljYXRpb24gYmV0d2VlbiB0aGUgbW9kZWwgcGxheWVyCisgICAgLy8gYW5kIHRoZSBIVE1MTW9k
ZWxFbGVtZW50LiBPbmNlIHRoYXQgaXMgcGhhc2VkIG91dCwgY3JlYXRlTW9kZWxQbGF5ZXIoKSBz
aG91bGQgYmUgdXBkYXRlZCB0byByZXR1cm4gYSBSZWY8Pi4KKyAgICBtX21vZGVsUGxheWVyID0g
cGFnZS0+bW9kZWxQbGF5ZXJQcm92aWRlcigpLmNyZWF0ZU1vZGVsUGxheWVyKCp0aGlzKTsKKyAg
ICBpZiAoIW1fbW9kZWxQbGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBX
ZSBuZWVkIHRvIHRlbGwgdGhlIHBsYXllciBpZiB0aGUgc2l6ZSBjaGFuZ2VzIGFzIHdlbGwsIHNv
IHBhc3NpbmcgdGhpcworICAgIC8vIGluIHdpdGggbG9hZCBwcm9iYWJseSBkb2Vzbid0IG1ha2Ug
c2Vuc2UuCisgICAgYXV0byBzaXplID0gcmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0
KGZhbHNlKS5zaXplKCk7CisKKyAgICBtX21vZGVsUGxheWVyLT5sb2FkKCptX21vZGVsLCBzaXpl
KTsKK30KKworYm9vbCBIVE1MTW9kZWxFbGVtZW50Ojp1c2VzUGxhdGZvcm1MYXllcigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbW9kZWxQbGF5ZXIgIT0gbnVsbHB0cjsKK30KKworUGxhdGZvcm1M
YXllciogSFRNTE1vZGVsRWxlbWVudDo6cGxhdGZvcm1MYXllcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fbW9kZWxQbGF5ZXItPmxheWVyKCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6
ZGlkRmluaXNoTG9hZGluZyhNb2RlbFBsYXllciYgbW9kZWxQbGF5ZXIpCit7CisgICAgQVNTRVJU
X1VOVVNFRChtb2RlbFBsYXllciwgJm1vZGVsUGxheWVyID09IG1fbW9kZWxQbGF5ZXIpOworCisg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmVuZGVy
ZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Cit9CisKK3ZvaWQgSFRNTE1vZGVsRWxlbWVudDo6ZGlk
RmFpbExvYWRpbmcoTW9kZWxQbGF5ZXImIG1vZGVsUGxheWVyLCBjb25zdCBSZXNvdXJjZUVycm9y
JikKK3sKKyAgICBBU1NFUlRfVU5VU0VEKG1vZGVsUGxheWVyLCAmbW9kZWxQbGF5ZXIgPT0gbV9t
b2RlbFBsYXllcik7Cit9CisKKy8vIE1BUks6IC0gRnVsbHNjcmVlbiBzdXBwb3J0LgorCiB2b2lk
IEhUTUxNb2RlbEVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7CisvLyBGSVhNRTogQWRkIGEg
bmV3IG1ldGhvZCB0byBNb2RlbFBsYXllciBmb3IgZW50ZXJpbmcgZnVsbHNjcmVlbiBhbmQgbW92
ZSB0aGlzIGludG8gdGhlIGlPUyBBUktpdCBpbmxpbmUgcHJldmlldyBNb2RlbFBsYXllciBpbXBs
ZW1lbnRhdGlvbi4KICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIGF1
dG8qIHBhZ2UgPSBkb2N1bWVudCgpLnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvSFRNTE1vZGVsRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxF
bGVtZW50LmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDIxICsz
MiwxOSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJJRExUeXBlcy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAotI2lmIEVOQUJMRShBUktJVF9J
TkxJTkVfUFJFVklFV19NQUMpCi0jaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgotT0JKQ19DTEFT
UyBBU1ZJbmxpbmVQcmV2aWV3OwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgTW9kZWw7CitjbGFzcyBNb2RlbFBsYXllcjsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlw
ZT4gY2xhc3MgRE9NUHJvbWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazsKIAotY2xhc3MgSFRN
TE1vZGVsRWxlbWVudCBmaW5hbCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBDYWNoZWRS
YXdSZXNvdXJjZUNsaWVudCB7CitjbGFzcyBIVE1MTW9kZWxFbGVtZW50IGZpbmFsIDogcHVibGlj
IEhUTUxFbGVtZW50LCBwcml2YXRlIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50LCBwdWJsaWMgTW9k
ZWxQbGF5ZXJDbGllbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoSFRNTE1vZGVsRWxl
bWVudCk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVE1MTW9kZWxFbGVtZW50PiBjcmVhdGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CkBAIC01NSwyMSArNTMsMTYgQEAgcHVi
bGljOgogICAgIHZvaWQgc291cmNlc0NoYW5nZWQoKTsKICAgICBjb25zdCBVUkwmIGN1cnJlbnRT
cmMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfQogCisgICAgLy8gTUFSSzogRE9NIEZ1
bmN0aW9ucyBhbmQgQXR0cmlidXRlcworCiAgICAgdXNpbmcgUmVhZHlQcm9taXNlID0gRE9NUHJv
bWlzZVByb3h5V2l0aFJlc29sdmVDYWxsYmFjazxJRExJbnRlcmZhY2U8SFRNTE1vZGVsRWxlbWVu
dD4+OwogICAgIFJlYWR5UHJvbWlzZSYgcmVhZHkoKSB7IHJldHVybiBtX3JlYWR5UHJvbWlzZS5n
ZXQoKTsgfQogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbW9kZWxEYXRhKCkgY29uc3Q7CiAg
ICAgUmVmUHRyPE1vZGVsPiBtb2RlbCgpIGNvbnN0OwogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElO
RV9QUkVWSUVXKQotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldE1vZGVsRWxlbWVu
dENhY2hlRGlyZWN0b3J5KGNvbnN0IFN0cmluZyYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBjb25zdCBTdHJpbmcmIG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7Ci0jZW5kaWYKLQot
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisgICAgYm9vbCB1c2VzUGxhdGZv
cm1MYXllcigpIGNvbnN0OwogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25z
dDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0
SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpOwotI2VuZGlmCiAKICAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogCkBAIC03OSwxMyArNzIsOSBAQCBwcml2YXRlOgog
ICAgIEhUTUxNb2RlbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7CiAK
ICAgICB2b2lkIHNldFNvdXJjZVVSTChjb25zdCBVUkwmKTsKLSAgICBIVE1MTW9kZWxFbGVtZW50
JiByZWFkeVByb21pc2VSZXNvbHZlKCk7Ci0KLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQotICAgIHZvaWQgY2xlYXJGaWxlKCk7Ci0gICAgdm9pZCBjcmVhdGVGaWxlKCk7CiAg
ICAgdm9pZCBtb2RlbERpZENoYW5nZSgpOwotI2VuZGlmCisKKyAgICBIVE1MTW9kZWxFbGVtZW50
JiByZWFkeVByb21pc2VSZXNvbHZlKCk7CiAKICAgICAvLyBET00gb3ZlcnJpZGVzLgogICAgIHZv
aWQgZGlkTW92ZVRvTmV3RG9jdW1lbnQoRG9jdW1lbnQmIG9sZERvY3VtZW50LCBEb2N1bWVudCYg
bmV3RG9jdW1lbnQpIGZpbmFsOwpAQCAtOTcsNiArODYsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsIGludCBk
YXRhTGVuZ3RoKSBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CiAKKyAgICAvLyBNb2RlbFBsYXll
ckNsaWVudCBvdmVycmlkZXMuCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKE1vZGVsUGxheWVy
JikgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZGluZyhNb2RlbFBsYXllciYsIGNvbnN0IFJl
c291cmNlRXJyb3ImKSBmaW5hbDsKKwogICAgIFVSTCBtX3NvdXJjZVVSTDsKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gbV9yZXNvdXJjZTsKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBtX2RhdGE7CkBAIC0xMDQsMTAgKzk3LDcgQEAgcHJpdmF0ZToKICAgICBV
bmlxdWVSZWY8UmVhZHlQcm9taXNlPiBtX3JlYWR5UHJvbWlzZTsKICAgICBib29sIG1fZGF0YUNv
bXBsZXRlIHsgZmFsc2UgfTsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMp
Ci0gICAgU3RyaW5nIG1fZmlsZVBhdGg7Ci0gICAgUmV0YWluUHRyPEFTVklubGluZVByZXZpZXc+
IG1faW5saW5lUHJldmlldzsKLSNlbmRpZgorICAgIFJlZlB0cjxNb2RlbFBsYXllcj4gbV9tb2Rl
bFBsYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9IVE1MTW9kZWxFbGVtZW50Q29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVs
ZW1lbnRDb2NvYS5tbQkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tb2RlbC1lbGVtZW50L0hUTUxNb2RlbEVsZW1lbnRDb2NvYS5tbQkobm9uZXhpc3RlbnQpCkBA
IC0xLDEzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkhUTUxNb2RlbEVsZW1lbnQuaCIK
LQotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKSAmJiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQotCi0jaW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgotI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKLSNpbmNsdWRl
ICJTZXR0aW5ncy5oIgotI2luY2x1ZGUgPHBhbC9zcGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4K
LSNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgotI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvU29mdExpbmtpbmcuaD4KLSNpbmNsdWRlIDx3dGYvVVJMLmg+Ci0jaW5j
bHVkZSA8d3RmL1VVSUQuaD4KLQotU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEFzc2V0Vmll
d2VyKTsKLVNPRlRfTElOS19DTEFTUyhBc3NldFZpZXdlciwgQVNWSW5saW5lUHJldmlldyk7Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBIVE1MTW9kZWxFbGVtZW50OjpjcmVhdGVGaWxl
KCkKLXsKLSAgICAvLyBUaGUgbmVlZCBmb3IgYSBmaWxlIGlzIG9ubHkgdGVtcG9yYXJ5IGR1ZSB0
byB0aGUgbmF0dXJlIG9mIEFTVklubGluZVByZXZpZXcsCi0gICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzU2Ny4KLQotICAgIGNsZWFyRmlsZSgpOwotCi0g
ICAgYXV0byBwYXRoVG9EaXJlY3RvcnkgPSBIVE1MTW9kZWxFbGVtZW50Ojptb2RlbEVsZW1lbnRD
YWNoZURpcmVjdG9yeSgpOwotICAgIGlmIChwYXRoVG9EaXJlY3RvcnkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGRpcmVjdG9yeUV4aXN0cyA9IEZpbGVTeXN0ZW06OmZp
bGVFeGlzdHMocGF0aFRvRGlyZWN0b3J5KTsKLSAgICBpZiAoZGlyZWN0b3J5RXhpc3RzICYmIEZp
bGVTeXN0ZW06OmZpbGVUeXBlRm9sbG93aW5nU3ltbGlua3MocGF0aFRvRGlyZWN0b3J5KSAhPSBG
aWxlU3lzdGVtOjpGaWxlVHlwZTo6RGlyZWN0b3J5KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmICghZGlyZWN0b3J5RXhpc3Rz
ICYmICFGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMocGF0aFRvRGlyZWN0b3J5KSkgewot
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIC8vIFdlIG5lZWQgdG8gc3VwcG9ydCAucmVhbGl0eSBmaWxlcyBhcyB3ZWxsLCBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3NTY4LgotICAgIGF1dG8gZmlsZU5h
bWUgPSBGaWxlU3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShjcmVhdGVDYW5vbmljYWxVVUlEU3Ry
aW5nKCkpICsgIi51c2R6IjsKLSAgICBhdXRvIGZpbGVQYXRoID0gRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0RpcmVjdG9yeSwgZmlsZU5hbWUpOwotICAgIGF1dG8g
ZmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKGZpbGVQYXRoLCBGaWxlU3lzdGVtOjpGaWxlT3Bl
bk1vZGU6OldyaXRlKTsKLSAgICBpZiAoZmlsZSA8PSAwKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBGaWxlU3lzdGVtOjp3cml0ZVRvRmlsZShmaWxlLCBtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5z
aXplKCkpOwotICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShmaWxlKTsKLSAgICBtX2ZpbGVQYXRo
ID0gZmlsZVBhdGg7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6Y2xlYXJGaWxlKCkKLXsK
LSAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7Ci0gICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Ci19Ci0KLXZvaWQgSFRNTE1vZGVsRWxlbWVudDo6bW9kZWxEaWRDaGFuZ2UoKQot
ewotICAgIGNyZWF0ZUZpbGUoKTsKLQotICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIHNp
emUgPSByZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpLnNpemUoKTsKLQot
ICAgIG1faW5saW5lUHJldmlldyA9IGFkb3B0TlMoW2FsbG9jQVNWSW5saW5lUHJldmlld0luc3Rh
bmNlKCkgaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSldKTsKLSAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVudDo6bW9k
ZWxEaWRDaGFuZ2UoKSBjcmVhdGVkIHByZXZpZXcgd2l0aCBVVUlEICVzIGFuZCBzaXplICVmIHgg
JWYuIiwgKChTdHJpbmcpW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5nKS51dGY4KCku
ZGF0YSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotCi0gICAgaWYgKGF1dG8qIHBh
Z2UgPSBkb2N1bWVudCgpLnBhZ2UoKSkKLSAgICAgICAgcGFnZS0+Y2hyb21lKCkuY2xpZW50KCku
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldygqdGhpcywgVVJMOjpmaWxlVVJMV2l0aEZpbGVT
eXN0ZW1QYXRoKG1fZmlsZVBhdGgpLCBbbV9pbmxpbmVQcmV2aWV3IHV1aWRdLlVVSURTdHJpbmcs
IHNpemUpOwotfQotCi12b2lkIEhUTUxNb2RlbEVsZW1lbnQ6OmlubGluZVByZXZpZXdEaWRPYnRh
aW5Db250ZXh0SWQoY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17Ci0g
ICAgaWYgKCFkb2N1bWVudCgpLnNldHRpbmdzKCkubW9kZWxFbGVtZW50RW5hYmxlZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBpZiAodXVpZCAhPSAoU3RyaW5nKVttX2lubGluZVByZXZpZXcg
dXVpZF0uVVVJRFN0cmluZykgewotICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVs
RWxlbWVudDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIFVVSUQgbWlzbWF0Y2gs
IHJlY2VpdmVkICVzIGJ1dCBleHBlY3RlZCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCksICgoU3Ry
aW5nKVttX2lubGluZVByZXZpZXcgdXVpZF0uVVVJRFN0cmluZykudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBbbV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNv
bnRleHQ6Y29udGV4dElkXTsKLSAgICBMT0coTW9kZWxFbGVtZW50LCAiSFRNTE1vZGVsRWxlbWVu
dDo6aW5saW5lUHJldmlld0RpZE9idGFpbkNvbnRleHRJZCgpIHN1Y2Nlc3NmdWxseSBlc3RhYmxp
c2hlZCByZW1vdGUgY29ubmVjdGlvbiBmb3IgVVVJRCAlcy4iLCB1dWlkLnV0ZjgoKS5kYXRhKCkp
OwotCi0gICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAg
cmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7Ci19Ci0KLVBsYXRmb3JtTGF5ZXIqIEhUTUxN
b2RlbEVsZW1lbnQ6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBbbV9pbmxp
bmVQcmV2aWV3IGxheWVyXTsKLX0KLQotfQotCi0jZW5kaWYgLy8gRU5BQkxFKE1PREVMX0VMRU1F
TlQpICYmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllci5jcHAJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVs
UGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVsUGxheWVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXI6On5Nb2RlbFBsYXllcigpID0gZGVmYXVsdDsKKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01v
ZGVsUGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L01vZGVsUGxheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsOworCitjbGFzcyBXRUJDT1JFX0VYUE9SVCBN
b2RlbFBsYXllciA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZGVsUGxheWVyPiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW9kZWxQbGF5ZXIoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVsJiwgTGF5b3V0U2l6ZSkgPSAwOworICAgIHZp
cnR1YWwgUGxhdGZvcm1MYXllciogbGF5ZXIoKSA9IDA7Cit9OworCit9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXll
ckNsaWVudC5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZGVs
UGxheWVyQ2xpZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTW9kZWxQbGF5ZXJDbGll
bnQ6On5Nb2RlbFBsYXllckNsaWVudCgpID0gZGVmYXVsdDsKKworfQpJbmRleDogU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVyQ2xp
ZW50LmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVt
ZW50L01vZGVsUGxheWVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1v
ZGVsUGxheWVyOworY2xhc3MgUmVzb3VyY2VFcnJvcjsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TW9kZWxQbGF5ZXJDbGllbnQgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TW9kZWxQbGF5ZXJDbGll
bnQ+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5Nb2RlbFBsYXllckNsaWVudCgpOworCisgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmcoTW9kZWxQbGF5ZXImKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxMb2FkaW5nKE1vZGVsUGxheWVyJiwgY29uc3QgUmVzb3VyY2VFcnJv
ciYpID0gMDsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxl
bWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0
ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVsUGxheWVy
UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01vZGVsUGxheWVyUHJvdmlkZXI6On5Nb2RlbFBsYXll
clByb3ZpZGVyKCkgPSBkZWZhdWx0OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21vZGVsLWVsZW1lbnQvTW9kZWxQbGF5ZXJQcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9Nb2RlbFBsYXllclByb3ZpZGVyLmgJKG5v
bmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L01vZGVs
UGxheWVyUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIE1vZGVsUGxheWVyOworY2xhc3MgTW9kZWxQbGF5ZXJDbGll
bnQ7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIE1vZGVsUGxheWVyUHJvdmlkZXIgeworICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHZpcnR1YWwgfk1vZGVsUGxheWVy
UHJvdmlkZXIoKTsKKworICAgIC8vIEZJWE1FOiBPbmNlIGFsbCBjbGllbnRzIGhhdmUgYWRvcHRl
ZCBNb2RlbFBsYXllclByb3ZpZGVyLCB0aGlzIHNob3VsZAorICAgIC8vIGJlIGNoYW5nZWQgdG8g
cmV0dXJuIGEgUmVmPE1vZGVsUGxheWVyPgorICAgIHZpcnR1YWwgUmVmUHRyPE1vZGVsUGxheWVy
PiBjcmVhdGVNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpID0gMDsKK307CisKK30KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVs
UGxheWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVs
ZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllci5oIgorCisjaW5jbHVkZSAiTW9k
ZWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmPER1bW15TW9kZWxQbGF5ZXI+IER1bW15TW9kZWxQbGF5ZXI6OmNyZWF0ZShNb2RlbFBs
YXllckNsaWVudCYgY2xpZW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER1bW15TW9k
ZWxQbGF5ZXIoY2xpZW50KSk7Cit9CisKK0R1bW15TW9kZWxQbGF5ZXI6OkR1bW15TW9kZWxQbGF5
ZXIoTW9kZWxQbGF5ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fY2xpZW50IHsgY2xpZW50IH0K
K3sKK30KKworRHVtbXlNb2RlbFBsYXllcjo6fkR1bW15TW9kZWxQbGF5ZXIoKSA9IGRlZmF1bHQ7
CisKK3ZvaWQgRHVtbXlNb2RlbFBsYXllcjo6bG9hZChNb2RlbCYgbW9kZWwsIExheW91dFNpemUp
Cit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbExvYWRpbmco
KnRoaXMsIFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCBtb2Rl
bC51cmwoKSwgIlRyeWluZyB0byBsb2FkIG1vZGVsIHZpYSBEdW1teU1vZGVsUGxheWVyIl9zIH0p
OworfQorCitQbGF0Zm9ybUxheWVyKiBEdW1teU1vZGVsUGxheWVyOjpsYXllcigpCit7CisgICAg
cmV0dXJuIG51bGxwdHI7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9k
ZWwtZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tb2RlbC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXIuaAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVt
bXkvRHVtbXlNb2RlbFBsYXllci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1vZGVsUGxheWVyLmgiCisjaW5j
bHVkZSAiTW9kZWxQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV0VC
Q09SRV9FWFBPUlQgRHVtbXlNb2RlbFBsYXllciBmaW5hbCA6IHB1YmxpYyBNb2RlbFBsYXllciB7
CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxEdW1teU1vZGVsUGxheWVyPiBjcmVhdGUoTW9kZWxQ
bGF5ZXJDbGllbnQmKTsKKyAgICB2aXJ0dWFsIH5EdW1teU1vZGVsUGxheWVyKCk7CisKK3ByaXZh
dGU6CisgICAgRHVtbXlNb2RlbFBsYXllcihNb2RlbFBsYXllckNsaWVudCYpOworCisgICAgLy8g
TW9kZWxQbGF5ZXIgb3ZlcnJpZGVzLgorICAgIHZpcnR1YWwgdm9pZCBsb2FkKE1vZGVsJiwgTGF5
b3V0U2l6ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQbGF0Zm9ybUxheWVyKiBsYXllcigpIG92
ZXJyaWRlOworCisgICAgV2Vha1B0cjxNb2RlbFBsYXllckNsaWVudD4gbV9jbGllbnQ7Cit9Owor
Cit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVt
bXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAko
bm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVt
bXkvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkR1bW15
TW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSAiRHVtbXlNb2RlbFBsYXllci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6RHVtbXlN
b2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
Ojp+RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyKCkgPSBkZWZhdWx0OworCitSZWZQdHI8TW9kZWxQ
bGF5ZXI+IER1bW15TW9kZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIoTW9kZWxQ
bGF5ZXJDbGllbnQmIGNsaWVudCkKK3sKKyAgICByZXR1cm4gRHVtbXlNb2RlbFBsYXllcjo6Y3Jl
YXRlKGNsaWVudCk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbW9kZWwt
ZWxlbWVudC9kdW1teS9EdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21vZGVsLWVsZW1lbnQvZHVtbXkvRHVtbXlNb2RlbFBsYXll
clByb3ZpZGVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tb2Rl
bC1lbGVtZW50L2R1bW15L0R1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
Ik1vZGVsUGxheWVyUHJvdmlkZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBX
RUJDT1JFX0VYUE9SVCBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgZmluYWwgOiBwdWJsaWMgTW9k
ZWxQbGF5ZXJQcm92aWRlciB7CitwdWJsaWM6CisgICAgRHVtbXlNb2RlbFBsYXllclByb3ZpZGVy
KCk7CisgICAgdmlydHVhbCB+RHVtbXlNb2RlbFBsYXllclByb3ZpZGVyKCk7CisKK3ByaXZhdGU6
CisgICAgLy8gTW9kZWxQbGF5ZXJQcm92aWRlciBvdmVycmlkZXMuCisgICAgdmlydHVhbCBSZWZQ
dHI8TW9kZWxQbGF5ZXI+IGNyZWF0ZU1vZGVsUGxheWVyKE1vZGVsUGxheWVyQ2xpZW50Jikgb3Zl
cnJpZGU7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQw
NjgsNiArNDA2OCwxMSBAQAogCQlCQzIzRUU5MjBEQUVEMkJDMDA5RkRDOTEgLyogQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkMyM0VFOTEwREFFRDJCQzAwOUZEQzkxIC8qIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQzIz
RjBEQjBEQUZGNEE0MDA5RkRDOTEgLyogR2VuZXJhdGVkSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjNGMERBMERBRkY0QTQwMDlGREM5MSAv
KiBHZW5lcmF0ZWRJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDMjc0QjJGMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMjc0QjJFMTQwRUJFQjIwMEVBREZBNiAvKiBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCAq
LzsgfTsKKwkJQkMyQjQxMTcyNzMyRjQxRTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDExMzI3MzJGMDYy
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlCQzJCNDExODI3MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5
ZXJQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkMyQjQxMTUyNzMyRjBDNzAwQTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlCQzJCNDExOTI3
MzJGNDI5MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTBFMjczMkVGRTQwMEEyRDE5MSAvKiBN
b2RlbFBsYXllckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUJDMkI0MTI1MjczMzYwMDUwMEEyRDE5MSAvKiBEdW1teU1vZGVsUGxheWVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzJCNDEy
MzI3MzM1RTFGMDBBMkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMkI0MTIwMjczMzVDQjkwMEEyRDE5MSAvKiBEdW1teU1v
ZGVsUGxheWVyUHJvdmlkZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlCQzJDQkY0RTE0MEYxQUJEMDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMy
Q0JGNEIxNDBGMUE2NTAwMzg3OUJFIC8qIEpTV2ViR0xDb250ZXh0RXZlbnQuaCAqLzsgfTsKIAkJ
QkMyQ0NBMTAyNjU1RERCMjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMyQ0NBMEUyNjU1RERC
MjAwQjhDMDM1IC8qIERlc3RpbmF0aW9uQ29sb3JTcGFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDMzA1QzdBMEMwNzZCQjMwMENEMjBGMCAv
KiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudC5oICovOyB9OwpAQCAtMTA4MDUsNyArMTA4MTAsNiBAQAogCQk3MUMyOUUzMTIwM0NFNzZD
MDA4RjM2RDIgLyogQ1NTQW5pbWF0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDU1NB
bmltYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MUM1QkIxQjFGQjYx
MUVBMDAwN0EyQUUgLyogQW5pbWF0YWJsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQW5p
bWF0YWJsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxQzkxNjA3MUQxNDgz
QTMwMEFDQTQ3RCAvKiBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNzFDQUEzRDkyNjhEMEJGOTAwRjI1NDEwIC8qIEhU
TUxNb2RlbEVsZW1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEhUTUxNb2RlbEVs
ZW1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzFDRTJDNTEyMjA5
REM3RjAwQzQ5NEJEIC8qIE1vdXNlRXZlbnRJT1MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW91c2VFdmVudElPUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxRDAyRDkwMURCNTVDNEUwMERENUNGNSAvKiBtYWluLmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gbWFpbi5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzFEMDJEOTIxREI1NUM0RTAwREQ1Q0Y1IC8qIG1lZGlhLWNvbnRyb2xsZXIuanMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAibWVkaWEtY29udHJvbGxl
ci5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc0Myw2ICsxNDc0NywxNiBA
QAogCQlCQzI3NEIyRTE0MEVCRUIyMDBFQURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VW
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzI3NEIzMDE0MEVCRUQ4MDBF
QURGQTYgLyogQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjk5MzVDMTdBMURENTgwMEJDRTg4MCAvKiBDb2xvcklu
cHV0VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvcklu
cHV0VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTBFMjczMkVG
RTQwMEEyRDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RlbFBs
YXllckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExMjI3MzJG
MDNDMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9kZWxQbGF5ZXJDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJC
NDExMzI3MzJGMDYyMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9k
ZWxQbGF5ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTQyNzMyRjA2
MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGVsUGxh
eWVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMTUyNzMyRjBDNzAw
QTJEMTkxIC8qIE1vZGVsUGxheWVyUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kZWxQbGF5
ZXJQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExNjI3MzJG
MEM3MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNb2RlbFBsYXllclByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QkMyQjQxMjAyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5
ZXJQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEdW1teU1vZGVsUGxheWVyUHJvdmlk
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDEyMzI3MzM1RTFGMDBB
MkQxOTEgLyogRHVtbXlNb2RlbFBsYXllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1teU1vZGVsUGxh
eWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMkI0MTI0MjczMzVFMUYwMEEy
RDE5MSAvKiBEdW1teU1vZGVsUGxheWVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IER1bW15TW9k
ZWxQbGF5ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQkY0QjE0MEYx
QTY1MDAzODc5QkUgLyogSlNXZWJHTENvbnRleHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1dlYkdMQ29udGV4dEV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMkNCRjdBMTQwRjFENTgwMDM4NzlCRSAvKiBKU1dlYkdMQ29udGV4dEV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViR0xDb250ZXh0
RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzJDQ0EwRTI2NTVEREIy
MDBCOEMwMzUgLyogRGVzdGluYXRpb25Db2xvclNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlc3Rp
bmF0aW9uQ29sb3JTcGFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjM3NzAs
MTAgKzIzNzg0LDE2IEBACiAJCTcxRjg0OUNDMjU2NUFCN0UwMDhDMzdGMiAvKiBtb2RlbC1lbGVt
ZW50ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJC
NDEyMjI3MzM1RTBDMDBBMkQxOTEgLyogZHVtbXkgKi8sCiAJCQkJNzFBM0QxODAyNTYyQjgyNTAw
NjRFMkE2IC8qIEhUTUxNb2RlbEVsZW1lbnQuY3BwICovLAogCQkJCTcxQTNEMTdEMjU2MkI4MjQw
MDY0RTJBNiAvKiBIVE1MTW9kZWxFbGVtZW50LmggKi8sCiAJCQkJNzFBM0QxN0YyNTYyQjgyNDAw
NjRFMkE2IC8qIEhUTUxNb2RlbEVsZW1lbnQuaWRsICovLAotCQkJCTcxQ0FBM0Q5MjY4RDBCRjkw
MEYyNTQxMCAvKiBIVE1MTW9kZWxFbGVtZW50Q29jb2EubW0gKi8sCisJCQkJQkMyQjQxMTQyNzMy
RjA2MjAwQTJEMTkxIC8qIE1vZGVsUGxheWVyLmNwcCAqLywKKwkJCQlCQzJCNDExMzI3MzJGMDYy
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXIuaCAqLywKKwkJCQlCQzJCNDExMjI3MzJGMDNDMDBBMkQx
OTEgLyogTW9kZWxQbGF5ZXJDbGllbnQuY3BwICovLAorCQkJCUJDMkI0MTBFMjczMkVGRTQwMEEy
RDE5MSAvKiBNb2RlbFBsYXllckNsaWVudC5oICovLAorCQkJCUJDMkI0MTE2MjczMkYwQzcwMEEy
RDE5MSAvKiBNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAqLywKKwkJCQlCQzJCNDExNTI3MzJGMEM3
MDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSAi
bW9kZWwtZWxlbWVudCI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjgzNTQsNiAr
MjgzNzQsMTcgQEAKIAkJCXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUJDMkI0MTIyMjczMzVFMEMwMEEyRDE5MSAvKiBkdW1teSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMyQjQxMjQyNzMzNUUxRjAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXIuY3BwICovLAorCQkJCUJDMkI0MTIzMjczMzVFMUYwMEEyRDE5
MSAvKiBEdW1teU1vZGVsUGxheWVyLmggKi8sCisJCQkJQkMyQjQxMjEyNzMzNUNCOTAwQTJEMTkx
IC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5jcHAgKi8sCisJCQkJQkMyQjQxMjAyNzMzNUNC
OTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oICovLAorCQkJKTsKKwkJCXBh
dGggPSBkdW1teTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUJDNEVERUY3
MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKApAQCAtMzMyMjcsNiArMzMyNTgsOCBAQAogCQkJCTgxRjY1RkY2MTM3ODhG
QUEwMEZGNkYyRCAvKiBEcmFnU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDQUY1NkRCMjUz
MDFBQzgwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxMEE5MUY2MjREMzJEREMwMEJGRDg5QyAvKiBEdWFsc2hvY2szSElER2FtZXBhZC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQkMyQjQxMjUyNzMzNjAwNTAwQTJEMTkxIC8qIER1bW15TW9kZWxQbGF5
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTMxMjczNEEwODYwMEEyRDE5MSAvKiBEdW1t
eU1vZGVsUGxheWVyUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDZCN0E4MjU1MUQ0
MUYwMDU4REQzQSAvKiBEdW1teVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTkzMDg1REY4MjZFODIyQzcwMDBFQzZBNyAvKiBEdW1teVN0b3JhZ2VQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFCQTY2RjExNzQyQkQ4NjAwQzIwMjUxIC8qIER5bmFt
aWNMaW5rZXJJbnRlcnBvc2luZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTEzOCw2ICszNTE3MSw5
IEBACiAJCQkJQ0RGMkIwMTkxODIwNTQwNzAwRjJCNDI0IC8qIE1vY2tUcmFja3MuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTU3MTU2MTBDMjM0QzFDQTEwMDhGQzdBQiAvKiBNb2NrV2ViQXV0aGVudGlj
YXRpb25Db25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREM4RDM5ODI1RjJGRTk3
MDBDRkNCQUIgLyogTW9kZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMkI0MTE3MjczMkY0MUUw
MEEyRDE5MSAvKiBNb2RlbFBsYXllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkMyQjQxMTkyNzMy
RjQyOTAwQTJEMTkxIC8qIE1vZGVsUGxheWVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlC
QzJCNDExODI3MzJGNDIzMDBBMkQxOTEgLyogTW9kZWxQbGF5ZXJQcm92aWRlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzA5QTAxRkUxRTNEMEJERDAwNkIwRDRDIC8q
IE1vZHVsZUZldGNoRmFpbHVyZUtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCUUzMjAxQzFBMUY4
RTgyMTMwMDc2QTAzMiAvKiBNb2R1bGVGZXRjaFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDI4NTYz
MykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgorI2luY2x1
ZGUgIkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3BlZWNoUmVj
b2duaXRpb25Qcm92aWRlci5oIgogI2luY2x1ZGUgIkR1bW15U3RvcmFnZVByb3ZpZGVyLmgiCiAj
aW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCkBAIC01ODgsMTIgKzU4OSw2IEBAIHZvaWQgRW1wdHlD
aHJvbWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnQKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKLXZvaWQgRW1wdHlDaHJvbWVDbGllbnQ6Om1vZGVsRWxl
bWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpIGNvbnN0Ci17Ci19
Ci0jZW5kaWYKLQogdm9pZCBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiwgUG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYpCiB7CiB9CkBAIC0xMTk4LDcgKzExOTMsOCBA
QCBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbldpdGhFCiAgICAgICAgIG1ha2VV
bmlxdWVSZWY8RW1wdHlNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIEVtcHR5QnJv
YWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5OjpjcmVhdGUoKSwKICAgICAgICAgRHVtbXlQZXJtaXNzaW9u
Q29udHJvbGxlcjo6Y3JlYXRlKCksCi0gICAgICAgIG1ha2VVbmlxdWVSZWY8RHVtbXlTdG9yYWdl
UHJvdmlkZXI+KCkKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teVN0b3JhZ2VQcm92aWRlcj4o
KSwKKyAgICAgICAgbWFrZVVuaXF1ZVJlZjxEdW1teU1vZGVsUGxheWVyUHJvdmlkZXI+KCkKICAg
ICB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5Q2hyb21lQ2xpZW50PiBkdW1t
eUNocm9tZUNsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAko
d29ya2luZyBjb3B5KQpAQCAtMjIyLDEwICsyMjIsNiBAQCBjbGFzcyBFbXB0eUNocm9tZUNsaWVu
dCA6IHB1YmxpYyBDaHJvbWVDCiAjZW5kaWYKIAogICAgIFJlZlB0cjxJY29uPiBjcmVhdGVJY29u
Rm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgZmluYWwgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykK
LSAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVs
RWxlbWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYpIGNvbnN0IGZpbmFsOwotI2VuZGlmCiB9OwogCiBEaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCYgZW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsOSArNjA4LDYgQEAgcHVibGljOgog
I2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19JT1MpCiAgICAgdmlydHVhbCB2b2lkIHRh
a2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRCkgY29uc3QgeyB9CiAjZW5kaWYKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQotICAgIHZpcnR1YWwgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFdl
YkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCB7IH07Ci0jZW5kaWYKIAogI2lmIEVOQUJMRShB
UFBMRV9QQVlfQU1TX1VJKQogICAgIHZpcnR1YWwgdm9pZCBzdGFydEFwcGxlUGF5QU1TVUlTZXNz
aW9uKGNvbnN0IFVSTCYsIGNvbnN0IEFwcGxlUGF5QU1TVUlSZXF1ZXN0JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7
IGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bnVsbG9wdCk7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODksNiArODksNyBAQAogI2luY2x1ZGUgIkxvd1Bvd2VyTW9kZU5vdGlm
aWVyLmgiCiAjaW5jbHVkZSAiTWVkaWFDYW5TdGFydExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFSZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92aWRlci5oIgog
I2luY2x1ZGUgIk5hdmlnYXRvci5oIgogI2luY2x1ZGUgIlBhZ2VDb2xvclNhbXBsZXIuaCIKICNp
bmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgpAQCAtMzM3LDYgKzMzOCw3IEBAIFBhZ2U6OlBh
Z2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1fcGVybWlzc2lvbkNvbnRy
b2xsZXIoV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5wZXJtaXNzaW9uQ29udHJvbGxlcikpCiAg
ICAgLCBtX3JlcG9ydGluZ0VuZHBvaW50c0NhY2hlKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
cmVwb3J0aW5nRW5kcG9pbnRzQ2FjaGUpKQogICAgICwgbV9zdG9yYWdlUHJvdmlkZXIoV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbi5zdG9yYWdlUHJvdmlkZXIpKQorICAgICwgbV9tb2RlbFBsYXll
clByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24ubW9kZWxQbGF5ZXJQcm92aWRlcikp
CiB7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIApAQCAtMzc5NSw0ICszNzk3
LDkgQEAgU3RvcmFnZUNvbm5lY3Rpb24mIFBhZ2U6OnN0b3JhZ2VDb25uZWN0aQogICAgIHJldHVy
biBtX3N0b3JhZ2VQcm92aWRlci0+c3RvcmFnZUNvbm5lY3Rpb24oKTsKIH0KIAorTW9kZWxQbGF5
ZXJQcm92aWRlciYgUGFnZTo6bW9kZWxQbGF5ZXJQcm92aWRlcigpCit7CisgICAgcmV0dXJuIG1f
bW9kZWxQbGF5ZXJQcm92aWRlci5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNiArMTI1LDcgQEAgY2xhc3MgTWVkaWFD
YW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldDsKIGNsYXNzIE1lZGlh
UmVjb3JkZXJQcm92aWRlcjsKIGNsYXNzIE1lZGlhU2Vzc2lvbkNvb3JkaW5hdG9yUHJpdmF0ZTsK
K2NsYXNzIE1vZGVsUGxheWVyUHJvdmlkZXI7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKIGNs
YXNzIFBhZ2VDb25zb2xlQ2xpZW50OwogY2xhc3MgUGFnZURlYnVnZ2FibGU7CkBAIC05MDQsNiAr
OTA1LDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFBlcm1pc3Npb25Db250cm9sbGVy
JiBwZXJtaXNzaW9uQ29udHJvbGxlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0b3JhZ2VDb25u
ZWN0aW9uJiBzdG9yYWdlQ29ubmVjdGlvbigpOwogCisgICAgTW9kZWxQbGF5ZXJQcm92aWRlciYg
bW9kZWxQbGF5ZXJQcm92aWRlcigpOworCiBwcml2YXRlOgogICAgIHN0cnVjdCBOYXZpZ2F0aW9u
IHsKICAgICAgICAgUmVnaXN0cmFibGVEb21haW4gZG9tYWluOwpAQCAtMTI0MCw2ICsxMjQzLDcg
QEAgcHJpdmF0ZToKICAgICBSZWY8UGVybWlzc2lvbkNvbnRyb2xsZXI+IG1fcGVybWlzc2lvbkNv
bnRyb2xsZXI7CiAgICAgUmVmUHRyPFJlcG9ydGluZ0VuZHBvaW50c0NhY2hlPiBtX3JlcG9ydGlu
Z0VuZHBvaW50c0NhY2hlOwogICAgIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+IG1fc3RvcmFn
ZVByb3ZpZGVyOworICAgIFVuaXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiBtX21vZGVsUGxh
eWVyUHJvdmlkZXI7CiAKICNpZiBFTkFCTEUoSU1BR0VfQU5BTFlTSVMpCiAgICAgdXNpbmcgQ2Fj
aGVkVGV4dFJlY29nbml0aW9uUmVzdWx0ID0gc3RkOjpwYWlyPFRleHRSZWNvZ25pdGlvblJlc3Vs
dCwgSW50UmVjdD47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9u
LmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmln
dXJhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiTWVkaWFSZWNvcmRlclByb3ZpZGVyLmgiCisjaW5jbHVkZSAiTW9kZWxQbGF5ZXJQcm92
aWRlci5oIgogI2luY2x1ZGUgIlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIgogI2luY2x1ZGUg
IlBlcm1pc3Npb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGx1Z2luSW5mb1Byb3ZpZGVyLmgi
CkBAIC02Miw3ICs2Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3Vy
YXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVW5pcXVl
UmVmPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQsIFJlZjxTb2NrZXRQcm92aWRlcj4mJiBz
b2NrZXRQcm92aWRlciwgVW5pcXVlUmVmPExpYldlYlJUQ1Byb3ZpZGVyPiYmIGxpYldlYlJUQ1By
b3ZpZGVyLCBSZWY8Q2FjaGVTdG9yYWdlUHJvdmlkZXI+JiYgY2FjaGVTdG9yYWdlUHJvdmlkZXIs
IFJlZjxVc2VyQ29udGVudFByb3ZpZGVyPiYmIHVzZXJDb250ZW50UHJvdmlkZXIsIFJlZjxCYWNr
Rm9yd2FyZENsaWVudD4mJiBiYWNrRm9yd2FyZENsaWVudCwgUmVmPENvb2tpZUphcj4mJiBjb29r
aWVKYXIsIFVuaXF1ZVJlZjxQcm9ncmVzc1RyYWNrZXJDbGllbnQ+JiYgcHJvZ3Jlc3NUcmFja2Vy
Q2xpZW50LCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYgbG9hZGVyQ2xpZW50Rm9yTWFp
bkZyYW1lLCBVbmlxdWVSZWY8U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcj4mJiBzcGVlY2hSZWNv
Z25pdGlvblByb3ZpZGVyLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYmIG1lZGlh
UmVjb3JkZXJQcm92aWRlciwgUmVmPEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeT4mJiBicm9hZGNh
c3RDaGFubmVsUmVnaXN0cnksIFJlZjxQZXJtaXNzaW9uQ29udHJvbGxlcj4mJiBwZXJtaXNzaW9u
Q29udHJvbGxlciwgVW5pcXVlUmVmPFN0b3JhZ2VQcm92aWRlcj4mJiBzdG9yYWdlUHJvdmlkZXIp
CitQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCwgUmVmPFNvY2tl
dFByb3ZpZGVyPiYmIHNvY2tldFByb3ZpZGVyLCBVbmlxdWVSZWY8TGliV2ViUlRDUHJvdmlkZXI+
JiYgbGliV2ViUlRDUHJvdmlkZXIsIFJlZjxDYWNoZVN0b3JhZ2VQcm92aWRlcj4mJiBjYWNoZVN0
b3JhZ2VQcm92aWRlciwgUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYgdXNlckNvbnRlbnRQcm92
aWRlciwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmIGJhY2tGb3J3YXJkQ2xpZW50LCBSZWY8Q29v
a2llSmFyPiYmIGNvb2tpZUphciwgVW5pcXVlUmVmPFByb2dyZXNzVHJhY2tlckNsaWVudD4mJiBw
cm9ncmVzc1RyYWNrZXJDbGllbnQsIFVuaXF1ZVJlZjxGcmFtZUxvYWRlckNsaWVudD4mJiBsb2Fk
ZXJDbGllbnRGb3JNYWluRnJhbWUsIFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVy
PiYmIHNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIsIFVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJv
dmlkZXI+JiYgbWVkaWFSZWNvcmRlclByb3ZpZGVyLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lz
dHJ5PiYmIGJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeSwgUmVmPFBlcm1pc3Npb25Db250cm9sbGVy
PiYmIHBlcm1pc3Npb25Db250cm9sbGVyLCBVbmlxdWVSZWY8U3RvcmFnZVByb3ZpZGVyPiYmIHN0
b3JhZ2VQcm92aWRlciwgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJvdmlkZXI+JiYgbW9kZWxQbGF5
ZXJQcm92aWRlcikKICAgICA6IHNlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBlZGl0b3JDbGll
bnQoV1RGTW92ZShlZGl0b3JDbGllbnQpKQogICAgICwgc29ja2V0UHJvdmlkZXIoV1RGTW92ZShz
b2NrZXRQcm92aWRlcikpCkBAIC03OCw2ICs3OSw3IEBAIFBhZ2VDb25maWd1cmF0aW9uOjpQYWdl
Q29uZmlndXJhdGlvbihQQUwKICAgICAsIG1lZGlhUmVjb3JkZXJQcm92aWRlcihXVEZNb3ZlKG1l
ZGlhUmVjb3JkZXJQcm92aWRlcikpCiAgICAgLCBwZXJtaXNzaW9uQ29udHJvbGxlcihXVEZNb3Zl
KHBlcm1pc3Npb25Db250cm9sbGVyKSkKICAgICAsIHN0b3JhZ2VQcm92aWRlcihXVEZNb3ZlKHN0
b3JhZ2VQcm92aWRlcikpCisgICAgLCBtb2RlbFBsYXllclByb3ZpZGVyKFdURk1vdmUobW9kZWxQ
bGF5ZXJQcm92aWRlcikpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNv
bmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25m
aWd1cmF0aW9uLmgJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYsOSBAQCBjbGFzcyBB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JDbGllbnQ7CiBjbGFzcyBCYWNrRm9yd2FyZENsaWVudDsK
IGNsYXNzIEJyb2FkY2FzdENoYW5uZWxSZWdpc3RyeTsKIGNsYXNzIENhY2hlU3RvcmFnZVByb3Zp
ZGVyOwotY2xhc3MgQ29va2llSmFyOwogY2xhc3MgQ2hyb21lQ2xpZW50OwogY2xhc3MgQ29udGV4
dE1lbnVDbGllbnQ7CitjbGFzcyBDb29raWVKYXI7CiBjbGFzcyBEYXRhYmFzZVByb3ZpZGVyOwog
Y2xhc3MgRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CiBjbGFzcyBEcmFnQ2xpZW50OwpAQCAtNTcs
NiArNTcsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckNsaWVu
dDsKIGNsYXNzIExpYldlYlJUQ1Byb3ZpZGVyOwogY2xhc3MgTWVkaWFSZWNvcmRlclByb3ZpZGVy
OworY2xhc3MgTW9kZWxQbGF5ZXJQcm92aWRlcjsKIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNs
aWVudDsKIGNsYXNzIFBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudDsKIGNsYXNzIFBlcm1pc3Npb25D
b250cm9sbGVyOwpAQCAtNjUsNiArNjYsNyBAQCBjbGFzcyBQcm9ncmVzc1RyYWNrZXJDbGllbnQ7
CiBjbGFzcyBSZXBvcnRpbmdFbmRwb2ludHNDYWNoZTsKIGNsYXNzIFNvY2tldFByb3ZpZGVyOwog
Y2xhc3MgU3BlZWNoUmVjb2duaXRpb25Qcm92aWRlcjsKK2NsYXNzIFNwZWVjaFN5bnRoZXNpc0Ns
aWVudDsKIGNsYXNzIFN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjsKIGNsYXNzIFN0b3JhZ2VQcm92
aWRlcjsKIGNsYXNzIFVzZXJDb250ZW50UHJvdmlkZXI7CkBAIC03MiwxMiArNzQsMTEgQEAgY2xh
c3MgVXNlckNvbnRlbnRVUkxQYXR0ZXJuOwogY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQ7
CiBjbGFzcyBWaXNpdGVkTGlua1N0b3JlOwogY2xhc3MgV2ViR0xTdGF0ZVRyYWNrZXI7Ci1jbGFz
cyBTcGVlY2hTeW50aGVzaXNDbGllbnQ7CiAKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9uIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9u
KFBBTDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmLCBSZWY8U29ja2V0UHJv
dmlkZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4mJiwgUmVmPENhY2hlU3RvcmFn
ZVByb3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJiwgUmVmPEJhY2tGb3J3YXJk
Q2xpZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8UHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYsIFVuaXF1ZVJlZjxTcGVlY2hS
ZWNvZ25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFSZWNvcmRlclByb3ZpZGVyPiYm
LCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8UGVybWlzc2lvbkNvbnRyb2xs
ZXI+JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JU
IFBhZ2VDb25maWd1cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50
PiYmLCBSZWY8U29ja2V0UHJvdmlkZXI+JiYsIFVuaXF1ZVJlZjxMaWJXZWJSVENQcm92aWRlcj4m
JiwgUmVmPENhY2hlU3RvcmFnZVByb3ZpZGVyPiYmLCBSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4m
JiwgUmVmPEJhY2tGb3J3YXJkQ2xpZW50PiYmLCBSZWY8Q29va2llSmFyPiYmLCBVbmlxdWVSZWY8
UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiYmLCBVbmlxdWVSZWY8RnJhbWVMb2FkZXJDbGllbnQ+JiYs
IFVuaXF1ZVJlZjxTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyPiYmLCBVbmlxdWVSZWY8TWVkaWFS
ZWNvcmRlclByb3ZpZGVyPiYmLCBSZWY8QnJvYWRjYXN0Q2hhbm5lbFJlZ2lzdHJ5PiYmLCBSZWY8
UGVybWlzc2lvbkNvbnRyb2xsZXI+JiYsIFVuaXF1ZVJlZjxTdG9yYWdlUHJvdmlkZXI+JiYsIFVu
aXF1ZVJlZjxNb2RlbFBsYXllclByb3ZpZGVyPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFn
ZUNvbmZpZ3VyYXRpb24oKTsKICAgICBQYWdlQ29uZmlndXJhdGlvbihQYWdlQ29uZmlndXJhdGlv
biYmKTsKIApAQCAtMTQ1LDYgKzE0Niw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxQZXJtaXNzaW9u
Q29udHJvbGxlcj4gcGVybWlzc2lvbkNvbnRyb2xsZXI7CiAgICAgVW5pcXVlUmVmPFN0b3JhZ2VQ
cm92aWRlcj4gc3RvcmFnZVByb3ZpZGVyOworCisgICAgVW5pcXVlUmVmPE1vZGVsUGxheWVyUHJv
dmlkZXI+IG1vZGVsUGxheWVyUHJvdmlkZXI7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvTW9kZWwuY3BwCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Nb2RlbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDggKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2RlbC5oIgog
Ci0jaWYgRU5BQkxFKE1PREVMX0VMRU1FTlQpCi0KICNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3Ry
ZWFtLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU4LDUgKzU2LDMgQEAgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgYwogfQogCiB9Ci0KLSNlbmRpZiAvLyBFTkFC
TEUoTU9ERUxfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01vZGVsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TW9kZWwuaAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTW9kZWwuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsOCArMjUsNiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQotCiAjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+
CkBAIC0xMDEsNSArOTksMyBAQCBSZWZQdHI8TW9kZWw+IE1vZGVsOjpkZWNvZGUoRGVjb2RlciYg
ZGVjCiBXRUJDT1JFX0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0
U3RyZWFtJiwgY29uc3QgTW9kZWwmKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gRU5BQkxFKE1PREVMX0VMRU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjg1NjMzKQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOTcsMTMgKzEwOTcsMTMgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0
ZUNvbmZpZ3VyYQogI2lmIEVOQUJMRShNT0RFTF9FTEVNRU5UKQogICAgIGVsc2UgaWYgKGlzPFJl
bmRlck1vZGVsPihyZW5kZXJlcigpKSkgewogICAgICAgICBhdXRvIGVsZW1lbnQgPSBkb3duY2Fz
dDxIVE1MTW9kZWxFbGVtZW50PihyZW5kZXJlcigpLmVsZW1lbnQoKSk7Ci0jaWYgRU5BQkxFKEFS
S0lUX0lOTElORV9QUkVWSUVXX01BQykKLSAgICAgICAgaWYgKGF1dG8qIHBsYXRmb3JtTGF5ZXIg
PSBlbGVtZW50LT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzVG9QbGF0Zm9ybUxheWVyKHBsYXRmb3JtTGF5ZXIsIEdyYXBoaWNzTGF5ZXI6
OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2RlbCk7Ci0jZWxzZQotICAgICAgICBpZiAoYXV0byBt
b2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCisKKyAgICAgICAgLy8gU29tZSBNb2RlbFBsYXllcnMg
dXNlIGEgcGxhdGZvcm1MYXllcigpIGFuZCBzb21lIHBhc3MgdGhlIE1vZGVsIHRvIHRoZSBsYXll
ciBhcyBjb250ZW50cywKKyAgICAgICAgLy8gYnV0IHRoaXMgaXMgYSBydW50aW1lIGRlY2lzaW9u
LgorICAgICAgICBpZiAoZWxlbWVudC0+dXNlc1BsYXRmb3JtTGF5ZXIoKSkgeworICAgICAgICAg
ICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvUGxhdGZvcm1MYXllcihlbGVtZW50LT5w
bGF0Zm9ybUxheWVyKCksIEdyYXBoaWNzTGF5ZXI6OkNvbnRlbnRzTGF5ZXJQdXJwb3NlOjpNb2Rl
bCk7CisgICAgICAgIH0gZWxzZSBpZiAoYXV0byBtb2RlbCA9IGVsZW1lbnQtPm1vZGVsKCkpCiAg
ICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9Nb2RlbChXVEZNb3ZlKG1v
ZGVsKSk7Ci0jZW5kaWYKIAogICAgICAgICBsYXllckNvbmZpZ0NoYW5nZWQgPSB0cnVlOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDIxLTExLTEwICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBGYWN0b3IgcGxhdGZvcm0gc3BlY2lm
aWMgY29kZSBvdXQgb2YgSFRNTE1vZGVsRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMyODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGVh
biBKYWNrc29uLgorCisgICAgICAgIE1vdmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUg
bWFjT1MgQVJLaXQgPG1vZGVsPiBpbXBsZW1lbnRhdGlvbgorICAgICAgICBpbnRvIGFuIEFSS2l0
IG1vZGVsIHBsYXllciBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6Cisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZCBu
ZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJv
bGxlckNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpNb2RlbEVsZW1lbnRDb250cm9sbGVyOjpt
b2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvTW9kZWxF
bGVtZW50Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAg
ICBNYWtlIG1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoKSBhbiBhc3luYyBjYWxsYmFjayBy
YXRoZXIgdGhhbgorICAgICAgICB1c2luZyBhIEVsZW1lbnRDb250ZXh0IHRvIHJlY29ubmVjdCBv
biB0aGUgd2F5IGJhY2suCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsOiBBZGRlZC4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaDog
QWRkZWQuCisgICAgICAgIEFkZCBNb2RlbFBsYXllclByb3ZpZGVyIGltcGxlbWVudGF0aW9uIGZv
ciBXZWJLaXQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL01vZGVsL21hYzogQWRkZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIu
aDogQWRkZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXIubW06IEFkZGVkLgorICAgICAgICBNb3ZlIGNvZGUgZnJvbSBIVE1MTW9k
ZWxFbGVtZW50Q29jb2EgaGVyZSwgYW5kIGltcGxlbWVudCB0aGUgTW9kZWxQbGF5ZXIKKyAgICAg
ICAgaW50ZXJmYWNlIHVzaW5nIGl0LiBSYXRoZXIgdGhhbiB1c2luZyB0aGUgQ2hyb21lQ2xpZW50
LCB3ZSBjYW4gbm93IGRpcmVjdGx5CisgICAgICAgIHVzZSBhbiBhc3luYyBJUEMgbWVzc2FnZSB0
byBzZXQgdXAgdGhlIGxpbmsuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3QpOgor
ICAgICAgICBGaXggYnVpbGQgaXNzdWUgY2F1c2VkIGJ5IGFkZGluZyBuZXcgZmlsZXMuCisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpzZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyk6CisgICAgICAgIFVwZGF0ZSBj
YWxsIHRvIHNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5IHRvIGJlIG9uIHRoZSBBUktpdElu
bGluZVByZXZpZXdNb2RlbFBsYXllci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xp
ZW50Ojptb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAg
ICBSZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3IGNs
aWVudCBmdW5jdGlvbi4KKwogMjAyMS0xMS0xMSAgUGVyIEFybmUgVm9sbGFuIDxwdm9sbGFuQGFw
cGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdW0dQVVBdIEFsbG93IGFjY2VzcyB0byBwb3dlciBs
b2dnaW5nIHNlcnZpY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjg1NjMzKQor
KysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYg
KzEwMSw3IEBAIHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9E
SVJ9L1dlYlByb2Nlc3MvTGF1bmNoaW5nIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
TWVkaWFDYWNoZSIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQcm9jZXNzL01lZGlhU3RyZWFtIgor
ICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTW9kZWwiCiAgICAgIiR7V0VCS0lUX0RJUn0v
V2ViUHJvY2Vzcy9OZXR3b3JrIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvTmV0d29y
ay93ZWJydGMiCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zIgpJ
bmRleDogU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1NvdXJjZXMudHh0CShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNiArNTkyLDggQEAgV2ViUHJvY2Vzcy9NZWRp
YVNlc3Npb24vUmVtb3RlTWVkaWFTZXNzaQogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9NZWRpYURl
dmljZVNhbmRib3hFeHRlbnNpb25zLmNwcAogV2ViUHJvY2Vzcy9NZWRpYVN0cmVhbS9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCiAKK1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHAKKwogV2ViUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9EaXNwbGF5TGlzdFdyaXRlckhhbmRsZS5j
cHAKIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFj
a2VuZC5jcHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQJKHJldmlzaW9uIDI4NTYzMykKKysr
IFNvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjU1LDYg
KzY1NSw4IEBAIFdlYlByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JVSU0KIAogV2Vi
UHJvY2Vzcy9NZWRpYUNhY2hlL1dlYk1lZGlhS2V5U3RvcmFnZU1hbmFnZXIuY3BwCiAKK1dlYlBy
b2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCisKIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbkFubm90YXRpb24ubW0KIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luQ2hv
aWNlQW5ub3RhdGlvbi5tbQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTW9kZWxFbGVt
ZW50Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL01v
ZGVsRWxlbWVudENvbnRyb2xsZXIuaAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTW9kZWxFbGVtZW50Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01
Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVu
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQg
bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYp
OworICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhVUkwsIFN0cmluZywgV2Vi
Q29yZTo6RmxvYXRTaXplLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFp
cjxTdHJpbmcsIHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmKTsKICNlbmRp
ZgogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgyNywxNSArMTA4MjcsOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dGFrZU1vZGVsRWxlbWVudEZ1bGxzCiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
UktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVtZW50
RGlkQ3JlYXRlUHJldmlldyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXpl
KQordm9pZCBXZWJQYWdlUHJveHk6Om1vZGVsRWxlbWVudERpZENyZWF0ZVByZXZpZXcoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgRmxvYXRTaXplJiBzaXplLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1v
ZGVsRWxlbWVudENvbnRyb2xsZXIoKS0+bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhjb250
ZXh0LCB1cmwsIHV1aWQsIHNpemUpOwotfQotCi12b2lkIFdlYlBhZ2VQcm94eTo6bW9kZWxFbGVt
ZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlkLCB1aW50MzJfdCBjb250ZXh0SWQpCi17Ci0g
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Ok1vZGVsRWxlbWVudFByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoY29udGV4dCwgdXVpZCwg
Y29udGV4dElkKSk7CisgICAgbW9kZWxFbGVtZW50Q29udHJvbGxlcigpLT5tb2RlbEVsZW1lbnRE
aWRDcmVhdGVQcmV2aWV3KHVybCwgdXVpZCwgc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTkyLDggKzU5Miw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmll
dyhjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYpOwotICAgIHZvaWQgbW9kZWxFbGVtZW50UHJl
dmlld0RpZE9idGFpbkNvbnRleHRJZChjb25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYsIGNv
bnN0IFN0cmluZyYsIHVpbnQzMl90KTsKKyAgICB2b2lkIG1vZGVsRWxlbWVudERpZENyZWF0ZVBy
ZXZpZXcoY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChFeHBlY3RlZDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50
MzJfdD4sIFdlYkNvcmU6OlJlc291cmNlRXJyb3I+KT4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVlfQU1TX1VJKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC01ODcsNyArNTg3LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBUYWtlTW9k
ZWxFbGVtZW50RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZW50TGF5ZXJJRCkKICNlbmRpZgogI2lm
IEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgTW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhzdHJ1Y3QgV2ViQ29yZTo6RWxlbWVudENvbnRleHQgZWxlbWVudENvbnRleHQs
IFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJDb3JlOjpGbG9hdFNpemUgc2l6ZSkKKyAgICBNb2Rl
bEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTCB1cmwsIFN0cmluZyB1dWlkLCBXZWJDb3JlOjpG
bG9hdFNpemUgc2l6ZSkgLT4gKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90Piwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4gcmVzdWx0KSBBc3luYwogI2VuZGlmCiAKICAgICByZXF1
ZXN0UGVybWlzc2lvbihzdHJ1Y3QgV2ViQ29yZTo6Q2xpZW50T3JpZ2luIG9yaWdpbiwgc3RydWN0
IFdlYkNvcmU6OlBlcm1pc3Npb25EZXNjcmlwdG9yIGRlc2NyaXB0b3IpIC0+IChlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6UGVybWlzc2lvblN0YXRlIHN0YXRlKSBBc3luYwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL01vZGVsRWxlbWVudENvbnRy
b2xsZXJDb2NvYS5tbQkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTW9kZWxFbGVtZW50Q29udHJvbGxlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklF
V19NQUMpCisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPHBhbC9z
cGkvbWFjL1N5c3RlbVByZXZpZXdTUEkuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAj
ZW5kaWYKQEAgLTEyNCwxMCArMTI1LDEyIEBAIHZvaWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6
dGFrZU1vZGVsRWwKIAogI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCiAKLXZv
aWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhj
b25zdCBXZWJDb3JlOjpFbGVtZW50Q29udGV4dCYgY29udGV4dCwgY29uc3QgVVJMJiBmaWxlVVJM
LCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKK3Zv
aWQgTW9kZWxFbGVtZW50Q29udHJvbGxlcjo6bW9kZWxFbGVtZW50RGlkQ3JlYXRlUHJldmlldyhV
UkwgZmlsZVVSTCwgU3RyaW5nIHV1aWQsIFdlYkNvcmU6OkZsb2F0U2l6ZSBzaXplLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQzMl90PiwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvcj4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICgh
bV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS5tb2RlbEVsZW1lbnRFbmFibGVkKCkpCisgICAg
aWYgKCFtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLm1vZGVsRWxlbWVudEVuYWJsZWQoKSkg
eworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihtYWtlVW5leHBlY3RlZChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIHsgV2ViQ29yZTo6ZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgeyB9LCAi
TW9kZWwgZWxlbWVudCBkaXNhYmxlZCJfcyB9KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAK
ICAgICBhdXRvIG5zVVVJRCA9IGFkb3B0TlMoW1tOU1VVSUQgYWxsb2NdIGluaXRXaXRoVVVJRFN0
cmluZzp1dWlkXSk7CiAgICAgYXV0byBwcmV2aWV3ID0gYWRvcHROUyhbYWxsb2NBU1ZJbmxpbmVQ
cmV2aWV3SW5zdGFuY2UoKSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKSBVVUlEOm5zVVVJRC5nZXQoKV0pOwpAQCAtMTQwLDMyICsxNDMs
NDkgQEAgdm9pZCBNb2RlbEVsZW1lbnRDb250cm9sbGVyOjptb2RlbEVsZW1lbgogICAgIGVsc2UK
ICAgICAgICAgaXRlcmF0b3ItPnZhbHVlID0gcHJldmlldzsKIAorICAgIC8vIEZJWE1FOiBXaHkg
aXMgdGhpcyBub3QganVzdCB1c2luZyBub3JtYWwgVVJMIC0+IE5TVVJMIGNvbnZlcnNpb24/Cisg
ICAgYXV0byB1cmwgPSBhZG9wdE5TKFtbTlNVUkwgYWxsb2NdIGluaXRGaWxlVVJMV2l0aFBhdGg6
ZmlsZVVSTC5maWxlU3lzdGVtUGF0aCgpXSk7CisKICAgICBSRUxFQVNFX0FTU0VSVChpc01haW5S
dW5Mb29wKCkpOwotICAgIFdlYWtQdHIgd2Vha1RoaXMgeyAqdGhpcyB9OwotICAgIGF1dG8gZWxl
bWVudENvbnRleHRDb3B5ID0gY29udGV4dDsKLSAgICBhdXRvIHV1aWRDb3B5ID0gdXVpZDsKLSAg
ICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpmaWxlVVJMLmZpbGVTeXN0ZW1Q
YXRoKCldOwotICAgIFtwcmV2aWV3IHNldHVwUmVtb3RlQ29ubmVjdGlvbldpdGhDb21wbGV0aW9u
SGFuZGxlcjpeKE5TRXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSB7CisgICAgW3ByZXZp
ZXcgc2V0dXBSZW1vdGVDb25uZWN0aW9uV2l0aENvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0
cihbd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfSwgcHJldmlldywgdXVpZCA9IFdURk1vdmUo
dXVpZCksIHVybCA9IFdURk1vdmUodXJsKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gKE5TRXJyb3IgKiBfTnVsbGFibGUgY29udGV4dEVycm9yKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKGNvbnRleHRFcnJvcikgewotICAgICAgICAgICAgTE9HKE1vZGVs
RWxlbWVudCwgIlVuYWJsZSB0byBjcmVhdGUgcmVtb3RlIGNvbm5lY3Rpb24gZm9yIHV1aWQgJXM6
ICVALiIsIHV1aWRDb3B5LnV0ZjgoKS5kYXRhKCksIFtjb250ZXh0RXJyb3IgbG9jYWxpemVkRGVz
Y3JpcHRpb25dKTsKKyAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gY3Jl
YXRlIHJlbW90ZSBjb25uZWN0aW9uIGZvciB1dWlkICVzOiAlQC4iLCB1dWlkLnV0ZjgoKS5kYXRh
KCksIGNvbnRleHRFcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBjb250ZXh0RXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3IpKTsKKyAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgTE9H
KE1vZGVsRWxlbWVudCwgIkVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAl
cy4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IkVzdGFibGlzaGVkIHJlbW90ZSBjb25uZWN0aW9uIHdpdGggVVVJRCAlcy4iLCB1dWlkLnV0Zjgo
KS5kYXRhKCkpOwogCi0gICAgICAgIFtwcmV2aWV3IHByZXBhcmVQcmV2aWV3T2ZGaWxlQXRVUkw6
dXJsIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNFcnJvciAqIF9OdWxsYWJsZSBsb2FkRXJyb3IpIHsK
KyAgICAgICAgW3ByZXZpZXcgcHJlcGFyZVByZXZpZXdPZkZpbGVBdFVSTDp1cmwuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMp
LCBwcmV2aWV3LCB1dWlkID0gV1RGTW92ZSh1dWlkKSwgdXJsID0gV1RGTW92ZSh1cmwpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoTlNFcnJvciAqIF9O
dWxsYWJsZSBsb2FkRXJyb3IpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKGxvYWRFcnJvcikg
ewotICAgICAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJVbmFibGUgdG8gbG9hZCBmaWxl
IGZvciB1dWlkICVzOiAlQC4iLCB1dWlkQ29weS51dGY4KCkuZGF0YSgpLCBbbG9hZEVycm9yIGxv
Y2FsaXplZERlc2NyaXB0aW9uXSk7CisgICAgICAgICAgICAgICAgTE9HKE1vZGVsRWxlbWVudCwg
IlVuYWJsZSB0byBsb2FkIGZpbGUgZm9yIHV1aWQgJXM6ICVALiIsIHV1aWQudXRmOCgpLmRhdGEo
KSwgbG9hZEVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKTsKKworICAgICAgICAgICAgICAgIGNh
bGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBlcnJvciA9IFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgeyBsb2FkRXJyb3IgfV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobWFrZVVuZXhwZWN0ZWQoZXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIExPRyhNb2RlbEVsZW1lbnQsICJMb2FkZWQgZmlsZSB3aXRo
IFVVSUQgJXMuIiwgdXVpZENvcHkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBMT0coTW9k
ZWxFbGVtZW50LCAiTG9hZGVkIGZpbGUgd2l0aCBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEo
KSk7CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5SdW5Mb29wKFt3ZWFrVGhpcywgZWxlbWVudENv
bnRleHRDb3B5LCB1dWlkQ29weSwgY29udGV4dElkID0gW3ByZXZpZXcgY29udGV4dElkXV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV93ZWJQYWdlUHJveHkubW9kZWxF
bGVtZW50UHJldmlld0RpZE9idGFpbkNvbnRleHRJZChlbGVtZW50Q29udGV4dENvcHksIHV1aWRD
b3B5LCBjb250ZXh0SWQpOworICAgICAgICAgICAgYXV0byBjb250ZXh0SWQgPSBbcHJldmlldyBj
b250ZXh0SWRdOworICAgICAgICAgICAgY2FsbE9uTWFpblJ1bkxvb3AoW3dlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyksIHV1aWQgPSBXVEZNb3ZlKHV1aWQpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBjb250ZXh0SWRdICgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0ZDo6bWFrZV9wYWlyKHV1aWQs
IGNvbnRleHRJZCkpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgIH1dOwotICAgIH1dOworICAg
ICAgICB9KS5nZXQoKV07CisgICAgfSkuZ2V0KCldOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
Mjg1NjMzKQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNTIyMCw2ICs1MjIwLDEwIEBACiAJCUJDMjA1MjgwMTFDOTQy
ODQwMDhGMzM3NSAvKiBXS0J1bmRsZVBhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV0tCdW5kbGVQYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkMyNjUyMTIxMTgyNjA4MTAwMjQzRTEyIC8qIERyYXdpbmdBcmVhUHJveHkuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRHJhd2luZ0FyZWFQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMjY1MjEzMTE4MjYwODEwMDI0M0UxMiAvKiBE
cmF3aW5nQXJlYVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdp
bmdBcmVhUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyQjQxMEMyNzMy
RUY5NjAwQTJEMTkxIC8qIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMkI0MTBEMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFSS2l0SW5saW5lUHJldmll
d01vZGVsUGxheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzJCNDExQTI3
MzJGNjZFMDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJDMkI0MTFCMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzJEMDIxNjEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkMyRDAyMTgxMkFDNDI2QzAwRTczMkEzIC8qIFdLUGFnZUxvYWRUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS1BhZ2VMb2FkVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMzMDY1RjkxMjU5MzQ0RTAwRTcxMjc4IC8qIENhY2hlTW9kZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVNb2RlbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtOTc3NCw2ICs5Nzc4LDcgQEAKIAkJCQkzM0QzQTNCRDEzMzk2
MDk4MDA3MDlCRTQgLyogTWVkaWFDYWNoZSAqLywKIAkJCQkwNzM2Qjc1MjI2MEQwMzlGMDBFMDY5
OTQgLyogTWVkaWFTZXNzaW9uICovLAogCQkJCTRBNDEwRjQxMTlBRjdCMjcwMDJFQkFCNSAvKiBN
ZWRpYVN0cmVhbSAqLywKKwkJCQlCQzJCNDEwQTI3MzJFRjY1MDBBMkQxOTEgLyogTW9kZWwgKi8s
CiAJCQkJNTEwNUIwRDIxNjJGN0E1RTAwRTI3NzA5IC8qIE5ldHdvcmsgKi8sCiAJCQkJMzEwOTk5
NzQxNDZDOEFBODAwMjlERUI5IC8qIE5vdGlmaWNhdGlvbnMgKFVzZXIpICovLAogCQkJCTFBNkZC
N0FBMTFFNjRCNDkwMERCMTM3MSAvKiBQbHVnaW5zICovLApAQCAtMTA2MDMsNiArMTA2MDgsMjUg
QEAKIAkJCXBhdGggPSBjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQkMy
QjQxMEEyNzMyRUY2NTAwQTJEMTkxIC8qIE1vZGVsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzJCNDEwQjI3MzJFRjc1MDBBMkQxOTEgLyogbWFjICov
LAorCQkJCUJDMkI0MTFCMjczMkY2NkUwMEEyRDE5MSAvKiBXZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcCAqLywKKwkJCQlCQzJCNDExQTI3MzJGNjZFMDBBMkQxOTEgLyogV2ViTW9kZWxQbGF5ZXJQ
cm92aWRlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBNb2RlbDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUJDMkI0MTBCMjczMkVGNzUwMEEyRDE5MSAvKiBtYWMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUJDMkI0MTBDMjczMkVG
OTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oICovLAorCQkJCUJD
MkI0MTBEMjczMkVGOTYwMEEyRDE5MSAvKiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5t
bSAqLywKKwkJCSk7CisJCQlwYXRoID0gbWFjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKIAkJQkMyRTZFNzQxMTQxOTZGMDAwQTYzQjFFIC8qIFBsYXRmb3JtICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDggKzE0NCw4
IEBACiAjaW5jbHVkZSA8d3RmL1VSTFBhcnNlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFVykKLSNpbmNsdWRlIDxX
ZWJDb3JlL0hUTUxNb2RlbEVsZW1lbnQuaD4KKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJ
RVdfTUFDKQorI2luY2x1ZGUgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgiCiAjZW5k
aWYKIAogI2lmICFPUyhXSU5ET1dTKQpAQCAtNTc2LDkgKzU3Niw5IEBAIHZvaWQgV2ViUHJvY2Vz
czo6c2V0V2Vic2l0ZURhdGFTdG9yZVBhcmEKICAgICAgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6c2V0TWVkaWFDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1lZGlhQ2FjaGVEaXJlY3Rv
cnkpOwogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVcpCisjaWYgRU5B
QkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKICAgICBpZiAoIXBhcmFtZXRlcnMubW9kZWxF
bGVtZW50Q2FjaGVEaXJlY3RvcnkuaXNFbXB0eSgpKQotICAgICAgICBXZWJDb3JlOjpIVE1MTW9k
ZWxFbGVtZW50OjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeShwYXJhbWV0ZXJzLm1vZGVs
RWxlbWVudENhY2hlRGlyZWN0b3J5KTsKKyAgICAgICAgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQ
bGF5ZXI6OnNldE1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KHBhcmFtZXRlcnMubW9kZWxFbGVt
ZW50Q2FjaGVEaXJlY3RvcnkpOwogI2VuZGlmCiAKICAgICBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRW5hYmxlZChwYXJhbWV0ZXJzLnJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlci5jcHAJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL01vZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oIgorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBs
YXllci5oPgorCisjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX01BQykKKyNpbmNsdWRl
ICJBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJNb2RlbFBsYXllclByb3ZpZGVyOjpXZWJNb2RlbFBsYXllclByb3ZpZGVy
KFdlYlBhZ2UmIHBhZ2UpCisgICAgOiBtX3BhZ2UgeyBwYWdlIH0KK3sKKyAgICBVTlVTRURfUEFS
QU0obV9wYWdlKTsKK30KKworV2ViTW9kZWxQbGF5ZXJQcm92aWRlcjo6fldlYk1vZGVsUGxheWVy
UHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisKKy8vIE1BUks6IC0gV2ViQ29yZTo6TW9kZWxQbGF5ZXJQ
cm92aWRlciBvdmVycmlkZXMuCisKK1JlZlB0cjxXZWJDb3JlOjpNb2RlbFBsYXllcj4gV2ViTW9k
ZWxQbGF5ZXJQcm92aWRlcjo6Y3JlYXRlTW9kZWxQbGF5ZXIoV2ViQ29yZTo6TW9kZWxQbGF5ZXJD
bGllbnQmIGNsaWVudCkKK3sKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQor
ICAgIHJldHVybiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y3JlYXRlKG1fcGFnZSwg
Y2xpZW50KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNsaWVudCk7CisgICAgcmV0dXJuIG51
bGxwdHI7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01v
ZGVsL1dlYk1vZGVsUGxheWVyUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTW9kZWwvV2ViTW9kZWxQbGF5ZXJQcm92aWRlci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9XZWJNb2RlbFBsYXllclByb3ZpZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllclByb3ZpZGVyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlOworCitjbGFzcyBXZWJNb2RlbFBsYXllclBy
b3ZpZGVyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6Ok1vZGVsUGxheWVyUHJvdmlkZXIgeworcHVi
bGljOgorICAgIFdlYk1vZGVsUGxheWVyUHJvdmlkZXIoV2ViUGFnZSYpOworICAgIHZpcnR1YWwg
fldlYk1vZGVsUGxheWVyUHJvdmlkZXIoKTsKKworcHJpdmF0ZToKKyAgICAvLyBXZWJDb3JlOjpN
b2RlbFBsYXllclByb3ZpZGVyIG92ZXJyaWRlcy4KKyAgICB2aXJ0dWFsIFJlZlB0cjxXZWJDb3Jl
OjpNb2RlbFBsYXllcj4gY3JlYXRlTW9kZWxQbGF5ZXIoV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGll
bnQmKSBmaW5hbDsKKworICAgIFdlYlBhZ2UmIG1fcGFnZTsKK307CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTW9kZWwvbWFjL0FS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIEVOQUJMRShBUktJVF9JTkxJTkVfUFJFVklFV19NQUMpCisKKyNpbmNsdWRlIDxX
ZWJDb3JlL01vZGVsUGxheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Nb2RlbFBsYXllckNsaWVu
dC5oPgorI2luY2x1ZGUgPHd0Zi9Db21waWxlci5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworT0JKQ19DTEFTUyBBU1ZJbmxpbmVQcmV2aWV3OworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIgZmluYWwgOiBwdWJsaWMgV2Vi
Q29yZTo6TW9kZWxQbGF5ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxBUktpdElubGluZVByZXZp
ZXdNb2RlbFBsYXllcj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8QVJLaXRJbmxpbmVQcmV2
aWV3TW9kZWxQbGF5ZXI+IGNyZWF0ZShXZWJQYWdlJiwgV2ViQ29yZTo6TW9kZWxQbGF5ZXJDbGll
bnQmKTsKKyAgICB2aXJ0dWFsIH5BUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcigpOworCisg
ICAgc3RhdGljIHZvaWQgc2V0TW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoY29uc3QgU3RyaW5n
Jik7CisKK3ByaXZhdGU6CisgICAgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIoV2ViUGFn
ZSYsIFdlYkNvcmU6Ok1vZGVsUGxheWVyQ2xpZW50Jik7CisKKyAgICAvLyBXZWJDb3JlOjpNb2Rl
bFBsYXllciBvdmVycmlkZXMuCisgICAgdmlydHVhbCB2b2lkIGxvYWQoV2ViQ29yZTo6TW9kZWwm
LCBXZWJDb3JlOjpMYXlvdXRTaXplKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5
ZXIqIGxheWVyKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9k
ZWwmKTsKKyAgICB2b2lkIGNsZWFyRmlsZSgpOworCisgICAgV2Vha1B0cjxXZWJQYWdlPiBtX3Bh
Z2U7CisgICAgV2Vha1B0cjxXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudD4gbV9jbGllbnQ7CisK
KyAgICBTdHJpbmcgbV9maWxlUGF0aDsKKyAgICBSZXRhaW5QdHI8QVNWSW5saW5lUHJldmlldz4g
bV9pbmxpbmVQcmV2aWV3OworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Nb2RlbC9tYWMvQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL01vZGVsL21hYy9BUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllci5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTW9kZWwvbWFjL0FSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQorCisjaW1wb3J0ICJB
UktpdElubGluZVByZXZpZXdNb2RlbFBsYXllci5oIgorCisjaW1wb3J0ICJXZWJQYWdlLmgiCisj
aW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2ltcG9ydCA8V2ViQ29yZS9Nb2RlbC5o
PgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvU3lzdGVtUHJldmlld1NQSS5oPgorI2ltcG9ydCA8d3Rm
L1NvZnRMaW5raW5nLmg+CisjaW1wb3J0IDx3dGYvVVVJRC5oPgorCitTT0ZUX0xJTktfUFJJVkFU
RV9GUkFNRVdPUksoQXNzZXRWaWV3ZXIpOworU09GVF9MSU5LX0NMQVNTKEFzc2V0Vmlld2VyLCBB
U1ZJbmxpbmVQcmV2aWV3KTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1JlZjxBUktpdElubGlu
ZVByZXZpZXdNb2RlbFBsYXllcj4gQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6OmNyZWF0
ZShXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpNb2RlbFBsYXllckNsaWVudCYgY2xpZW50KQorewor
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyKHBh
Z2UsIGNsaWVudCkpOworfQorCitBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6QVJLaXRJ
bmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXIoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6TW9kZWxQbGF5
ZXJDbGllbnQmIGNsaWVudCkKKyAgICA6IG1fcGFnZSB7IHBhZ2UgfQorICAgICwgbV9jbGllbnQg
eyBjbGllbnQgfQoreworfQorCitBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6fkFSS2l0
SW5saW5lUHJldmlld01vZGVsUGxheWVyKCkKK3sKKyAgICBjbGVhckZpbGUoKTsKK30KKworc3Rh
dGljIFN0cmluZyYgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNoYXJlZE1vZGVsRWxlbWVudENhY2hlRGlyZWN0
b3J5OworICAgIHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeTsKK30KKwor
c3RhdGljIGNvbnN0IFN0cmluZyYgbW9kZWxFbGVtZW50Q2FjaGVEaXJlY3RvcnkoKQoreworICAg
IHJldHVybiBzaGFyZWRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9yeSgpOworfQorCit2b2lkIEFS
S2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpzZXRNb2RlbEVsZW1lbnRDYWNoZURpcmVjdG9y
eShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgc2hhcmVkTW9kZWxFbGVtZW50Q2FjaGVEaXJl
Y3RvcnkoKSA9IHBhdGg7Cit9CisKK3ZvaWQgQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
OmNyZWF0ZUZpbGUoV2ViQ29yZTo6TW9kZWwmIG1vZGVsU291cmNlKQoreworICAgIC8vIFRoZSBu
ZWVkIGZvciBhIGZpbGUgaXMgb25seSB0ZW1wb3JhcnkgZHVlIHRvIHRoZSBuYXR1cmUgb2YgQVNW
SW5saW5lUHJldmlldywKKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI3NTY3LgorCisgICAgY2xlYXJGaWxlKCk7CisKKyAgICBhdXRvIHBhdGhUb0RpcmVj
dG9yeSA9IG1vZGVsRWxlbWVudENhY2hlRGlyZWN0b3J5KCk7CisgICAgaWYgKHBhdGhUb0RpcmVj
dG9yeS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gZGlyZWN0b3J5RXhp
c3RzID0gRmlsZVN5c3RlbTo6ZmlsZUV4aXN0cyhwYXRoVG9EaXJlY3RvcnkpOworICAgIGlmIChk
aXJlY3RvcnlFeGlzdHMgJiYgRmlsZVN5c3RlbTo6ZmlsZVR5cGVGb2xsb3dpbmdTeW1saW5rcyhw
YXRoVG9EaXJlY3RvcnkpICE9IEZpbGVTeXN0ZW06OkZpbGVUeXBlOjpEaXJlY3RvcnkpIHsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
aWYgKCFkaXJlY3RvcnlFeGlzdHMgJiYgIUZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3Rvcmllcyhw
YXRoVG9EaXJlY3RvcnkpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgLy8gV2UgbmVlZCB0byBzdXBwb3J0IC5yZWFsaXR5IGZp
bGVzIGFzIHdlbGwsIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc1
NjguCisgICAgYXV0byBmaWxlTmFtZSA9IEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGNy
ZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSkgKyAiLnVzZHoiOworICAgIGF1dG8gZmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvRGlyZWN0b3J5LCBm
aWxlTmFtZSk7CisgICAgYXV0byBmaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoZmlsZVBhdGgs
IEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgIGlmIChmaWxlIDw9IDApCisg
ICAgICAgIHJldHVybjsKKworICAgIEZpbGVTeXN0ZW06OndyaXRlVG9GaWxlKGZpbGUsIG1vZGVs
U291cmNlLmRhdGEoKS0+ZGF0YSgpLCBtb2RlbFNvdXJjZS5kYXRhKCktPnNpemUoKSk7CisgICAg
RmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIG1fZmlsZVBhdGggPSBmaWxlUGF0aDsK
K30KKwordm9pZCBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6Y2xlYXJGaWxlKCkKK3sK
KyAgICBpZiAobV9maWxlUGF0aC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZp
bGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9maWxlUGF0aCk7CisgICAgbV9maWxlUGF0aCA9IGVtcHR5
U3RyaW5nKCk7Cit9CisKKy8vIE1BUks6IC0gV2ViQ29yZTo6TW9kZWxQbGF5ZXIgb3ZlcnJpZGVz
LgorCit2b2lkIEFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpsb2FkKFdlYkNvcmU6Ok1v
ZGVsJiBtb2RlbFNvdXJjZSwgV2ViQ29yZTo6TGF5b3V0U2l6ZSBzaXplKQoreworICAgIGF1dG8g
c3Ryb25nQ2xpZW50ID0gbV9jbGllbnQuZ2V0KCk7CisgICAgaWYgKCFzdHJvbmdDbGllbnQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0cm9uZ1BhZ2UgPSBtX3BhZ2UuZ2V0KCk7Cisg
ICAgaWYgKCFzdHJvbmdQYWdlKSB7CisgICAgICAgIHN0cm9uZ0NsaWVudC0+ZGlkRmFpbExvYWRp
bmcoKnRoaXMsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgeyBXZWJDb3JlOjplcnJvckRvbWFpbldl
YktpdEludGVybmFsLCAwLCBtb2RlbFNvdXJjZS51cmwoKSwgIldlYlBhZ2UgZGVzdHJveWVkIl9z
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3JlYXRlRmlsZShtb2RlbFNvdXJj
ZSk7CisKKyAgICBtX2lubGluZVByZXZpZXcgPSBhZG9wdE5TKFthbGxvY0FTVklubGluZVByZXZp
ZXdJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpXSk7CisgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5lUHJl
dmlld01vZGVsUGxheWVyOjptb2RlbERpZENoYW5nZSgpIGNyZWF0ZWQgcHJldmlldyB3aXRoIFVV
SUQgJXMgYW5kIHNpemUgJWYgeCAlZi4iLCAoKFN0cmluZylbbV9pbmxpbmVQcmV2aWV3IHV1aWRd
LlVVSURTdHJpbmcpLnV0ZjgoKS5kYXRhKCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
CisKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEV4cGVjdGVkPHN0ZDo6cGFpcjxTdHJpbmcs
IHVpbnQzMl90PiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvcj4pPiBjb21wbGV0aW9uSGFuZGxlciA9
IFt3ZWFrU2VsZiA9IFdlYWtQdHIgeyAqdGhpcyB9XSAoRXhwZWN0ZWQ8c3RkOjpwYWlyPFN0cmlu
ZywgdWludDMyX3Q+LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yPiByZXN1bHQpIG11dGFibGUgewor
ICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsKKyAgICAgICAgaWYgKCFz
dHJvbmdTZWxmKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGF1dG8gc3Ryb25nQ2xp
ZW50ID0gc3Ryb25nU2VsZi0+bV9jbGllbnQuZ2V0KCk7CisgICAgICAgIGlmICghc3Ryb25nQ2xp
ZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAg
ICAgICAgICBMT0coTW9kZWxFbGVtZW50LCAiQVJLaXRJbmxpbmVQcmV2aWV3TW9kZWxQbGF5ZXI6
OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSByZWNlaXZlZCBlcnJvciBmcm9tIFVJ
UHJvY2VzcyIpOworICAgICAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygqc3Ry
b25nU2VsZiwgcmVzdWx0LmVycm9yKCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgYXV0byYgW3V1aWQsIGNvbnRleHRJZF0gPSAqcmVzdWx0OworICAgICAgICBT
dHJpbmcgZXhwZWN0ZWRVVUlEID0gW3N0cm9uZ1NlbGYtPm1faW5saW5lUHJldmlldyB1dWlkXS5V
VUlEU3RyaW5nOworCisgICAgICAgIGlmICh1dWlkICE9IGV4cGVjdGVkVVVJRCkgeworICAgICAg
ICAgICAgTE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjpp
bmxpbmVQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgVVVJRCBtaXNtYXRjaCwgcmVjZWl2ZWQg
JXMgYnV0IGV4cGVjdGVkICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSwgZXhwZWN0ZWRVVUlELnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgc3Ryb25nQ2xpZW50LT5kaWRGYWlsTG9hZGluZygq
c3Ryb25nU2VsZiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciB7IFdlYkNvcmU6OmVycm9yRG9tYWlu
V2ViS2l0SW50ZXJuYWwsIDAsIHsgfSwgbWFrZVN0cmluZygiQVJLaXRJbmxpbmVQcmV2aWV3TW9k
ZWxQbGF5ZXI6OmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoKSBVVUlEIG1pc21hdGNo
LCByZWNlaXZlZCAiLCB1dWlkLCAiIGJ1dCBleHBlY3RlZCAiLCBleHBlY3RlZFVVSUQsICIuIikg
fSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBbc3Ryb25nU2Vs
Zi0+bV9pbmxpbmVQcmV2aWV3IHNldFJlbW90ZUNvbnRleHQ6Y29udGV4dElkXTsKKyAgICAgICAg
TE9HKE1vZGVsRWxlbWVudCwgIkFSS2l0SW5saW5lUHJldmlld01vZGVsUGxheWVyOjppbmxpbmVQ
cmV2aWV3RGlkT2J0YWluQ29udGV4dElkKCkgc3VjY2Vzc2Z1bGx5IGVzdGFibGlzaGVkIHJlbW90
ZSBjb25uZWN0aW9uIGZvciBVVUlEICVzLiIsIHV1aWQudXRmOCgpLmRhdGEoKSk7CisKKyAgICAg
ICAgc3Ryb25nQ2xpZW50LT5kaWRGaW5pc2hMb2FkaW5nKCpzdHJvbmdTZWxmKTsKKyAgICB9Owor
ICAgIAorICAgIHN0cm9uZ1BhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpNb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3KFVSTDo6ZmlsZVVSTFdpdGhGaWxl
U3lzdGVtUGF0aChtX2ZpbGVQYXRoKSwgW21faW5saW5lUHJldmlldyB1dWlkXS5VVUlEU3RyaW5n
LCBzaXplKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworfQorCitQbGF0Zm9ybUxheWVy
KiBBUktpdElubGluZVByZXZpZXdNb2RlbFBsYXllcjo6bGF5ZXIoKQoreworICAgIHJldHVybiBb
bV9pbmxpbmVQcmV2aWV3IGxheWVyXTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkocmV2
aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNiArNDEsMTEgQEAKICNpbmNsdWRlICJXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmgiCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTkxLDcgKzk2LDcgQEAgdm9pZCBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZQogICAgICAgICB9OwogCiAjaWYgRU5BQkxFKEJVSUxUX0lOX05PVElG
SUNBVElPTlMpCi0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCgpICYmIGFsbG93ZWQpIHsKKyAgICAg
ICAgaWYgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
YnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkKCkgJiYgYWxsb3dlZCkgewogICAgICAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6Tm90aWZpY2F0aW9uTWFu
YWdlck1lc3NhZ2VIYW5kbGVyOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbihz
ZWN1cml0eU9yaWdpbi50b1N0cmluZygpKSwgV1RGTW92ZShpbm5lclBlcm1pc3Npb25IYW5kbGVy
KSwgbV9wYWdlLT5zZXNzaW9uSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAJKHJldmlzaW9uIDI4NTYzMykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTMxLDEzICsxNTMxLDYgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnRha2VNb2RlbEVsZW1lbnRGdQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJL
SVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Om1vZGVsRWxlbWVu
dERpZENyZWF0ZVByZXZpZXcoV2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXVpZCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
JiBzaXplKSBjb25zdAotewotICAgIG1fcGFnZS5tb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2aWV3
KGVsZW1lbnQsIHVybCwgdXVpZCwgc2l6ZSk7Ci19Ci0jZW5kaWYKLQogI2lmIEVOQUJMRShBUFBM
RV9QQVlfQU1TX1VJKQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c3RhcnRBcHBsZVBheUFNU1VJ
U2Vzc2lvbihjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBBcHBsZVBheUFNU1VJUmVx
dWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gMjg1NjMzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NTgsOSArNDU4LDYgQEAgcHJpdmF0
ZToKICNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfSU9TKQogICAgIHZvaWQgdGFrZU1v
ZGVsRWxlbWVudEZ1bGxzY3JlZW4oV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXll
cklEIGNvbnRlbnRMYXllcklkKSBjb25zdCBmaW5hbDsKICNlbmRpZgotI2lmIEVOQUJMRShBUktJ
VF9JTkxJTkVfUFJFVklFV19NQUMpCi0gICAgdm9pZCBtb2RlbEVsZW1lbnREaWRDcmVhdGVQcmV2
aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBjb25zdCBmaW5hbDsKLSNlbmRpZgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9BTVNfVUkpCiAgICAgdm9pZCBzdGFydEFwcGxlUGF5QU1TVUlTZXNz
aW9uKGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5QU1TVUlSZXF1ZXN0JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPGJvb2w+JiYpPiYmKSBmaW5hbDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAyODU2MzMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBACiAjaW5jbHVkZSAiV2ViTWVk
aWFLZXlTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk1lZGlhS2V5U3lzdGVtQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV2ViTWVkaWFTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYk1vZGVsUGxh
eWVyUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXZWJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVu
ZXIuaCIKQEAgLTI3MywxMCArMjc0LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FwcEhpZ2hsaWdo
dFN0b3JhZ2UuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXKQot
I2luY2x1ZGUgPFdlYkNvcmUvSFRNTE1vZGVsRWxlbWVudC5oPgotI2VuZGlmCi0KICNpZiBFTkFC
TEUoREFUQV9ERVRFQ1RJT04pCiAjaW5jbHVkZSAiRGF0YURldGVjdGlvblJlc3VsdC5oIgogI2Vu
ZGlmCkBAIC01NzUsNyArNTcyLDggQEAgV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIAogICAgICAgICBtYWtlVW5pcXVlUmVmPE1lZGlhUmVjb3JkZXJQcm92aWRlcj4oKnRo
aXMpLAogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5icm9hZGNhc3RDaGFubmVsUmVn
aXN0cnkoKSwKICAgICAgICAgV2ViUGVybWlzc2lvbkNvbnRyb2xsZXI6OmNyZWF0ZSgqdGhpcyks
Ci0gICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1h
a2VVbmlxdWVSZWY8V2ViU3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5pcXVlUmVm
PFdlYk1vZGVsUGxheWVyUHJvdmlkZXI+KCp0aGlzKQogICAgICk7CiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCgqdGhpcyk7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCkBAIC03NzM5LDIxICs3NzM3LDYgQEAgdm9pZCBXZWJQYWdlOjp0
YWtlTW9kZWxFbGVtZW50RnVsbHNjcmVlbgogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQVJLSVRf
SU5MSU5FX1BSRVZJRVdfTUFDKQotdm9pZCBXZWJQYWdlOjptb2RlbEVsZW1lbnREaWRDcmVhdGVQ
cmV2aWV3KFdlYkNvcmU6OkhUTUxNb2RlbEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHV1aWQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgc2l6ZSkKLXsK
LSAgICBpZiAoYXV0byBlbGVtZW50Q29udGV4dCA9IGNvbnRleHRGb3JFbGVtZW50KGVsZW1lbnQp
KQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Ok1vZGVsRWxlbWVudERpZENy
ZWF0ZVByZXZpZXcoKmVsZW1lbnRDb250ZXh0LCB1cmwsIHV1aWQsIHNpemUpKTsKLX0KLQotdm9p
ZCBXZWJQYWdlOjptb2RlbEVsZW1lbnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdl
YkNvcmU6OkVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q29udGV4dCwgY29uc3QgU3RyaW5nJiB1dWlk
LCB1aW50MzJfdCBjb250ZXh0SWQpCi17Ci0gICAgYXV0byBlbGVtZW50ID0gZWxlbWVudEZvckNv
bnRleHQoZWxlbWVudENvbnRleHQpOwotICAgIGlmIChpczxXZWJDb3JlOjpIVE1MTW9kZWxFbGVt
ZW50PihlbGVtZW50KSkKLSAgICAgICAgZG93bmNhc3Q8V2ViQ29yZTo6SFRNTE1vZGVsRWxlbWVu
dD4oKmVsZW1lbnQpLmlubGluZVByZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQodXVpZCwgY29udGV4
dElkKTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBhZ2U6OnNjcm9sbFRvUmVjdChjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIG9y
aWdpbikKIHsKICAgICBtYWluRnJhbWVWaWV3KCktPnNldFNjcm9sbFBvc2l0aW9uKEludFBvaW50
KHRhcmdldFJlY3QubWluWE1pbllDb3JuZXIoKSkpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjg1NjMzKQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAs
MTAgKzIyMCw2IEBAIGNsYXNzIFN1YnN0aXR1dGVEYXRhOwogY2xhc3MgVGV4dENoZWNraW5nUmVx
dWVzdDsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIAotI2lmIEVOQUJMRShBUktJVF9JTkxJTkVf
UFJFVklFVykKLWNsYXNzIEhUTUxNb2RlbEVsZW1lbnQ7Ci0jZW5kaWYKLQogZW51bSBTeW50aGV0
aWNDbGlja1R5cGUgOiBpbnQ4X3Q7CiBlbnVtIGNsYXNzIENPRVBEaXNwb3NpdGlvbiA6IGJvb2w7
CiBlbnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKQEAgLTE0OTYs
MTAgKzE0OTIsNiBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFSS0lUX0lOTElORV9QUkVWSUVXX0lP
UykKICAgICB2b2lkIHRha2VNb2RlbEVsZW1lbnRGdWxsc2NyZWVuKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRCBjb250ZW50TGF5ZXJJZCk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIHZvaWQgbW9kZWxFbGVtZW50RGlkQ3Jl
YXRlUHJldmlldyhXZWJDb3JlOjpIVE1MTW9kZWxFbGVtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdm9pZCBtb2RlbEVsZW1l
bnRQcmV2aWV3RGlkT2J0YWluQ29udGV4dElkKGNvbnN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0
JiwgY29uc3QgU3RyaW5nJiwgdWludDMyX3QpOwotI2VuZGlmCiAKICAgICB2b2lkIHByZXBhcmVU
b1J1bk1vZGFsSmF2YVNjcmlwdERpYWxvZygpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDI4
NTYzMykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTY0Nyw4ICs2NDcsNCBAQCBHZW5lcmF0ZVN5bnRoZXRp
Y0VkaXRpbmdDb21tYW5kKGVudW06dWluCiAjZW5kaWYKIAogICAgIFNjcm9sbFRvUmVjdChXZWJD
b3JlOjpGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCi0K
LSNpZiBFTkFCTEUoQVJLSVRfSU5MSU5FX1BSRVZJRVdfTUFDKQotICAgIE1vZGVsRWxlbWVudFBy
ZXZpZXdEaWRPYnRhaW5Db250ZXh0SWQoc3RydWN0IFdlYkNvcmU6OkVsZW1lbnRDb250ZXh0IGVs
ZW1lbnRDb250ZXh0LCBTdHJpbmcgdXVpZCwgdWludDMyX3QgY29udGV4dElkKQotI2VuZGlmCiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU2MzMpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CisKKyAg
ICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2RlbEVsZW1l
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjg0
OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25X
aXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxl
SFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKyAg
ICAgICAgVXNlIER1bW15TW9kZWxQbGF5ZXJQcm92aWRlciBmb3IgdGhlIER1bW15TW9kZWxQbGF5
ZXJQcm92aWRlciBzaW5jZSB0aGUgZmVhdHVyZQorICAgICAgICBpcyBub3Qgc3VwcG9ydGVkIGZv
ciBXZWJLaXRMZWdhY3kgYXQgdGhlIG1vbWVudC4KKwogMjAyMS0xMS0xMCAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NGXSBSZWR1Y2UgZHVwbGljYXRpb24gYW5k
IHVubmVlZGVkIGJ1ZmZlciBhbGxvY2F0aW9ucyBhbmQgY29weWluZyBpbiBVUkwgY29kZSwgYWxz
byByZW1vdmUgdW51c2VkIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjg1NjMzKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xNDksNiArMTQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0NvbnRyb2xsZXIuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvRHJhZ0l0ZW0uaD4K
KyNpbXBvcnQgPFdlYkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0R1bW15U3BlZWNoUmVjb2duaXRpb25Qcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9EdW1teVN0b3JhZ2VQcm92aWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FZGl0aW5nLmg+CkBA
IC0xNTQzLDcgKzE1NDQsOCBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hCiAgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6TWVkaWFSZWNvcmRlclByb3ZpZGVy
PigpLAogICAgICAgICBXZWJCcm9hZGNhc3RDaGFubmVsUmVnaXN0cnk6OmdldE9yQ3JlYXRlKFtb
c2VsZiBwcmVmZXJlbmNlc10gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZF0pLAogICAgICAgICBXZWJD
b3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAjaWYg
IVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50
ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKQEAgLTE4MjMsNyArMTgyNSw4IEBAIC0gKGlk
KWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICAgICAgbWFrZVVuaXF1ZVJl
ZjxXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJyb2FkY2Fz
dENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoW1tzZWxmIHByZWZlcmVuY2VzXSBwcml2YXRl
QnJvd3NpbmdFbmFibGVkXSksCiAgICAgICAgIFdlYkNvcmU6OkR1bW15UGVybWlzc2lvbkNvbnRy
b2xsZXI6OmNyZWF0ZSgpLAotICAgICAgICBtYWtlVW5pcXVlUmVmPFdlYkNvcmU6OkR1bW15U3Rv
cmFnZVByb3ZpZGVyPigpCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlTdG9y
YWdlUHJvdmlkZXI+KCksCisgICAgICAgIG1ha2VVbmlxdWVSZWY8V2ViQ29yZTo6RHVtbXlNb2Rl
bFBsYXllclByb3ZpZGVyPigpCiAgICAgKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVD
bGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NV
UFBPUlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyODU2MzMp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0xMS0wOCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgRmFjdG9yIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUgb3V0IG9mIEhUTUxNb2Rl
bEVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjg0OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5pdFdpdGhGcmFtZSk6CisgICAgICAg
IFVzZSBEdW1teU1vZGVsUGxheWVyUHJvdmlkZXIgZm9yIHRoZSBEdW1teU1vZGVsUGxheWVyUHJv
dmlkZXIgc2luY2UgdGhlIGZlYXR1cmUKKyAgICAgICAgaXMgbm90IHN1cHBvcnRlZCBmb3IgV2Vi
S2l0TGVnYWN5IGF0IHRoZSBtb21lbnQuCisKIDIwMjEtMTEtMDUgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIEFYOiByZW5hbWUgYWN0aW9uVmVy
YigpIGFzIGxvY2FsaXplZEFjdGlvblZlcmIoKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Vmlldy5jcHAJKHJldmlzaW9uIDI4NTYzMykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdD
b250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvRHVtbXlNb2RlbFBsYXllclByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EdW1t
eVNwZWVjaFJlY29nbml0aW9uUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0R1bW15U3Rv
cmFnZVByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTMwNjUsNyAr
MzA2Niw4IEBAIEhSRVNVTFQgV2ViVmlldzo6aW5pdFdpdGhGcmFtZShSRUNUIGZyYW0KICAgICAg
ICAgbWFrZVVuaXF1ZVJlZjxNZWRpYVJlY29yZGVyUHJvdmlkZXI+KCksCiAgICAgICAgIFdlYkJy
b2FkY2FzdENoYW5uZWxSZWdpc3RyeTo6Z2V0T3JDcmVhdGUoZmFsc2UpLAogICAgICAgICBXZWJD
b3JlOjpEdW1teVBlcm1pc3Npb25Db250cm9sbGVyOjpjcmVhdGUoKSwKLSAgICAgICAgbWFrZVVu
aXF1ZVJlZjxXZWJDb3JlOjpEdW1teVN0b3JhZ2VQcm92aWRlcj4oKQorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15U3RvcmFnZVByb3ZpZGVyPigpLAorICAgICAgICBtYWtlVW5p
cXVlUmVmPFdlYkNvcmU6OkR1bW15TW9kZWxQbGF5ZXJQcm92aWRlcj4oKQogICAgICk7CiAgICAg
Y29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwog
I2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg1NjMzKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MjEtMTEtMTAgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIEZhY3Rv
ciBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIG91dCBvZiBIVE1MTW9kZWxFbGVtZW50CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI4NDgKKworICAgICAg
ICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFNraXAgbW9kZWwgdGVzdHMgZm9yIFdlYktpdExl
Z2FjeSBhcyBpdCBpcyBub3Qgc3VwcG9ydGVkIHRoZXJlIGN1cnJlbnRseS4KKwogMjAyMS0xMS0x
MSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgW0NTUyBDYXNj
YWRlIExheWVyc10gU3VwcG9ydCAncmV2ZXJ0LWxheWVyJyB2YWx1ZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjg1NjMz
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy0KIGNzcy1jdXN0b20tcHJvcGVydGllcy1hcGkgWyBTa2lwIF0KIGNzcy10eXBl
ZG9tIFsgU2tpcCBdCiBjc3MtZGFyay1tb2RlIFsgU2tpcCBdCittb2RlbC1lbGVtZW50IFsgU2tp
cCBdCiAKICMgTWVkaWEgU3RyZWFtIEFQSSB0ZXN0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFdL
MSB5ZXQuCiBmYXN0L21lZGlhc3RyZWFtCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>