<?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>223564</bug_id>
          
          <creation_ts>2021-03-21 14:14:13 -0700</creation_ts>
          <short_desc>[GPUP] RemoteAudioSession calls into AVAudioSession when GPUP is enabled, causing hangs</short_desc>
          <delta_ts>2021-05-18 13:59:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          <dependson>217535</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jonlee</cc>
    
    <cc>peng.liu6</cc>
    
    <cc>philipj</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>1742094</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-21 14:14:13 -0700</bug_when>
    <thetext>[GPUP] RemoteAudioSession calls into AVAudioSession when GPUP is enabled, causing hangs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742095</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-21 14:14:35 -0700</bug_when>
    <thetext>&lt;rdar://74750291&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742096</commentid>
    <comment_count>2</comment_count>
      <attachid>423835</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-21 14:20:17 -0700</bug_when>
    <thetext>Created attachment 423835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742119</commentid>
    <comment_count>3</comment_count>
      <attachid>423835</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2021-03-21 20:07:26 -0700</bug_when>
    <thetext>Comment on attachment 423835
Patch

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

&gt; Source/WebCore/platform/audio/ios/AudioSessionIOS.mm:102
&gt; -    m_interruptionObserverHelper = adoptNS([[WebInterruptionObserverHelper alloc] initWithCallback:session]);
&gt; +    m_interruptionObserverHelper = [[WebInterruptionObserverHelper alloc] initWithCallback:this];

Did you mean to drop the `adoptNS`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742274</commentid>
    <comment_count>4</comment_count>
      <attachid>423903</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-22 10:08:09 -0700</bug_when>
    <thetext>Created attachment 423903
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1742974</commentid>
    <comment_count>5</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-03-23 13:23:53 -0700</bug_when>
    <thetext>The test failures indicate this patch depends on bug #217535.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1759782</commentid>
    <comment_count>6</comment_count>
      <attachid>428545</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-13 12:35:00 -0700</bug_when>
    <thetext>Created attachment 428545
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1760939</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-17 16:24:09 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 428545 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761166</commentid>
    <comment_count>8</comment_count>
      <attachid>428943</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-18 08:55:08 -0700</bug_when>
    <thetext>Created attachment 428943
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761181</commentid>
    <comment_count>9</comment_count>
      <attachid>428945</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-18 09:18:10 -0700</bug_when>
    <thetext>Created attachment 428945
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761184</commentid>
    <comment_count>10</comment_count>
      <attachid>428947</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-05-18 09:31:33 -0700</bug_when>
    <thetext>Created attachment 428947
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761297</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-18 13:59:43 -0700</bug_when>
    <thetext>Committed r277676 (237877@main): &lt;https://commits.webkit.org/237877@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 428947.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423835</attachid>
            <date>2021-03-21 14:20:17 -0700</date>
            <delta_ts>2021-03-22 05:56:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-223564-20210321142016.patch</filename>
            <type>text/plain</type>
            <size>43730</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIwZmU5YjYzMWUxMDRj
MGVlYmJjNGE4ZTkxZGEwNTljYWQzY2U3ZS4uOWIxMWUwMDcwOTU0NTllNWIzZTA5YzBlNDAzN2E3
OTVkMmYzZDY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vdyB0aGF0IEF1ZGlvU2Vzc2lvbiBj
YW4gaGF2ZSB0d28gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhdCBydW50aW1lLCBpdCBzaG91
bGQgYmUgYW4KKyAgICAgICAgYWN0dWFsIHZpcnR1YWwgY2xhc3MsIHdob3NlIGNvbmNyZXRlLCBw
ZXItcGxhdGZvcm0gaW1wbGVtZW50YXRpb25zIGFyZSBkZXJpdmF0aW9ucyBvZiB0aGUKKyAgICAg
ICAgYmFzZSBjbGFzcy4gTWFrZSBBdWRpb1Nlc3Npb25JT1MgYW5kIEF1ZGlvU2Vzc2lvbk1hYyB0
cnVlIHN1YmNsYXNzZXMgb2YgQXVkaW9TZXNzaW9uLCBhbmQKKyAgICAgICAgYWxsb3cgUmVtb3Rl
QXVkaW9TZXNzaW9uIHRvIGRlcml2ZSBmcm9tIHRoYXQgc2FtZSBiYXNlIGNsYXNzIChyYXRoZXIg
dGhhbiBBdWRpb1Nlc3Npb25JT1MKKyAgICAgICAgb3IgQXVkaW9TZXNzaW9uTWFjKS4KKworICAg
ICAgICBBbHNvIGVuc3VyZSBBdWRpb1Nlc3Npb25JT1Mgb3IgQXVkaW9TZXNzaW9uTWFjIGlzIG5v
dCBhY2NpZGVudGFsbHkgY3JlYXRlZCB3aGVuIGNhbGxpbmcKKyAgICAgICAgQXVkaW9TZXNzaW9u
OjpzZXRTaGFyZWRTZXNzaW9uKCkgYnkgbWFraW5nIHRoZSBOZXZlckRlc3Ryb3llZCBvYmplY3Qg
aG9sZGluZyB0aGUgc2Vzc2lvbgorICAgICAgICBhbiBPcHRpb25hbCwgYW5kIG9ubHkgbGF6aWx5
IGNyZWF0aW5nIHRoZSBzZXNzaW9uIGZyb20gQXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKCkg
aWYKKyAgICAgICAgb25lIGhhcyBub3QgYmVlbiBleHBsaWNpdGx5IHNldCBhbHJlYWR5LgorCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnNoYXJlZEF1ZGlvU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNoYXJlZFNlc3Npb24p
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9i
c2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92
ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmg6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25JT1M6OkF1ZGlvU2Vzc2lvbklPUyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25JT1M6On5BdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OmNhdGVnb3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bklPUzo6cm91dGVTaGFyaW5nUG9saWN5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6cm91dGluZ0NvbnRleHRVSUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjpzZXRDYXRlZ29yeU92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6Y2F0ZWdvcnlPdmVycmlkZSBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25JT1M6OnNhbXBsZVJhdGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpidWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxz
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6dHJ5VG9TZXRBY3Rp
dmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnByZWZlcnJl
ZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpz
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklP
Uzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6Omhh
bmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9T
OjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b25JT1M6OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6YmVnaW5JbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uSU9TOjplbmRJbnRlcnJ1cHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25Qcml2YXRlOjp+QXVkaW9TZXNzaW9uUHJpdmF0ZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246On5BdWRpb1Nlc3Npb24pOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6cm91dGVTaGFyaW5nUG9saWN5
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6cm91dGlu
Z0NvbnRleHRVSUQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uOjpzZXRDYXRlZ29yeU92ZXJyaWRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpidWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om1heGltdW1OdW1i
ZXJPZk91dHB1dENoYW5uZWxzIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVk
U3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjph
ZGRJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaDogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YWRkU2FtcGxlUmF0ZU9ic2VydmVySWZOZWVkZWQg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpoYW5kbGVTYW1wbGVS
YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YWRkQnVmZmVy
U2l6ZU9ic2VydmVySWZOZWVkZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uTWFjOjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbk1hYzo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5KToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJhdGUgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpidWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5u
ZWxzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6dHJ5VG9TZXRB
Y3RpdmVJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnJvdXRl
U2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6
OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6cHJlZmVycmVkQnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjppc011dGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbk1hYzo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OmFkZE11dGVkU3RhdGVPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6OnJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcik6CisgICAgICAgICgp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkU2Ft
cGxlUmF0ZU9ic2VydmVySWZOZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uUHJpdmF0ZTo6aGFuZGxlU2FtcGxlUmF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRCdWZmZXJTaXplT2JzZXJ2ZXJJ
Zk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25Qcml2YXRl
OjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjphdWRpb091dHB1dERldmljZUNoYW5nZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRl
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeU92ZXJy
aWRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OnNhbXBsZVJhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpidWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxz
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6dHJ5VG9T
ZXRBY3RpdmVJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZl
clNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjppc011dGVk
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aGFuZGxl
TXV0ZWRTdGF0ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Np
b246OmFkZE11dGVkU3RhdGVPYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb246OnJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcik6IERlbGV0ZWQuCisKIDIwMjEt
MDMtMTYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFueSBt
ZWRpYS9tZWRpYS1mcmFnbWVudHMvIHRlc3RzIGFyZSBjcmFzaGluZyBkdWUgdG8gb3RoZXIgdGVz
dHMgdGhhdCBydW4gYmVmb3JlIHRoZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vQXVkaW9TZXNzaW9uLmNwcAppbmRleCBkMjBkMGM0MTY1ZmVmNWZhNWFmZmJmNjlhYTE1ZmY3
ZDJkNjk1OTk3Li4zMGJlOWU0OTMzZjk2ZDAxNmZiNDczMTM2YjYwZTRlZjc0NTZlZDAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKQEAgLTMx
LDIyICszMSw0MSBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiQXVkaW9T
ZXNzaW9uTWFjLmgiCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW5jbHVk
ZSAiQXVkaW9TZXNzaW9uSU9TLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4mIHNoYXJlZEF1ZGlvU2Vzc2lvbigpCitzdGF0
aWMgT3B0aW9uYWw8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4+JiBzaGFyZWRBdWRpb1Nlc3Npb24o
KQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4g
c2Vzc2lvbiA9IEF1ZGlvU2Vzc2lvbjo6Y3JlYXRlKCk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+Pj4gc2Vzc2lvbjsKICAgICByZXR1
cm4gc2Vzc2lvbi5nZXQoKTsKIH0KIAogVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4gQXVkaW9TZXNz
aW9uOjpjcmVhdGUoKQogeworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gbWFrZVVuaXF1
ZVJlZjxBdWRpb1Nlc3Npb25NYWM+KCk7CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbklPUz4oKTsKKyNlbHNlCiAgICAgcmV0
dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPigpOworI2VuZGlmCiB9CiAKK0F1ZGlvU2Vz
c2lvbjo6QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0OworQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNz
aW9uKCkgPSBkZWZhdWx0OworCiBBdWRpb1Nlc3Npb24mIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vz
c2lvbigpCiB7Ci0gICAgcmV0dXJuIHNoYXJlZEF1ZGlvU2Vzc2lvbigpOworICAgIGlmICghc2hh
cmVkQXVkaW9TZXNzaW9uKCkpCisgICAgICAgIHNoYXJlZEF1ZGlvU2Vzc2lvbigpID0gQXVkaW9T
ZXNzaW9uOjpjcmVhdGUoKTsKKyAgICByZXR1cm4gKnNoYXJlZEF1ZGlvU2Vzc2lvbigpOwogfQog
CiB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0U2hhcmVkU2Vzc2lvbihVbmlxdWVSZWY8QXVkaW9TZXNz
aW9uPiYmIHNlc3Npb24pCkBAIC02MywzNyArODIsMjYgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRy
eVRvU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWYgIVBM
QVRGT1JNKElPU19GQU1JTFkpCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKIHZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1
cHRpb25PYnNlcnZlciYpCiB7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBBdWRp
b1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCkKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKE1heVJlc3VtZSkKLXsKLX0K
LSNlbmRpZgotCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci19OwotCi1BdWRpb1Nlc3Npb246OkF1
ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUobnVsbHB0cikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi1BdWRpb1Nlc3Npb246On5BdWRpb1Nlc3Npb24oKSA9IGRlZmF1bHQ7Ci0K
IHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUsIFJvdXRlU2hhcmlu
Z1BvbGljeSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTY3LDkgKzE3NSw2IEBAIFN0
cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIH0KIAotI2VuZGlmIC8vICFQTEFURk9STShDT0NPQSkKLQotI2lmICFQ
TEFURk9STShNQUMpCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2Vk
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtMTc5LDggKzE4NCw2IEBAIHZvaWQgQXVk
aW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9Ci0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09B
KQotCiAKIFN0cmluZyBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhSb3V0ZVNoYXJpbmdQb2xp
Y3kgZW51bWVyYXRpb25WYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
QXVkaW9TZXNzaW9uLmgKaW5kZXggYTI1MTI5YWJjMDMzZDFmMzVjOWZhZTYxY2E2ODBlNTA3OWE3
MzhmYy4uZWZhOTlkMWE1NWE1N2M0ZTM1ZTk2YzM1MWNiZWI0YjhiOWRhNDI5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmgKQEAgLTM4LDggKzM4LDYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlOwot
CiBlbnVtIGNsYXNzIFJvdXRlU2hhcmluZ1BvbGljeSA6IHVpbnQ4X3QgewogICAgIERlZmF1bHQs
CiAgICAgTG9uZ0Zvcm1BdWRpbywKQEAgLTcyLDggKzcwLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUsIFJvdXRlU2hhcmluZ1BvbGljeSk7CiAg
ICAgdmlydHVhbCBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0
Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUpOwotICAgIENhdGVnb3J5VHlwZSBjYXRlZ29y
eU92ZXJyaWRlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUo
Q2F0ZWdvcnlUeXBlKTsKKyAgICB2aXJ0dWFsIENhdGVnb3J5VHlwZSBjYXRlZ29yeU92ZXJyaWRl
KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFJvdXRlU2hhcmluZ1BvbGljeSByb3V0ZVNoYXJpbmdQ
b2xpY3koKSBjb25zdDsKICAgICB2aXJ0dWFsIFN0cmluZyByb3V0aW5nQ29udGV4dFVJRCgpIGNv
bnN0OwpAQCAtOTUsMTggKzkzLDE4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGhh
cmR3YXJlTXV0ZWRTdGF0ZURpZENoYW5nZShBdWRpb1Nlc3Npb24qKSA9IDA7CiAgICAgfTsKIAot
ICAgIHZvaWQgYWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopOwotICAg
IHZvaWQgcmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopOworICAg
IHZpcnR1YWwgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKikg
eyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRl
T2JzZXJ2ZXIqKSB7IH0KIAotICAgIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCk7Ci0g
ICAgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pOwog
Ci0gICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc011dGVkKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlTXV0ZWRTdGF0ZUNoYW5n
ZSgpIHsgfQogCi0gICAgdm9pZCBiZWdpbkludGVycnVwdGlvbigpOworICAgIHZpcnR1YWwgdm9p
ZCBiZWdpbkludGVycnVwdGlvbigpOwogICAgIGVudW0gY2xhc3MgTWF5UmVzdW1lIHsgTm8sIFll
cyB9OwotICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1heVJlc3VtZSk7CisgICAgdmlydHVhbCB2
b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpOwogCiAgICAgY2xhc3MgSW50ZXJydXB0aW9u
T2JzZXJ2ZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8SW50ZXJydXB0aW9uT2JzZXJ2ZXI+IHsK
ICAgICBwdWJsaWM6CkBAIC0xMTUsMTIgKzExMywxMiBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbigpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihNYXlSZXN1bWUpID0gMDsKICAg
ICB9OwotICAgIHZvaWQgYWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2
ZXImKTsKLSAgICB2b2lkIHJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7CisgICAgdmlydHVhbCB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVy
cnVwdGlvbk9ic2VydmVyJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUludGVycnVwdGlvbk9i
c2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJik7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZTsgfQogCi0gICAgdm9pZCBzZXRSb3V0aW5nQXJi
aXRyYXRpb25DbGllbnQoV2Vha1B0cjxBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGll
bnQ+JiYgY2xpZW50KSB7IG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50ID0gY2xpZW50OyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNldFJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudChXZWFrUHRyPEF1ZGlv
U2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudD4mJiBjbGllbnQpIHsgbV9yb3V0aW5nQXJi
aXRyYXRpb25DbGllbnQgPSBjbGllbnQ7IH0KIAogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFz
cyBOZXZlckRlc3Ryb3llZDxBdWRpb1Nlc3Npb24+OwpAQCAtMTI4LDcgKzEyNiw2IEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZpcnR1YWwgYm9vbCB0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wpOwog
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvU2Vzc2lvblByaXZhdGU+IG1fcHJpdmF0ZTsKICAg
ICBIYXNoU2V0PE11dGVkU3RhdGVPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgV2Vha0hhc2hTZXQ8SW50ZXJydXB0aW9uT2JzZXJ2ZXI+IG1faW50
ZXJydXB0aW9uT2JzZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4OTk1OTIwY2YzZTY1ZTg3MmZi
YjUwMTdkZjIwMzUxYmU5NTI4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmgKQEAgLTAsMCArMSw3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKworT0JKQ19DTEFT
UyBXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKKworbmFtZXNwYWNlIFdURiB7CitjbGFz
cyBXb3JrUXVldWU7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TZXNz
aW9uSU9TIGZpbmFsIDogcHVibGljIEF1ZGlvU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQXVkaW9T
ZXNzaW9uSU9TKCk7CisgICAgdmlydHVhbCB+QXVkaW9TZXNzaW9uSU9TKCk7CisKK3ByaXZhdGU6
CisgICAgLy8gQXVkaW9TZXNzaW9uCisgICAgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Qg
ZmluYWw7CisgICAgdm9pZCBzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUsIFJvdXRlU2hhcmluZ1Bv
bGljeSkgZmluYWw7CisgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnlPdmVy
cmlkZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29y
eVR5cGUpIGZpbmFsOworICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBz
aXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBudW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IG1heGltdW1OdW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3QgZmluYWw7CisgICAgYm9vbCB0cnlUb1NldEFjdGl2ZUludGVybmFs
KGJvb2wpIGZpbmFsOworICAgIFJvdXRlU2hhcmluZ1BvbGljeSByb3V0ZVNoYXJpbmdQb2xpY3ko
KSBjb25zdCBmaW5hbDsKKyAgICBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQoKSBjb25zdCBmaW5h
bDsKKyAgICBzaXplX3QgcHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QpIGZpbmFsOworICAgIGJvb2wgaXNNdXRl
ZCgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgaGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpIGZpbmFs
OworICAgIHZvaWQgYWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXIm
KSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlv
bk9ic2VydmVyJikgZmluYWw7CisgICAgdm9pZCBiZWdpbkludGVycnVwdGlvbigpIGZpbmFsOwor
ICAgIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1heVJlc3VtZSkgZmluYWw7CisKKyAgICBBdWRpb1Nl
c3Npb25JT1M6OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGUgeyBBdWRpb1Nlc3Npb246
Ok5vbmUgfTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1fd29ya1F1ZXVlOworICAgIFJl
dGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4gbV9pbnRlcnJ1cHRpb25PYnNl
cnZlckhlbHBlcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRleCA2OWQxZmE2NjUzOGIx
NTg4YWFkNDQ1Y2E0MWVkYTUyNTZmMGE2Zjc1Li5lYmQxMjdkZjU1ZTNkNzBlMzFjYTU1NGZmNmE4
MGQ4YTM0OTZlZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9p
b3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0
ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgorI2ltcG9ydCAiQXVkaW9TZXNz
aW9uSU9TLmgiCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIApAQCAtOTYsNDAgKzk2LDE5IEBAIEBlbmQKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LXB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiop
OwotICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7Ci0KLSAgICBBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdvcmtRdWV1ZT4gbV93b3Jr
UXVldWU7Ci0gICAgUmV0YWluUHRyPFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyPiBtX2lu
dGVycnVwdGlvbk9ic2VydmVySGVscGVyOwotfTsKLQotQXVkaW9TZXNzaW9uUHJpdmF0ZTo6QXVk
aW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qIHNlc3Npb24pCi0gICAgOiBtX2NhdGVnb3J5
T3ZlcnJpZGUoQXVkaW9TZXNzaW9uOjpOb25lKQorQXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Np
b25JT1MoKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwotICAgIG1faW50ZXJy
dXB0aW9uT2JzZXJ2ZXJIZWxwZXIgPSBhZG9wdE5TKFtbV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJI
ZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6c2Vzc2lvbl0pOworICAgIG1faW50ZXJydXB0
aW9uT2JzZXJ2ZXJIZWxwZXIgPSBbW1dlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGFsbG9j
XSBpbml0V2l0aENhbGxiYWNrOnRoaXNdOwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMK
IH0KIAotQXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUoKQorQXVkaW9T
ZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKCkKIHsKICAgICBbbV9pbnRlcnJ1cHRpb25PYnNl
cnZlckhlbHBlciBjbGVhckNhbGxiYWNrXTsKIH0KIAotQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Np
b24oKQotICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhp
cykpCi17Ci19Ci0KLUF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpCi17Ci19Ci0KLXZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRl
U2hhcmluZ1BvbGljeSBwb2xpY3kpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnko
Q2F0ZWdvcnlUeXBlIG5ld0NhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saWN5KQogewog
I2lmICFIQVZFKFJPVVRFX1NIQVJJTkdfUE9MSUNZX0xPTkdfRk9STV9WSURFTykKICAgICBpZiAo
cG9saWN5ID09IFJvdXRlU2hhcmluZ1BvbGljeTo6TG9uZ0Zvcm1WaWRlbykKQEAgLTE4MCw3ICsx
NTksNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIG5ld0Nh
dGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9saQogI2VuZGlmCiB9CiAKLUF1ZGlvU2Vzc2lv
bjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnkoKSBjb25zdAorQXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uSU9TOjpjYXRlZ29yeSgpIGNvbnN0CiB7CiAg
ICAgTlNTdHJpbmcgKmNhdGVnb3J5U3RyaW5nID0gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xh
c3MoKSBzaGFyZWRJbnN0YW5jZV0gY2F0ZWdvcnldOwogICAgIGlmIChbY2F0ZWdvcnlTdHJpbmcg
aXNFcXVhbDpBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5QW1iaWVudF0pCkBAIC0xOTgsNyArMTc3LDcg
QEAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNv
bnN0CiAgICAgcmV0dXJuIE5vbmU7CiB9CiAKLVJvdXRlU2hhcmluZ1BvbGljeSBBdWRpb1Nlc3Np
b246OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CitSb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9T
ZXNzaW9uSU9TOjpyb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAogewogICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8c2l6ZV90PihSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQpID09IHN0
YXRpY19jYXN0PHNpemVfdD4oQVZBdWRpb1Nlc3Npb25Sb3V0ZVNoYXJpbmdQb2xpY3lEZWZhdWx0
KSwgIlJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCBpcyBub3QgQVZBdWRpb1Nlc3Npb25Sb3V0
ZVNoYXJpbmdQb2xpY3lEZWZhdWx0IGFzIGV4cGVjdGVkIik7CiAjaWYgSEFWRShST1VURV9TSEFS
SU5HX1BPTElDWV9MT05HX0ZPUk1fVklERU8pCkBAIC0yMTYsNyArMTk1LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJvdXRlU2hh
cmluZ1BvbGljeT4ocG9saWN5KTsKIH0KIAotU3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGluZ0Nv
bnRleHRVSUQoKSBjb25zdAorU3RyaW5nIEF1ZGlvU2Vzc2lvbklPUzo6cm91dGluZ0NvbnRleHRV
SUQoKSBjb25zdAogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikgJiYgIVBM
QVRGT1JNKE1BQ0NBVEFMWVNUKSAmJiAhUExBVEZPUk0oV0FUQ0hPUykKICAgICByZXR1cm4gW1tQ
QUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gcm91dGluZ0NvbnRl
eHRVSURdOwpAQCAtMjI1LDUxICsyMDQsNTEgQEAgU3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGlu
Z0NvbnRleHRVSUQoKSBjb25zdAogI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRD
YXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSBjYXRlZ29yeSkKK3ZvaWQgQXVkaW9TZXNzaW9u
SU9TOjpzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSBjYXRlZ29yeSkKIHsKLSAgICBp
ZiAobV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCisgICAgaWYgKG1f
Y2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGUgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5T3Zl
cnJpZGUgPSBjYXRlZ29yeTsKICAgICBzZXRDYXRlZ29yeShjYXRlZ29yeSwgUm91dGVTaGFyaW5n
UG9saWN5OjpEZWZhdWx0KTsKIH0KIAotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9T
ZXNzaW9uOjpjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QKK0F1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlU
eXBlIEF1ZGlvU2Vzc2lvbklPUzo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlOworICAgIHJldHVybiBtX2NhdGVnb3J5
T3ZlcnJpZGU7CiB9CiAKLWZsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0Citm
bG9hdCBBdWRpb1Nlc3Npb25JT1M6OnNhbXBsZVJhdGUoKSBjb25zdAogewogICAgIHJldHVybiBb
W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBzYW1wbGVSYXRl
XTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSgpIGNvbnN0CitzaXplX3Qg
QXVkaW9TZXNzaW9uSU9TOjpidWZmZXJTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gSU9CdWZmZXJEdXJhdGlv
bl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbklPUzo6bnVtYmVyT2ZPdXRw
dXRDaGFubmVscygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lv
bkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIG91dHB1dE51bWJlck9mQ2hhbm5lbHNdOwogfQogCi1z
aXplX3QgQXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0
CitzaXplX3QgQXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hh
cmVkSW5zdGFuY2VdIG1heGltdW1PdXRwdXROdW1iZXJPZkNoYW5uZWxzXTsKIH0KIAotYm9vbCBB
dWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCitib29sIEF1
ZGlvU2Vzc2lvbklPUzo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sIGFjdGl2ZSkKIHsKLSAg
ICBpZiAoIW1fcHJpdmF0ZS0+bV93b3JrUXVldWUpCi0gICAgICAgIG1fcHJpdmF0ZS0+bV93b3Jr
UXVldWUgPSBXb3JrUXVldWU6OmNyZWF0ZSgiQXVkaW9TZXNzaW9uIEFjdGl2YXRpb24gUXVldWUi
KTsKKyAgICBpZiAoIW1fd29ya1F1ZXVlKQorICAgICAgICBtX3dvcmtRdWV1ZSA9IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJBdWRpb1Nlc3Npb24gQWN0aXZhdGlvbiBRdWV1ZSIpOwogCiAgICAgLy8gV2Ug
bmVlZCB0byBkZWFjdGl2YXRlIHRoZSBzZXNzaW9uIG9uIGFub3RoZXIgcXVldWUgYmVjYXVzZSB0
aGUgQVZBdWRpb1Nlc3Npb25TZXRBY3RpdmVPcHRpb25Ob3RpZnlPdGhlcnNPbkRlYWN0aXZhdGlv
biBvcHRpb24KICAgICAvLyBtZWFucyB0aGF0IEFWQXVkaW9TZXNzaW9uIG1heSBzeW5jaHJvbm91
c2x5IHVuZHVjayBwcmV2aW91c2x5IGR1Y2tlZCBjbGllbnRzLiBBY3RpdmF0aW9uIG5lZWRzIHRv
IGNvbXBsZXRlIGJlZm9yZSB0aGlzIG1ldGhvZAogICAgIC8vIHJldHVybnMsIHNvIGRvIGl0IHN5
bmNocm9ub3VzbHkgb24gdGhlIHNhbWUgc2VyaWFsIHF1ZXVlLgogICAgIGlmIChhY3RpdmUpIHsK
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIG1fcHJpdmF0ZS0+bV93b3Jr
UXVldWUtPmRpc3BhdGNoU3luYyhbJnN1Y2Nlc3NdIHsKKyAgICAgICAgbV93b3JrUXVldWUtPmRp
c3BhdGNoU3luYyhbJnN1Y2Nlc3NdIHsKICAgICAgICAgICAgIE5TRXJyb3IgKmVycm9yID0gbmls
OwogICAgICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0
YW5jZV0gc2V0QWN0aXZlOllFUyB3aXRoT3B0aW9uczowIGVycm9yOiZlcnJvcl07CiAgICAgICAg
ICAgICBzdWNjZXNzID0gIWVycm9yOwpAQCAtMjc3LDcgKzI1Niw3IEBAIGJvb2wgQXVkaW9TZXNz
aW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQogICAgICAgICByZXR1cm4g
c3VjY2VzczsKICAgICB9CiAKLSAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVlLT5kaXNwYXRjaChb
XSB7CisgICAgbV93b3JrUXVldWUtPmRpc3BhdGNoKFtdIHsKICAgICAgICAgTlNFcnJvciAqZXJy
b3IgPSBuaWw7CiAgICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVk
SW5zdGFuY2VdIHNldEFjdGl2ZTpOTyB3aXRoT3B0aW9uczowIGVycm9yOiZlcnJvcl07CiAgICAg
fSk7CkBAIC0yODUsMTIgKzI2NCwxMiBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3Rp
dmVJbnRlcm5hbChib29sIGFjdGl2ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc2l6ZV90IEF1
ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNz
aW9uSU9TOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gcHJlZmVycmVkSU9CdWZm
ZXJEdXJhdGlvbl0gKiBzYW1wbGVSYXRlKCk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQ
cmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQordm9pZCBBdWRpb1Nlc3Npb25J
T1M6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiB7CiAgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7CiAgICAgZmxvYXQgZHVyYXRpb24gPSBidWZmZXJTaXplIC8gc2Ft
cGxlUmF0ZSgpOwpAQCAtMjk4LDMyICsyNzcsMzIgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgQVNTRVJUKCFlcnJvcik7
CiB9CiAKLWJvb2wgQXVkaW9TZXNzaW9uOjppc011dGVkKCkgY29uc3QKK2Jvb2wgQXVkaW9TZXNz
aW9uSU9TOjppc011dGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQg
QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKK3ZvaWQgQXVkaW9TZXNzaW9u
SU9TOjpoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKIHsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246
OmFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikK
K3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjphZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMuYWRk
KG9ic2VydmVyKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9i
c2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKK3ZvaWQgQXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2Jz
ZXJ2ZXIpCiB7CiAgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMucmVtb3ZlKG9ic2VydmVyKTsK
IH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKCkKK3ZvaWQgQXVkaW9T
ZXNzaW9uSU9TOjpiZWdpbkludGVycnVwdGlvbigpCiB7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5iZWdpbkF1ZGlv
U2Vzc2lvbkludGVycnVwdGlvbigpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJy
dXB0aW9uKE1heVJlc3VtZSBtYXlSZXN1bWUpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6ZW5kSW50
ZXJydXB0aW9uKE1heVJlc3VtZSBtYXlSZXN1bWUpCiB7CiAgICAgZm9yIChhdXRvJiBvYnNlcnZl
ciA6IG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci5lbmRBdWRpb1Nl
c3Npb25JbnRlcnJ1cHRpb24obWF5UmVzdW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmViY2JkZmE0
MTZhNDMyNmYwYWIzZjI0ZjMzZjE2ZGYxNGExZGJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oCkBAIC0wLDAgKzEs
ODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVURJT19TRVNTSU9O
KSAmJiBQTEFURk9STShNQUMpCisKKyNpbmNsdWRlICJBdWRpb1Nlc3Npb24uaCIKKwordHlwZWRl
ZiBVSW50MzIgQXVkaW9PYmplY3RJRDsKK3R5cGVkZWYgc3RydWN0IEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEF1ZGlvU2Vzc2lvbk1hYyBmaW5hbCA6IHB1YmxpYyBBdWRpb1Nlc3Npb24g
eworcHVibGljOgorICAgIEF1ZGlvU2Vzc2lvbk1hYygpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFs
IH5BdWRpb1Nlc3Npb25NYWMoKSA9IGRlZmF1bHQ7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhZGRT
YW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0OworICAgIHZvaWQgYWRkQnVmZmVyU2l6
ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdDsKKworICAgIHN0YXRpYyBPU1N0YXR1cyBoYW5kbGVT
YW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQ
cm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiBpbkNsaWVudERhdGEpOworICAgIHN0YXRpYyBPU1N0YXR1
cyBoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVk
aW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiBpbkNsaWVudERhdGEpOworCisgICAgLy8g
QXVkaW9TZXNzaW9uCisgICAgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9jYXRlZ29yeTsgfQorICAgIHZvaWQgYXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkg
ZmluYWw7CisgICAgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFs
PGJvb2w+KSBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVT
aGFyaW5nUG9saWN5KSBmaW5hbDsKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRl
Z29yeU92ZXJyaWRlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9jYXRlZ29yeU92ZXJyaWRlOyB9
CisgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSkgZmluYWw7CisgICAg
ZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBidWZmZXJTaXplKCkg
Y29uc3QgZmluYWw7CisgICAgc2l6ZV90IG51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdCBm
aW5hbDsKKyAgICBzaXplX3QgbWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdCBm
aW5hbDsKKyAgICBib29sIHRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCkgZmluYWw7CisgICAg
Um91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0IGZpbmFsOworICAg
IFN0cmluZyByb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBwcmVm
ZXJyZWRCdWZmZXJTaXplKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBpc011dGVkKCkgY29uc3QgZmluYWw7Cisg
ICAgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCBhZGRNdXRl
ZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKikgZmluYWw7CisgICAgdm9pZCByZW1v
dmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKikgZmluYWw7CisKKyAgICBP
cHRpb25hbDxib29sPiBtX2xhc3RNdXRlZFN0YXRlOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIG1fY2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246Ok5vbmUgfTsKKyNpZiBFTkFCTEUoUk9V
VElOR19BUkJJVFJBVElPTikKKyAgICBib29sIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgeyBm
YWxzZSB9OworICAgIE9wdGlvbmFsPGJvb2w+IG1fcGxheWluZ1RvQmx1ZXRvb3RoOworICAgIE9w
dGlvbmFsPGJvb2w+IG1fcGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGU7CisjZW5kaWYKKyAgICBB
dWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7CisgICAgYm9vbCBt
X2luUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNT
YW1wbGVSYXRlT2JzZXJ2ZXIgeyBmYWxzZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc0J1ZmZl
clNpemVPYnNlcnZlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBPcHRpb25hbDxkb3VibGU+IG1f
c2FtcGxlUmF0ZTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPHNpemVfdD4gbV9idWZmZXJTaXplOwor
fTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCmluZGV4IDdhYTI2OWFiYmIwY2ZjMTE0MTZjNzJjMWQz
MzI1YWU2YmM5NjRhMmEuLmQyMjIxZGZkNzY1NWU5MTM3YjU5OTM2MzJhZWEwM2M2MDg3MWM3OWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5tbQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgot
I2ltcG9ydCAiQXVkaW9TZXNzaW9uLmgiCisjaW1wb3J0ICJBdWRpb1Nlc3Npb25NYWMuaCIKIAog
I2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShNQUMpCiAKQEAgLTc3LDQ5ICs3Nywy
MyBAQCBzdGF0aWMgZmxvYXQgZGVmYXVsdERldmljZVRyYW5zcG9ydElzQmx1ZXRvb3RoKCkKIH0K
ICNlbmRpZgogCi1jbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRlKCkg
PSBkZWZhdWx0OwotCi0gICAgdm9pZCBhZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpOwot
ICAgIHZvaWQgYWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKTsKLQotICAgIHN0YXRpYyBP
U1N0YXR1cyBoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQsIFVJbnQzMiwgY29u
c3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiBpbkNsaWVudERhdGEpOwotICAg
IHN0YXRpYyBPU1N0YXR1cyBoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQsIFVJ
bnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqLCB2b2lkKiBpbkNsaWVudERh
dGEpOwotCi0gICAgT3B0aW9uYWw8Ym9vbD4gbGFzdE11dGVkU3RhdGU7Ci0gICAgQXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnkgeyBBdWRpb1Nlc3Npb246Ok5vbmUgfTsKLSNpZiBF
TkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKLSAgICBib29sIHNldHVwQXJiaXRyYXRpb25Pbmdv
aW5nIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBwbGF5aW5nVG9CbHVldG9vdGg7Ci0g
ICAgT3B0aW9uYWw8Ym9vbD4gcGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGU7Ci0jZW5kaWYKLSAg
ICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgYm9v
bCBpblJvdXRpbmdBcmJpdHJhdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNTYW1wbGVSYXRl
T2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgaGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsgZmFs
c2UgfTsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNhbXBsZVJhdGU7Ci0gICAgT3B0aW9uYWw8c2l6
ZV90PiBidWZmZXJTaXplOwotfTsKLQotdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRTYW1w
bGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkU2FtcGxl
UmF0ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdAogewotICAgIGlmIChoYXNTYW1wbGVSYXRlT2Jz
ZXJ2ZXIpCisgICAgaWYgKG1faGFzU2FtcGxlUmF0ZU9ic2VydmVyKQogICAgICAgICByZXR1cm47
Ci0gICAgaGFzU2FtcGxlUmF0ZU9ic2VydmVyID0gdHJ1ZTsKKyAgICBtX2hhc1NhbXBsZVJhdGVP
YnNlcnZlciA9IHRydWU7CiAKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBub21pbmFs
U2FtcGxlUmF0ZUFkZHJlc3MgPSB7IGtBdWRpb0RldmljZVByb3BlcnR5Tm9taW5hbFNhbXBsZVJh
dGUsIGtBdWRpb09iamVjdFByb3BlcnR5U2NvcGVHbG9iYWwsIGtBdWRpb09iamVjdFByb3BlcnR5
RWxlbWVudE1hc3RlciB9OwotICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZh
dWx0RGV2aWNlKCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIGhhbmRsZVNhbXBsZVJhdGVD
aGFuZ2UsIHRoaXMpOworICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZhdWx0
RGV2aWNlKCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIGhhbmRsZVNhbXBsZVJhdGVDaGFu
Z2UsIGNvbnN0X2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4odGhpcykpOwogfQogCi1PU1N0YXR1cyBB
dWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQg
ZGV2aWNlLCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiBzYW1wbGVS
YXRlQWRkcmVzcywgdm9pZCogaW5DbGllbnREYXRhKQorT1NTdGF0dXMgQXVkaW9TZXNzaW9uTWFj
OjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBVSW50MzIsIGNv
bnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiBzYW1wbGVSYXRlQWRkcmVzcywgdm9pZCog
aW5DbGllbnREYXRhKQogewogICAgIEFTU0VSVChpbkNsaWVudERhdGEpOwogICAgIGlmICghaW5D
bGllbnREYXRhKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKLSAgICBhdXRvKiBzZXNzaW9uUHJp
dmF0ZSA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvblByaXZhdGUqPihpbkNsaWVudERhdGEpOwor
ICAgIGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPihpbkNsaWVu
dERhdGEpOwogCiAgICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKICAgICBVSW50MzIgbm9t
aW5hbFNhbXBsZVJhdGVTaXplID0gc2l6ZW9mKEZsb2F0NjQpOwpAQCAtMTI3LDI2ICsxMDEsMjcg
QEAgT1NTdGF0dXMgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6aGFuZGxlU2FtcGxlUmF0ZUNoYW5nZShB
dWRpb09iamVjdElEIGRldmljZSwgVUludDMKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1
cm4gcmVzdWx0OwogCi0gICAgc2Vzc2lvblByaXZhdGUtPnNhbXBsZVJhdGUgPSBuYXJyb3dQcmVj
aXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsKKyAgICBzZXNzaW9uLT5tX3NhbXBsZVJh
dGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsKICAgICByZXR1
cm4gbm9FcnI7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9i
c2VydmVySWZOZWVkZWQoKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNpemVPYnNl
cnZlcklmTmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAoaGFzQnVmZmVyU2l6ZU9ic2VydmVyKQor
ICAgIGlmIChtX2hhc0J1ZmZlclNpemVPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOworICAgIG1f
aGFzQnVmZmVyU2l6ZU9ic2VydmVyID0gdHJ1ZTsKIAogICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlB
ZGRyZXNzIGJ1ZmZlclNpemVBZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eUJ1ZmZlckZy
YW1lU2l6ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1ZGlvT2JqZWN0UHJv
cGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVy
KGRlZmF1bHREZXZpY2UoKSwgJmJ1ZmZlclNpemVBZGRyZXNzLCBoYW5kbGVCdWZmZXJTaXplQ2hh
bmdlLCB0aGlzKTsKKyAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoZGVmYXVsdERl
dmljZSgpLCAmYnVmZmVyU2l6ZUFkZHJlc3MsIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UsIGNvbnN0
X2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4odGhpcykpOwogfQogCi1PU1N0YXR1cyBBdWRpb1Nlc3Np
b25Qcml2YXRlOjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBV
SW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiBidWZmZXJTaXplQWRkcmVz
cywgdm9pZCogaW5DbGllbnREYXRhKQorT1NTdGF0dXMgQXVkaW9TZXNzaW9uTWFjOjpoYW5kbGVC
dWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBVSW50MzIsIGNvbnN0IEF1ZGlv
T2JqZWN0UHJvcGVydHlBZGRyZXNzKiBidWZmZXJTaXplQWRkcmVzcywgdm9pZCogaW5DbGllbnRE
YXRhKQogewogICAgIEFTU0VSVChpbkNsaWVudERhdGEpOwogICAgIGlmICghaW5DbGllbnREYXRh
KQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKLSAgICBhdXRvKiBzZXNzaW9uUHJpdmF0ZSA9IHN0
YXRpY19jYXN0PEF1ZGlvU2Vzc2lvblByaXZhdGUqPihpbkNsaWVudERhdGEpOworICAgIGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPihpbkNsaWVudERhdGEpOwog
CiAgICAgVUludDMyIGJ1ZmZlclNpemU7CiAgICAgVUludDMyIGJ1ZmZlclNpemVTaXplID0gc2l6
ZW9mKGJ1ZmZlclNpemUpOwpAQCAtMTU0LDMzICsxMjksMjEgQEAgT1NTdGF0dXMgQXVkaW9TZXNz
aW9uUHJpdmF0ZTo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwg
VUludDMKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgc2Vz
c2lvblByaXZhdGUtPmJ1ZmZlclNpemUgPSBidWZmZXJTaXplOworICAgIHNlc3Npb24tPm1fYnVm
ZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CiAgICAgcmV0dXJuIG5vRXJyOwogfQogCi1BdWRpb1Nlc3Np
b246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Np
b25Qcml2YXRlPigpKQotewotfQotCi1BdWRpb1Nlc3Npb246On5BdWRpb1Nlc3Npb24oKSA9IGRl
ZmF1bHQ7Ci0KLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdv
cnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmNhdGVnb3J5OwotfQotCi12b2lk
IEF1ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQogewogI2lmIEVOQUJMRShST1VUSU5H
X0FSQklUUkFUSU9OKQotICAgIGlmICghbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggfHwg
Km1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJ
c0JsdWV0b290aCgpKQorICAgIGlmICghbV9wbGF5aW5nVG9CbHVldG9vdGggfHwgKm1fcGxheWlu
Z1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IFdURjo6bnVsbG9wdDsKICNlbmRp
ZgogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlk
ZShPcHRpb25hbDxib29sPiB2YWx1ZSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRJc1BsYXlp
bmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQogewogI2lmIEVOQUJM
RShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGlzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUg
PSB2YWx1ZTsKQEAgLTE4OSwyNSArMTUyLDI1IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJc1Bs
YXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQogI2VuZGlmCiB9
CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgY2F0ZWdvcnks
IFJvdXRlU2hhcmluZ1BvbGljeSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeShD
YXRlZ29yeVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSkKIHsKICNpZiBFTkFCTEUo
Uk9VVElOR19BUkJJVFJBVElPTikKICAgICBib29sIHBsYXlpbmdUb0JsdWV0b290aCA9IGRlZmF1
bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpOwotICAgIGlmIChjYXRlZ29yeSA9PSBtX3By
aXZhdGUtPmNhdGVnb3J5ICYmIG1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoICYmICptX3By
aXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9PSBwbGF5aW5nVG9CbHVldG9vdGgpCisgICAgaWYg
KGNhdGVnb3J5ID09IG1fY2F0ZWdvcnkgJiYgbV9wbGF5aW5nVG9CbHVldG9vdGggJiYgKm1fcGxh
eWluZ1RvQmx1ZXRvb3RoID09IHBsYXlpbmdUb0JsdWV0b290aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcml2YXRlLT5jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnkgPSBj
YXRlZ29yeTsKIAotICAgIGlmIChtX3ByaXZhdGUtPnNldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRl
Z29yeSgpIC0gYSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5IGlzIHN0aWxsIG9uZ29pbmci
KTsKKyAgICBpZiAobV9zZXR1cEFyYml0cmF0aW9uT25nb2luZykgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnkoKSAtIGEgYmVn
aW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeSBpcyBzdGlsbCBvbmdvaW5nIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wcml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlvbikg
ewotICAgICAgICBtX3ByaXZhdGUtPmluUm91dGluZ0FyYml0cmF0aW9uID0gZmFsc2U7CisgICAg
aWYgKG1faW5Sb3V0aW5nQXJiaXRyYXRpb24pIHsKKyAgICAgICAgbV9pblJvdXRpbmdBcmJpdHJh
dGlvbiA9IGZhbHNlOwogICAgICAgICBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudC0+bGVhdmVS
b3V0aW5nQWJyaXRyYXRpb24oKTsKICAgICB9CiAKQEAgLTIxNyw0NCArMTgwLDM5IEBAIHZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hh
cmluZ1BvbGljeSkKICAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CiAg
ICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKIAotICAgIG1fcHJpdmF0ZS0+cGxheWlu
Z1RvQmx1ZXRvb3RoID0gcGxheWluZ1RvQmx1ZXRvb3RoOwotICAgIG1fcHJpdmF0ZS0+c2V0dXBB
cmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOwotICAgIG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50
LT5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShtX3ByaXZhdGUtPmNhdGVnb3J5
LCBbdGhpc10gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFu
Z2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIHsKLSAgICAgICAgbV9wcml2YXRlLT5zZXR1cEFyYml0
cmF0aW9uT25nb2luZyA9IGZhbHNlOworICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0gcGxheWlu
Z1RvQmx1ZXRvb3RoOworICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOworICAg
IG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50LT5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhD
YXRlZ29yeShtX2NhdGVnb3J5LCBbdGhpc10gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9y
LCBEZWZhdWx0Um91dGVDaGFuZ2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIHsKKyAgICAgICAgbV9z
ZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IGZhbHNlOwogICAgICAgICBpZiAoZXJyb3IgIT0gUm91
dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gYmVnaW5BcmJpdHJhdGlv
bldpdGhDYXRlZ29yeTolcyBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKG1fcHJpdmF0ZS0+Y2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhlcnJvcikuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5KCkgLSBi
ZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5OiVzIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcobV9jYXRlZ29yeSkuYXNjaWkoKS5kYXRhKCksIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKGVycm9yKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX3ByaXZhdGUtPmluUm91dGluZ0FyYml0
cmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgbV9pblJvdXRpbmdBcmJpdHJhdGlvbiA9IHRydWU7CiAK
ICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1
ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNlPwogICAgICAgICBpZiAoZGVmYXVs
dFJvdXRlQ2hhbmdlZCA9PSBEZWZhdWx0Um91dGVDaGFuZ2VkOjpZZXMpCi0gICAgICAgICAgICBM
T0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0Um91dGVDaGFu
Z2VkISIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRl
Z29yeSgpIC0gZGVmYXVsdFJvdXRlQ2hhbmdlZCEiKTsKICAgICB9KTsKICNlbHNlCi0gICAgbV9w
cml2YXRlLT5jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsK
ICNlbmRpZgogfQogCi1BdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNh
dGVnb3J5T3ZlcnJpZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1fY2F0ZWdv
cnlPdmVycmlkZTsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5T3ZlcnJpZGUo
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5
T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogewotICAgIGlmIChtX3ByaXZhdGUtPm1f
Y2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkKKyAgICBpZiAobV9jYXRlZ29yeU92ZXJyaWRl
ID09IGNhdGVnb3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPm1fY2F0ZWdv
cnlPdmVycmlkZSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5
OwogICAgIHNldENhdGVnb3J5KGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQp
OwogfQogCi1mbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSBjb25zdAorZmxvYXQgQXVk
aW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZS0+
c2FtcGxlUmF0ZSkgewotICAgICAgICBtX3ByaXZhdGUtPmFkZFNhbXBsZVJhdGVPYnNlcnZlcklm
TmVlZGVkKCk7CisgICAgaWYgKCFtX3NhbXBsZVJhdGUpIHsKKyAgICAgICAgYWRkU2FtcGxlUmF0
ZU9ic2VydmVySWZOZWVkZWQoKTsKIAogICAgICAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRl
OwogICAgICAgICBVSW50MzIgbm9taW5hbFNhbXBsZVJhdGVTaXplID0gc2l6ZW9mKEZsb2F0NjQp
OwpAQCAtMjY2LDI1ICsyMjQsMjUgQEAgZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkg
Y29uc3QKICAgICAgICAgfTsKICAgICAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RH
ZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNz
LCAwLCAwLCAmbm9taW5hbFNhbXBsZVJhdGVTaXplLCAodm9pZCopJm5vbWluYWxTYW1wbGVSYXRl
KTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBub0VycikgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSAtIEF1ZGlvT2JqZWN0
R2V0UHJvcGVydHlEYXRhKCkgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCByZXN1bHQpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJh
dGUoKSAtIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKCkgZmFpbGVkIHdpdGggZXJyb3IgJWQi
LCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIDQ0MTAwOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9wcml2YXRlLT5zYW1wbGVSYXRlID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFs
U2FtcGxlUmF0ZSk7Ci0gICAgICAgIGlmICghKm1fcHJpdmF0ZS0+c2FtcGxlUmF0ZSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNhbXBsZVJh
dGUoKSAtIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKCkgcmV0dXJuIGFuIGludmFsaWQgc2Ft
cGxlIHJhdGUiKTsKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2FtcGxlUmF0ZSA9IDQ0MTAwOwor
ICAgICAgICBtX3NhbXBsZVJhdGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1w
bGVSYXRlKTsKKyAgICAgICAgaWYgKCEqbV9zYW1wbGVSYXRlKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2FtcGxlUmF0ZSgpIC0gQXVk
aW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSByZXR1cm4gYW4gaW52YWxpZCBzYW1wbGUgcmF0ZSIp
OworICAgICAgICAgICAgbV9zYW1wbGVSYXRlID0gNDQxMDA7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuICptX3ByaXZhdGUtPnNhbXBsZVJhdGU7CisgICAgcmV0dXJuICptX3NhbXBsZVJh
dGU7CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90
IEF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJpdmF0
ZS0+YnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJuICptX3ByaXZhdGUtPmJ1ZmZlclNpemU7Cisg
ICAgaWYgKG1fYnVmZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuICptX2J1ZmZlclNpemU7CiAKLSAg
ICBtX3ByaXZhdGUtPmFkZEJ1ZmZlclNpemVPYnNlcnZlcklmTmVlZGVkKCk7CisgICAgYWRkQnVm
ZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKTsKIAogICAgIFVJbnQzMiBidWZmZXJTaXplOwogICAg
IFVJbnQzMiBidWZmZXJTaXplU2l6ZSA9IHNpemVvZihidWZmZXJTaXplKTsKQEAgLTI5OCwxOCAr
MjU2LDE4IEBAIHNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAogICAgIGlm
IChyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9wcml2YXRlLT5idWZmZXJTaXpl
ID0gYnVmZmVyU2l6ZTsKKyAgICBtX2J1ZmZlclNpemUgPSBidWZmZXJTaXplOwogCiAgICAgcmV0
dXJuIGJ1ZmZlclNpemU7CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0
Q2hhbm5lbHMoKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbk1hYzo6bnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsK
IH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMo
KSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbk1hYzo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hh
bm5lbHMoKSBjb25zdAogewogICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIHNpemVBZGRy
ZXNzID0gewogICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVhbUNvbmZpZ3VyYXRpb24s
CkBAIC0zMzUsMzAgKzI5MywzMCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIGNoYW5uZWxzOwogfQogCi1ib29s
IEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKQorYm9vbCBBdWRpb1Nl
c3Npb25NYWM6OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1Sb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9T
ZXNzaW9uOjpyb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAorUm91dGVTaGFyaW5nUG9saWN5IEF1
ZGlvU2Vzc2lvbk1hYzo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Um91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0OwogfQogCi1TdHJpbmcgQXVkaW9TZXNzaW9uOjpy
b3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CitTdHJpbmcgQXVkaW9TZXNzaW9uTWFjOjpyb3V0aW5n
Q29udGV4dFVJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXNp
emVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1
ZGlvU2Vzc2lvbk1hYzo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGJ1ZmZlclNpemUoKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZl
clNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5i
dWZmZXJTaXplID09IGJ1ZmZlclNpemUpCisgICAgaWYgKG1fYnVmZmVyU2l6ZSA9PSBidWZmZXJT
aXplKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRpb1ZhbHVlUmFuZ2UgYnVmZmVyU2l6ZVJh
bmdlID0gezAsIDB9OwpAQCAtMzg0LDE3ICszNDIsMTcgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNl
dFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgcmVzdWx0ID0gQXVk
aW9PYmplY3RTZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmcHJlZmVycmVkQnVmZmVy
U2l6ZUFkZHJlc3MsIDAsIDAsIHNpemVvZihidWZmZXJTaXplT3V0KSwgKHZvaWQqKSZidWZmZXJT
aXplT3V0KTsKIAogICAgIGlmICghcmVzdWx0KQotICAgICAgICBtX3ByaXZhdGUtPmJ1ZmZlclNp
emUgPSBidWZmZXJTaXplT3V0OworICAgICAgICBtX2J1ZmZlclNpemUgPSBidWZmZXJTaXplT3V0
OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChyZXN1bHQpCi0gICAgICAgIExPRyhNZWRp
YSwgIkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIC0gZmFpbGVkIHdp
dGggZXJyb3IgJWQiLCBidWZmZXJTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOworICAg
ICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
JXp1KSAtIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgYnVmZmVyU2l6ZSwgc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVmZmVyU2l6ZSk7CisgICAgICAgIExPRyhN
ZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVm
ZmVyU2l6ZSk7CiAjZW5kaWYKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb246OmlzTXV0ZWQoKSBjb25z
dAorYm9vbCBBdWRpb1Nlc3Npb25NYWM6OmlzTXV0ZWQoKSBjb25zdAogewogICAgIFVJbnQzMiBt
dXRlID0gMDsKICAgICBVSW50MzIgbXV0ZVNpemUgPSBzaXplb2YobXV0ZSk7CkBAIC00MjAsMjIg
KzM3OCwxOSBAQCBzdGF0aWMgT1NTdGF0dXMgaGFuZGxlTXV0ZVByb3BlcnR5Q2hhbmdlKEF1ZGlv
T2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplYwogICAgIHJldHVybiBub0VycjsKIH0K
IAotdm9pZCBBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQordm9pZCBBdWRp
b1Nlc3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQogewotICAgIGlmICghbV9wcml2
YXRlKQotICAgICAgICByZXR1cm47Ci0KICAgICBib29sIGlzQ3VycmVudGx5TXV0ZWQgPSBpc011
dGVkKCk7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+bGFzdE11dGVkU3RhdGUgJiYgKm1fcHJpdmF0ZS0+
bGFzdE11dGVkU3RhdGUgPT0gaXNDdXJyZW50bHlNdXRlZCkKKyAgICBpZiAobV9sYXN0TXV0ZWRT
dGF0ZSAmJiAqbV9sYXN0TXV0ZWRTdGF0ZSA9PSBpc0N1cnJlbnRseU11dGVkKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAg
IG9ic2VydmVyLT5oYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UodGhpcyk7CiAKLSAgICBtX3By
aXZhdGUtPmxhc3RNdXRlZFN0YXRlID0gaXNDdXJyZW50bHlNdXRlZDsKKyAgICBtX2xhc3RNdXRl
ZFN0YXRlID0gaXNDdXJyZW50bHlNdXRlZDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmFkZE11
dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBBdWRp
b1Nlc3Npb25NYWM6OmFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAKQEAgLTQ0Niw3ICs0
MDEsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3Rh
dGVPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVy
KGRlZmF1bHREZXZpY2UoKSwgJm11dGVBZGRyZXNzLCBoYW5kbGVNdXRlUHJvcGVydHlDaGFuZ2Us
IHRoaXMpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVy
KE11dGVkU3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6cmVt
b3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAg
ICAgaWYgKG1fb2JzZXJ2ZXJzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEF1ZGlvT2JqZWN0UHJv
cGVydHlBZGRyZXNzIG11dGVBZGRyZXNzID0geyBrQXVkaW9EZXZpY2VQcm9wZXJ0eU11dGUsIGtB
dWRpb0RldmljZVByb3BlcnR5U2NvcGVPdXRwdXQsIGtBdWRpb09iamVjdFByb3BlcnR5RWxlbWVu
dE1hc3RlciB9Owo=
</data>
<flag name="review"
          id="443317"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="443358"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>423903</attachid>
            <date>2021-03-22 10:08:09 -0700</date>
            <delta_ts>2021-05-13 12:33:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223564-20210322100808.patch</filename>
            <type>text/plain</type>
            <size>48079</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc0NjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjIwZmU5YjYzMWUxMDRj
MGVlYmJjNGE4ZTkxZGEwNTljYWQzY2U3ZS4uYmUwZDM3MmY3YmIxOTk2YThjMGM2MGEzNGE3NTgz
NzJhZTBjYjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBOb3cgdGhhdCBBdWRpb1Nlc3Npb24gY2Fu
IGhhdmUgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYXQgcnVudGltZSwgaXQgc2hvdWxk
IGJlIGFuCisgICAgICAgIGFjdHVhbCB2aXJ0dWFsIGNsYXNzLCB3aG9zZSBjb25jcmV0ZSwgcGVy
LXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBhcmUgZGVyaXZhdGlvbnMgb2YgdGhlCisgICAgICAg
IGJhc2UgY2xhc3MuIE1ha2UgQXVkaW9TZXNzaW9uSU9TIGFuZCBBdWRpb1Nlc3Npb25NYWMgdHJ1
ZSBzdWJjbGFzc2VzIG9mIEF1ZGlvU2Vzc2lvbiwgYW5kCisgICAgICAgIGFsbG93IFJlbW90ZUF1
ZGlvU2Vzc2lvbiB0byBkZXJpdmUgZnJvbSB0aGF0IHNhbWUgYmFzZSBjbGFzcyAocmF0aGVyIHRo
YW4gQXVkaW9TZXNzaW9uSU9TCisgICAgICAgIG9yIEF1ZGlvU2Vzc2lvbk1hYykuCisKKyAgICAg
ICAgQWxzbyBlbnN1cmUgQXVkaW9TZXNzaW9uSU9TIG9yIEF1ZGlvU2Vzc2lvbk1hYyBpcyBub3Qg
YWNjaWRlbnRhbGx5IGNyZWF0ZWQgd2hlbiBjYWxsaW5nCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0U2hhcmVkU2Vzc2lvbigpIGJ5IG1ha2luZyB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IGhv
bGRpbmcgdGhlIHNlc3Npb24KKyAgICAgICAgYW4gT3B0aW9uYWwsIGFuZCBvbmx5IGxhemlseSBj
cmVhdGluZyB0aGUgc2Vzc2lvbiBmcm9tIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpIGlm
CisgICAgICAgIG9uZSBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQgYWxyZWFkeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRBdWRpb1Nlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uSU9TOjpjYXRlZ29yeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25J
T1M6OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpwcmVmZXJyZWRC
dWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0
UHJlZmVycmVkQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6
OmlzTXV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6
YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdD
b250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzTXV0ZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRk
SW50ZXJydXB0aW9uT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5T3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNo
YXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpy
b3V0aW5nQ29udGV4dFVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25N
YWM6OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6
aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5T3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnRyeVRvU2V0
QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
Ojpyb3V0ZVNoYXJpbmdQb2xpY3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorCiAyMDIxLTAz
LTE2ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1hbnkgbWVk
aWEvbWVkaWEtZnJhZ21lbnRzLyB0ZXN0cyBhcmUgY3Jhc2hpbmcgZHVlIHRvIG90aGVyIHRlc3Rz
IHRoYXQgcnVuIGJlZm9yZSB0aGVtLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJiMTNjN2Y4ZDM5MDNiMTU2N2Y5NmVhNTk3MTk1
MjZjYjRjMjE2YjEuLmExMGQ0NGZlZjE0NDc1MzNiMWEwZDY3NzBjMmNmYzgxNWM2YjI2ZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTQyNjQsNiArNDI2NCw3IEBACiAJCUNEMzM2RjY0MTdGQTBBNEQwMERERENEMCAvKiBWaWRl
b1RyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0QzMzZGNjMxN0ZBMEE0RDAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZG
LmggKi87IH07CiAJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0QzMzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5j
cHAgKi87IH07CiAJCUNEMzM2RjY4MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0
ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAq
LzsgfTsKKwkJQ0QzNkMxNjIyNjA3RTc4NjAwQzhDNTI5IC8qIEF1ZGlvU2Vzc2lvbklPUy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzNkMxNjEyNjA3
RTc4NjAwQzhDNTI5IC8qIEF1ZGlvU2Vzc2lvbklPUy5oICovOyB9OwogCQlDRDNBNDk1RjE3QTlE
MDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTU2MTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJj
ZS5oICovOyB9OwogCQlDRDNBNDk2MjE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1OTE3
QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyLmggKi87IH07CiAJCUNEM0E0OTY1MTdBOUQw
MUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1QzE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNl
QnVmZmVyTGlzdC5oICovOyB9OwpAQCAtMTQ3MjEsNiArMTQ3MjIsOCBAQAogCQlDRDMzNkY2MzE3
RkEwQTREMDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkYuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFja1ByaXZhdGVBVkYuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QzMzZGNjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2
YXRlQVZGT2JqQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWaWRl
b1RyYWNrUHJpdmF0ZUFWRk9iakMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDMzNkY2NjE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1Mjkg
LyogQXVkaW9TZXNzaW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyog
QXVkaW9TZXNzaW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbklPUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlh
Z25vc3RpY0xvZ2dpbmdLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTU1MTdBOUQwMUIwMDI3NEU0MiAv
KiBNZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzk4OCw2ICsy
Nzk5MSw3IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJl
YWRlcklPUy5oICovLAogCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1
dFVuaXRBZGFwdG9ySU9TLmNwcCAqLywKKwkJCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyog
QXVkaW9TZXNzaW9uSU9TLmggKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1
ZGlvU2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVk
aWFTZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8q
IE1lZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTMxMDY5LDYgKzMxMDczLDcgQEAKIAkJ
CQlDRDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNw
cCAqLywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3Rl
bmVyTWFjLmggKi8sCiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0
VW5pdEFkYXB0b3JNYWMuY3BwICovLAorCQkJCUNEMzZDMTVGMjYwNjdDMUYwMEM4QzUyOSAvKiBB
dWRpb1Nlc3Npb25NYWMuaCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVk
aW9TZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRG
cmFtZU1hYy5jcHAgKi8sCiAJCQkpOwpAQCAtMzEzODgsNiArMzEzOTMsNyBAQAogCQkJCTA3M0I4
NzY5MUU0Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUZEOEM0NkVDMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJj
ZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBB
dWRpb1Nlc3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzZDMTYyMjYwN0U3ODYwMEM4QzUy
OSAvKiBBdWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg5MTJCMDI2
RjcwMEMxQTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RDhBN0JCQzE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJj
ZVByb3ZpZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGQyMGQwYzQxNjVmZWY1ZmE1YWZmYmY2
OWFhMTVmZjdkMmQ2OTU5OTcuLjMwYmU5ZTQ5MzNmOTZkMDE2ZmI0NzMxMzZiNjBlNGVmNzQ1NmVk
MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cApAQCAtMzEsMjIgKzMxLDQxIEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRl
ICJBdWRpb1Nlc3Npb25NYWMuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyNpbmNsdWRlICJBdWRpb1Nlc3Npb25JT1MuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPiYgc2hhcmVkQXVkaW9TZXNzaW9u
KCkKK3N0YXRpYyBPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4mIHNoYXJlZEF1ZGlv
U2Vzc2lvbigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxBdWRpb1Nl
c3Npb24+PiBzZXNzaW9uID0gQXVkaW9TZXNzaW9uOjpjcmVhdGUoKTsKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8T3B0aW9uYWw8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4+PiBzZXNzaW9uOwog
ICAgIHJldHVybiBzZXNzaW9uLmdldCgpOwogfQogCiBVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPiBB
dWRpb1Nlc3Npb246OmNyZWF0ZSgpCiB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBt
YWtlVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbk1hYz4oKTsKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9TZXNzaW9uSU9TPigpOworI2Vsc2UK
ICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+KCk7CisjZW5kaWYKIH0KIAor
QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKSA9IGRlZmF1bHQ7CitBdWRpb1Nlc3Npb246On5B
dWRpb1Nlc3Npb24oKSA9IGRlZmF1bHQ7CisKIEF1ZGlvU2Vzc2lvbiYgQXVkaW9TZXNzaW9uOjpz
aGFyZWRTZXNzaW9uKCkKIHsKLSAgICByZXR1cm4gc2hhcmVkQXVkaW9TZXNzaW9uKCk7CisgICAg
aWYgKCFzaGFyZWRBdWRpb1Nlc3Npb24oKSkKKyAgICAgICAgc2hhcmVkQXVkaW9TZXNzaW9uKCkg
PSBBdWRpb1Nlc3Npb246OmNyZWF0ZSgpOworICAgIHJldHVybiAqc2hhcmVkQXVkaW9TZXNzaW9u
KCk7CiB9CiAKIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRTaGFyZWRTZXNzaW9uKFVuaXF1ZVJlZjxB
dWRpb1Nlc3Npb24+JiYgc2Vzc2lvbikKQEAgLTYzLDM3ICs4MiwyNiBAQCBib29sIEF1ZGlvU2Vz
c2lvbjo6dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LSNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1
cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCiB7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVy
KEludGVycnVwdGlvbk9ic2VydmVyJikKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2
b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQogeworICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKIHZvaWQgQXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1l
KQotewotfQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBBdWRpb1Nlc3Np
b25Qcml2YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLX07Ci0KLUF1ZGlvU2Vz
c2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShudWxscHRyKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLUF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpID0gZGVm
YXVsdDsKLQogdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91
dGVTaGFyaW5nUG9saWN5KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xNjcsOSArMTc1
LDYgQEAgU3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGluZ0NvbnRleHRVSUQoKSBjb25zdAogICAg
IHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQot
Ci0jaWYgIVBMQVRGT1JNKE1BQykKIHZvaWQgQXVkaW9TZXNzaW9uOjphdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xNzksOCArMTg0LDYgQEAg
dm9pZCBBdWRpb1Nlc3Npb246OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9u
YWw8Ym9vbD4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZP
Uk0oQ09DT0EpCi0KIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJvdXRlU2hh
cmluZ1BvbGljeSBlbnVtZXJhdGlvblZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9BdWRpb1Nlc3Npb24uaAppbmRleCBhMjUxMjlhYmMwMzNkMWYzNWM5ZmFlNjFjYTY4
MGU1MDc5YTczOGZjLi5lZmE5OWQxYTU1YTU3YzRlMzVlOTZjMzUxY2JlYjRiOGI5ZGE0MjlkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMzgs
OCArMzgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvblBy
aXZhdGU7Ci0KIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAg
RGVmYXVsdCwKICAgICBMb25nRm9ybUF1ZGlvLApAQCAtNzIsOCArNzAsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVTaGFyaW5nUG9s
aWN5KTsKICAgICB2aXJ0dWFsIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNvbnN0OwogCi0gICAg
dm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSk7Ci0gICAgQ2F0ZWdvcnlUeXBl
IGNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2F0ZWdvcnlP
dmVycmlkZShDYXRlZ29yeVR5cGUpOworICAgIHZpcnR1YWwgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5
T3ZlcnJpZGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRl
U2hhcmluZ1BvbGljeSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHJvdXRpbmdDb250ZXh0
VUlEKCkgY29uc3Q7CkBAIC05NSwxOCArOTMsMTggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFs
IHZvaWQgaGFyZHdhcmVNdXRlZFN0YXRlRGlkQ2hhbmdlKEF1ZGlvU2Vzc2lvbiopID0gMDsKICAg
ICB9OwogCi0gICAgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVy
Kik7Ci0gICAgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVy
Kik7CisgICAgdmlydHVhbCB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2Jz
ZXJ2ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11
dGVkU3RhdGVPYnNlcnZlciopIHsgfQogCi0gICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5n
ZWQoKTsKLSAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8
Ym9vbD4pOworICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxi
b29sPik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCk7CisgICAgdmlydHVhbCBib29sIGlzTXV0ZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKCkgeyB9CiAKLSAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCk7CisgICAgdmly
dHVhbCB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBNYXlSZXN1bWUg
eyBObywgWWVzIH07Ci0gICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5kSW50ZXJydXB0aW9uKE1heVJlc3VtZSk7CiAKICAgICBjbGFzcyBJbnRl
cnJ1cHRpb25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnJ1cHRpb25PYnNl
cnZlcj4gewogICAgIHB1YmxpYzoKQEAgLTExNSwxMiArMTEzLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCB2b2lkIGJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKE1heVJlc3VtZSkg
PSAwOwogICAgIH07Ci0gICAgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJy
dXB0aW9uT2JzZXJ2ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJydXB0aW9uT2JzZXJ2
ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW50ZXJy
dXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKTsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CiAKLSAgICB2b2lkIHNldFJv
dXRpbmdBcmJpdHJhdGlvbkNsaWVudChXZWFrUHRyPEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudD4mJiBjbGllbnQpIHsgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQgPSBjbGll
bnQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KFdlYWtQ
dHI8QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50PiYmIGNsaWVudCkgeyBtX3Jv
dXRpbmdBcmJpdHJhdGlvbkNsaWVudCA9IGNsaWVudDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPEF1ZGlvU2Vzc2lvbj47CkBAIC0xMjgsNyArMTI2LDYg
QEAgcHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIHRyeVRvU2V0QWN0aXZlSW50ZXJuYWwo
Ym9vbCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2
YXRlOwogICAgIEhhc2hTZXQ8TXV0ZWRTdGF0ZU9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXZWFrSGFzaFNldDxJbnRlcnJ1cHRpb25PYnNlcnZl
cj4gbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5OTU5MjBjZjNl
NjVlODcyZmJiNTAxN2RmMjAzNTFiZTk1MjgzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApAQCAtMCwwICsxLDc0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikg
JiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorCitP
QkpDX0NMQVNTIFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyOworCituYW1lc3BhY2UgV1RG
IHsKK2NsYXNzIFdvcmtRdWV1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBB
dWRpb1Nlc3Npb25JT1MgZmluYWwgOiBwdWJsaWMgQXVkaW9TZXNzaW9uIHsKK3B1YmxpYzoKKyAg
ICBBdWRpb1Nlc3Npb25JT1MoKTsKKyAgICB2aXJ0dWFsIH5BdWRpb1Nlc3Npb25JT1MoKTsKKwor
cHJpdmF0ZToKKyAgICAvLyBBdWRpb1Nlc3Npb24KKyAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnko
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVT
aGFyaW5nUG9saWN5KSBmaW5hbDsKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRl
Z29yeU92ZXJyaWRlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRl
KENhdGVnb3J5VHlwZSkgZmluYWw7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFs
OworICAgIHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IG51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbWF4aW11bU51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwoYm9vbCkgZmluYWw7CisgICAgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmlu
Z1BvbGljeSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyByb3V0aW5nQ29udGV4dFVJRCgpIGNv
bnN0IGZpbmFsOworICAgIHNpemVfdCBwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QgZmluYWw7
CisgICAgdm9pZCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCkgZmluYWw7CisgICAgYm9v
bCBpc011dGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdl
KCkgZmluYWw7CisgICAgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25P
YnNlcnZlciYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50
ZXJydXB0aW9uT2JzZXJ2ZXImKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCkg
ZmluYWw7CisgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKSBmaW5hbDsKKworICAg
IEF1ZGlvU2Vzc2lvbklPUzo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZSB7IEF1ZGlv
U2Vzc2lvbjo6Tm9uZSB9OworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gbV93b3JrUXVldWU7
CisgICAgUmV0YWluUHRyPFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyPiBtX2ludGVycnVw
dGlvbk9ic2VydmVySGVscGVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDY5ZDFm
YTY2NTM4YjE1ODhhYWQ0NDVjYTQxZWRhNTI1NmYwYTZmNzUuLmJlYzdjMTdjYmEzM2UzYTcyZjYx
YjhjNGFlNmIxYzI0NmFmMzEyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQXVkaW9TZXNzaW9uLmgiCisjaW1wb3J0ICJB
dWRpb1Nlc3Npb25JT1MuaCIKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCkBAIC05Niw0MCArOTYsMTkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9T
ZXNzaW9uKik7Ci0gICAgfkF1ZGlvU2Vzc2lvblByaXZhdGUoKTsKLQotICAgIEF1ZGlvU2Vzc2lv
bjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZTsKLSAgICBSZWZQdHI8V29ya1F1ZXVl
PiBtX3dvcmtRdWV1ZTsKLSAgICBSZXRhaW5QdHI8V2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxw
ZXI+IG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI7Ci19OwotCi1BdWRpb1Nlc3Npb25Qcml2
YXRlOjpBdWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiogc2Vzc2lvbikKLSAgICA6IG1f
Y2F0ZWdvcnlPdmVycmlkZShBdWRpb1Nlc3Npb246Ok5vbmUpCitBdWRpb1Nlc3Npb25JT1M6OkF1
ZGlvU2Vzc2lvbklPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAg
bV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMoW1tXZWJJbnRlcnJ1cHRpb25P
YnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpzZXNzaW9uXSk7CisgICAgbV9p
bnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMoW1tXZWJJbnRlcnJ1cHRpb25PYnNl
cnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CiAgICAgRU5EX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwogfQogCi1BdWRpb1Nlc3Npb25Qcml2YXRlOjp+QXVkaW9TZXNzaW9u
UHJpdmF0ZSgpCitBdWRpb1Nlc3Npb25JT1M6On5BdWRpb1Nlc3Npb25JT1MoKQogewogICAgIFtt
X2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGNsZWFyQ2FsbGJhY2tdOwogfQogCi1BdWRpb1Nl
c3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nl
c3Npb25Qcml2YXRlPih0aGlzKSkKLXsKLX0KLQotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9u
KCkKLXsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBu
ZXdDYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSkKK3ZvaWQgQXVkaW9TZXNzaW9u
SU9TOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmluZ1Bv
bGljeSBwb2xpY3kpCiB7CiAjaWYgIUhBVkUoUk9VVEVfU0hBUklOR19QT0xJQ1lfTE9OR19GT1JN
X1ZJREVPKQogICAgIGlmIChwb2xpY3kgPT0gUm91dGVTaGFyaW5nUG9saWN5OjpMb25nRm9ybVZp
ZGVvKQpAQCAtMTgwLDcgKzE1OSw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShD
YXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpCiAjZW5kaWYK
IH0KIAotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgp
IGNvbnN0CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb25JT1M6OmNhdGVn
b3J5KCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqY2F0ZWdvcnlTdHJpbmcgPSBbW1BBTDo6Z2V0
QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBjYXRlZ29yeV07CiAgICAgaWYg
KFtjYXRlZ29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50XSkK
QEAgLTE5OCw3ICsxNzcsNyBAQCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Np
b246OmNhdGVnb3J5KCkgY29uc3QKICAgICByZXR1cm4gTm9uZTsKIH0KIAotUm91dGVTaGFyaW5n
UG9saWN5IEF1ZGlvU2Vzc2lvbjo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKK1JvdXRlU2hh
cmluZ1BvbGljeSBBdWRpb1Nlc3Npb25JT1M6OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CiB7
CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJvdXRlU2hhcmluZ1BvbGlj
eTo6RGVmYXVsdCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihBVkF1ZGlvU2Vzc2lvblJvdXRlU2hh
cmluZ1BvbGljeURlZmF1bHQpLCAiUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0IGlzIG5vdCBB
VkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeURlZmF1bHQgYXMgZXhwZWN0ZWQiKTsKICNp
ZiBIQVZFKFJPVVRFX1NIQVJJTkdfUE9MSUNZX0xPTkdfRk9STV9WSURFTykKQEAgLTIxNiw3ICsx
OTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Um91dGVTaGFyaW5nUG9saWN5Pihwb2xpY3kpOwogfQogCi1TdHJpbmcgQXVkaW9T
ZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CitTdHJpbmcgQXVkaW9TZXNzaW9uSU9T
Ojpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlf
U0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9T
KQogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXSByb3V0aW5nQ29udGV4dFVJRF07CkBAIC0yMjUsNTEgKzIwNCw1MSBAQCBTdHJpbmcgQXVk
aW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBB
dWRpb1Nlc3Npb246OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQor
dm9pZCBBdWRpb1Nlc3Npb25JT1M6OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNh
dGVnb3J5KQogewotICAgIGlmIChtX3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRl
Z29yeSkKKyAgICBpZiAobV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5Owor
ICAgIG1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5OwogICAgIHNldENhdGVnb3J5KGNhdGVn
b3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQpOwogfQogCi1BdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAorQXVkaW9T
ZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uSU9TOjpjYXRlZ29yeU92ZXJyaWRlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGU7CisgICAg
cmV0dXJuIG1fY2F0ZWdvcnlPdmVycmlkZTsKIH0KIAotZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1w
bGVSYXRlKCkgY29uc3QKK2Zsb2F0IEF1ZGlvU2Vzc2lvbklPUzo6c2FtcGxlUmF0ZSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5z
dGFuY2VdIHNhbXBsZVJhdGVdOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXpl
KCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6OmJ1ZmZlclNpemUoKSBjb25zdAogewog
ICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNl
XSBJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vz
c2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9u
SU9TOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZD
aGFubmVsc107CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6Om1heGltdW1OdW1iZXJP
Zk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6OmdldEFWQXVkaW9T
ZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gbWF4aW11bU91dHB1dE51bWJlck9mQ2hhbm5l
bHNdOwogfQogCi1ib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29s
IGFjdGl2ZSkKK2Jvb2wgQXVkaW9TZXNzaW9uSU9TOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJv
b2wgYWN0aXZlKQogewotICAgIGlmICghbV9wcml2YXRlLT5tX3dvcmtRdWV1ZSkKLSAgICAgICAg
bV9wcml2YXRlLT5tX3dvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJBdWRpb1Nlc3Npb24g
QWN0aXZhdGlvbiBRdWV1ZSIpOworICAgIGlmICghbV93b3JrUXVldWUpCisgICAgICAgIG1fd29y
a1F1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVl
Iik7CiAKICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlIHNlc3Npb24gb24gYW5vdGhl
ciBxdWV1ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lvblNldEFjdGl2ZU9wdGlvbk5vdGlmeU90
aGVyc09uRGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8vIG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Np
b24gbWF5IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZpb3VzbHkgZHVja2VkIGNsaWVudHMuIEFj
dGl2YXRpb24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0
dXJucywgc28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAg
ICAgaWYgKGFjdGl2ZSkgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
bV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3VjY2Vzc10geworICAgICAg
ICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3VjY2Vzc10gewogICAgICAgICAgICAgTlNF
cnJvciAqZXJyb3IgPSBuaWw7CiAgICAgICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25D
bGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6WUVTIHdpdGhPcHRpb25zOjAgZXJyb3I6
JmVycm9yXTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSAhZXJyb3I7CkBAIC0yNzcsNyArMjU2LDcg
QEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUp
CiAgICAgICAgIHJldHVybiBzdWNjZXNzOwogICAgIH0KIAotICAgIG1fcHJpdmF0ZS0+bV93b3Jr
UXVldWUtPmRpc3BhdGNoKFtdIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW10gewogICAg
ICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNz
aW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOk5PIHdpdGhPcHRpb25zOjAgZXJy
b3I6JmVycm9yXTsKICAgICB9KTsKQEAgLTI4NSwxMiArMjY0LDEyIEBAIGJvb2wgQXVkaW9TZXNz
aW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QK
K3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewog
ICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNl
XSBwcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsKIH0KIAotdm9pZCBB
dWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCit2
b2lkIEF1ZGlvU2Vzc2lvbklPUzo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVy
U2l6ZSkKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBmbG9hdCBkdXJhdGlvbiA9
IGJ1ZmZlclNpemUgLyBzYW1wbGVSYXRlKCk7CkBAIC0yOTgsMzIgKzI3NywzMiBAQCB2b2lkIEF1
ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKICAg
ICBBU1NFUlQoIWVycm9yKTsKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb246OmlzTXV0ZWQoKSBjb25z
dAorYm9vbCBBdWRpb1Nlc3Npb25JT1M6OmlzTXV0ZWQoKSBjb25zdAogewogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQor
dm9pZCBBdWRpb1Nlc3Npb25JT1M6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQogewogfQogCi12
b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmFkZEludGVycnVwdGlvbk9i
c2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX2ludGVycnVw
dGlvbk9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6cmVt
b3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQor
dm9pZCBBdWRpb1Nlc3Npb25JT1M6OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVw
dGlvbk9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5y
ZW1vdmUob2JzZXJ2ZXIpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRp
b24oKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKCkKIHsKICAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCiAgICAgICAgIG9i
c2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKCk7CiB9CiAKLXZvaWQgQXVkaW9T
ZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lIG1heVJlc3VtZSkKK3ZvaWQgQXVkaW9T
ZXNzaW9uSU9TOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lIG1heVJlc3VtZSkKIHsKICAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCiAgICAgICAgIG9i
c2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihtYXlSZXN1bWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzY2ZiODNmMTExZjc3MTNjYWU3ZGM1ZTY0ZjE4MGI1ZGQyZjE1YTQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9u
TWFjLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYg
VVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkF1ZGlvU2Vz
c2lvbi5oIgorCit0eXBlZGVmIFVJbnQzMiBBdWRpb09iamVjdElEOwordHlwZWRlZiBzdHJ1Y3Qg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TZXNzaW9uTWFjIGZpbmFsIDogcHVi
bGljIEF1ZGlvU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQXVkaW9TZXNzaW9uTWFjKCkgPSBkZWZh
dWx0OworICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbk1hYygpID0gZGVmYXVsdDsKKworcHJpdmF0
ZToKKyAgICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkgY29uc3Q7CisgICAg
dm9pZCBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0OworCisgICAgc3RhdGlj
IE9TU3RhdHVzIGhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBj
b25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7Cisg
ICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCwg
VUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50
RGF0YSk7CisKKyAgICAvLyBBdWRpb1Nlc3Npb24KKyAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnko
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5OyB9CisgICAgdm9pZCBhdWRpb091dHB1
dERldmljZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3Ro
T3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pIGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0
ZWdvcnlUeXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kpIGZpbmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2Nh
dGVnb3J5T3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlU
eXBlKSBmaW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWw7CisgICAgc2l6
ZV90IGJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBtYXhpbXVtTnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChi
b29sKSBmaW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9saWN5KCkg
Y29uc3QgZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QgZmluYWw7
CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lk
IHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIGlzTXV0ZWQo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKSBmaW5hbDsK
KyAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5h
bDsKKyAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIq
KSBmaW5hbDsKKworICAgIE9wdGlvbmFsPGJvb2w+IG1fbGFzdE11dGVkU3RhdGU7CisgICAgQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeSB7IEF1ZGlvU2Vzc2lvbjo6Tm9uZSB9
OworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQorICAgIGJvb2wgbV9zZXR1cEFyYml0
cmF0aW9uT25nb2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2luUm91dGluZ0FyYml0cmF0aW9u
IHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aDsKKyAg
ICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworI2VuZGlmCisg
ICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOworICAgIG11
dGFibGUgYm9vbCBtX2hhc1NhbXBsZVJhdGVPYnNlcnZlciB7IGZhbHNlIH07CisgICAgbXV0YWJs
ZSBib29sIG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIE9w
dGlvbmFsPGRvdWJsZT4gbV9zYW1wbGVSYXRlOworICAgIG11dGFibGUgT3B0aW9uYWw8c2l6ZV90
PiBtX2J1ZmZlclNpemU7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KaW5kZXggN2FhMjY5YWJi
YjBjZmMxMTQxNmM3MmMxZDMzMjVhZTZiYzk2NGEyYS4uZDIyMjFkZmQ3NjU1ZTkxMzdiNTk5MzYz
MmFlYTAzYzYwODcxYzc5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdWRpb1Nlc3Npb24uaCIKKyNpbXBvcnQgIkF1ZGlv
U2Vzc2lvbk1hYy5oIgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykK
IApAQCAtNzcsNDkgKzc3LDIzIEBAIHN0YXRpYyBmbG9hdCBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0
SXNCbHVldG9vdGgoKQogfQogI2VuZGlmCiAKLWNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewot
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IEF1ZGlv
U2Vzc2lvblByaXZhdGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNl
cnZlcklmTmVlZGVkKCk7Ci0gICAgdm9pZCBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgp
OwotCi0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmpl
Y3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGlu
Q2xpZW50RGF0YSk7Ci0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2Uo
QXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyos
IHZvaWQqIGluQ2xpZW50RGF0YSk7Ci0KLSAgICBPcHRpb25hbDxib29sPiBsYXN0TXV0ZWRTdGF0
ZTsKLSAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSB7IEF1ZGlvU2Vzc2lv
bjo6Tm9uZSB9OwotI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQotICAgIGJvb2wgc2V0
dXBBcmJpdHJhdGlvbk9uZ29pbmcgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGJvb2w+IHBsYXlp
bmdUb0JsdWV0b290aDsKLSAgICBPcHRpb25hbDxib29sPiBwbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZTsKLSNlbmRpZgotICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlP
dmVycmlkZTsKLSAgICBib29sIGluUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKLSAgICBi
b29sIGhhc1NhbXBsZVJhdGVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNCdWZmZXJT
aXplT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gc2FtcGxlUmF0ZTsK
LSAgICBPcHRpb25hbDxzaXplX3Q+IGJ1ZmZlclNpemU7Ci19OwotCi12b2lkIEF1ZGlvU2Vzc2lv
blByaXZhdGU6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjphZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0CiB7Ci0gICAgaWYg
KGhhc1NhbXBsZVJhdGVPYnNlcnZlcikKKyAgICBpZiAobV9oYXNTYW1wbGVSYXRlT2JzZXJ2ZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICBoYXNTYW1wbGVSYXRlT2JzZXJ2ZXIgPSB0cnVlOworICAg
IG1faGFzU2FtcGxlUmF0ZU9ic2VydmVyID0gdHJ1ZTsKIAogICAgIEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzIG5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcyA9IHsga0F1ZGlvRGV2aWNlUHJvcGVy
dHlOb21pbmFsU2FtcGxlUmF0ZSwga0F1ZGlvT2JqZWN0UHJvcGVydHlTY29wZUdsb2JhbCwga0F1
ZGlvT2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Ci0gICAgQXVkaW9PYmplY3RBZGRQcm9w
ZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywg
aGFuZGxlU2FtcGxlUmF0ZUNoYW5nZSwgdGhpcyk7CisgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0
eUxpc3RlbmVyKGRlZmF1bHREZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgaGFu
ZGxlU2FtcGxlUmF0ZUNoYW5nZSwgY29uc3RfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPih0aGlzKSk7
CiB9CiAKLU9TU3RhdHVzIEF1ZGlvU2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFu
Z2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0
eUFkZHJlc3MqIHNhbXBsZVJhdGVBZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEpCitPU1N0YXR1
cyBBdWRpb1Nlc3Npb25NYWM6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCBk
ZXZpY2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIHNhbXBsZVJh
dGVBZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEpCiB7CiAgICAgQVNTRVJUKGluQ2xpZW50RGF0
YSk7CiAgICAgaWYgKCFpbkNsaWVudERhdGEpCiAgICAgICAgIHJldHVybiBub0VycjsKIAotICAg
IGF1dG8qIHNlc3Npb25Qcml2YXRlID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uUHJpdmF0ZSo+
KGluQ2xpZW50RGF0YSk7CisgICAgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vz
c2lvbk1hYyo+KGluQ2xpZW50RGF0YSk7CiAKICAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRl
OwogICAgIFVJbnQzMiBub21pbmFsU2FtcGxlUmF0ZVNpemUgPSBzaXplb2YoRmxvYXQ2NCk7CkBA
IC0xMjcsMjYgKzEwMSwyNyBAQCBPU1N0YXR1cyBBdWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVT
YW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBVSW50MwogICAgIGlmIChyZXN1
bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBzZXNzaW9uUHJpdmF0ZS0+c2FtcGxl
UmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOworICAgIHNl
c3Npb24tPm1fc2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBs
ZVJhdGUpOwogICAgIHJldHVybiBub0VycjsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRl
OjphZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6
YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdAogewotICAgIGlmIChoYXNCdWZm
ZXJTaXplT2JzZXJ2ZXIpCisgICAgaWYgKG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyKQogICAgICAg
ICByZXR1cm47CisgICAgbV9oYXNCdWZmZXJTaXplT2JzZXJ2ZXIgPSB0cnVlOwogCiAgICAgQXVk
aW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYnVmZmVyU2l6ZUFkZHJlc3MgPSB7IGtBdWRpb0Rldmlj
ZVByb3BlcnR5QnVmZmVyRnJhbWVTaXplLCBrQXVkaW9PYmplY3RQcm9wZXJ0eVNjb3BlR2xvYmFs
LCBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIgfTsKLSAgICBBdWRpb09iamVjdEFk
ZFByb3BlcnR5TGlzdGVuZXIoZGVmYXVsdERldmljZSgpLCAmYnVmZmVyU2l6ZUFkZHJlc3MsIGhh
bmRsZUJ1ZmZlclNpemVDaGFuZ2UsIHRoaXMpOworICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlM
aXN0ZW5lcihkZWZhdWx0RGV2aWNlKCksICZidWZmZXJTaXplQWRkcmVzcywgaGFuZGxlQnVmZmVy
U2l6ZUNoYW5nZSwgY29uc3RfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPih0aGlzKSk7CiB9CiAKLU9T
U3RhdHVzIEF1ZGlvU2Vzc2lvblByaXZhdGU6OmhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9P
YmplY3RJRCBkZXZpY2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mq
IGJ1ZmZlclNpemVBZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEpCitPU1N0YXR1cyBBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJ
bnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIGJ1ZmZlclNpemVBZGRyZXNz
LCB2b2lkKiBpbkNsaWVudERhdGEpCiB7CiAgICAgQVNTRVJUKGluQ2xpZW50RGF0YSk7CiAgICAg
aWYgKCFpbkNsaWVudERhdGEpCiAgICAgICAgIHJldHVybiBub0VycjsKIAotICAgIGF1dG8qIHNl
c3Npb25Qcml2YXRlID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uUHJpdmF0ZSo+KGluQ2xpZW50
RGF0YSk7CisgICAgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvbk1hYyo+
KGluQ2xpZW50RGF0YSk7CiAKICAgICBVSW50MzIgYnVmZmVyU2l6ZTsKICAgICBVSW50MzIgYnVm
ZmVyU2l6ZVNpemUgPSBzaXplb2YoYnVmZmVyU2l6ZSk7CkBAIC0xNTQsMzMgKzEyOSwyMSBAQCBP
U1N0YXR1cyBBdWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlv
T2JqZWN0SUQgZGV2aWNlLCBVSW50MwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICBzZXNzaW9uUHJpdmF0ZS0+YnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7Cisg
ICAgc2Vzc2lvbi0+bV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKICAgICByZXR1cm4gbm9FcnI7
CiB9CiAKLUF1ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShtYWtl
VW5pcXVlPEF1ZGlvU2Vzc2lvblByaXZhdGU+KCkpCi17Ci19Ci0KLUF1ZGlvU2Vzc2lvbjo6fkF1
ZGlvU2Vzc2lvbigpID0gZGVmYXVsdDsKLQotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVk
aW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2F0
ZWdvcnk7Ci19Ci0KLXZvaWQgQXVkaW9TZXNzaW9uOjphdWRpb091dHB1dERldmljZUNoYW5nZWQo
KQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiB7CiAj
aWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCi0gICAgaWYgKCFtX3ByaXZhdGUtPnBsYXlp
bmdUb0JsdWV0b290aCB8fCAqbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggPT0gZGVmYXVs
dERldmljZVRyYW5zcG9ydElzQmx1ZXRvb3RoKCkpCisgICAgaWYgKCFtX3BsYXlpbmdUb0JsdWV0
b290aCB8fCAqbV9wbGF5aW5nVG9CbHVldG9vdGggPT0gZGVmYXVsdERldmljZVRyYW5zcG9ydElz
Qmx1ZXRvb3RoKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0ZS0+cGxheWluZ1Rv
Qmx1ZXRvb3RoID0gV1RGOjpudWxsb3B0OworICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0gV1RG
OjpudWxsb3B0OwogI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdU
b0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQordm9pZCBBdWRpb1Nlc3Np
b25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gdmFs
dWUpCiB7CiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCiAgICAgaXNQbGF5aW5nVG9C
bHVldG9vdGhPdmVycmlkZSA9IHZhbHVlOwpAQCAtMTg5LDI1ICsxNTIsMjUgQEAgdm9pZCBBdWRp
b1Nlc3Npb246OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4g
dmFsdWUpCiAjZW5kaWYKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVn
b3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5KQordm9pZCBBdWRpb1Nlc3Npb25N
YWM6OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5
KQogewogI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGJvb2wgcGxheWluZ1Rv
Qmx1ZXRvb3RoID0gZGVmYXVsdERldmljZVRyYW5zcG9ydElzQmx1ZXRvb3RoKCk7Ci0gICAgaWYg
KGNhdGVnb3J5ID09IG1fcHJpdmF0ZS0+Y2F0ZWdvcnkgJiYgbV9wcml2YXRlLT5wbGF5aW5nVG9C
bHVldG9vdGggJiYgKm1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoID09IHBsYXlpbmdUb0Js
dWV0b290aCkKKyAgICBpZiAoY2F0ZWdvcnkgPT0gbV9jYXRlZ29yeSAmJiBtX3BsYXlpbmdUb0Js
dWV0b290aCAmJiAqbV9wbGF5aW5nVG9CbHVldG9vdGggPT0gcGxheWluZ1RvQmx1ZXRvb3RoKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7Cisg
ICAgbV9jYXRlZ29yeSA9IGNhdGVnb3J5OwogCi0gICAgaWYgKG1fcHJpdmF0ZS0+c2V0dXBBcmJp
dHJhdGlvbk9uZ29pbmcpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRp
b1Nlc3Npb246OnNldENhdGVnb3J5KCkgLSBhIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkg
aXMgc3RpbGwgb25nb2luZyIpOworICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRD
YXRlZ29yeSgpIC0gYSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5IGlzIHN0aWxsIG9uZ29p
bmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9yb3V0aW5nQXJiaXRy
YXRpb25DbGllbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3ByaXZhdGUtPmluUm91
dGluZ0FyYml0cmF0aW9uKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+aW5Sb3V0aW5nQXJiaXRyYXRp
b24gPSBmYWxzZTsKKyAgICBpZiAobV9pblJvdXRpbmdBcmJpdHJhdGlvbikgeworICAgICAgICBt
X2luUm91dGluZ0FyYml0cmF0aW9uID0gZmFsc2U7CiAgICAgICAgIG1fcm91dGluZ0FyYml0cmF0
aW9uQ2xpZW50LT5sZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbigpOwogICAgIH0KIApAQCAtMjE3LDQ0
ICsxODAsMzkgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBj
YXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5KQogICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlv
bkVycm9yID0gQXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5nQXJi
aXRyYXRpb25FcnJvcjsKICAgICB1c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gQXVkaW9TZXNz
aW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOwogCi0gICAg
bV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggPSBwbGF5aW5nVG9CbHVldG9vdGg7Ci0gICAg
bV9wcml2YXRlLT5zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7Ci0gICAgbV9yb3V0aW5n
QXJiaXRyYXRpb25DbGllbnQtPmJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KG1f
cHJpdmF0ZS0+Y2F0ZWdvcnksIFt0aGlzXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3Is
IERlZmF1bHRSb3V0ZUNoYW5nZWQgZGVmYXVsdFJvdXRlQ2hhbmdlZCkgewotICAgICAgICBtX3By
aXZhdGUtPnNldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAgbV9wbGF5aW5nVG9C
bHVldG9vdGggPSBwbGF5aW5nVG9CbHVldG9vdGg7CisgICAgbV9zZXR1cEFyYml0cmF0aW9uT25n
b2luZyA9IHRydWU7CisgICAgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQtPmJlZ2luUm91dGlu
Z0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KG1fY2F0ZWdvcnksIFt0aGlzXSAoUm91dGluZ0FyYml0
cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQgZGVmYXVsdFJvdXRlQ2hhbmdl
ZCkgeworICAgICAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CiAgICAgICAg
IGlmIChlcnJvciAhPSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkg
LSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5OiVzIGZhaWxlZCB3aXRoIGVycm9yICVzIiwg
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcobV9wcml2YXRlLT5jYXRlZ29yeSkuYXNjaWkoKS5k
YXRhKCksIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVycm9yKS5hc2NpaSgpLmRhdGEoKSk7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6
c2V0Q2F0ZWdvcnkoKSAtIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnk6JXMgZmFpbGVkIHdp
dGggZXJyb3IgJXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX2NhdGVnb3J5KS5hc2Np
aSgpLmRhdGEoKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZXJyb3IpLmFzY2lpKCkuZGF0
YSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJpdmF0
ZS0+aW5Sb3V0aW5nQXJiaXRyYXRpb24gPSB0cnVlOworICAgICAgICBtX2luUm91dGluZ0FyYml0
cmF0aW9uID0gdHJ1ZTsKIAogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byByZXNldCBz
YW1wbGUgcmF0ZSBhbmQgYnVmZmVyIHNpemUgZm9yIHRoZSBuZXcgZGVmYXVsdCBkZXZpY2U/CiAg
ICAgICAgIGlmIChkZWZhdWx0Um91dGVDaGFuZ2VkID09IERlZmF1bHRSb3V0ZUNoYW5nZWQ6Olll
cykKLSAgICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAt
IGRlZmF1bHRSb3V0ZUNoYW5nZWQhIik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nl
c3Npb25NYWM6OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0Um91dGVDaGFuZ2VkISIpOwogICAgIH0p
OwogI2Vsc2UKLSAgICBtX3ByaXZhdGUtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgbV9jYXRl
Z29yeSA9IGNhdGVnb3J5OwogI2VuZGlmCiB9CiAKLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBl
IEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlOwotfQotCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit2b2lkIEF1ZGlvU2Vzc2lv
bk1hYzo6c2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiB7Ci0gICAg
aWYgKG1fcHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQorICAgIGlmICht
X2NhdGVnb3J5T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID0gY2F0ZWdvcnk7CisgICAgbV9jYXRlZ29yeU92
ZXJyaWRlID0gY2F0ZWdvcnk7CiAgICAgc2V0Q2F0ZWdvcnkoY2F0ZWdvcnksIFJvdXRlU2hhcmlu
Z1BvbGljeTo6RGVmYXVsdCk7CiB9CiAKLWZsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgp
IGNvbnN0CitmbG9hdCBBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJhdGUoKSBjb25zdAogewotICAg
IGlmICghbV9wcml2YXRlLT5zYW1wbGVSYXRlKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+YWRkU2Ft
cGxlUmF0ZU9ic2VydmVySWZOZWVkZWQoKTsKKyAgICBpZiAoIW1fc2FtcGxlUmF0ZSkgeworICAg
ICAgICBhZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpOwogCiAgICAgICAgIEZsb2F0NjQg
bm9taW5hbFNhbXBsZVJhdGU7CiAgICAgICAgIFVJbnQzMiBub21pbmFsU2FtcGxlUmF0ZVNpemUg
PSBzaXplb2YoRmxvYXQ2NCk7CkBAIC0yNjYsMjUgKzIyNCwyNSBAQCBmbG9hdCBBdWRpb1Nlc3Np
b246OnNhbXBsZVJhdGUoKSBjb25zdAogICAgICAgICB9OwogICAgICAgICBPU1N0YXR1cyByZXN1
bHQgPSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNlKCksICZub21pbmFs
U2FtcGxlUmF0ZUFkZHJlc3MsIDAsIDAsICZub21pbmFsU2FtcGxlUmF0ZVNpemUsICh2b2lkKikm
bm9taW5hbFNhbXBsZVJhdGUpOwogICAgICAgICBpZiAocmVzdWx0ICE9IG5vRXJyKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0
ZSgpIC0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSBmYWlsZWQgd2l0aCBlcnJvciAlZCIs
IHJlc3VsdCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vz
c2lvbk1hYzo6c2FtcGxlUmF0ZSgpIC0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSBmYWls
ZWQgd2l0aCBlcnJvciAlZCIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gNDQxMDA7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX3ByaXZhdGUtPnNhbXBsZVJhdGUgPSBuYXJyb3dQcmVjaXNp
b25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsKLSAgICAgICAgaWYgKCEqbV9wcml2YXRlLT5z
YW1wbGVSYXRlKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlv
U2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIC0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSByZXR1
cm4gYW4gaW52YWxpZCBzYW1wbGUgcmF0ZSIpOwotICAgICAgICAgICAgbV9wcml2YXRlLT5zYW1w
bGVSYXRlID0gNDQxMDA7CisgICAgICAgIG1fc2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOworICAgICAgICBpZiAoISptX3NhbXBsZVJhdGUpIHsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpz
YW1wbGVSYXRlKCkgLSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YSgpIHJldHVybiBhbiBpbnZh
bGlkIHNhbXBsZSByYXRlIik7CisgICAgICAgICAgICBtX3NhbXBsZVJhdGUgPSA0NDEwMDsKICAg
ICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gKm1fcHJpdmF0ZS0+c2FtcGxlUmF0ZTsKKyAgICBy
ZXR1cm4gKm1fc2FtcGxlUmF0ZTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6
ZSgpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjpidWZmZXJTaXplKCkgY29uc3QKIHsK
LSAgICBpZiAobV9wcml2YXRlLT5idWZmZXJTaXplKQotICAgICAgICByZXR1cm4gKm1fcHJpdmF0
ZS0+YnVmZmVyU2l6ZTsKKyAgICBpZiAobV9idWZmZXJTaXplKQorICAgICAgICByZXR1cm4gKm1f
YnVmZmVyU2l6ZTsKIAotICAgIG1fcHJpdmF0ZS0+YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVk
ZWQoKTsKKyAgICBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOwogCiAgICAgVUludDMy
IGJ1ZmZlclNpemU7CiAgICAgVUludDMyIGJ1ZmZlclNpemVTaXplID0gc2l6ZW9mKGJ1ZmZlclNp
emUpOwpAQCAtMjk4LDE4ICsyNTYsMTggQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6
ZSgpIGNvbnN0CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX3By
aXZhdGUtPmJ1ZmZlclNpemUgPSBidWZmZXJTaXplOworICAgIG1fYnVmZmVyU2l6ZSA9IGJ1ZmZl
clNpemU7CiAKICAgICByZXR1cm4gYnVmZmVyU2l6ZTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lv
bjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFj
OjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiAwOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjptYXhpbXVt
TnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiB7CiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0
eUFkZHJlc3Mgc2l6ZUFkZHJlc3MgPSB7CiAgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5U3Ry
ZWFtQ29uZmlndXJhdGlvbiwKQEAgLTMzNSwzMCArMjkzLDMwIEBAIHNpemVfdCBBdWRpb1Nlc3Np
b246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gY2hh
bm5lbHM7CiB9CiAKLWJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJv
b2wpCitib29sIEF1ZGlvU2Vzc2lvbk1hYzo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJvdXRlU2hh
cmluZ1BvbGljeSBBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CitSb3V0
ZVNoYXJpbmdQb2xpY3kgQXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25z
dAogewogICAgIHJldHVybiBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQ7CiB9CiAKLVN0cmlu
ZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKK1N0cmluZyBBdWRpb1Nl
c3Npb25NYWM6OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgp
IGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29u
c3QKIHsKICAgICByZXR1cm4gYnVmZmVyU2l6ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewotICAg
IGlmIChtX3ByaXZhdGUtPmJ1ZmZlclNpemUgPT0gYnVmZmVyU2l6ZSkKKyAgICBpZiAobV9idWZm
ZXJTaXplID09IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvVmFsdWVS
YW5nZSBidWZmZXJTaXplUmFuZ2UgPSB7MCwgMH07CkBAIC0zODQsMTcgKzM0MiwxNyBAQCB2b2lk
IEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkK
ICAgICByZXN1bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNlKCks
ICZwcmVmZXJyZWRCdWZmZXJTaXplQWRkcmVzcywgMCwgMCwgc2l6ZW9mKGJ1ZmZlclNpemVPdXQp
LCAodm9pZCopJmJ1ZmZlclNpemVPdXQpOwogCiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIG1f
cHJpdmF0ZS0+YnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemVPdXQ7CisgICAgICAgIG1fYnVmZmVyU2l6
ZSA9IGJ1ZmZlclNpemVPdXQ7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHJlc3VsdCkK
LSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KCV6dSkgLSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGJ1ZmZlclNpemUsIHN0YXRpY19jYXN0PGlu
dD4ocmVzdWx0KSk7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJl
ZmVycmVkQnVmZmVyU2l6ZSglenUpIC0gZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBidWZmZXJTaXpl
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOwogICAgIGVsc2UKLSAgICAgICAgTE9HKE1lZGlh
LCAiQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkiLCBidWZmZXJTaXpl
KTsKKyAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKCV6dSkiLCBidWZmZXJTaXplKTsKICNlbmRpZgogfQogCi1ib29sIEF1ZGlvU2Vzc2lv
bjo6aXNNdXRlZCgpIGNvbnN0Citib29sIEF1ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCgpIGNvbnN0
CiB7CiAgICAgVUludDMyIG11dGUgPSAwOwogICAgIFVJbnQzMiBtdXRlU2l6ZSA9IHNpemVvZiht
dXRlKTsKQEAgLTQyMCwyMiArMzc4LDE5IEBAIHN0YXRpYyBPU1N0YXR1cyBoYW5kbGVNdXRlUHJv
cGVydHlDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjCiAgICAg
cmV0dXJuIG5vRXJyOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNo
YW5nZSgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7
Ci0gICAgaWYgKCFtX3ByaXZhdGUpCi0gICAgICAgIHJldHVybjsKLQogICAgIGJvb2wgaXNDdXJy
ZW50bHlNdXRlZCA9IGlzTXV0ZWQoKTsKLSAgICBpZiAobV9wcml2YXRlLT5sYXN0TXV0ZWRTdGF0
ZSAmJiAqbV9wcml2YXRlLT5sYXN0TXV0ZWRTdGF0ZSA9PSBpc0N1cnJlbnRseU11dGVkKQorICAg
IGlmIChtX2xhc3RNdXRlZFN0YXRlICYmICptX2xhc3RNdXRlZFN0YXRlID09IGlzQ3VycmVudGx5
TXV0ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX29i
c2VydmVycykKICAgICAgICAgb2JzZXJ2ZXItPmhhcmR3YXJlTXV0ZWRTdGF0ZURpZENoYW5nZSh0
aGlzKTsKIAotICAgIG1fcHJpdmF0ZS0+bGFzdE11dGVkU3RhdGUgPSBpc0N1cnJlbnRseU11dGVk
OworICAgIG1fbGFzdE11dGVkU3RhdGUgPSBpc0N1cnJlbnRseU11dGVkOwogfQogCi12b2lkIEF1
ZGlvU2Vzc2lvbjo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVk
U3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVy
KTsKIApAQCAtNDQ2LDcgKzQwMSw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjphZGRNdXRlZFN0YXRl
T2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICBBdWRpb09iamVjdEFk
ZFByb3BlcnR5TGlzdGVuZXIoZGVmYXVsdERldmljZSgpLCAmbXV0ZUFkZHJlc3MsIGhhbmRsZU11
dGVQcm9wZXJ0eUNoYW5nZSwgdGhpcyk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVN
dXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQXVk
aW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVy
KiBvYnNlcnZlcikKIHsKICAgICBpZiAobV9vYnNlcnZlcnMuc2l6ZSgpID09IDEpIHsKICAgICAg
ICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgbXV0ZUFkZHJlc3MgPSB7IGtBdWRpb0Rldmlj
ZVByb3BlcnR5TXV0ZSwga0F1ZGlvRGV2aWNlUHJvcGVydHlTY29wZU91dHB1dCwga0F1ZGlvT2Jq
ZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyIH07Cg==
</data>
<flag name="commit-queue"
          id="443447"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428545</attachid>
            <date>2021-05-13 12:35:00 -0700</date>
            <delta_ts>2021-05-18 09:18:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223564-20210513123459.patch</filename>
            <type>text/plain</type>
            <size>48259</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3MzkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRhODM0MzE5ODk5YWQ1
Mzg0NWRlOWNlZjUwYzM3NjkxYjAxNTlkNS4uODI3NTU1MTU0MGFlNmZmNTcwZjJjNWQ1ZmM2MmMw
MmVhYWQyM2ZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBOb3cgdGhhdCBBdWRpb1Nlc3Npb24gY2Fu
IGhhdmUgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYXQgcnVudGltZSwgaXQgc2hvdWxk
IGJlIGFuCisgICAgICAgIGFjdHVhbCB2aXJ0dWFsIGNsYXNzLCB3aG9zZSBjb25jcmV0ZSwgcGVy
LXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBhcmUgZGVyaXZhdGlvbnMgb2YgdGhlCisgICAgICAg
IGJhc2UgY2xhc3MuIE1ha2UgQXVkaW9TZXNzaW9uSU9TIGFuZCBBdWRpb1Nlc3Npb25NYWMgdHJ1
ZSBzdWJjbGFzc2VzIG9mIEF1ZGlvU2Vzc2lvbiwgYW5kCisgICAgICAgIGFsbG93IFJlbW90ZUF1
ZGlvU2Vzc2lvbiB0byBkZXJpdmUgZnJvbSB0aGF0IHNhbWUgYmFzZSBjbGFzcyAocmF0aGVyIHRo
YW4gQXVkaW9TZXNzaW9uSU9TCisgICAgICAgIG9yIEF1ZGlvU2Vzc2lvbk1hYykuCisKKyAgICAg
ICAgQWxzbyBlbnN1cmUgQXVkaW9TZXNzaW9uSU9TIG9yIEF1ZGlvU2Vzc2lvbk1hYyBpcyBub3Qg
YWNjaWRlbnRhbGx5IGNyZWF0ZWQgd2hlbiBjYWxsaW5nCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0U2hhcmVkU2Vzc2lvbigpIGJ5IG1ha2luZyB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IGhv
bGRpbmcgdGhlIHNlc3Npb24KKyAgICAgICAgYW4gT3B0aW9uYWwsIGFuZCBvbmx5IGxhemlseSBj
cmVhdGluZyB0aGUgc2Vzc2lvbiBmcm9tIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpIGlm
CisgICAgICAgIG9uZSBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQgYWxyZWFkeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRBdWRpb1Nlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uSU9TOjpjYXRlZ29yeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25J
T1M6OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpwcmVmZXJyZWRC
dWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0
UHJlZmVycmVkQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6
OmlzTXV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6
YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdD
b250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzTXV0ZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRk
SW50ZXJydXB0aW9uT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5T3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNo
YXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpy
b3V0aW5nQ29udGV4dFVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25N
YWM6OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6
aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5T3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnRyeVRvU2V0
QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
Ojpyb3V0ZVNoYXJpbmdQb2xpY3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorCiAyMDIxLTA1
LTEyICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFsgbWFjT1Mg
V2syIF0gbWVkaWEvbWVkaWEtZnJhZ21lbnRzL1RDMDA1MS5odG1sIGlzIGZsYWtleSBjcmFzaGlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDM3NzVkYmE0MDk0YWYxNmY4MGUyYzMxNGY0YTkyMTU2NjM3NzEyYzUuLjIxOTU4M2Fm
NDQxN2VmNWM1MzQ5M2RmNTM2NTEwYzQ4OTU0NzNmZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQzMDYsNiArNDMwNiw3IEBA
CiAJCUNEMzM2RjY3MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZG
NjUxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5jcHAgKi87IH07
CiAJCUNEMzM2RjY4MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzM2RjY2
MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJpdmF0ZUFWRk9iakMuaCAqLzsgfTsKIAkJ
Q0QzNkMxNkIyNjBBNjVDQzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDM2QzE2ODI2MEE2
M0QzMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDRDM2QzE2MjI2MDdFNzg2MDBDOEM1
MjkgLyogQXVkaW9TZXNzaW9uSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVkaW9TZXNzaW9uSU9T
LmggKi87IH07CiAJCUNEM0E0OTVGMTdBOUQwMUIwMDI3NEU0MiAvKiBNZWRpYVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTYxN0E5
RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmggKi87IH07CiAJCUNEM0E0OTYyMTdBOUQwMUIw
MDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEM0E0OTU5MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXIu
aCAqLzsgfTsKIAkJQ0QzQTQ5NjUxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEM0E0OTVD
MTdBOUQwMUIwMDI3NEU0MiAvKiBTb3VyY2VCdWZmZXJMaXN0LmggKi87IH07CkBAIC0xNDg0OCw2
ICsxNDg0OSw4IEBACiAJCUNEMzM2RjY2MTdGQTBBQzYwMERERENEMCAvKiBWaWRlb1RyYWNrUHJp
dmF0ZUFWRk9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9UcmFj
a1ByaXZhdGVBVkZPYmpDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEMzZDMTY4
MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDM2QzE2OTI2MEE2M0Q0MDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3Iu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzNkMxNUYyNjA2N0MxRjAwQzhDNTI5IC8qIEF1
ZGlvU2Vzc2lvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25NYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0QzNkMxNjEyNjA3RTc4NjAwQzhDNTI5IC8qIEF1ZGlv
U2Vzc2lvbklPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1Nlc3Npb25JT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzN0IzNzQxNUMxQTdFMTAwNkRDODk4IC8qIERpYWdub3N0
aWNMb2dnaW5nS2V5cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
aWFnbm9zdGljTG9nZ2luZ0tleXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RDM3QjM3NTE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNMb2dnaW5nS2V5cy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDNBNDk1NTE3QTlEMDFCMDAyNzRFNDIgLyogTWVk
aWFTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFT
b3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjgxNzIsNiArMjgxNzUs
NyBAQAogCQkJCUNENTU5NjhGMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJT1Mu
Y3BwICovLAogCQkJCUNENTU5NjkwMTQ3NUI2NzgwMDFEMEJEMCAvKiBBdWRpb0ZpbGVSZWFkZXJJ
T1MuaCAqLywKIAkJCQlDRDBFRUUwQjE0NzQzRTM1MDAzRUFGQTIgLyogQXVkaW9PdXRwdXRVbml0
QWRhcHRvcklPUy5jcHAgKi8sCisJCQkJQ0QzNkMxNjEyNjA3RTc4NjAwQzhDNTI5IC8qIEF1ZGlv
U2Vzc2lvbklPUy5oICovLAogCQkJCUNEQTc5ODI1MTcwQTI3OTAwMEQ0NUM1NSAvKiBBdWRpb1Nl
c3Npb25JT1MubW0gKi8sCiAJCQkJQ0Q4NzVBNzQyNDExQjc5ODAwQjA5RjU4IC8qIE1lZGlhU2Vz
c2lvbkhlbHBlcklPUy5oICovLAogCQkJCUNEODc1QTc1MjQxMUI3OTgwMEIwOUY1OCAvKiBNZWRp
YVNlc3Npb25IZWxwZXJJT1MubW0gKi8sCkBAIC0zMTI2Nyw2ICszMTI3MSw3IEBACiAJCQkJQ0Qy
RjRBMjUxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1hYy5jcHAgKi8s
CiAJCQkJQ0QyRjRBMjYxOEQ4QTM0OTAwNjM3NDZEIC8qIEF1ZGlvSGFyZHdhcmVMaXN0ZW5lck1h
Yy5oICovLAogCQkJCUZEMzE2MEI2MTJCMDI3MkEwMEMxQTM1OSAvKiBBdWRpb091dHB1dFVuaXRB
ZGFwdG9yTWFjLmNwcCAqLywKKwkJCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1MjkgLyogQXVkaW9T
ZXNzaW9uTWFjLmggKi8sCiAJCQkJQ0Q1NERFNDkxNzQ2OUM2RDAwNUU1QjM2IC8qIEF1ZGlvU2Vz
c2lvbk1hYy5tbSAqLywKIAkJCQlGRDMxNjBCQTEyQjAyNzJBMDBDMUEzNTkgLyogRkZURnJhbWVN
YWMuY3BwICovLAogCQkJCUNEMzZDMTY4MjYwQTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5n
QXJiaXRyYXRvci5oICovLApAQCAtMzE1OTAsNiArMzE1OTUsNyBAQAogCQkJCTA3M0I4NzY5MUU0
Mzg1QUMwMDcxQzBFQyAvKiBBdWRpb1NhbXBsZURhdGFTb3VyY2UuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZEOEM0NkVDMTU0NjA4RTcwMEE1OTEwQyAvKiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNEQTc5ODJBMTcwQTNEMDAwMEQ0NUM1NSAvKiBBdWRpb1Nl
c3Npb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUNEMzZDMTYyMjYwN0U3ODYwMEM4QzUyOSAvKiBB
dWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2MDg5MTJCMDI2RjcwMEMx
QTM1OSAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRDhBN0JC
QzE5NzczNUZFMDBDQkQ2NDMgLyogQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUZENjJGNTJFMTQ1ODk4RDgwMDk0QjBFRCAvKiBBdWRpb1NvdXJjZVByb3Zp
ZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb1Nlc3Npb24uY3BwCmluZGV4IGQyMGQwYzQxNjVmZWY1ZmE1YWZmYmY2OWFhMTVm
ZjdkMmQ2OTU5OTcuLjMwYmU5ZTQ5MzNmOTZkMDE2ZmI0NzMxMzZiNjBlNGVmNzQ1NmVkMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcApAQCAt
MzEsMjIgKzMxLDQxIEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJBdWRp
b1Nlc3Npb25NYWMuaCIKKyNlbmRpZgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbmNs
dWRlICJBdWRpb1Nlc3Npb25JT1MuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPiYgc2hhcmVkQXVkaW9TZXNzaW9uKCkKK3N0
YXRpYyBPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4mIHNoYXJlZEF1ZGlvU2Vzc2lv
bigpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+
PiBzZXNzaW9uID0gQXVkaW9TZXNzaW9uOjpjcmVhdGUoKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8T3B0aW9uYWw8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4+PiBzZXNzaW9uOwogICAgIHJl
dHVybiBzZXNzaW9uLmdldCgpOwogfQogCiBVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPiBBdWRpb1Nl
c3Npb246OmNyZWF0ZSgpCiB7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBtYWtlVW5p
cXVlUmVmPEF1ZGlvU2Vzc2lvbk1hYz4oKTsKKyNlbGlmIFBMQVRGT1JNKElPU19GQU1JTFkpCisg
ICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QXVkaW9TZXNzaW9uSU9TPigpOworI2Vsc2UKICAgICBy
ZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+KCk7CisjZW5kaWYKIH0KIAorQXVkaW9T
ZXNzaW9uOjpBdWRpb1Nlc3Npb24oKSA9IGRlZmF1bHQ7CitBdWRpb1Nlc3Npb246On5BdWRpb1Nl
c3Npb24oKSA9IGRlZmF1bHQ7CisKIEF1ZGlvU2Vzc2lvbiYgQXVkaW9TZXNzaW9uOjpzaGFyZWRT
ZXNzaW9uKCkKIHsKLSAgICByZXR1cm4gc2hhcmVkQXVkaW9TZXNzaW9uKCk7CisgICAgaWYgKCFz
aGFyZWRBdWRpb1Nlc3Npb24oKSkKKyAgICAgICAgc2hhcmVkQXVkaW9TZXNzaW9uKCkgPSBBdWRp
b1Nlc3Npb246OmNyZWF0ZSgpOworICAgIHJldHVybiAqc2hhcmVkQXVkaW9TZXNzaW9uKCk7CiB9
CiAKIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRTaGFyZWRTZXNzaW9uKFVuaXF1ZVJlZjxBdWRpb1Nl
c3Npb24+JiYgc2Vzc2lvbikKQEAgLTYzLDM3ICs4MiwyNiBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6
dHJ5VG9TZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKIHZvaWQgQXVkaW9TZXNzaW9uOjphZGRJbnRlcnJ1cHRpb25P
YnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpCiB7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVy
cnVwdGlvbk9ic2VydmVyJikKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIEF1
ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKIHZvaWQgQXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKQotewot
fQotI2VuZGlmCi0KLSNpZiAhUExBVEZPUk0oQ09DT0EpCi1jbGFzcyBBdWRpb1Nlc3Npb25Qcml2
YXRlIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLX07Ci0KLUF1ZGlvU2Vzc2lvbjo6
QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShudWxscHRyKQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLUF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lvbigpID0gZGVmYXVsdDsK
LQogdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVTaGFy
aW5nUG9saWN5KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xNjcsOSArMTc1LDYgQEAg
U3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGluZ0NvbnRleHRVSUQoKSBjb25zdAogICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwogfQogCi0jZW5kaWYgLy8gIVBMQVRGT1JNKENPQ09BKQotCi0jaWYg
IVBMQVRGT1JNKE1BQykKIHZvaWQgQXVkaW9TZXNzaW9uOjphdWRpb091dHB1dERldmljZUNoYW5n
ZWQoKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkBAIC0xNzksOCArMTg0LDYgQEAgdm9pZCBB
dWRpb1Nlc3Npb246OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9v
bD4pCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09D
T0EpCi0KIAogU3RyaW5nIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKFJvdXRlU2hhcmluZ1Bv
bGljeSBlbnVtZXJhdGlvblZhbHVlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9BdWRpb1Nlc3Npb24uaAppbmRleCBhMGQ4YWEyOTk0NTFkODFjYjI2NmE0NjMyZjY2N2Q4Y2Qw
YTcwOTYxLi5lOWFkYWRlMmE4N2JmZWNkM2NhM2Q2ZDk0MWUzM2EwZDJlYzI2NGZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaApAQCAtMzgsOCArMzgs
NiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGU7
Ci0KIGVudW0gY2xhc3MgUm91dGVTaGFyaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAgRGVmYXVs
dCwKICAgICBMb25nRm9ybUF1ZGlvLApAQCAtNzIsOCArNzAsOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVTaGFyaW5nUG9saWN5KTsK
ICAgICB2aXJ0dWFsIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNvbnN0OwogCi0gICAgdm9pZCBz
ZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSk7Ci0gICAgQ2F0ZWdvcnlUeXBlIGNhdGVn
b3J5T3ZlcnJpZGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2F0ZWdvcnlPdmVycmlk
ZShDYXRlZ29yeVR5cGUpOworICAgIHZpcnR1YWwgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5T3ZlcnJp
ZGUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmlu
Z1BvbGljeSgpIGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkg
Y29uc3Q7CkBAIC05NSwxOCArOTMsMTggQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFyZHdhcmVNdXRlZFN0YXRlRGlkQ2hhbmdlKEF1ZGlvU2Vzc2lvbiopID0gMDsKICAgICB9Owog
Ci0gICAgdm9pZCBhZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7Ci0g
ICAgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKik7Cisg
ICAgdmlydHVhbCB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3Rh
dGVPYnNlcnZlciopIHsgfQogCi0gICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsK
LSAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4p
OworICAgIHZpcnR1YWwgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29sPik7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCk7CisgICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hh
bmdlKCkgeyB9CiAKLSAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCk7CisgICAgdmlydHVhbCB2
b2lkIGJlZ2luSW50ZXJydXB0aW9uKCk7CiAgICAgZW51bSBjbGFzcyBNYXlSZXN1bWUgeyBObywg
WWVzIH07Ci0gICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5kSW50ZXJydXB0aW9uKE1heVJlc3VtZSk7CiAKICAgICBjbGFzcyBJbnRlcnJ1cHRp
b25PYnNlcnZlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxJbnRlcnJ1cHRpb25PYnNlcnZlcj4g
ewogICAgIHB1YmxpYzoKQEAgLTExNSwxMiArMTEzLDEyIEBAIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZW5kQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKE1heVJlc3VtZSkgPSAwOwog
ICAgIH07Ci0gICAgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNl
cnZlciYpOwotICAgIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9u
T2JzZXJ2ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50
ZXJydXB0aW9uT2JzZXJ2ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9u
T2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CiAKLSAgICB2b2lkIHNldFJvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudChXZWFrUHRyPEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJhdGlvbkNs
aWVudD4mJiBjbGllbnQpIHsgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQgPSBjbGllbnQ7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Um91dGluZ0FyYml0cmF0aW9uQ2xpZW50KFdlYWtQdHI8QXVk
aW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50PiYmIGNsaWVudCkgeyBtX3JvdXRpbmdB
cmJpdHJhdGlvbkNsaWVudCA9IGNsaWVudDsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPEF1ZGlvU2Vzc2lvbj47CkBAIC0xMjgsNyArMTI2LDYgQEAgcHJv
dGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIHRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCk7
CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TZXNzaW9uUHJpdmF0ZT4gbV9wcml2YXRlOwog
ICAgIEhhc2hTZXQ8TXV0ZWRTdGF0ZU9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBXZWFrSGFzaFNldDxJbnRlcnJ1cHRpb25PYnNlcnZlcj4gbV9p
bnRlcnJ1cHRpb25PYnNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg5OTU5MjBjZjNlNjVlODcy
ZmJiNTAxN2RmMjAzNTFiZTk1MjgzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApAQCAtMCwwICsxLDc0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorCitPQkpDX0NM
QVNTIFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyOworCituYW1lc3BhY2UgV1RGIHsKK2Ns
YXNzIFdvcmtRdWV1ZTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Nl
c3Npb25JT1MgZmluYWwgOiBwdWJsaWMgQXVkaW9TZXNzaW9uIHsKK3B1YmxpYzoKKyAgICBBdWRp
b1Nlc3Npb25JT1MoKTsKKyAgICB2aXJ0dWFsIH5BdWRpb1Nlc3Npb25JT1MoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBBdWRpb1Nlc3Npb24KKyAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5KENhdGVnb3J5VHlwZSwgUm91dGVTaGFyaW5n
UG9saWN5KSBmaW5hbDsKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeU92
ZXJyaWRlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVn
b3J5VHlwZSkgZmluYWw7CisgICAgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsOworICAg
IHNpemVfdCBidWZmZXJTaXplKCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IG51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbWF4aW11bU51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIHRyeVRvU2V0QWN0aXZlSW50ZXJu
YWwoYm9vbCkgZmluYWw7CisgICAgUm91dGVTaGFyaW5nUG9saWN5IHJvdXRlU2hhcmluZ1BvbGlj
eSgpIGNvbnN0IGZpbmFsOworICAgIFN0cmluZyByb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0IGZp
bmFsOworICAgIHNpemVfdCBwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCkgZmluYWw7CisgICAgYm9vbCBpc011
dGVkKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkgZmlu
YWw7CisgICAgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZl
ciYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0
aW9uT2JzZXJ2ZXImKSBmaW5hbDsKKyAgICB2b2lkIGJlZ2luSW50ZXJydXB0aW9uKCkgZmluYWw7
CisgICAgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKSBmaW5hbDsKKworICAgIEF1ZGlv
U2Vzc2lvbklPUzo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZSB7IEF1ZGlvU2Vzc2lv
bjo6Tm9uZSB9OworICAgIFJlZlB0cjxXVEY6OldvcmtRdWV1ZT4gbV93b3JrUXVldWU7CisgICAg
UmV0YWluUHRyPFdlYkludGVycnVwdGlvbk9ic2VydmVySGVscGVyPiBtX2ludGVycnVwdGlvbk9i
c2VydmVySGVscGVyOworfTsKKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCmluZGV4IDY5ZDFmYTY2NTM4
YjE1ODhhYWQ0NDVjYTQxZWRhNTI1NmYwYTZmNzUuLmJlYzdjMTdjYmEzM2UzYTcyZjYxYjhjNGFl
NmIxYzI0NmFmMzEyZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQXVkaW9TZXNzaW9uLmgiCisjaW1wb3J0ICJBdWRpb1Nl
c3Npb25JT1MuaCIKIAogI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQTEFURk9STShJT1NfRkFN
SUxZKQogCkBAIC05Niw0MCArOTYsMTkgQEAgQGVuZAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwotcHVibGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9u
Kik7Ci0gICAgfkF1ZGlvU2Vzc2lvblByaXZhdGUoKTsKLQotICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0
ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZTsKLSAgICBSZWZQdHI8V29ya1F1ZXVlPiBtX3dv
cmtRdWV1ZTsKLSAgICBSZXRhaW5QdHI8V2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI+IG1f
aW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI7Ci19OwotCi1BdWRpb1Nlc3Npb25Qcml2YXRlOjpB
dWRpb1Nlc3Npb25Qcml2YXRlKEF1ZGlvU2Vzc2lvbiogc2Vzc2lvbikKLSAgICA6IG1fY2F0ZWdv
cnlPdmVycmlkZShBdWRpb1Nlc3Npb246Ok5vbmUpCitBdWRpb1Nlc3Npb25JT1M6OkF1ZGlvU2Vz
c2lvbklPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0gICAgbV9pbnRl
cnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMoW1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZl
ckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazpzZXNzaW9uXSk7CisgICAgbV9pbnRlcnJ1
cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMoW1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhl
bHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0aGlzXSk7CiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUwogfQogCi1BdWRpb1Nlc3Npb25Qcml2YXRlOjp+QXVkaW9TZXNzaW9uUHJpdmF0
ZSgpCitBdWRpb1Nlc3Npb25JT1M6On5BdWRpb1Nlc3Npb25JT1MoKQogewogICAgIFttX2ludGVy
cnVwdGlvbk9ic2VydmVySGVscGVyIGNsZWFyQ2FsbGJhY2tdOwogfQogCi1BdWRpb1Nlc3Npb246
OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Q
cml2YXRlPih0aGlzKSkKLXsKLX0KLQotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkKLXsK
LX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBuZXdDYXRl
Z29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGljeSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjpz
ZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBw
b2xpY3kpCiB7CiAjaWYgIUhBVkUoUk9VVEVfU0hBUklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVP
KQogICAgIGlmIChwb2xpY3kgPT0gUm91dGVTaGFyaW5nUG9saWN5OjpMb25nRm9ybVZpZGVvKQpA
QCAtMTgwLDcgKzE1OSw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29y
eVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpCiAjZW5kaWYKIH0KIAot
QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0
CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5KCkg
Y29uc3QKIHsKICAgICBOU1N0cmluZyAqY2F0ZWdvcnlTdHJpbmcgPSBbW1BBTDo6Z2V0QVZBdWRp
b1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBjYXRlZ29yeV07CiAgICAgaWYgKFtjYXRl
Z29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNzaW9uQ2F0ZWdvcnlBbWJpZW50XSkKQEAgLTE5
OCw3ICsxNzcsNyBAQCBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNh
dGVnb3J5KCkgY29uc3QKICAgICByZXR1cm4gTm9uZTsKIH0KIAotUm91dGVTaGFyaW5nUG9saWN5
IEF1ZGlvU2Vzc2lvbjo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKK1JvdXRlU2hhcmluZ1Bv
bGljeSBBdWRpb1Nlc3Npb25JT1M6OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CiB7CiAgICAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxzaXplX3Q+KFJvdXRlU2hhcmluZ1BvbGljeTo6RGVm
YXVsdCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihBVkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1Bv
bGljeURlZmF1bHQpLCAiUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0IGlzIG5vdCBBVkF1ZGlv
U2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeURlZmF1bHQgYXMgZXhwZWN0ZWQiKTsKICNpZiBIQVZF
KFJPVVRFX1NIQVJJTkdfUE9MSUNZX0xPTkdfRk9STV9WSURFTykKQEAgLTIxNiw3ICsxOTUsNyBA
QCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Um91dGVTaGFyaW5nUG9saWN5Pihwb2xpY3kpOwogfQogCi1TdHJpbmcgQXVkaW9TZXNzaW9u
Ojpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CitTdHJpbmcgQXVkaW9TZXNzaW9uSU9TOjpyb3V0
aW5nQ29udGV4dFVJRCgpIGNvbnN0CiB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxB
VE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpICYmICFQTEFURk9STShXQVRDSE9TKQogICAg
IHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBy
b3V0aW5nQ29udGV4dFVJRF07CkBAIC0yMjUsNTEgKzIwNCw1MSBAQCBTdHJpbmcgQXVkaW9TZXNz
aW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotdm9pZCBBdWRpb1Nl
c3Npb246OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQordm9pZCBB
dWRpb1Nlc3Npb25JT1M6OnNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5
KQogewotICAgIGlmIChtX3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkK
KyAgICBpZiAobV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5OworICAgIG1f
Y2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5OwogICAgIHNldENhdGVnb3J5KGNhdGVnb3J5LCBS
b3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQpOwogfQogCi1BdWRpb1Nlc3Npb246OkNhdGVnb3J5
VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAorQXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uSU9TOjpjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGU7CisgICAgcmV0dXJu
IG1fY2F0ZWdvcnlPdmVycmlkZTsKIH0KIAotZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRl
KCkgY29uc3QKK2Zsb2F0IEF1ZGlvU2Vzc2lvbklPUzo6c2FtcGxlUmF0ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2Vd
IHNhbXBsZVJhdGVdOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29u
c3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6OmJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJl
dHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBJT0J1
ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6
bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uSU9TOjpu
dW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6OmdldEFW
QXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVs
c107CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6Om1heGltdW1OdW1iZXJPZk91dHB1
dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9u
Q2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gbWF4aW11bU91dHB1dE51bWJlck9mQ2hhbm5lbHNdOwog
fQogCi1ib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sIGFjdGl2
ZSkKK2Jvb2wgQXVkaW9TZXNzaW9uSU9TOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0
aXZlKQogewotICAgIGlmICghbV9wcml2YXRlLT5tX3dvcmtRdWV1ZSkKLSAgICAgICAgbV9wcml2
YXRlLT5tX3dvcmtRdWV1ZSA9IFdvcmtRdWV1ZTo6Y3JlYXRlKCJBdWRpb1Nlc3Npb24gQWN0aXZh
dGlvbiBRdWV1ZSIpOworICAgIGlmICghbV93b3JrUXVldWUpCisgICAgICAgIG1fd29ya1F1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7CiAK
ICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZhdGUgdGhlIHNlc3Npb24gb24gYW5vdGhlciBxdWV1
ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lvblNldEFjdGl2ZU9wdGlvbk5vdGlmeU90aGVyc09u
RGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8vIG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Npb24gbWF5
IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZpb3VzbHkgZHVja2VkIGNsaWVudHMuIEFjdGl2YXRp
b24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3JlIHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0dXJucywg
c28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAgaWYg
KGFjdGl2ZSkgewogICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbV9wcml2
YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3VjY2Vzc10geworICAgICAgICBtX3dv
cmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3VjY2Vzc10gewogICAgICAgICAgICAgTlNFcnJvciAq
ZXJyb3IgPSBuaWw7CiAgICAgICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygp
IHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6WUVTIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9y
XTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSAhZXJyb3I7CkBAIC0yNzcsNyArMjU2LDcgQEAgYm9v
bCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAg
ICAgIHJldHVybiBzdWNjZXNzOwogICAgIH0KIAotICAgIG1fcHJpdmF0ZS0+bV93b3JrUXVldWUt
PmRpc3BhdGNoKFtdIHsKKyAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW10gewogICAgICAgICBO
U0Vycm9yICplcnJvciA9IG5pbDsKICAgICAgICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xh
c3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0aXZlOk5PIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVy
cm9yXTsKICAgICB9KTsKQEAgLTI4NSwxMiArMjY0LDEyIEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0
cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3NpemVf
dCBBdWRpb1Nlc3Npb25JT1M6OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJl
dHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBwcmVm
ZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUoKTsKIH0KIAotdm9pZCBBdWRpb1Nl
c3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCit2b2lkIEF1
ZGlvU2Vzc2lvbklPUzo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkK
IHsKICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZl
clNpemUgLyBzYW1wbGVSYXRlKCk7CkBAIC0yOTgsMzIgKzI3NywzMiBAQCB2b2lkIEF1ZGlvU2Vz
c2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKICAgICBBU1NF
UlQoIWVycm9yKTsKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb246OmlzTXV0ZWQoKSBjb25zdAorYm9v
bCBBdWRpb1Nlc3Npb25JT1M6OmlzTXV0ZWQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQordm9pZCBB
dWRpb1Nlc3Npb25JT1M6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQogewogfQogCi12b2lkIEF1
ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXIm
IG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmFkZEludGVycnVwdGlvbk9ic2VydmVy
KEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX2ludGVycnVwdGlvbk9i
c2VydmVycy5hZGQob2JzZXJ2ZXIpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50
ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBB
dWRpb1Nlc3Npb25JT1M6OnJlbW92ZUludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5yZW1vdmUo
b2JzZXJ2ZXIpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQor
dm9pZCBBdWRpb1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKCkKIHsKICAgICBmb3IgKGF1
dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVy
LmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0aW9uKCk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9u
OjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lIG1heVJlc3VtZSkKK3ZvaWQgQXVkaW9TZXNzaW9u
SU9TOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lIG1heVJlc3VtZSkKIHsKICAgICBmb3IgKGF1
dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRpb25PYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVy
LmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlvbihtYXlSZXN1bWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjgzY2ZiODNmMTExZjc3MTNjYWU3ZGM1ZTY0ZjE4MGI1ZGQyZjE1YTQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmgK
QEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFV
RElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5o
IgorCit0eXBlZGVmIFVJbnQzMiBBdWRpb09iamVjdElEOwordHlwZWRlZiBzdHJ1Y3QgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3M7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVkaW9TZXNzaW9uTWFjIGZpbmFsIDogcHVibGljIEF1
ZGlvU2Vzc2lvbiB7CitwdWJsaWM6CisgICAgQXVkaW9TZXNzaW9uTWFjKCkgPSBkZWZhdWx0Owor
ICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbk1hYygpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkgY29uc3Q7CisgICAgdm9pZCBh
ZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0OworCisgICAgc3RhdGljIE9TU3Rh
dHVzIGhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBB
dWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7CisgICAgc3Rh
dGljIE9TU3RhdHVzIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMy
LCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7
CisKKyAgICAvLyBBdWRpb1Nlc3Npb24KKyAgICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5OyB9CisgICAgdm9pZCBhdWRpb091dHB1dERldmlj
ZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJp
ZGUoT3B0aW9uYWw8Ym9vbD4pIGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlU
eXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kpIGZpbmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIGNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5
T3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKSBm
aW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IGJ1
ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBtYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKSBm
aW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3Qg
ZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QgZmluYWw7CisgICAg
c2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIGlzTXV0ZWQoKSBjb25z
dCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKSBmaW5hbDsKKyAgICB2
b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKKyAg
ICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5h
bDsKKworICAgIE9wdGlvbmFsPGJvb2w+IG1fbGFzdE11dGVkU3RhdGU7CisgICAgQXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeSB7IEF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OworI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQorICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9u
T25nb2luZyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2luUm91dGluZ0FyYml0cmF0aW9uIHsgZmFs
c2UgfTsKKyAgICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aDsKKyAgICBPcHRp
b25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOworI2VuZGlmCisgICAgQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOworICAgIG11dGFibGUg
Ym9vbCBtX2hhc1NhbXBsZVJhdGVPYnNlcnZlciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29s
IG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIE9wdGlvbmFs
PGRvdWJsZT4gbV9zYW1wbGVSYXRlOworICAgIG11dGFibGUgT3B0aW9uYWw8c2l6ZV90PiBtX2J1
ZmZlclNpemU7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0KaW5kZXggY2E3MTA0OTk3NjJlNWE0
ZmI4ZDA4YjU4YzQ4YzU2MTUzOGI4YzFkOS4uZTE0ZDg4NDBmMjRjZmFkNzhmYjUzN2IwNzM3OWEy
M2VlOTIzMzhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9t
YWMvQXVkaW9TZXNzaW9uTWFjLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAi
Y29uZmlnLmgiCi0jaW1wb3J0ICJBdWRpb1Nlc3Npb24uaCIKKyNpbXBvcnQgIkF1ZGlvU2Vzc2lv
bk1hYy5oIgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1BQykKIApAQCAt
ODIsMzcgKzgyLDExIEBAIHN0YXRpYyBmbG9hdCBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVl
dG9vdGgoKQogfQogI2VuZGlmCiAKLWNsYXNzIEF1ZGlvU2Vzc2lvblByaXZhdGUgewotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU2Vzc2lv
blByaXZhdGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNlcnZlcklm
TmVlZGVkKCk7Ci0gICAgdm9pZCBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOwotCi0g
ICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCwg
VUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50
RGF0YSk7Ci0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9P
YmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQq
IGluQ2xpZW50RGF0YSk7Ci0KLSAgICBPcHRpb25hbDxib29sPiBsYXN0TXV0ZWRTdGF0ZTsKLSAg
ICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29yeSB7IEF1ZGlvU2Vzc2lvbjo6Tm9u
ZSB9OwotI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQotICAgIGJvb2wgc2V0dXBBcmJp
dHJhdGlvbk9uZ29pbmcgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGJvb2w+IHBsYXlpbmdUb0Js
dWV0b290aDsKLSAgICBPcHRpb25hbDxib29sPiBwbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZTsK
LSNlbmRpZgotICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlk
ZTsKLSAgICBib29sIGluUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKLSAgICBib29sIGhh
c1NhbXBsZVJhdGVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNCdWZmZXJTaXplT2Jz
ZXJ2ZXIgeyBmYWxzZSB9OwotICAgIE9wdGlvbmFsPGRvdWJsZT4gc2FtcGxlUmF0ZTsKLSAgICBP
cHRpb25hbDxzaXplX3Q+IGJ1ZmZlclNpemU7Ci19OwotCi12b2lkIEF1ZGlvU2Vzc2lvblByaXZh
dGU6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFj
OjphZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKGhhc1Nh
bXBsZVJhdGVPYnNlcnZlcikKKyAgICBpZiAobV9oYXNTYW1wbGVSYXRlT2JzZXJ2ZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICBoYXNTYW1wbGVSYXRlT2JzZXJ2ZXIgPSB0cnVlOworICAgIG1faGFz
U2FtcGxlUmF0ZU9ic2VydmVyID0gdHJ1ZTsKIAogICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRy
ZXNzIG5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcyA9IHsKICAgICAgICAga0F1ZGlvRGV2aWNlUHJv
cGVydHlOb21pbmFsU2FtcGxlUmF0ZSwKQEAgLTEyMSwxNiArOTUsMTYgQEAgdm9pZCBBdWRpb1Nl
c3Npb25Qcml2YXRlOjphZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpCiAgICAgICAgIGtB
dWRpb09iamVjdFByb3BlcnR5RWxlbWVudE1hc3RlcgogICAgICAgICBBTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKICAgICB9OwotICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0
ZW5lcihkZWZhdWx0RGV2aWNlKCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIGhhbmRsZVNh
bXBsZVJhdGVDaGFuZ2UsIHRoaXMpOworICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5l
cihkZWZhdWx0RGV2aWNlKCksICZub21pbmFsU2FtcGxlUmF0ZUFkZHJlc3MsIGhhbmRsZVNhbXBs
ZVJhdGVDaGFuZ2UsIGNvbnN0X2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4odGhpcykpOwogfQogCi1P
U1N0YXR1cyBBdWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlv
T2JqZWN0SUQgZGV2aWNlLCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNz
KiBzYW1wbGVSYXRlQWRkcmVzcywgdm9pZCogaW5DbGllbnREYXRhKQorT1NTdGF0dXMgQXVkaW9T
ZXNzaW9uTWFjOjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBV
SW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiBzYW1wbGVSYXRlQWRkcmVz
cywgdm9pZCogaW5DbGllbnREYXRhKQogewogICAgIEFTU0VSVChpbkNsaWVudERhdGEpOwogICAg
IGlmICghaW5DbGllbnREYXRhKQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKLSAgICBhdXRvKiBz
ZXNzaW9uUHJpdmF0ZSA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvblByaXZhdGUqPihpbkNsaWVu
dERhdGEpOworICAgIGF1dG8qIHNlc3Npb24gPSBzdGF0aWNfY2FzdDxBdWRpb1Nlc3Npb25NYWMq
PihpbkNsaWVudERhdGEpOwogCiAgICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKICAgICBV
SW50MzIgbm9taW5hbFNhbXBsZVJhdGVTaXplID0gc2l6ZW9mKEZsb2F0NjQpOwpAQCAtMTM4LDE0
ICsxMTIsMTUgQEAgT1NTdGF0dXMgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMKICAgICBpZiAocmVzdWx0KQogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgc2Vzc2lvblByaXZhdGUtPnNhbXBsZVJhdGUgPSBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsKKyAgICBzZXNzaW9uLT5t
X3NhbXBsZVJhdGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1wbGVSYXRlKTsK
ICAgICByZXR1cm4gbm9FcnI7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVm
ZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZl
clNpemVPYnNlcnZlcklmTmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAoaGFzQnVmZmVyU2l6ZU9i
c2VydmVyKQorICAgIGlmIChtX2hhc0J1ZmZlclNpemVPYnNlcnZlcikKICAgICAgICAgcmV0dXJu
OworICAgIG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyID0gdHJ1ZTsKIAogICAgIEF1ZGlvT2JqZWN0
UHJvcGVydHlBZGRyZXNzIGJ1ZmZlclNpemVBZGRyZXNzID0gewogICAgICAgICBrQXVkaW9EZXZp
Y2VQcm9wZXJ0eUJ1ZmZlckZyYW1lU2l6ZSwKQEAgLTE1NCwxNiArMTI5LDE2IEBAIHZvaWQgQXVk
aW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKQogICAgICAg
ICBrQXVkaW9PYmplY3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIKICAgICAgICAgQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgfTsKLSAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5
TGlzdGVuZXIoZGVmYXVsdERldmljZSgpLCAmYnVmZmVyU2l6ZUFkZHJlc3MsIGhhbmRsZUJ1ZmZl
clNpemVDaGFuZ2UsIHRoaXMpOworICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihk
ZWZhdWx0RGV2aWNlKCksICZidWZmZXJTaXplQWRkcmVzcywgaGFuZGxlQnVmZmVyU2l6ZUNoYW5n
ZSwgY29uc3RfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPih0aGlzKSk7CiB9CiAKLU9TU3RhdHVzIEF1
ZGlvU2Vzc2lvblByaXZhdGU6OmhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCBk
ZXZpY2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIGJ1ZmZlclNp
emVBZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEpCitPU1N0YXR1cyBBdWRpb1Nlc3Npb25NYWM6
OmhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzMiwgY29u
c3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIGJ1ZmZlclNpemVBZGRyZXNzLCB2b2lkKiBp
bkNsaWVudERhdGEpCiB7CiAgICAgQVNTRVJUKGluQ2xpZW50RGF0YSk7CiAgICAgaWYgKCFpbkNs
aWVudERhdGEpCiAgICAgICAgIHJldHVybiBub0VycjsKIAotICAgIGF1dG8qIHNlc3Npb25Qcml2
YXRlID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uUHJpdmF0ZSo+KGluQ2xpZW50RGF0YSk7Cisg
ICAgYXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvbk1hYyo+KGluQ2xpZW50
RGF0YSk7CiAKICAgICBVSW50MzIgYnVmZmVyU2l6ZTsKICAgICBVSW50MzIgYnVmZmVyU2l6ZVNp
emUgPSBzaXplb2YoYnVmZmVyU2l6ZSk7CkBAIC0xNzEsMzMgKzE0NiwyMSBAQCBPU1N0YXR1cyBB
dWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQg
ZGV2aWNlLCBVSW50MwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBzZXNzaW9uUHJpdmF0ZS0+YnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CisgICAgc2Vzc2lv
bi0+bV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKICAgICByZXR1cm4gbm9FcnI7CiB9CiAKLUF1
ZGlvU2Vzc2lvbjo6QXVkaW9TZXNzaW9uKCkKLSAgICA6IG1fcHJpdmF0ZShtYWtlVW5pcXVlPEF1
ZGlvU2Vzc2lvblByaXZhdGU+KCkpCi17Ci19Ci0KLUF1ZGlvU2Vzc2lvbjo6fkF1ZGlvU2Vzc2lv
bigpID0gZGVmYXVsdDsKLQotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9u
OjpjYXRlZ29yeSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2F0ZWdvcnk7Ci19
Ci0KLXZvaWQgQXVkaW9TZXNzaW9uOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQordm9pZCBB
dWRpb1Nlc3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCiB7CiAjaWYgRU5BQkxF
KFJPVVRJTkdfQVJCSVRSQVRJT04pCi0gICAgaWYgKCFtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0
b290aCB8fCAqbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggPT0gZGVmYXVsdERldmljZVRy
YW5zcG9ydElzQmx1ZXRvb3RoKCkpCisgICAgaWYgKCFtX3BsYXlpbmdUb0JsdWV0b290aCB8fCAq
bV9wbGF5aW5nVG9CbHVldG9vdGggPT0gZGVmYXVsdERldmljZVRyYW5zcG9ydElzQmx1ZXRvb3Ro
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3Ro
ID0gV1RGOjpudWxsb3B0OworICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0gV1RGOjpudWxsb3B0
OwogI2VuZGlmCiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJc1BsYXlpbmdUb0JsdWV0b290
aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNl
dElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCiB7CiAj
aWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCiAgICAgaXNQbGF5aW5nVG9CbHVldG9vdGhP
dmVycmlkZSA9IHZhbHVlOwpAQCAtMjA2LDI1ICsxNjksMjUgQEAgdm9pZCBBdWRpb1Nlc3Npb246
OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4gdmFsdWUpCiAj
ZW5kaWYKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBj
YXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5KQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldENh
dGVnb3J5KENhdGVnb3J5VHlwZSBjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5KQogewogI2lm
IEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGJvb2wgcGxheWluZ1RvQmx1ZXRvb3Ro
ID0gZGVmYXVsdERldmljZVRyYW5zcG9ydElzQmx1ZXRvb3RoKCk7Ci0gICAgaWYgKGNhdGVnb3J5
ID09IG1fcHJpdmF0ZS0+Y2F0ZWdvcnkgJiYgbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGgg
JiYgKm1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoID09IHBsYXlpbmdUb0JsdWV0b290aCkK
KyAgICBpZiAoY2F0ZWdvcnkgPT0gbV9jYXRlZ29yeSAmJiBtX3BsYXlpbmdUb0JsdWV0b290aCAm
JiAqbV9wbGF5aW5nVG9CbHVldG9vdGggPT0gcGxheWluZ1RvQmx1ZXRvb3RoKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgbV9jYXRl
Z29yeSA9IGNhdGVnb3J5OwogCi0gICAgaWYgKG1fcHJpdmF0ZS0+c2V0dXBBcmJpdHJhdGlvbk9u
Z29pbmcpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246
OnNldENhdGVnb3J5KCkgLSBhIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkgaXMgc3RpbGwg
b25nb2luZyIpOworICAgIGlmIChtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7CisgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSgp
IC0gYSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5IGlzIHN0aWxsIG9uZ29pbmciKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghbV9yb3V0aW5nQXJiaXRyYXRpb25DbGll
bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtX3ByaXZhdGUtPmluUm91dGluZ0FyYml0
cmF0aW9uKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+aW5Sb3V0aW5nQXJiaXRyYXRpb24gPSBmYWxz
ZTsKKyAgICBpZiAobV9pblJvdXRpbmdBcmJpdHJhdGlvbikgeworICAgICAgICBtX2luUm91dGlu
Z0FyYml0cmF0aW9uID0gZmFsc2U7CiAgICAgICAgIG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50
LT5sZWF2ZVJvdXRpbmdBYnJpdHJhdGlvbigpOwogICAgIH0KIApAQCAtMjM0LDQ0ICsxOTcsMzkg
QEAgdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KENhdGVnb3J5VHlwZSBjYXRlZ29yeSwg
Um91dGVTaGFyaW5nUG9saWN5KQogICAgIHVzaW5nIFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yID0g
QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9uQ2xpZW50OjpSb3V0aW5nQXJiaXRyYXRpb25F
cnJvcjsKICAgICB1c2luZyBEZWZhdWx0Um91dGVDaGFuZ2VkID0gQXVkaW9TZXNzaW9uUm91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50OjpEZWZhdWx0Um91dGVDaGFuZ2VkOwogCi0gICAgbV9wcml2YXRl
LT5wbGF5aW5nVG9CbHVldG9vdGggPSBwbGF5aW5nVG9CbHVldG9vdGg7Ci0gICAgbV9wcml2YXRl
LT5zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRydWU7Ci0gICAgbV9yb3V0aW5nQXJiaXRyYXRp
b25DbGllbnQtPmJlZ2luUm91dGluZ0FyYml0cmF0aW9uV2l0aENhdGVnb3J5KG1fcHJpdmF0ZS0+
Y2F0ZWdvcnksIFt0aGlzXSAoUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgZXJyb3IsIERlZmF1bHRS
b3V0ZUNoYW5nZWQgZGVmYXVsdFJvdXRlQ2hhbmdlZCkgewotICAgICAgICBtX3ByaXZhdGUtPnNl
dHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CisgICAgbV9wbGF5aW5nVG9CbHVldG9vdGgg
PSBwbGF5aW5nVG9CbHVldG9vdGg7CisgICAgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IHRy
dWU7CisgICAgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQtPmJlZ2luUm91dGluZ0FyYml0cmF0
aW9uV2l0aENhdGVnb3J5KG1fY2F0ZWdvcnksIFt0aGlzXSAoUm91dGluZ0FyYml0cmF0aW9uRXJy
b3IgZXJyb3IsIERlZmF1bHRSb3V0ZUNoYW5nZWQgZGVmYXVsdFJvdXRlQ2hhbmdlZCkgeworICAg
ICAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gZmFsc2U7CiAgICAgICAgIGlmIChlcnJv
ciAhPSBSb3V0aW5nQXJiaXRyYXRpb25FcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkgLSBiZWdpbkFy
Yml0cmF0aW9uV2l0aENhdGVnb3J5OiVzIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcobV9wcml2YXRlLT5jYXRlZ29yeSkuYXNjaWkoKS5kYXRhKCksIGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGVycm9yKS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdv
cnkoKSAtIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnk6JXMgZmFpbGVkIHdpdGggZXJyb3Ig
JXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX2NhdGVnb3J5KS5hc2NpaSgpLmRhdGEo
KSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoZXJyb3IpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJpdmF0ZS0+aW5Sb3V0
aW5nQXJiaXRyYXRpb24gPSB0cnVlOworICAgICAgICBtX2luUm91dGluZ0FyYml0cmF0aW9uID0g
dHJ1ZTsKIAogICAgICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byByZXNldCBzYW1wbGUgcmF0
ZSBhbmQgYnVmZmVyIHNpemUgZm9yIHRoZSBuZXcgZGVmYXVsdCBkZXZpY2U/CiAgICAgICAgIGlm
IChkZWZhdWx0Um91dGVDaGFuZ2VkID09IERlZmF1bHRSb3V0ZUNoYW5nZWQ6OlllcykKLSAgICAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1bHRS
b3V0ZUNoYW5nZWQhIik7CisgICAgICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6
OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0Um91dGVDaGFuZ2VkISIpOwogICAgIH0pOwogI2Vsc2UK
LSAgICBtX3ByaXZhdGUtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7CisgICAgbV9jYXRlZ29yeSA9IGNh
dGVnb3J5OwogI2VuZGlmCiB9CiAKLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vz
c2lvbjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
bV9jYXRlZ29yeU92ZXJyaWRlOwotfQotCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnlP
dmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0
Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiB7Ci0gICAgaWYgKG1fcHJp
dmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQorICAgIGlmIChtX2NhdGVnb3J5
T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0ZS0+
bV9jYXRlZ29yeU92ZXJyaWRlID0gY2F0ZWdvcnk7CisgICAgbV9jYXRlZ29yeU92ZXJyaWRlID0g
Y2F0ZWdvcnk7CiAgICAgc2V0Q2F0ZWdvcnkoY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeTo6
RGVmYXVsdCk7CiB9CiAKLWZsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0Citm
bG9hdCBBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJhdGUoKSBjb25zdAogewotICAgIGlmICghbV9w
cml2YXRlLT5zYW1wbGVSYXRlKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+YWRkU2FtcGxlUmF0ZU9i
c2VydmVySWZOZWVkZWQoKTsKKyAgICBpZiAoIW1fc2FtcGxlUmF0ZSkgeworICAgICAgICBhZGRT
YW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpOwogCiAgICAgICAgIEZsb2F0NjQgbm9taW5hbFNh
bXBsZVJhdGU7CiAgICAgICAgIFVJbnQzMiBub21pbmFsU2FtcGxlUmF0ZVNpemUgPSBzaXplb2Yo
RmxvYXQ2NCk7CkBAIC0yODUsMjUgKzI0MywyNSBAQCBmbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBs
ZVJhdGUoKSBjb25zdAogICAgICAgICB9OwogICAgICAgICBPU1N0YXR1cyByZXN1bHQgPSBBdWRp
b09iamVjdEdldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNlKCksICZub21pbmFsU2FtcGxlUmF0
ZUFkZHJlc3MsIDAsIDAsICZub21pbmFsU2FtcGxlUmF0ZVNpemUsICh2b2lkKikmbm9taW5hbFNh
bXBsZVJhdGUpOwogICAgICAgICBpZiAocmVzdWx0ICE9IG5vRXJyKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIC0gQXVk
aW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIHJlc3VsdCk7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6
c2FtcGxlUmF0ZSgpIC0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSBmYWlsZWQgd2l0aCBl
cnJvciAlZCIsIHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gNDQxMDA7CiAgICAgICAgIH0K
IAotICAgICAgICBtX3ByaXZhdGUtPnNhbXBsZVJhdGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0
KG5vbWluYWxTYW1wbGVSYXRlKTsKLSAgICAgICAgaWYgKCEqbV9wcml2YXRlLT5zYW1wbGVSYXRl
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6
c2FtcGxlUmF0ZSgpIC0gQXVkaW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSByZXR1cm4gYW4gaW52
YWxpZCBzYW1wbGUgcmF0ZSIpOwotICAgICAgICAgICAgbV9wcml2YXRlLT5zYW1wbGVSYXRlID0g
NDQxMDA7CisgICAgICAgIG1fc2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9t
aW5hbFNhbXBsZVJhdGUpOworICAgICAgICBpZiAoISptX3NhbXBsZVJhdGUpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRl
KCkgLSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YSgpIHJldHVybiBhbiBpbnZhbGlkIHNhbXBs
ZSByYXRlIik7CisgICAgICAgICAgICBtX3NhbXBsZVJhdGUgPSA0NDEwMDsKICAgICAgICAgfQog
ICAgIH0KLSAgICByZXR1cm4gKm1fcHJpdmF0ZS0+c2FtcGxlUmF0ZTsKKyAgICByZXR1cm4gKm1f
c2FtcGxlUmF0ZTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSgpIGNvbnN0
CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjpidWZmZXJTaXplKCkgY29uc3QKIHsKLSAgICBpZiAo
bV9wcml2YXRlLT5idWZmZXJTaXplKQotICAgICAgICByZXR1cm4gKm1fcHJpdmF0ZS0+YnVmZmVy
U2l6ZTsKKyAgICBpZiAobV9idWZmZXJTaXplKQorICAgICAgICByZXR1cm4gKm1fYnVmZmVyU2l6
ZTsKIAotICAgIG1fcHJpdmF0ZS0+YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKTsKKyAg
ICBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOwogCiAgICAgVUludDMyIGJ1ZmZlclNp
emU7CiAgICAgVUludDMyIGJ1ZmZlclNpemVTaXplID0gc2l6ZW9mKGJ1ZmZlclNpemUpOwpAQCAt
MzIwLDE4ICsyNzgsMTggQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSgpIGNvbnN0
CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX3ByaXZhdGUtPmJ1
ZmZlclNpemUgPSBidWZmZXJTaXplOworICAgIG1fYnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CiAK
ICAgICByZXR1cm4gYnVmZmVyU2l6ZTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bnVtYmVy
T2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjpudW1iZXJP
Zk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJl
dHVybiAwOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0CitzaXplX3QgQXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0CiB7CiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mg
c2l6ZUFkZHJlc3MgPSB7CiAgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5U3RyZWFtQ29uZmln
dXJhdGlvbiwKQEAgLTM1OSwzMCArMzE3LDMwIEBAIHNpemVfdCBBdWRpb1Nlc3Npb246Om1heGlt
dW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKICAgICByZXR1cm4gY2hhbm5lbHM7CiB9
CiAKLWJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wpCitib29s
IEF1ZGlvU2Vzc2lvbk1hYzo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVJvdXRlU2hhcmluZ1BvbGlj
eSBBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CitSb3V0ZVNoYXJpbmdQ
b2xpY3kgQXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAogewogICAg
IHJldHVybiBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQ7CiB9CiAKLVN0cmluZyBBdWRpb1Nl
c3Npb246OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKK1N0cmluZyBBdWRpb1Nlc3Npb25NYWM6
OnJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0Citz
aXplX3QgQXVkaW9TZXNzaW9uTWFjOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gYnVmZmVyU2l6ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpz
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewotICAgIGlmIChtX3By
aXZhdGUtPmJ1ZmZlclNpemUgPT0gYnVmZmVyU2l6ZSkKKyAgICBpZiAobV9idWZmZXJTaXplID09
IGJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybjsKIAogICAgIEF1ZGlvVmFsdWVSYW5nZSBidWZm
ZXJTaXplUmFuZ2UgPSB7MCwgMH07CkBAIC00MTMsMTcgKzM3MSwxNyBAQCB2b2lkIEF1ZGlvU2Vz
c2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKICAgICByZXN1
bHQgPSBBdWRpb09iamVjdFNldFByb3BlcnR5RGF0YShkZWZhdWx0RGV2aWNlKCksICZwcmVmZXJy
ZWRCdWZmZXJTaXplQWRkcmVzcywgMCwgMCwgc2l6ZW9mKGJ1ZmZlclNpemVPdXQpLCAodm9pZCop
JmJ1ZmZlclNpemVPdXQpOwogCiAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIG1fcHJpdmF0ZS0+
YnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemVPdXQ7CisgICAgICAgIG1fYnVmZmVyU2l6ZSA9IGJ1ZmZl
clNpemVPdXQ7CiAKICNpZiAhTE9HX0RJU0FCTEVECiAgICAgaWYgKHJlc3VsdCkKLSAgICAgICAg
TE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkgLSBm
YWlsZWQgd2l0aCBlcnJvciAlZCIsIGJ1ZmZlclNpemUsIHN0YXRpY19jYXN0PGludD4ocmVzdWx0
KSk7CisgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJlZmVycmVkQnVm
ZmVyU2l6ZSglenUpIC0gZmFpbGVkIHdpdGggZXJyb3IgJWQiLCBidWZmZXJTaXplLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3VsdCkpOwogICAgIGVsc2UKLSAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9T
ZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkiLCBidWZmZXJTaXplKTsKKyAgICAg
ICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6
dSkiLCBidWZmZXJTaXplKTsKICNlbmRpZgogfQogCi1ib29sIEF1ZGlvU2Vzc2lvbjo6aXNNdXRl
ZCgpIGNvbnN0Citib29sIEF1ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCgpIGNvbnN0CiB7CiAgICAg
VUludDMyIG11dGUgPSAwOwogICAgIFVJbnQzMiBtdXRlU2l6ZSA9IHNpemVvZihtdXRlKTsKQEAg
LTQ1NSwyMiArNDEzLDE5IEBAIHN0YXRpYyBPU1N0YXR1cyBoYW5kbGVNdXRlUHJvcGVydHlDaGFu
Z2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjCiAgICAgcmV0dXJuIG5v
RXJyOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCit2
b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7Ci0gICAgaWYg
KCFtX3ByaXZhdGUpCi0gICAgICAgIHJldHVybjsKLQogICAgIGJvb2wgaXNDdXJyZW50bHlNdXRl
ZCA9IGlzTXV0ZWQoKTsKLSAgICBpZiAobV9wcml2YXRlLT5sYXN0TXV0ZWRTdGF0ZSAmJiAqbV9w
cml2YXRlLT5sYXN0TXV0ZWRTdGF0ZSA9PSBpc0N1cnJlbnRseU11dGVkKQorICAgIGlmIChtX2xh
c3RNdXRlZFN0YXRlICYmICptX2xhc3RNdXRlZFN0YXRlID09IGlzQ3VycmVudGx5TXV0ZWQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX29ic2VydmVycykK
ICAgICAgICAgb2JzZXJ2ZXItPmhhcmR3YXJlTXV0ZWRTdGF0ZURpZENoYW5nZSh0aGlzKTsKIAot
ICAgIG1fcHJpdmF0ZS0+bGFzdE11dGVkU3RhdGUgPSBpc0N1cnJlbnRseU11dGVkOworICAgIG1f
bGFzdE11dGVkU3RhdGUgPSBpc0N1cnJlbnRseU11dGVkOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lv
bjo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCit2
b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgbV9vYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKIApAQCAt
NDg3LDcgKzQ0Miw3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIo
TXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5
TGlzdGVuZXIoZGVmYXVsdERldmljZSgpLCAmbXV0ZUFkZHJlc3MsIGhhbmRsZU11dGVQcm9wZXJ0
eUNoYW5nZSwgdGhpcyk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRl
T2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQXVkaW9TZXNzaW9u
TWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZl
cikKIHsKICAgICBpZiAobV9vYnNlcnZlcnMuc2l6ZSgpID09IDEpIHsKICAgICAgICAgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3MgbXV0ZUFkZHJlc3MgPSB7Cg==
</data>
<flag name="commit-queue"
          id="449933"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428943</attachid>
            <date>2021-05-18 08:55:08 -0700</date>
            <delta_ts>2021-05-18 09:18:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223564-20210518085507.patch</filename>
            <type>text/plain</type>
            <size>48303</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMzZmNTVmZmYxYzcy
ZmJjOGNkZGNjOWRhMDkzNTU5MzdjMGI1ZC4uNzI1YjRhMjAzOTA3ZmNiN2RkYTJjMzQ4Nzk2NWE2
OTlmODY5YjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBOb3cgdGhhdCBBdWRpb1Nlc3Npb24gY2Fu
IGhhdmUgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYXQgcnVudGltZSwgaXQgc2hvdWxk
IGJlIGFuCisgICAgICAgIGFjdHVhbCB2aXJ0dWFsIGNsYXNzLCB3aG9zZSBjb25jcmV0ZSwgcGVy
LXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBhcmUgZGVyaXZhdGlvbnMgb2YgdGhlCisgICAgICAg
IGJhc2UgY2xhc3MuIE1ha2UgQXVkaW9TZXNzaW9uSU9TIGFuZCBBdWRpb1Nlc3Npb25NYWMgdHJ1
ZSBzdWJjbGFzc2VzIG9mIEF1ZGlvU2Vzc2lvbiwgYW5kCisgICAgICAgIGFsbG93IFJlbW90ZUF1
ZGlvU2Vzc2lvbiB0byBkZXJpdmUgZnJvbSB0aGF0IHNhbWUgYmFzZSBjbGFzcyAocmF0aGVyIHRo
YW4gQXVkaW9TZXNzaW9uSU9TCisgICAgICAgIG9yIEF1ZGlvU2Vzc2lvbk1hYykuCisKKyAgICAg
ICAgQWxzbyBlbnN1cmUgQXVkaW9TZXNzaW9uSU9TIG9yIEF1ZGlvU2Vzc2lvbk1hYyBpcyBub3Qg
YWNjaWRlbnRhbGx5IGNyZWF0ZWQgd2hlbiBjYWxsaW5nCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0U2hhcmVkU2Vzc2lvbigpIGJ5IG1ha2luZyB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IGhv
bGRpbmcgdGhlIHNlc3Npb24KKyAgICAgICAgYW4gT3B0aW9uYWwsIGFuZCBvbmx5IGxhemlseSBj
cmVhdGluZyB0aGUgc2Vzc2lvbiBmcm9tIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpIGlm
CisgICAgICAgIG9uZSBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQgYWxyZWFkeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRBdWRpb1Nlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uSU9TOjpjYXRlZ29yeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25J
T1M6OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpwcmVmZXJyZWRC
dWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0
UHJlZmVycmVkQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6
OmlzTXV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6
YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdD
b250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzTXV0ZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRk
SW50ZXJydXB0aW9uT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5T3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNo
YXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpy
b3V0aW5nQ29udGV4dFVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25N
YWM6OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6
aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5T3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnRyeVRvU2V0
QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
Ojpyb3V0ZVNoYXJpbmdQb2xpY3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorCiAyMDIxLTA1
LTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhU2Vz
c2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlbid0IHRyZWF0ZWQgYXMgaGF2aW5nIGEgdXNlciBnZXN0
dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYmViMTg4YTAwYjFiZDk4YmVlOTQ2ZjVmZDAwY2E1ODU1ZjVhNDhhZC4uZjAyZGZl
ZGNjNDI3OTU4Y2E2YTVmODE2NjFhM2VkZmUyOTkxNmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMxMSw2ICs0MzExLDcg
QEAKIAkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMz
NkY2NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLzsg
fTsKIAkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZG
NjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9Owog
CQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTY4MjYw
QTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEMzZDMTYyMjYwN0U3ODYwMEM4
QzUyOSAvKiBBdWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMzZDMTYxMjYwN0U3ODYwMEM4QzUyOSAvKiBBdWRpb1Nlc3Npb25J
T1MuaCAqLzsgfTsKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAx
QjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZl
ci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5
NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCAqLzsgfTsKQEAgLTE0ODU0
LDYgKzE0ODU1LDggQEAKIAkJQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzNkMx
NjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEMzZDMTY5MjYwQTYzRDQwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1MjkgLyog
QXVkaW9TZXNzaW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbklPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTU1MTdBOUQwMUIwMDI3NEU0MiAvKiBN
ZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODE5Niw2ICsyODE5
OSw3IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5oICovLAogCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCAqLywKKwkJCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFT
ZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTMxMjc0LDYgKzMxMjc4LDcgQEAKIAkJCQlD
RDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAq
LywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWFjLmggKi8sCiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3JNYWMuY3BwICovLAorCQkJCUNEMzZDMTVGMjYwNjdDMUYwMEM4QzUyOSAvKiBBdWRp
b1Nlc3Npb25NYWMuaCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9T
ZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCiAJCQkJQ0QzNkMxNjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggKi8sCkBAIC0zMTU5Nyw2ICszMTYwMiw3IEBACiAJCQkJMDczQjg3Njkx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzNkMxNjIyNjA3RTc4NjAwQzhDNTI5IC8q
IEF1ZGlvU2Vzc2lvbklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODkxMkIwMjZGNzAw
QzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEE3
QkJDMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ2MkY1MkUxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggZjdhM2ViMGU3ZGZkNWNkZGZlZTBmYzFjNzMw
MDM1OGMxNjczOWVmNi4uOGU2ODZlNDQ3YjliNjZkY2U4YWI3ZTIxMzcxNGZkZTYwZTkzYmI1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC0zMSwyMiArMzEsNDEgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkF1
ZGlvU2Vzc2lvbk1hYy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbklPUy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+JiBzaGFyZWRBdWRpb1Nlc3Npb24oKQor
c3RhdGljIE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+PiYgc2hhcmVkQXVkaW9TZXNz
aW9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lv
bj4+IHNlc3Npb24gPSBBdWRpb1Nlc3Npb246OmNyZWF0ZSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4+IHNlc3Npb247CiAgICAg
cmV0dXJuIHNlc3Npb24uZ2V0KCk7CiB9CiAKIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+IEF1ZGlv
U2Vzc2lvbjo6Y3JlYXRlKCkKIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8QXVkaW9TZXNzaW9uTWFjPigpOworI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb1Nlc3Npb25JT1M+KCk7CisjZWxzZQogICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4oKTsKKyNlbmRpZgogfQogCitBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpID0gZGVmYXVsdDsKK0F1ZGlvU2Vzc2lvbjo6fkF1ZGlv
U2Vzc2lvbigpID0gZGVmYXVsdDsKKwogQXVkaW9TZXNzaW9uJiBBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKQogewotICAgIHJldHVybiBzaGFyZWRBdWRpb1Nlc3Npb24oKTsKKyAgICBpZiAo
IXNoYXJlZEF1ZGlvU2Vzc2lvbigpKQorICAgICAgICBzaGFyZWRBdWRpb1Nlc3Npb24oKSA9IEF1
ZGlvU2Vzc2lvbjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICpzaGFyZWRBdWRpb1Nlc3Npb24oKTsK
IH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OnNldFNoYXJlZFNlc3Npb24oVW5pcXVlUmVmPEF1ZGlv
U2Vzc2lvbj4mJiBzZXNzaW9uKQpAQCAtNjMsMzcgKzgyLDI2IEBAIGJvb2wgQXVkaW9TZXNzaW9u
Ojp0cnlUb1NldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlv
bk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJikKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50
ZXJydXB0aW9uT2JzZXJ2ZXImKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQg
QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCiB7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpCi17
Ci19Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShDT0NPQSkKLWNsYXNzIEF1ZGlvU2Vzc2lvblBy
aXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotfTsKLQotQXVkaW9TZXNzaW9u
OjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKG51bGxwdHIpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0
OwotCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNo
YXJpbmdQb2xpY3kpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE2Nyw5ICsxNzUsNiBA
QCBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCi0KLSNp
ZiAhUExBVEZPUk0oTUFDKQogdm9pZCBBdWRpb1Nlc3Npb246OmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE3OSw4ICsxODQsNiBAQCB2b2lk
IEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxi
b29sPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQotI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKLQogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUm91dGVTaGFyaW5n
UG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDFkY2NlM2ExMjhiOTdlYTg4YzIyMmI4M2EwNmQzODQx
OWIyYTY5MzQuLmI4ZjdkMzBmN2Q2NTEwOGRiM2QwYjczNjk4ODk3ZTMwNjBmOThiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC0zOCw4ICsz
OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZTsKLQogZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBEZWZh
dWx0LAogICAgIExvbmdGb3JtQXVkaW8sCkBAIC03Miw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kp
OwogICAgIHZpcnR1YWwgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKTsKLSAgICBDYXRlZ29yeVR5cGUgY2F0
ZWdvcnlPdmVycmlkZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXRlZ29yeU92ZXJy
aWRlKENhdGVnb3J5VHlwZSk7CisgICAgdmlydHVhbCBDYXRlZ29yeVR5cGUgY2F0ZWdvcnlPdmVy
cmlkZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFy
aW5nUG9saWN5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQo
KSBjb25zdDsKQEAgLTk1LDE4ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBoYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UoQXVkaW9TZXNzaW9uKikgPSAwOwogICAgIH07
CiAKLSAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
LSAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZl
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRT
dGF0ZU9ic2VydmVyKikgeyB9CiAKLSAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgp
OwotICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
Pik7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc011dGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkU3RhdGVD
aGFuZ2UoKSB7IH0KIAotICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKICAgICBlbnVtIGNsYXNzIE1heVJlc3VtZSB7IE5v
LCBZZXMgfTsKLSAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpOworICAgIHZpcnR1
YWwgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKTsKIAogICAgIGNsYXNzIEludGVycnVw
dGlvbk9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEludGVycnVwdGlvbk9ic2VydmVy
PiB7CiAgICAgcHVibGljOgpAQCAtMTE1LDEyICsxMTMsMTIgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oTWF5UmVzdW1lKSA9IDA7
CiAgICAgfTsKLSAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJ
bnRlcnJ1cHRpb25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpOwogCiAgICAgdmlydHVhbCBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Um91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50KFdlYWtQdHI8QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9u
Q2xpZW50PiYmIGNsaWVudCkgeyBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCA9IGNsaWVudDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRSb3V0aW5nQXJiaXRyYXRpb25DbGllbnQoV2Vha1B0cjxB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ+JiYgY2xpZW50KSB7IG1fcm91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50ID0gY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPjsKQEAgLTEyOCw3ICsxMjYsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29s
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nlc3Npb25Qcml2YXRlPiBtX3ByaXZhdGU7
CiAgICAgSGFzaFNldDxNdXRlZFN0YXRlT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFdlYWtIYXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBt
X2ludGVycnVwdGlvbk9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ODk5NTkyMGNmM2U2NWU4
NzJmYmI1MDE3ZGYyMDM1MWJlOTUyODM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKK09CSkNf
Q0xBU1MgV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlv
U2Vzc2lvbklPUyBmaW5hbCA6IHB1YmxpYyBBdWRpb1Nlc3Npb24geworcHVibGljOgorICAgIEF1
ZGlvU2Vzc2lvbklPUygpOworICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbklPUygpOworCitwcml2
YXRlOgorICAgIC8vIEF1ZGlvU2Vzc2lvbgorICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJp
bmdQb2xpY3kpIGZpbmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5
T3ZlcnJpZGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0
ZWdvcnlUeXBlKSBmaW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWw7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBtYXhpbXVtTnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRl
cm5hbChib29sKSBmaW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9s
aWN5KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3Qg
ZmluYWw7CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIGlz
TXV0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKSBm
aW5hbDsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2Vy
dmVyJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1
cHRpb25PYnNlcnZlciYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKSBmaW5h
bDsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpIGZpbmFsOworCisgICAgQXVk
aW9TZXNzaW9uSU9TOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNz
aW9uOjpOb25lIH07CisgICAgUmVmUHRyPFdURjo6V29ya1F1ZXVlPiBtX3dvcmtRdWV1ZTsKKyAg
ICBSZXRhaW5QdHI8V2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI+IG1faW50ZXJydXB0aW9u
T2JzZXJ2ZXJIZWxwZXI7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KaW5kZXggYjNkNDM4ZWFk
MzE5ZTkzYjFlNWNiYWI5MjY3MmMwZjM4NTU2MWE0Ny4uOWQ1ZDAxNDhiZDkxNGM4ODcyOWExNzJh
ZGRlZGEwMjA3NTRiM2FlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVk
aW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2lt
cG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdWRpb1Nlc3Npb24uaCIKKyNpbXBvcnQgIkF1ZGlv
U2Vzc2lvbklPUy5oIgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAKQEAgLTk2LDQwICs5NiwxOSBAQCBAZW5kCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Np
b24qKTsKLSAgICB+QXVkaW9TZXNzaW9uUHJpdmF0ZSgpOwotCi0gICAgQXVkaW9TZXNzaW9uOjpD
YXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwotICAgIFJlZlB0cjxXb3JrUXVldWU+IG1f
d29ya1F1ZXVlOwotICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4g
bV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKLX07Ci0KLUF1ZGlvU2Vzc2lvblByaXZhdGU6
OkF1ZGlvU2Vzc2lvblByaXZhdGUoQXVkaW9TZXNzaW9uKiBzZXNzaW9uKQotICAgIDogbV9jYXRl
Z29yeU92ZXJyaWRlKEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpOb25lKQorQXVkaW9TZXNz
aW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MoKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUwotICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgPSBhZG9wdE5TKFtbV2ViSW50
ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6c2Vzc2lvbl0p
OworICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXIgPSBhZG9wdE5TKFtbV2ViSW50ZXJy
dXB0aW9uT2JzZXJ2ZXJIZWxwZXIgYWxsb2NdIGluaXRXaXRoQ2FsbGJhY2s6dGhpc10pOwogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKIH0KIAotQXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1
ZGlvU2Vzc2lvblByaXZhdGUoKQorQXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKCkK
IHsKICAgICBbbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBjbGVhckNhbGxiYWNrXTsKIH0K
IAotQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKG1ha2VVbmlx
dWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4odGhpcykpCi17Ci19Ci0KLUF1ZGlvU2Vzc2lvbjo6fkF1
ZGlvU2Vzc2lvbigpCi17Ci19Ci0KLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRl
Z29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCit2b2lkIEF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIG5ld0NhdGVnb3J5LCBSb3V0
ZVNoYXJpbmdQb2xpY3kgcG9saWN5KQogewogI2lmICFIQVZFKFJPVVRFX1NIQVJJTkdfUE9MSUNZ
X0xPTkdfRk9STV9WSURFTykKICAgICBpZiAocG9saWN5ID09IFJvdXRlU2hhcmluZ1BvbGljeTo6
TG9uZ0Zvcm1WaWRlbykKQEAgLTE4MCw3ICsxNTksNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0
Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIG5ld0NhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kgcG9s
aQogI2VuZGlmCiB9CiAKLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6
Y2F0ZWdvcnkoKSBjb25zdAorQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9u
SU9TOjpjYXRlZ29yeSgpIGNvbnN0CiB7CiAgICAgTlNTdHJpbmcgKmNhdGVnb3J5U3RyaW5nID0g
W1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gY2F0ZWdvcnld
OwogICAgIGlmIChbY2F0ZWdvcnlTdHJpbmcgaXNFcXVhbDpBVkF1ZGlvU2Vzc2lvbkNhdGVnb3J5
QW1iaWVudF0pCkBAIC0xOTgsNyArMTc3LDcgQEAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUg
QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CiAgICAgcmV0dXJuIENhdGVnb3J5VHlwZTo6
Tm9uZTsKIH0KIAotUm91dGVTaGFyaW5nUG9saWN5IEF1ZGlvU2Vzc2lvbjo6cm91dGVTaGFyaW5n
UG9saWN5KCkgY29uc3QKK1JvdXRlU2hhcmluZ1BvbGljeSBBdWRpb1Nlc3Npb25JT1M6OnJvdXRl
U2hhcmluZ1BvbGljeSgpIGNvbnN0CiB7CiAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDxz
aXplX3Q+KFJvdXRlU2hhcmluZ1BvbGljeTo6RGVmYXVsdCkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90
PihBVkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeURlZmF1bHQpLCAiUm91dGVTaGFyaW5n
UG9saWN5OjpEZWZhdWx0IGlzIG5vdCBBVkF1ZGlvU2Vzc2lvblJvdXRlU2hhcmluZ1BvbGljeURl
ZmF1bHQgYXMgZXhwZWN0ZWQiKTsKICNpZiBIQVZFKFJPVVRFX1NIQVJJTkdfUE9MSUNZX0xPTkdf
Rk9STV9WSURFTykKQEAgLTIxNiw3ICsxOTUsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Um91dGVTaGFyaW5nUG9saWN5Pihwb2xp
Y3kpOwogfQogCi1TdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0
CitTdHJpbmcgQXVkaW9TZXNzaW9uSU9TOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiB7CiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpICYmICFQTEFURk9STShXQVRDSE9TKQogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nl
c3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSByb3V0aW5nQ29udGV4dFVJRF07CkBAIC0yMjUs
NTEgKzIwNCw1MSBAQCBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNv
bnN0CiAjZW5kaWYKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5T3ZlcnJpZGUo
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OnNldENhdGVnb3J5
T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogewotICAgIGlmIChtX3ByaXZhdGUtPm1f
Y2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkKKyAgICBpZiAobV9jYXRlZ29yeU92ZXJyaWRl
ID09IGNhdGVnb3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPm1fY2F0ZWdv
cnlPdmVycmlkZSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5
OwogICAgIHNldENhdGVnb3J5KGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQp
OwogfQogCi1BdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5
T3ZlcnJpZGUoKSBjb25zdAorQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9u
SU9TOjpjYXRlZ29yeU92ZXJyaWRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5t
X2NhdGVnb3J5T3ZlcnJpZGU7CisgICAgcmV0dXJuIG1fY2F0ZWdvcnlPdmVycmlkZTsKIH0KIAot
ZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgY29uc3QKK2Zsb2F0IEF1ZGlvU2Vzc2lv
bklPUzo6c2FtcGxlUmF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRBVkF1ZGlv
U2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHNhbXBsZVJhdGVdOwogfQogCi1zaXplX3Qg
QXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6
OmJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Np
b25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBJT0J1ZmZlckR1cmF0aW9uXSAqIHNhbXBsZVJhdGUo
KTsKIH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNv
bnN0CitzaXplX3QgQXVkaW9TZXNzaW9uSU9TOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29u
c3QKIHsKICAgICByZXR1cm4gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJ
bnN0YW5jZV0gb3V0cHV0TnVtYmVyT2ZDaGFubmVsc107CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Np
b246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nl
c3Npb25JT1M6Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gbWF4
aW11bU91dHB1dE51bWJlck9mQ2hhbm5lbHNdOwogfQogCi1ib29sIEF1ZGlvU2Vzc2lvbjo6dHJ5
VG9TZXRBY3RpdmVJbnRlcm5hbChib29sIGFjdGl2ZSkKK2Jvb2wgQXVkaW9TZXNzaW9uSU9TOjp0
cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQogewotICAgIGlmICghbV9wcml2YXRl
LT5tX3dvcmtRdWV1ZSkKLSAgICAgICAgbV9wcml2YXRlLT5tX3dvcmtRdWV1ZSA9IFdvcmtRdWV1
ZTo6Y3JlYXRlKCJBdWRpb1Nlc3Npb24gQWN0aXZhdGlvbiBRdWV1ZSIpOworICAgIGlmICghbV93
b3JrUXVldWUpCisgICAgICAgIG1fd29ya1F1ZXVlID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlv
U2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7CiAKICAgICAvLyBXZSBuZWVkIHRvIGRlYWN0aXZh
dGUgdGhlIHNlc3Npb24gb24gYW5vdGhlciBxdWV1ZSBiZWNhdXNlIHRoZSBBVkF1ZGlvU2Vzc2lv
blNldEFjdGl2ZU9wdGlvbk5vdGlmeU90aGVyc09uRGVhY3RpdmF0aW9uIG9wdGlvbgogICAgIC8v
IG1lYW5zIHRoYXQgQVZBdWRpb1Nlc3Npb24gbWF5IHN5bmNocm9ub3VzbHkgdW5kdWNrIHByZXZp
b3VzbHkgZHVja2VkIGNsaWVudHMuIEFjdGl2YXRpb24gbmVlZHMgdG8gY29tcGxldGUgYmVmb3Jl
IHRoaXMgbWV0aG9kCiAgICAgLy8gcmV0dXJucywgc28gZG8gaXQgc3luY2hyb25vdXNseSBvbiB0
aGUgc2FtZSBzZXJpYWwgcXVldWUuCiAgICAgaWYgKGFjdGl2ZSkgewogICAgICAgICBib29sIHN1
Y2Nlc3MgPSBmYWxzZTsKLSAgICAgICAgbV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hT
eW5jKFsmc3VjY2Vzc10geworICAgICAgICBtX3dvcmtRdWV1ZS0+ZGlzcGF0Y2hTeW5jKFsmc3Vj
Y2Vzc10gewogICAgICAgICAgICAgTlNFcnJvciAqZXJyb3IgPSBuaWw7CiAgICAgICAgICAgICBb
W1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBzZXRBY3RpdmU6
WUVTIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKICAgICAgICAgICAgIHN1Y2Nlc3MgPSAh
ZXJyb3I7CkBAIC0yNzcsNyArMjU2LDcgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAgICAgIHJldHVybiBzdWNjZXNzOwogICAgIH0K
IAotICAgIG1fcHJpdmF0ZS0+bV93b3JrUXVldWUtPmRpc3BhdGNoKFtdIHsKKyAgICBtX3dvcmtR
dWV1ZS0+ZGlzcGF0Y2goW10gewogICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAgICAg
ICAgW1tQQUw6OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2V0QWN0
aXZlOk5PIHdpdGhPcHRpb25zOjAgZXJyb3I6JmVycm9yXTsKICAgICB9KTsKQEAgLTI4NSwxMiAr
MjY0LDEyIEBAIGJvb2wgQXVkaW9TZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wg
YWN0aXZlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpwcmVm
ZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6OnByZWZlcnJl
ZEJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Np
b25DbGFzcygpIHNoYXJlZEluc3RhbmNlXSBwcmVmZXJyZWRJT0J1ZmZlckR1cmF0aW9uXSAqIHNh
bXBsZVJhdGUoKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNp
emUoc2l6ZV90IGJ1ZmZlclNpemUpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6c2V0UHJlZmVycmVk
QnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKIHsKICAgICBOU0Vycm9yICplcnJvciA9IG5p
bDsKICAgICBmbG9hdCBkdXJhdGlvbiA9IGJ1ZmZlclNpemUgLyBzYW1wbGVSYXRlKCk7CkBAIC0y
OTgsMzIgKzI3NywzMiBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShzaXplX3QgYnVmZmVyU2l6ZSkKICAgICBBU1NFUlQoIWVycm9yKTsKIH0KIAotYm9vbCBBdWRp
b1Nlc3Npb246OmlzTXV0ZWQoKSBjb25zdAorYm9vbCBBdWRpb1Nlc3Npb25JT1M6OmlzTXV0ZWQo
KSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246Omhh
bmRsZU11dGVkU3RhdGVDaGFuZ2UoKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmhhbmRsZU11dGVk
U3RhdGVDaGFuZ2UoKQogewogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9u
T2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Np
b25JT1M6OmFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNl
cnZlcikKIHsKICAgICBtX2ludGVycnVwdGlvbk9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogfQog
Ci12b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0
aW9uT2JzZXJ2ZXImIG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OnJlbW92ZUludGVy
cnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBt
X2ludGVycnVwdGlvbk9ic2VydmVycy5yZW1vdmUob2JzZXJ2ZXIpOwogfQogCi12b2lkIEF1ZGlv
U2Vzc2lvbjo6YmVnaW5JbnRlcnJ1cHRpb24oKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmJlZ2lu
SW50ZXJydXB0aW9uKCkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRp
b25PYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLmJlZ2luQXVkaW9TZXNzaW9uSW50ZXJydXB0
aW9uKCk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1l
IG1heVJlc3VtZSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjplbmRJbnRlcnJ1cHRpb24oTWF5UmVz
dW1lIG1heVJlc3VtZSkKIHsKICAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9pbnRlcnJ1cHRp
b25PYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLmVuZEF1ZGlvU2Vzc2lvbkludGVycnVwdGlv
bihtYXlSZXN1bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
bWFjL0F1ZGlvU2Vzc2lvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFj
L0F1ZGlvU2Vzc2lvbk1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzY2ZiODNmMTExZjc3MTNjYWU3ZGM1ZTY0
ZjE4MGI1ZGQyZjE1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEFVRElPX1NFU1NJT04pICYmIFBMQVRGT1JNKE1B
QykKKworI2luY2x1ZGUgIkF1ZGlvU2Vzc2lvbi5oIgorCit0eXBlZGVmIFVJbnQzMiBBdWRpb09i
amVjdElEOwordHlwZWRlZiBzdHJ1Y3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgQXVkaW9P
YmplY3RQcm9wZXJ0eUFkZHJlc3M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXVk
aW9TZXNzaW9uTWFjIGZpbmFsIDogcHVibGljIEF1ZGlvU2Vzc2lvbiB7CitwdWJsaWM6CisgICAg
QXVkaW9TZXNzaW9uTWFjKCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbk1h
YygpID0gZGVmYXVsdDsKKworcHJpdmF0ZToKKyAgICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNlcnZl
cklmTmVlZGVkKCkgY29uc3Q7CisgICAgdm9pZCBhZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRl
ZCgpIGNvbnN0OworCisgICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZVNhbXBsZVJhdGVDaGFuZ2Uo
QXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyos
IHZvaWQqIGluQ2xpZW50RGF0YSk7CisgICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZUJ1ZmZlclNp
emVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7CisKKyAgICAvLyBBdWRpb1Nlc3Npb24KKyAg
ICBDYXRlZ29yeVR5cGUgY2F0ZWdvcnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5
OyB9CisgICAgdm9pZCBhdWRpb091dHB1dERldmljZUNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lk
IHNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9vbD4pIGZpbmFsOwor
ICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kpIGZp
bmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5T3ZlcnJpZGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2NhdGVnb3J5T3ZlcnJpZGU7IH0KKyAgICB2b2lkIHNldENh
dGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKSBmaW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRl
KCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAg
ICBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIHNpemVf
dCBtYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wg
dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKSBmaW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xp
Y3kgcm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdD
b250ZXh0VUlEKCkgY29uc3QgZmluYWw7CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUo
KSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBm
aW5hbDsKKyAgICBib29sIGlzTXV0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UoKSBmaW5hbDsKKyAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihN
dXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNl
cnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKSBmaW5hbDsKKworICAgIE9wdGlvbmFsPGJvb2w+IG1f
bGFzdE11dGVkU3RhdGU7CisgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29y
eSB7IEF1ZGlvU2Vzc2lvbjo6Tm9uZSB9OworI2lmIEVOQUJMRShST1VUSU5HX0FSQklUUkFUSU9O
KQorICAgIGJvb2wgbV9zZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNlIH07CisgICAgYm9v
bCBtX2luUm91dGluZ0FyYml0cmF0aW9uIHsgZmFsc2UgfTsKKyAgICBPcHRpb25hbDxib29sPiBt
X3BsYXlpbmdUb0JsdWV0b290aDsKKyAgICBPcHRpb25hbDxib29sPiBtX3BsYXlpbmdUb0JsdWV0
b290aE92ZXJyaWRlOworI2VuZGlmCisgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9j
YXRlZ29yeU92ZXJyaWRlOworICAgIG11dGFibGUgYm9vbCBtX2hhc1NhbXBsZVJhdGVPYnNlcnZl
ciB7IGZhbHNlIH07CisgICAgbXV0YWJsZSBib29sIG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsg
ZmFsc2UgfTsKKyAgICBtdXRhYmxlIE9wdGlvbmFsPGRvdWJsZT4gbV9zYW1wbGVSYXRlOworICAg
IG11dGFibGUgT3B0aW9uYWw8c2l6ZV90PiBtX2J1ZmZlclNpemU7Cit9OworCit9CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vz
c2lvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Np
b25NYWMubW0KaW5kZXggZjhlNDQ5ZDM3ZjA4ZTFlMjcxMjYwNTQ5Zjc3OTQwYzNiZTM1YTYxOS4u
OTkzNTBmODc5YzE3NDI1ZWYxNTA2NTE1MDI0Nzk3MzQ0OGExNzYyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdWRpb1Nl
c3Npb24uaCIKKyNpbXBvcnQgIkF1ZGlvU2Vzc2lvbk1hYy5oIgogCiAjaWYgVVNFKEFVRElPX1NF
U1NJT04pICYmIFBMQVRGT1JNKE1BQykKIApAQCAtODIsMzcgKzgyLDExIEBAIHN0YXRpYyBmbG9h
dCBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKQogfQogI2VuZGlmCiAKLWNsYXNz
IEF1ZGlvU2Vzc2lvblByaXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVi
bGljOgotICAgIGV4cGxpY2l0IEF1ZGlvU2Vzc2lvblByaXZhdGUoKSA9IGRlZmF1bHQ7Ci0KLSAg
ICB2b2lkIGFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCk7Ci0gICAgdm9pZCBhZGRCdWZm
ZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOwotCi0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZVNh
bXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFBy
b3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7Ci0gICAgc3RhdGljIE9TU3RhdHVz
IGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRp
b09iamVjdFByb3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7Ci0KLSAgICBPcHRp
b25hbDxib29sPiBsYXN0TXV0ZWRTdGF0ZTsKLSAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSBjYXRlZ29yeSB7IEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpOb25lIH07Ci0jaWYgRU5B
QkxFKFJPVVRJTkdfQVJCSVRSQVRJT04pCi0gICAgYm9vbCBzZXR1cEFyYml0cmF0aW9uT25nb2lu
ZyB7IGZhbHNlIH07Ci0gICAgT3B0aW9uYWw8Ym9vbD4gcGxheWluZ1RvQmx1ZXRvb3RoOwotICAg
IE9wdGlvbmFsPGJvb2w+IHBsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOwotI2VuZGlmCi0gICAg
QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwotICAgIGJvb2wg
aW5Sb3V0aW5nQXJiaXRyYXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaGFzU2FtcGxlUmF0ZU9i
c2VydmVyIHsgZmFsc2UgfTsKLSAgICBib29sIGhhc0J1ZmZlclNpemVPYnNlcnZlciB7IGZhbHNl
IH07Ci0gICAgT3B0aW9uYWw8ZG91YmxlPiBzYW1wbGVSYXRlOwotICAgIE9wdGlvbmFsPHNpemVf
dD4gYnVmZmVyU2l6ZTsKLX07Ci0KLXZvaWQgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkU2FtcGxl
UmF0ZU9ic2VydmVySWZOZWVkZWQoKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJh
dGVPYnNlcnZlcklmTmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAoaGFzU2FtcGxlUmF0ZU9ic2Vy
dmVyKQorICAgIGlmIChtX2hhc1NhbXBsZVJhdGVPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOwot
ICAgIGhhc1NhbXBsZVJhdGVPYnNlcnZlciA9IHRydWU7CisgICAgbV9oYXNTYW1wbGVSYXRlT2Jz
ZXJ2ZXIgPSB0cnVlOwogCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mgbm9taW5hbFNh
bXBsZVJhdGVBZGRyZXNzID0gewogICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eU5vbWluYWxT
YW1wbGVSYXRlLApAQCAtMTIxLDE2ICs5NSwxNiBAQCB2b2lkIEF1ZGlvU2Vzc2lvblByaXZhdGU6
OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkKICAgICAgICAga0F1ZGlvT2JqZWN0UHJv
cGVydHlFbGVtZW50TWFzdGVyCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogICAgIH07Ci0gICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHRE
ZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgaGFuZGxlU2FtcGxlUmF0ZUNoYW5n
ZSwgdGhpcyk7CisgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZp
Y2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgaGFuZGxlU2FtcGxlUmF0ZUNoYW5nZSwg
Y29uc3RfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPih0aGlzKSk7CiB9CiAKLU9TU3RhdHVzIEF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZp
Y2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIHNhbXBsZVJhdGVB
ZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEpCitPU1N0YXR1cyBBdWRpb1Nlc3Npb25NYWM6Omhh
bmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzMiwgY29uc3Qg
QXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIHNhbXBsZVJhdGVBZGRyZXNzLCB2b2lkKiBpbkNs
aWVudERhdGEpCiB7CiAgICAgQVNTRVJUKGluQ2xpZW50RGF0YSk7CiAgICAgaWYgKCFpbkNsaWVu
dERhdGEpCiAgICAgICAgIHJldHVybiBub0VycjsKIAotICAgIGF1dG8qIHNlc3Npb25Qcml2YXRl
ID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uUHJpdmF0ZSo+KGluQ2xpZW50RGF0YSk7CisgICAg
YXV0byogc2Vzc2lvbiA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvbk1hYyo+KGluQ2xpZW50RGF0
YSk7CiAKICAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRlOwogICAgIFVJbnQzMiBub21pbmFs
U2FtcGxlUmF0ZVNpemUgPSBzaXplb2YoRmxvYXQ2NCk7CkBAIC0xMzgsMTQgKzExMiwxNSBAQCBP
U1N0YXR1cyBBdWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlv
T2JqZWN0SUQgZGV2aWNlLCBVSW50MwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAKLSAgICBzZXNzaW9uUHJpdmF0ZS0+c2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lv
blRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOworICAgIHNlc3Npb24tPm1fc2FtcGxlUmF0ZSA9
IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOwogICAgIHJldHVybiBu
b0VycjsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRCdWZmZXJTaXplT2JzZXJ2
ZXJJZk5lZWRlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkQnVmZmVyU2l6ZU9ic2VydmVy
SWZOZWVkZWQoKSBjb25zdAogewotICAgIGlmIChoYXNCdWZmZXJTaXplT2JzZXJ2ZXIpCisgICAg
aWYgKG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyKQogICAgICAgICByZXR1cm47CisgICAgbV9oYXNC
dWZmZXJTaXplT2JzZXJ2ZXIgPSB0cnVlOwogCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJl
c3MgYnVmZmVyU2l6ZUFkZHJlc3MgPSB7CiAgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5QnVm
ZmVyRnJhbWVTaXplLApAQCAtMTU0LDE2ICsxMjksMTYgQEAgdm9pZCBBdWRpb1Nlc3Npb25Qcml2
YXRlOjphZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpCiAgICAgICAgIGtBdWRpb09iamVj
dFByb3BlcnR5RWxlbWVudE1hc3RlcgogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFU
SU9OU19FTkQKICAgICB9OwotICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZh
dWx0RGV2aWNlKCksICZidWZmZXJTaXplQWRkcmVzcywgaGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSwg
dGhpcyk7CisgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZpY2Uo
KSwgJmJ1ZmZlclNpemVBZGRyZXNzLCBoYW5kbGVCdWZmZXJTaXplQ2hhbmdlLCBjb25zdF9jYXN0
PEF1ZGlvU2Vzc2lvbk1hYyo+KHRoaXMpKTsKIH0KIAotT1NTdGF0dXMgQXVkaW9TZXNzaW9uUHJp
dmF0ZTo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMy
LCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyogYnVmZmVyU2l6ZUFkZHJlc3MsIHZv
aWQqIGluQ2xpZW50RGF0YSkKK09TU3RhdHVzIEF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlQnVmZmVy
U2l6ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMyLCBjb25zdCBBdWRpb09iamVj
dFByb3BlcnR5QWRkcmVzcyogYnVmZmVyU2l6ZUFkZHJlc3MsIHZvaWQqIGluQ2xpZW50RGF0YSkK
IHsKICAgICBBU1NFUlQoaW5DbGllbnREYXRhKTsKICAgICBpZiAoIWluQ2xpZW50RGF0YSkKICAg
ICAgICAgcmV0dXJuIG5vRXJyOwogCi0gICAgYXV0byogc2Vzc2lvblByaXZhdGUgPSBzdGF0aWNf
Y2FzdDxBdWRpb1Nlc3Npb25Qcml2YXRlKj4oaW5DbGllbnREYXRhKTsKKyAgICBhdXRvKiBzZXNz
aW9uID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4oaW5DbGllbnREYXRhKTsKIAogICAg
IFVJbnQzMiBidWZmZXJTaXplOwogICAgIFVJbnQzMiBidWZmZXJTaXplU2l6ZSA9IHNpemVvZihi
dWZmZXJTaXplKTsKQEAgLTE3MSwzMyArMTQ2LDIxIEBAIE9TU3RhdHVzIEF1ZGlvU2Vzc2lvblBy
aXZhdGU6OmhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQz
CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIHNlc3Npb25Q
cml2YXRlLT5idWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICBzZXNzaW9uLT5tX2J1ZmZlclNp
emUgPSBidWZmZXJTaXplOwogICAgIHJldHVybiBub0VycjsKIH0KIAotQXVkaW9TZXNzaW9uOjpB
dWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJp
dmF0ZT4oKSkKLXsKLX0KLQotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0
OwotCi1BdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5jYXRlZ29yeTsKLX0KLQotdm9pZCBBdWRp
b1Nlc3Npb246OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1h
Yzo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKIHsKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJ
VFJBVElPTikKLSAgICBpZiAoIW1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoIHx8ICptX3By
aXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9PSBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVl
dG9vdGgoKSkKKyAgICBpZiAoIW1fcGxheWluZ1RvQmx1ZXRvb3RoIHx8ICptX3BsYXlpbmdUb0Js
dWV0b290aCA9PSBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggPSBXVEY6Om51bGxv
cHQ7CisgICAgbV9wbGF5aW5nVG9CbHVldG9vdGggPSBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIH0K
IAotdm9pZCBBdWRpb1Nlc3Npb246OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0
aW9uYWw8Ym9vbD4gdmFsdWUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQbGF5aW5nVG9C
bHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUk9V
VElOR19BUkJJVFJBVElPTikKICAgICBpc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlID0gdmFs
dWU7CkBAIC0yMDYsMjUgKzE2OSwyNSBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5n
VG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1ZSkKICNlbmRpZgogfQogCi12
b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5LCBSb3V0
ZVNoYXJpbmdQb2xpY3kpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnkoQ2F0ZWdv
cnlUeXBlIGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFJPVVRJ
TkdfQVJCSVRSQVRJT04pCiAgICAgYm9vbCBwbGF5aW5nVG9CbHVldG9vdGggPSBkZWZhdWx0RGV2
aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKTsKLSAgICBpZiAoY2F0ZWdvcnkgPT0gbV9wcml2YXRl
LT5jYXRlZ29yeSAmJiBtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCAmJiAqbV9wcml2YXRl
LT5wbGF5aW5nVG9CbHVldG9vdGggPT0gcGxheWluZ1RvQmx1ZXRvb3RoKQorICAgIGlmIChjYXRl
Z29yeSA9PSBtX2NhdGVnb3J5ICYmIG1fcGxheWluZ1RvQmx1ZXRvb3RoICYmICptX3BsYXlpbmdU
b0JsdWV0b290aCA9PSBwbGF5aW5nVG9CbHVldG9vdGgpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJpdmF0ZS0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5ID0gY2F0ZWdv
cnk7CiAKLSAgICBpZiAobV9wcml2YXRlLT5zZXR1cEFyYml0cmF0aW9uT25nb2luZykgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnko
KSAtIGEgYmVnaW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeSBpcyBzdGlsbCBvbmdvaW5nIik7Cisg
ICAgaWYgKG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5KCkgLSBhIGJlZ2luQXJi
aXRyYXRpb25XaXRoQ2F0ZWdvcnkgaXMgc3RpbGwgb25nb2luZyIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKCFtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKG1fcHJpdmF0ZS0+aW5Sb3V0aW5nQXJiaXRyYXRpb24pIHsKLSAg
ICAgICAgbV9wcml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlvbiA9IGZhbHNlOworICAgIGlmICht
X2luUm91dGluZ0FyYml0cmF0aW9uKSB7CisgICAgICAgIG1faW5Sb3V0aW5nQXJiaXRyYXRpb24g
PSBmYWxzZTsKICAgICAgICAgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQtPmxlYXZlUm91dGlu
Z0Ficml0cmF0aW9uKCk7CiAgICAgfQogCkBAIC0yMzQsNDQgKzE5NywzOSBAQCB2b2lkIEF1ZGlv
U2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQ
b2xpY3kpCiAgICAgdXNpbmcgUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBBdWRpb1Nlc3Npb25S
b3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOwogICAgIHVz
aW5nIERlZmF1bHRSb3V0ZUNoYW5nZWQgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25D
bGllbnQ6OkRlZmF1bHRSb3V0ZUNoYW5nZWQ7CiAKLSAgICBtX3ByaXZhdGUtPnBsYXlpbmdUb0Js
dWV0b290aCA9IHBsYXlpbmdUb0JsdWV0b290aDsKLSAgICBtX3ByaXZhdGUtPnNldHVwQXJiaXRy
YXRpb25PbmdvaW5nID0gdHJ1ZTsKLSAgICBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudC0+YmVn
aW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkobV9wcml2YXRlLT5jYXRlZ29yeSwgW3Ro
aXNdIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCBk
ZWZhdWx0Um91dGVDaGFuZ2VkKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0dXBBcmJpdHJhdGlv
bk9uZ29pbmcgPSBmYWxzZTsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IHBsYXlpbmdUb0Js
dWV0b290aDsKKyAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gdHJ1ZTsKKyAgICBtX3Jv
dXRpbmdBcmJpdHJhdGlvbkNsaWVudC0+YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdv
cnkobV9jYXRlZ29yeSwgW3RoaXNdIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVm
YXVsdFJvdXRlQ2hhbmdlZCBkZWZhdWx0Um91dGVDaGFuZ2VkKSB7CisgICAgICAgIG1fc2V0dXBB
cmJpdHJhdGlvbk9uZ29pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKGVycm9yICE9IFJvdXRpbmdB
cmJpdHJhdGlvbkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihN
ZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGJlZ2luQXJiaXRyYXRpb25XaXRo
Q2F0ZWdvcnk6JXMgZmFpbGVkIHdpdGggZXJyb3IgJXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhtX3ByaXZhdGUtPmNhdGVnb3J5KS5hc2NpaSgpLmRhdGEoKSwgY29udmVydEVudW1lcmF0
aW9uVG9TdHJpbmcoZXJyb3IpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSgpIC0gYmVnaW5B
cmJpdHJhdGlvbldpdGhDYXRlZ29yeTolcyBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKG1fY2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhlcnJvcikuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbV9wcml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlv
biA9IHRydWU7CisgICAgICAgIG1faW5Sb3V0aW5nQXJiaXRyYXRpb24gPSB0cnVlOwogCiAgICAg
ICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHNhbXBsZSByYXRlIGFuZCBidWZmZXIg
c2l6ZSBmb3IgdGhlIG5ldyBkZWZhdWx0IGRldmljZT8KICAgICAgICAgaWYgKGRlZmF1bHRSb3V0
ZUNoYW5nZWQgPT0gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6WWVzKQotICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gZGVmYXVsdFJvdXRlQ2hhbmdlZCEi
KTsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnko
KSAtIGRlZmF1bHRSb3V0ZUNoYW5nZWQhIik7CiAgICAgfSk7CiAjZWxzZQotICAgIG1fcHJpdmF0
ZS0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAjZW5k
aWYKIH0KIAotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29y
eU92ZXJyaWRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tX2NhdGVnb3J5T3Zl
cnJpZGU7Ci19Ci0KLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVn
b3J5VHlwZSBjYXRlZ29yeSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeU92ZXJy
aWRlKENhdGVnb3J5VHlwZSBjYXRlZ29yeSkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5tX2NhdGVn
b3J5T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCisgICAgaWYgKG1fY2F0ZWdvcnlPdmVycmlkZSA9PSBj
YXRlZ29yeSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcml2YXRlLT5tX2NhdGVnb3J5T3Zl
cnJpZGUgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5T3ZlcnJpZGUgPSBjYXRlZ29yeTsKICAg
ICBzZXRDYXRlZ29yeShjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0KTsKIH0K
IAotZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgY29uc3QKK2Zsb2F0IEF1ZGlvU2Vz
c2lvbk1hYzo6c2FtcGxlUmF0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3ByaXZhdGUtPnNhbXBs
ZVJhdGUpIHsKLSAgICAgICAgbV9wcml2YXRlLT5hZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRl
ZCgpOworICAgIGlmICghbV9zYW1wbGVSYXRlKSB7CisgICAgICAgIGFkZFNhbXBsZVJhdGVPYnNl
cnZlcklmTmVlZGVkKCk7CiAKICAgICAgICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKICAg
ICAgICAgVUludDMyIG5vbWluYWxTYW1wbGVSYXRlU2l6ZSA9IHNpemVvZihGbG9hdDY0KTsKQEAg
LTI4NSwyNSArMjQzLDI1IEBAIGZsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0
CiAgICAgICAgIH07CiAgICAgICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJv
cGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgMCwg
MCwgJm5vbWluYWxTYW1wbGVSYXRlU2l6ZSwgKHZvaWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7CiAg
ICAgICAgIGlmIChyZXN1bHQgIT0gbm9FcnIpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgLSBBdWRpb09iamVjdEdldFBy
b3BlcnR5RGF0YSgpIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgcmVzdWx0KTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlKCkg
LSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YSgpIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgcmVz
dWx0KTsKICAgICAgICAgICAgIHJldHVybiA0NDEwMDsKICAgICAgICAgfQogCi0gICAgICAgIG1f
cHJpdmF0ZS0+c2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBs
ZVJhdGUpOwotICAgICAgICBpZiAoISptX3ByaXZhdGUtPnNhbXBsZVJhdGUpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkg
LSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0YSgpIHJldHVybiBhbiBpbnZhbGlkIHNhbXBsZSBy
YXRlIik7Ci0gICAgICAgICAgICBtX3ByaXZhdGUtPnNhbXBsZVJhdGUgPSA0NDEwMDsKKyAgICAg
ICAgbV9zYW1wbGVSYXRlID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0
ZSk7CisgICAgICAgIGlmICghKm1fc2FtcGxlUmF0ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJhdGUoKSAtIEF1ZGlvT2Jq
ZWN0R2V0UHJvcGVydHlEYXRhKCkgcmV0dXJuIGFuIGludmFsaWQgc2FtcGxlIHJhdGUiKTsKKyAg
ICAgICAgICAgIG1fc2FtcGxlUmF0ZSA9IDQ0MTAwOwogICAgICAgICB9CiAgICAgfQotICAgIHJl
dHVybiAqbV9wcml2YXRlLT5zYW1wbGVSYXRlOworICAgIHJldHVybiAqbV9zYW1wbGVSYXRlOwog
fQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRp
b1Nlc3Npb25NYWM6OmJ1ZmZlclNpemUoKSBjb25zdAogewotICAgIGlmIChtX3ByaXZhdGUtPmJ1
ZmZlclNpemUpCi0gICAgICAgIHJldHVybiAqbV9wcml2YXRlLT5idWZmZXJTaXplOworICAgIGlm
IChtX2J1ZmZlclNpemUpCisgICAgICAgIHJldHVybiAqbV9idWZmZXJTaXplOwogCi0gICAgbV9w
cml2YXRlLT5hZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOworICAgIGFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkKCk7CiAKICAgICBVSW50MzIgYnVmZmVyU2l6ZTsKICAgICBVSW50
MzIgYnVmZmVyU2l6ZVNpemUgPSBzaXplb2YoYnVmZmVyU2l6ZSk7CkBAIC0zMjAsMTggKzI3OCwx
OCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29uc3QKICAgICBpZiAocmVz
dWx0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fcHJpdmF0ZS0+YnVmZmVyU2l6ZSA9IGJ1
ZmZlclNpemU7CisgICAgbV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKIAogICAgIHJldHVybiBi
dWZmZXJTaXplOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5u
ZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5l
bHMoKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAK
LXNpemVfdCBBdWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29u
c3QKK3NpemVfdCBBdWRpb1Nlc3Npb25NYWM6Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxz
KCkgY29uc3QKIHsKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBzaXplQWRkcmVzcyA9
IHsKICAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25maWd1cmF0aW9uLApAQCAt
MzU5LDMwICszMTcsMzAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0
cHV0Q2hhbm5lbHMoKSBjb25zdAogICAgIHJldHVybiBjaGFubmVsczsKIH0KIAotYm9vbCBBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9u
TWFjOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotUm91dGVTaGFyaW5nUG9saWN5IEF1ZGlvU2Vzc2lv
bjo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKK1JvdXRlU2hhcmluZ1BvbGljeSBBdWRpb1Nl
c3Npb25NYWM6OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJvdXRl
U2hhcmluZ1BvbGljeTo6RGVmYXVsdDsKIH0KIAotU3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGlu
Z0NvbnRleHRVSUQoKSBjb25zdAorU3RyaW5nIEF1ZGlvU2Vzc2lvbk1hYzo6cm91dGluZ0NvbnRl
eHRVSUQoKSBjb25zdAogewogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1zaXplX3Qg
QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nl
c3Npb25NYWM6OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJldHVybiBidWZm
ZXJTaXplKCk7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXpl
KHNpemVfdCBidWZmZXJTaXplKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1
ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+YnVmZmVy
U2l6ZSA9PSBidWZmZXJTaXplKQorICAgIGlmIChtX2J1ZmZlclNpemUgPT0gYnVmZmVyU2l6ZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQXVkaW9WYWx1ZVJhbmdlIGJ1ZmZlclNpemVSYW5nZSA9
IHswLCAwfTsKQEAgLTQxMywxNyArMzcxLDE3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVm
ZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogICAgIHJlc3VsdCA9IEF1ZGlvT2Jq
ZWN0U2V0UHJvcGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJnByZWZlcnJlZEJ1ZmZlclNpemVB
ZGRyZXNzLCAwLCAwLCBzaXplb2YoYnVmZmVyU2l6ZU91dCksICh2b2lkKikmYnVmZmVyU2l6ZU91
dCk7CiAKICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgbV9wcml2YXRlLT5idWZmZXJTaXplID0g
YnVmZmVyU2l6ZU91dDsKKyAgICAgICAgbV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZU91dDsKIAog
I2lmICFMT0dfRElTQUJMRUQKICAgICBpZiAocmVzdWx0KQotICAgICAgICBMT0coTWVkaWEsICJB
dWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSAtIGZhaWxlZCB3aXRoIGVy
cm9yICVkIiwgYnVmZmVyU2l6ZSwgc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpKTsKKyAgICAgICAg
TE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkg
LSBmYWlsZWQgd2l0aCBlcnJvciAlZCIsIGJ1ZmZlclNpemUsIHN0YXRpY19jYXN0PGludD4ocmVz
dWx0KSk7CiAgICAgZWxzZQotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldFBy
ZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSIsIGJ1ZmZlclNpemUpOworICAgICAgICBMT0coTWVkaWEs
ICJBdWRpb1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSIsIGJ1ZmZlclNp
emUpOwogI2VuZGlmCiB9CiAKLWJvb2wgQXVkaW9TZXNzaW9uOjppc011dGVkKCkgY29uc3QKK2Jv
b2wgQXVkaW9TZXNzaW9uTWFjOjppc011dGVkKCkgY29uc3QKIHsKICAgICBVSW50MzIgbXV0ZSA9
IDA7CiAgICAgVUludDMyIG11dGVTaXplID0gc2l6ZW9mKG11dGUpOwpAQCAtNDU1LDIyICs0MTMs
MTkgQEAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZU11dGVQcm9wZXJ0eUNoYW5nZShBdWRpb09iamVj
dElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWMKICAgICByZXR1cm4gbm9FcnI7CiB9CiAKLXZv
aWQgQXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjpoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgYm9vbCBpc0N1cnJlbnRseU11dGVkID0gaXNNdXRlZCgp
OwotICAgIGlmIChtX3ByaXZhdGUtPmxhc3RNdXRlZFN0YXRlICYmICptX3ByaXZhdGUtPmxhc3RN
dXRlZFN0YXRlID09IGlzQ3VycmVudGx5TXV0ZWQpCisgICAgaWYgKG1fbGFzdE11dGVkU3RhdGUg
JiYgKm1fbGFzdE11dGVkU3RhdGUgPT0gaXNDdXJyZW50bHlNdXRlZCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNl
cnZlci0+aGFyZHdhcmVNdXRlZFN0YXRlRGlkQ2hhbmdlKHRoaXMpOwogCi0gICAgbV9wcml2YXRl
LT5sYXN0TXV0ZWRTdGF0ZSA9IGlzQ3VycmVudGx5TXV0ZWQ7CisgICAgbV9sYXN0TXV0ZWRTdGF0
ZSA9IGlzQ3VycmVudGx5TXV0ZWQ7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjphZGRNdXRlZFN0
YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZl
cikKIHsKICAgICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCkBAIC00ODcsNyArNDQyLDcg
QEAgdm9pZCBBdWRpb1Nlc3Npb246OmFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQogICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZh
dWx0RGV2aWNlKCksICZtdXRlQWRkcmVzcywgaGFuZGxlTXV0ZVByb3BlcnR5Q2hhbmdlLCB0aGlz
KTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRl
ZFN0YXRlT2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnJlbW92ZU11
dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIGlm
IChtX29ic2VydmVycy5zaXplKCkgPT0gMSkgewogICAgICAgICBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyBtdXRlQWRkcmVzcyA9IHsK
</data>
<flag name="commit-queue"
          id="450002"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428945</attachid>
            <date>2021-05-18 09:18:10 -0700</date>
            <delta_ts>2021-05-18 09:37:59 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223564-20210518091809.patch</filename>
            <type>text/plain</type>
            <size>48351</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMzZmNTVmZmYxYzcy
ZmJjOGNkZGNjOWRhMDkzNTU5MzdjMGI1ZC4uNzI1YjRhMjAzOTA3ZmNiN2RkYTJjMzQ4Nzk2NWE2
OTlmODY5YjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBOb3cgdGhhdCBBdWRpb1Nlc3Npb24gY2Fu
IGhhdmUgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYXQgcnVudGltZSwgaXQgc2hvdWxk
IGJlIGFuCisgICAgICAgIGFjdHVhbCB2aXJ0dWFsIGNsYXNzLCB3aG9zZSBjb25jcmV0ZSwgcGVy
LXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBhcmUgZGVyaXZhdGlvbnMgb2YgdGhlCisgICAgICAg
IGJhc2UgY2xhc3MuIE1ha2UgQXVkaW9TZXNzaW9uSU9TIGFuZCBBdWRpb1Nlc3Npb25NYWMgdHJ1
ZSBzdWJjbGFzc2VzIG9mIEF1ZGlvU2Vzc2lvbiwgYW5kCisgICAgICAgIGFsbG93IFJlbW90ZUF1
ZGlvU2Vzc2lvbiB0byBkZXJpdmUgZnJvbSB0aGF0IHNhbWUgYmFzZSBjbGFzcyAocmF0aGVyIHRo
YW4gQXVkaW9TZXNzaW9uSU9TCisgICAgICAgIG9yIEF1ZGlvU2Vzc2lvbk1hYykuCisKKyAgICAg
ICAgQWxzbyBlbnN1cmUgQXVkaW9TZXNzaW9uSU9TIG9yIEF1ZGlvU2Vzc2lvbk1hYyBpcyBub3Qg
YWNjaWRlbnRhbGx5IGNyZWF0ZWQgd2hlbiBjYWxsaW5nCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0U2hhcmVkU2Vzc2lvbigpIGJ5IG1ha2luZyB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IGhv
bGRpbmcgdGhlIHNlc3Npb24KKyAgICAgICAgYW4gT3B0aW9uYWwsIGFuZCBvbmx5IGxhemlseSBj
cmVhdGluZyB0aGUgc2Vzc2lvbiBmcm9tIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpIGlm
CisgICAgICAgIG9uZSBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQgYWxyZWFkeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRBdWRpb1Nlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uSU9TOjpjYXRlZ29yeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25J
T1M6OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpwcmVmZXJyZWRC
dWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0
UHJlZmVycmVkQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6
OmlzTXV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6
YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdD
b250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzTXV0ZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRk
SW50ZXJydXB0aW9uT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5T3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNo
YXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpy
b3V0aW5nQ29udGV4dFVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25N
YWM6OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6
aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5T3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnRyeVRvU2V0
QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
Ojpyb3V0ZVNoYXJpbmdQb2xpY3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorCiAyMDIxLTA1
LTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhU2Vz
c2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlbid0IHRyZWF0ZWQgYXMgaGF2aW5nIGEgdXNlciBnZXN0
dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYmViMTg4YTAwYjFiZDk4YmVlOTQ2ZjVmZDAwY2E1ODU1ZjVhNDhhZC4uZjAyZGZl
ZGNjNDI3OTU4Y2E2YTVmODE2NjFhM2VkZmUyOTkxNmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMxMSw2ICs0MzExLDcg
QEAKIAkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMz
NkY2NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLzsg
fTsKIAkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZG
NjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9Owog
CQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTY4MjYw
QTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEMzZDMTYyMjYwN0U3ODYwMEM4
QzUyOSAvKiBBdWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMzZDMTYxMjYwN0U3ODYwMEM4QzUyOSAvKiBBdWRpb1Nlc3Npb25J
T1MuaCAqLzsgfTsKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAx
QjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZl
ci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5
NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCAqLzsgfTsKQEAgLTE0ODU0
LDYgKzE0ODU1LDggQEAKIAkJQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzNkMx
NjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEMzZDMTY5MjYwQTYzRDQwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1MjkgLyog
QXVkaW9TZXNzaW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbklPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTU1MTdBOUQwMUIwMDI3NEU0MiAvKiBN
ZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODE5Niw2ICsyODE5
OSw3IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5oICovLAogCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCAqLywKKwkJCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFT
ZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTMxMjc0LDYgKzMxMjc4LDcgQEAKIAkJCQlD
RDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAq
LywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWFjLmggKi8sCiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3JNYWMuY3BwICovLAorCQkJCUNEMzZDMTVGMjYwNjdDMUYwMEM4QzUyOSAvKiBBdWRp
b1Nlc3Npb25NYWMuaCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9T
ZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCiAJCQkJQ0QzNkMxNjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggKi8sCkBAIC0zMTU5Nyw2ICszMTYwMiw3IEBACiAJCQkJMDczQjg3Njkx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzNkMxNjIyNjA3RTc4NjAwQzhDNTI5IC8q
IEF1ZGlvU2Vzc2lvbklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODkxMkIwMjZGNzAw
QzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEE3
QkJDMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ2MkY1MkUxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggZjdhM2ViMGU3ZGZkNWNkZGZlZTBmYzFjNzMw
MDM1OGMxNjczOWVmNi4uOGU2ODZlNDQ3YjliNjZkY2U4YWI3ZTIxMzcxNGZkZTYwZTkzYmI1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC0zMSwyMiArMzEsNDEgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkF1
ZGlvU2Vzc2lvbk1hYy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbklPUy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+JiBzaGFyZWRBdWRpb1Nlc3Npb24oKQor
c3RhdGljIE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+PiYgc2hhcmVkQXVkaW9TZXNz
aW9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lv
bj4+IHNlc3Npb24gPSBBdWRpb1Nlc3Npb246OmNyZWF0ZSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4+IHNlc3Npb247CiAgICAg
cmV0dXJuIHNlc3Npb24uZ2V0KCk7CiB9CiAKIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+IEF1ZGlv
U2Vzc2lvbjo6Y3JlYXRlKCkKIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8QXVkaW9TZXNzaW9uTWFjPigpOworI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb1Nlc3Npb25JT1M+KCk7CisjZWxzZQogICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4oKTsKKyNlbmRpZgogfQogCitBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpID0gZGVmYXVsdDsKK0F1ZGlvU2Vzc2lvbjo6fkF1ZGlv
U2Vzc2lvbigpID0gZGVmYXVsdDsKKwogQXVkaW9TZXNzaW9uJiBBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKQogewotICAgIHJldHVybiBzaGFyZWRBdWRpb1Nlc3Npb24oKTsKKyAgICBpZiAo
IXNoYXJlZEF1ZGlvU2Vzc2lvbigpKQorICAgICAgICBzaGFyZWRBdWRpb1Nlc3Npb24oKSA9IEF1
ZGlvU2Vzc2lvbjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICpzaGFyZWRBdWRpb1Nlc3Npb24oKTsK
IH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OnNldFNoYXJlZFNlc3Npb24oVW5pcXVlUmVmPEF1ZGlv
U2Vzc2lvbj4mJiBzZXNzaW9uKQpAQCAtNjMsMzcgKzgyLDI2IEBAIGJvb2wgQXVkaW9TZXNzaW9u
Ojp0cnlUb1NldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlv
bk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJikKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50
ZXJydXB0aW9uT2JzZXJ2ZXImKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQg
QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCiB7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpCi17
Ci19Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShDT0NPQSkKLWNsYXNzIEF1ZGlvU2Vzc2lvblBy
aXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotfTsKLQotQXVkaW9TZXNzaW9u
OjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKG51bGxwdHIpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0
OwotCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNo
YXJpbmdQb2xpY3kpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE2Nyw5ICsxNzUsNiBA
QCBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCi0KLSNp
ZiAhUExBVEZPUk0oTUFDKQogdm9pZCBBdWRpb1Nlc3Npb246OmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE3OSw4ICsxODQsNiBAQCB2b2lk
IEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxi
b29sPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQotI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKLQogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUm91dGVTaGFyaW5n
UG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDFkY2NlM2ExMjhiOTdlYTg4YzIyMmI4M2EwNmQzODQx
OWIyYTY5MzQuLmI4ZjdkMzBmN2Q2NTEwOGRiM2QwYjczNjk4ODk3ZTMwNjBmOThiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC0zOCw4ICsz
OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZTsKLQogZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBEZWZh
dWx0LAogICAgIExvbmdGb3JtQXVkaW8sCkBAIC03Miw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kp
OwogICAgIHZpcnR1YWwgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKTsKLSAgICBDYXRlZ29yeVR5cGUgY2F0
ZWdvcnlPdmVycmlkZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXRlZ29yeU92ZXJy
aWRlKENhdGVnb3J5VHlwZSk7CisgICAgdmlydHVhbCBDYXRlZ29yeVR5cGUgY2F0ZWdvcnlPdmVy
cmlkZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFy
aW5nUG9saWN5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQo
KSBjb25zdDsKQEAgLTk1LDE4ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBoYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UoQXVkaW9TZXNzaW9uKikgPSAwOwogICAgIH07
CiAKLSAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
LSAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZl
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRT
dGF0ZU9ic2VydmVyKikgeyB9CiAKLSAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgp
OwotICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
Pik7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc011dGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkU3RhdGVD
aGFuZ2UoKSB7IH0KIAotICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKICAgICBlbnVtIGNsYXNzIE1heVJlc3VtZSB7IE5v
LCBZZXMgfTsKLSAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpOworICAgIHZpcnR1
YWwgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKTsKIAogICAgIGNsYXNzIEludGVycnVw
dGlvbk9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEludGVycnVwdGlvbk9ic2VydmVy
PiB7CiAgICAgcHVibGljOgpAQCAtMTE1LDEyICsxMTMsMTIgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oTWF5UmVzdW1lKSA9IDA7
CiAgICAgfTsKLSAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJ
bnRlcnJ1cHRpb25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpOwogCiAgICAgdmlydHVhbCBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Um91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50KFdlYWtQdHI8QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9u
Q2xpZW50PiYmIGNsaWVudCkgeyBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCA9IGNsaWVudDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRSb3V0aW5nQXJiaXRyYXRpb25DbGllbnQoV2Vha1B0cjxB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ+JiYgY2xpZW50KSB7IG1fcm91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50ID0gY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPjsKQEAgLTEyOCw3ICsxMjYsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29s
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nlc3Npb25Qcml2YXRlPiBtX3ByaXZhdGU7
CiAgICAgSGFzaFNldDxNdXRlZFN0YXRlT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFdlYWtIYXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBt
X2ludGVycnVwdGlvbk9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2IxNmQ0OTA1NmJjZTMw
ZmZhMTYwODdmNzQxNTI0ODZhMzQ4OGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKK09CSkNf
Q0xBU1MgV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlv
U2Vzc2lvbklPUyBmaW5hbCA6IHB1YmxpYyBBdWRpb1Nlc3Npb24geworcHVibGljOgorICAgIEF1
ZGlvU2Vzc2lvbklPUygpOworICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbklPUygpOworCitwcml2
YXRlOgorICAgIC8vIEF1ZGlvU2Vzc2lvbgorICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJp
bmdQb2xpY3kpIGZpbmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5
T3ZlcnJpZGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0
ZWdvcnlUeXBlKSBmaW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWw7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBtYXhpbXVtTnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRl
cm5hbChib29sKSBmaW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9s
aWN5KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3Qg
ZmluYWw7CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIGlz
TXV0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKSBm
aW5hbDsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2Vy
dmVyJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1
cHRpb25PYnNlcnZlciYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKSBmaW5h
bDsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpIGZpbmFsOworCisgICAgQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1fd29y
a1F1ZXVlOworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4gbV9p
bnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRl
eCBiM2Q0MzhlYWQzMTllOTNiMWU1Y2JhYjkyNjcyYzBmMzg1NTYxYTQ3Li45ZDVkMDE0OGJkOTE0
Yzg4NzI5YTE3MmFkZGVkYTAyMDc1NGIzYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgorI2lt
cG9ydCAiQXVkaW9TZXNzaW9uSU9TLmgiCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIApAQCAtOTYsNDAgKzk2LDE5IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRl
KEF1ZGlvU2Vzc2lvbiopOwotICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7Ci0KLSAgICBBdWRp
b1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdv
cmtRdWV1ZT4gbV93b3JrUXVldWU7Ci0gICAgUmV0YWluUHRyPFdlYkludGVycnVwdGlvbk9ic2Vy
dmVySGVscGVyPiBtX2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyOwotfTsKLQotQXVkaW9TZXNz
aW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qIHNlc3Npb24pCi0g
ICAgOiBtX2NhdGVnb3J5T3ZlcnJpZGUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUp
CitBdWRpb1Nlc3Npb25JT1M6OkF1ZGlvU2Vzc2lvbklPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0
TlMoW1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFj
azpzZXNzaW9uXSk7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMo
W1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0
aGlzXSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi1BdWRpb1Nlc3Npb25Q
cml2YXRlOjp+QXVkaW9TZXNzaW9uUHJpdmF0ZSgpCitBdWRpb1Nlc3Npb25JT1M6On5BdWRpb1Nl
c3Npb25JT1MoKQogewogICAgIFttX2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGNsZWFyQ2Fs
bGJhY2tdOwogfQogCi1BdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZh
dGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKLXsKLX0KLQotQXVkaW9T
ZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkKLXsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5KENhdGVnb3J5VHlwZSBuZXdDYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGlj
eSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0
ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7CiAjaWYgIUhBVkUoUk9VVEVfU0hB
UklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVPKQogICAgIGlmIChwb2xpY3kgPT0gUm91dGVTaGFy
aW5nUG9saWN5OjpMb25nRm9ybVZpZGVvKQpAQCAtMTgwLDcgKzE1OSw3IEBAIHZvaWQgQXVkaW9T
ZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmlu
Z1BvbGljeSBwb2xpCiAjZW5kaWYKIH0KIAotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVk
aW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5KCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqY2F0ZWdv
cnlTdHJpbmcgPSBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNl
XSBjYXRlZ29yeV07CiAgICAgaWYgKFtjYXRlZ29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNz
aW9uQ2F0ZWdvcnlBbWJpZW50XSkKQEAgLTE5OCw3ICsxNzcsNyBAQCBBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCkgY29uc3QKICAgICByZXR1cm4gQ2F0
ZWdvcnlUeXBlOjpOb25lOwogfQogCi1Sb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9TZXNzaW9uOjpy
b3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAorUm91dGVTaGFyaW5nUG9saWN5IEF1ZGlvU2Vzc2lv
bklPUzo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0KSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEFWQXVkaW9TZXNzaW9uUm91dGVTaGFyaW5nUG9saWN5RGVmYXVsdCksICJS
b3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQgaXMgbm90IEFWQXVkaW9TZXNzaW9uUm91dGVTaGFy
aW5nUG9saWN5RGVmYXVsdCBhcyBleHBlY3RlZCIpOwogI2lmIEhBVkUoUk9VVEVfU0hBUklOR19Q
T0xJQ1lfTE9OR19GT1JNX1ZJREVPKQpAQCAtMjE2LDcgKzE5NSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSb3V0ZVNoYXJpbmdQ
b2xpY3k+KHBvbGljeSk7CiB9CiAKLVN0cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0
VUlEKCkgY29uc3QKK1N0cmluZyBBdWRpb1Nlc3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEKCkg
Y29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgcmV0dXJuIFtbUEFMOjpn
ZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlE
XTsKQEAgLTIyNSw1MSArMjA0LDUxIEBAIFN0cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250
ZXh0VUlEKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdv
cnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
c2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiB7Ci0gICAgaWYgKG1f
cHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQorICAgIGlmIChtX2NhdGVn
b3J5T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0
ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID0gY2F0ZWdvcnk7CisgICAgbV9jYXRlZ29yeU92ZXJyaWRl
ID0gY2F0ZWdvcnk7CiAgICAgc2V0Q2F0ZWdvcnkoY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGlj
eTo6RGVmYXVsdCk7CiB9CiAKLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lv
bjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZTsKKyAgICByZXR1cm4gbV9jYXRlZ29yeU92ZXJy
aWRlOwogfQogCi1mbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSBjb25zdAorZmxvYXQg
QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2FtcGxlUmF0ZV07CiB9
CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1ZGlv
U2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRB
VkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIElPQnVmZmVyRHVyYXRpb25dICog
c2FtcGxlUmF0ZSgpOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENo
YW5uZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hh
bm5lbHMoKSBjb25zdAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFz
cygpIHNoYXJlZEluc3RhbmNlXSBvdXRwdXROdW1iZXJPZkNoYW5uZWxzXTsKIH0KIAotc2l6ZV90
IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAorc2l6
ZV90IEF1ZGlvU2Vzc2lvbklPUzo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25z
dAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZElu
c3RhbmNlXSBtYXhpbXVtT3V0cHV0TnVtYmVyT2ZDaGFubmVsc107CiB9CiAKLWJvb2wgQXVkaW9T
ZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQorYm9vbCBBdWRpb1Nl
c3Npb25JT1M6OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiB7Ci0gICAgaWYg
KCFtX3ByaXZhdGUtPm1fd29ya1F1ZXVlKQotICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7Cisg
ICAgaWYgKCFtX3dvcmtRdWV1ZSkKKyAgICAgICAgbV93b3JrUXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiQXVkaW9TZXNzaW9uIEFjdGl2YXRpb24gUXVldWUiKTsKIAogICAgIC8vIFdlIG5lZWQg
dG8gZGVhY3RpdmF0ZSB0aGUgc2Vzc2lvbiBvbiBhbm90aGVyIHF1ZXVlIGJlY2F1c2UgdGhlIEFW
QXVkaW9TZXNzaW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJzT25EZWFjdGl2YXRpb24gb3B0
aW9uCiAgICAgLy8gbWVhbnMgdGhhdCBBVkF1ZGlvU2Vzc2lvbiBtYXkgc3luY2hyb25vdXNseSB1
bmR1Y2sgcHJldmlvdXNseSBkdWNrZWQgY2xpZW50cy4gQWN0aXZhdGlvbiBuZWVkcyB0byBjb21w
bGV0ZSBiZWZvcmUgdGhpcyBtZXRob2QKICAgICAvLyByZXR1cm5zLCBzbyBkbyBpdCBzeW5jaHJv
bm91c2x5IG9uIHRoZSBzYW1lIHNlcmlhbCBxdWV1ZS4KICAgICBpZiAoYWN0aXZlKSB7CiAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVl
LT5kaXNwYXRjaFN5bmMoWyZzdWNjZXNzXSB7CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aFN5bmMoWyZzdWNjZXNzXSB7CiAgICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAg
ICAgICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2Vd
IHNldEFjdGl2ZTpZRVMgd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAgICAgICAgICAg
c3VjY2VzcyA9ICFlcnJvcjsKQEAgLTI3Nyw3ICsyNTYsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6
dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sIGFjdGl2ZSkKICAgICAgICAgcmV0dXJuIHN1Y2Nl
c3M7CiAgICAgfQogCi0gICAgbV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW10gewor
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbXSB7CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOwogICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXSBzZXRBY3RpdmU6Tk8gd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAgIH0pOwpA
QCAtMjg1LDEyICsyNjQsMTIgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50
ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBBdWRpb1Nl
c3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbklP
Uzo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRB
VkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHByZWZlcnJlZElPQnVmZmVyRHVy
YXRpb25dICogc2FtcGxlUmF0ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjpz
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewogICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6ZSAvIHNhbXBsZVJh
dGUoKTsKQEAgLTI5OCwzMiArMjc3LDMyIEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogICAgIEFTU0VSVCghZXJyb3IpOwogfQog
Ci1ib29sIEF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCgpIGNvbnN0Citib29sIEF1ZGlvU2Vzc2lvbklP
Uzo6aXNNdXRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEF1ZGlv
U2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjphZGRJ
bnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lk
IEF1ZGlvU2Vzc2lvbklPUzo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyKQogewogICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzLmFkZChvYnNl
cnZlcik7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZl
cihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
KQogewogICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiB9CiAK
LXZvaWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCit2b2lkIEF1ZGlvU2Vzc2lv
bklPUzo6YmVnaW5JbnRlcnJ1cHRpb24oKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBt
X2ludGVycnVwdGlvbk9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuYmVnaW5BdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb24oKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlv
bihNYXlSZXN1bWUgbWF5UmVzdW1lKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmVuZEludGVycnVw
dGlvbihNYXlSZXN1bWUgbWF5UmVzdW1lKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBt
X2ludGVycnVwdGlvbk9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuZW5kQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uKG1heVJlc3VtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBmYWM1OGIxYzQ1YjE3
MmMyNGI3MzVkYzM5NzA5ZGJlYTdjOTQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaApAQCAtMCwwICsxLDg3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYg
UExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKK3R5cGVkZWYgVUlu
dDMyIEF1ZGlvT2JqZWN0SUQ7Cit0eXBlZGVmIHN0cnVjdCBBdWRpb09iamVjdFByb3BlcnR5QWRk
cmVzcyBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzczsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBBdWRpb1Nlc3Npb25NYWMgZmluYWwgOiBwdWJsaWMgQXVkaW9TZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBBdWRpb1Nlc3Npb25NYWMoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXVk
aW9TZXNzaW9uTWFjKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgYWRkU2FtcGxl
UmF0ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdDsKKyAgICB2b2lkIGFkZEJ1ZmZlclNpemVPYnNl
cnZlcklmTmVlZGVkKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgT1NTdGF0dXMgaGFuZGxlU2FtcGxl
UmF0ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKKyAgICBzdGF0aWMgT1NTdGF0dXMgaGFu
ZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKKworICAgIC8vIEF1ZGlv
U2Vzc2lvbgorICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY2F0ZWdvcnk7IH0KKyAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpIGZpbmFs
OworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
PikgZmluYWw7CisgICAgdm9pZCBzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUsIFJvdXRlU2hhcmlu
Z1BvbGljeSkgZmluYWw7CisgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnlP
dmVycmlkZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2F0ZWdvcnlPdmVycmlkZTsgfQorICAg
IHZvaWQgc2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUpIGZpbmFsOworICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0
IGZpbmFsOworICAgIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QgZmluYWw7
CisgICAgc2l6ZV90IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCB0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wpIGZpbmFsOworICAgIFJvdXRl
U2hhcmluZ1BvbGljeSByb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdCBmaW5hbDsKKyAgICBTdHJp
bmcgcm91dGluZ0NvbnRleHRVSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgcHJlZmVycmVk
QnVmZmVyU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShzaXplX3QpIGZpbmFsOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgaGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgYWRkTXV0ZWRTdGF0
ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlTXV0
ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopIGZpbmFsOworCisgICAgT3B0aW9u
YWw8Ym9vbD4gbV9sYXN0TXV0ZWRTdGF0ZTsKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSBtX2NhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpOb25lIH07CisjaWYgRU5BQkxFKFJPVVRJTkdf
QVJCSVRSQVRJT04pCisgICAgYm9vbCBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nIHsgZmFsc2Ug
fTsKKyAgICBib29sIG1faW5Sb3V0aW5nQXJiaXRyYXRpb24geyBmYWxzZSB9OworICAgIE9wdGlv
bmFsPGJvb2w+IG1fcGxheWluZ1RvQmx1ZXRvb3RoOworICAgIE9wdGlvbmFsPGJvb2w+IG1fcGxh
eWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGU7CisjZW5kaWYKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVn
b3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGUgeyBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZTo6
Tm9uZSB9OworICAgIG11dGFibGUgYm9vbCBtX2hhc1NhbXBsZVJhdGVPYnNlcnZlciB7IGZhbHNl
IH07CisgICAgbXV0YWJsZSBib29sIG1faGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsgZmFsc2UgfTsK
KyAgICBtdXRhYmxlIE9wdGlvbmFsPGRvdWJsZT4gbV9zYW1wbGVSYXRlOworICAgIG11dGFibGUg
T3B0aW9uYWw8c2l6ZV90PiBtX2J1ZmZlclNpemU7Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0K
aW5kZXggZjhlNDQ5ZDM3ZjA4ZTFlMjcxMjYwNTQ5Zjc3OTQwYzNiZTM1YTYxOS4uOTkzNTBmODc5
YzE3NDI1ZWYxNTA2NTE1MDI0Nzk3MzQ0OGExNzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlvU2Vzc2lvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJBdWRpb1Nlc3Npb24uaCIK
KyNpbXBvcnQgIkF1ZGlvU2Vzc2lvbk1hYy5oIgogCiAjaWYgVVNFKEFVRElPX1NFU1NJT04pICYm
IFBMQVRGT1JNKE1BQykKIApAQCAtODIsMzcgKzgyLDExIEBAIHN0YXRpYyBmbG9hdCBkZWZhdWx0
RGV2aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKQogfQogI2VuZGlmCiAKLWNsYXNzIEF1ZGlvU2Vz
c2lvblByaXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IGV4cGxpY2l0IEF1ZGlvU2Vzc2lvblByaXZhdGUoKSA9IGRlZmF1bHQ7Ci0KLSAgICB2b2lkIGFk
ZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkKCk7Ci0gICAgdm9pZCBhZGRCdWZmZXJTaXplT2Jz
ZXJ2ZXJJZk5lZWRlZCgpOwotCi0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZVNhbXBsZVJhdGVD
aGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRk
cmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7Ci0gICAgc3RhdGljIE9TU3RhdHVzIGhhbmRsZUJ1
ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFBy
b3BlcnR5QWRkcmVzcyosIHZvaWQqIGluQ2xpZW50RGF0YSk7Ci0KLSAgICBPcHRpb25hbDxib29s
PiBsYXN0TXV0ZWRTdGF0ZTsKLSAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBjYXRlZ29y
eSB7IEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlOjpOb25lIH07Ci0jaWYgRU5BQkxFKFJPVVRJ
TkdfQVJCSVRSQVRJT04pCi0gICAgYm9vbCBzZXR1cEFyYml0cmF0aW9uT25nb2luZyB7IGZhbHNl
IH07Ci0gICAgT3B0aW9uYWw8Ym9vbD4gcGxheWluZ1RvQmx1ZXRvb3RoOwotICAgIE9wdGlvbmFs
PGJvb2w+IHBsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlOwotI2VuZGlmCi0gICAgQXVkaW9TZXNz
aW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlOwotICAgIGJvb2wgaW5Sb3V0aW5n
QXJiaXRyYXRpb24geyBmYWxzZSB9OwotICAgIGJvb2wgaGFzU2FtcGxlUmF0ZU9ic2VydmVyIHsg
ZmFsc2UgfTsKLSAgICBib29sIGhhc0J1ZmZlclNpemVPYnNlcnZlciB7IGZhbHNlIH07Ci0gICAg
T3B0aW9uYWw8ZG91YmxlPiBzYW1wbGVSYXRlOwotICAgIE9wdGlvbmFsPHNpemVfdD4gYnVmZmVy
U2l6ZTsKLX07Ci0KLXZvaWQgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkU2FtcGxlUmF0ZU9ic2Vy
dmVySWZOZWVkZWQoKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZl
cklmTmVlZGVkKCkgY29uc3QKIHsKLSAgICBpZiAoaGFzU2FtcGxlUmF0ZU9ic2VydmVyKQorICAg
IGlmIChtX2hhc1NhbXBsZVJhdGVPYnNlcnZlcikKICAgICAgICAgcmV0dXJuOwotICAgIGhhc1Nh
bXBsZVJhdGVPYnNlcnZlciA9IHRydWU7CisgICAgbV9oYXNTYW1wbGVSYXRlT2JzZXJ2ZXIgPSB0
cnVlOwogCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3Mgbm9taW5hbFNhbXBsZVJhdGVB
ZGRyZXNzID0gewogICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eU5vbWluYWxTYW1wbGVSYXRl
LApAQCAtMTIxLDE2ICs5NSwxNiBAQCB2b2lkIEF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKCkKICAgICAgICAga0F1ZGlvT2JqZWN0UHJvcGVydHlFbGVt
ZW50TWFzdGVyCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAg
IH07Ci0gICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZpY2UoKSwg
Jm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgaGFuZGxlU2FtcGxlUmF0ZUNoYW5nZSwgdGhpcyk7
CisgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZpY2UoKSwgJm5v
bWluYWxTYW1wbGVSYXRlQWRkcmVzcywgaGFuZGxlU2FtcGxlUmF0ZUNoYW5nZSwgY29uc3RfY2Fz
dDxBdWRpb1Nlc3Npb25NYWMqPih0aGlzKSk7CiB9CiAKLU9TU3RhdHVzIEF1ZGlvU2Vzc2lvblBy
aXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQz
MiwgY29uc3QgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MqIHNhbXBsZVJhdGVBZGRyZXNzLCB2
b2lkKiBpbkNsaWVudERhdGEpCitPU1N0YXR1cyBBdWRpb1Nlc3Npb25NYWM6OmhhbmRsZVNhbXBs
ZVJhdGVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmpl
Y3RQcm9wZXJ0eUFkZHJlc3MqIHNhbXBsZVJhdGVBZGRyZXNzLCB2b2lkKiBpbkNsaWVudERhdGEp
CiB7CiAgICAgQVNTRVJUKGluQ2xpZW50RGF0YSk7CiAgICAgaWYgKCFpbkNsaWVudERhdGEpCiAg
ICAgICAgIHJldHVybiBub0VycjsKIAotICAgIGF1dG8qIHNlc3Npb25Qcml2YXRlID0gc3RhdGlj
X2Nhc3Q8QXVkaW9TZXNzaW9uUHJpdmF0ZSo+KGluQ2xpZW50RGF0YSk7CisgICAgYXV0byogc2Vz
c2lvbiA9IHN0YXRpY19jYXN0PEF1ZGlvU2Vzc2lvbk1hYyo+KGluQ2xpZW50RGF0YSk7CiAKICAg
ICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRlOwogICAgIFVJbnQzMiBub21pbmFsU2FtcGxlUmF0
ZVNpemUgPSBzaXplb2YoRmxvYXQ2NCk7CkBAIC0xMzgsMTQgKzExMiwxNSBAQCBPU1N0YXR1cyBB
dWRpb1Nlc3Npb25Qcml2YXRlOjpoYW5kbGVTYW1wbGVSYXRlQ2hhbmdlKEF1ZGlvT2JqZWN0SUQg
ZGV2aWNlLCBVSW50MwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAK
LSAgICBzZXNzaW9uUHJpdmF0ZS0+c2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQo
bm9taW5hbFNhbXBsZVJhdGUpOworICAgIHNlc3Npb24tPm1fc2FtcGxlUmF0ZSA9IG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOwogICAgIHJldHVybiBub0VycjsKIH0K
IAotdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRl
ZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQo
KSBjb25zdAogewotICAgIGlmIChoYXNCdWZmZXJTaXplT2JzZXJ2ZXIpCisgICAgaWYgKG1faGFz
QnVmZmVyU2l6ZU9ic2VydmVyKQogICAgICAgICByZXR1cm47CisgICAgbV9oYXNCdWZmZXJTaXpl
T2JzZXJ2ZXIgPSB0cnVlOwogCiAgICAgQXVkaW9PYmplY3RQcm9wZXJ0eUFkZHJlc3MgYnVmZmVy
U2l6ZUFkZHJlc3MgPSB7CiAgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5QnVmZmVyRnJhbWVT
aXplLApAQCAtMTU0LDE2ICsxMjksMTYgQEAgdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRC
dWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpCiAgICAgICAgIGtBdWRpb09iamVjdFByb3BlcnR5
RWxlbWVudE1hc3RlcgogICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
ICAgICB9OwotICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZhdWx0RGV2aWNl
KCksICZidWZmZXJTaXplQWRkcmVzcywgaGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSwgdGhpcyk7Cisg
ICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVyKGRlZmF1bHREZXZpY2UoKSwgJmJ1ZmZl
clNpemVBZGRyZXNzLCBoYW5kbGVCdWZmZXJTaXplQ2hhbmdlLCBjb25zdF9jYXN0PEF1ZGlvU2Vz
c2lvbk1hYyo+KHRoaXMpKTsKIH0KIAotT1NTdGF0dXMgQXVkaW9TZXNzaW9uUHJpdmF0ZTo6aGFu
ZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMyLCBjb25zdCBB
dWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyogYnVmZmVyU2l6ZUFkZHJlc3MsIHZvaWQqIGluQ2xp
ZW50RGF0YSkKK09TU3RhdHVzIEF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5n
ZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyogYnVmZmVyU2l6ZUFkZHJlc3MsIHZvaWQqIGluQ2xpZW50RGF0YSkKIHsKICAgICBB
U1NFUlQoaW5DbGllbnREYXRhKTsKICAgICBpZiAoIWluQ2xpZW50RGF0YSkKICAgICAgICAgcmV0
dXJuIG5vRXJyOwogCi0gICAgYXV0byogc2Vzc2lvblByaXZhdGUgPSBzdGF0aWNfY2FzdDxBdWRp
b1Nlc3Npb25Qcml2YXRlKj4oaW5DbGllbnREYXRhKTsKKyAgICBhdXRvKiBzZXNzaW9uID0gc3Rh
dGljX2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4oaW5DbGllbnREYXRhKTsKIAogICAgIFVJbnQzMiBi
dWZmZXJTaXplOwogICAgIFVJbnQzMiBidWZmZXJTaXplU2l6ZSA9IHNpemVvZihidWZmZXJTaXpl
KTsKQEAgLTE3MSwzMyArMTQ2LDIxIEBAIE9TU3RhdHVzIEF1ZGlvU2Vzc2lvblByaXZhdGU6Omhh
bmRsZUJ1ZmZlclNpemVDaGFuZ2UoQXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzCiAgICAgaWYg
KHJlc3VsdCkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIHNlc3Npb25Qcml2YXRlLT5i
dWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKKyAgICBzZXNzaW9uLT5tX2J1ZmZlclNpemUgPSBidWZm
ZXJTaXplOwogICAgIHJldHVybiBub0VycjsKIH0KIAotQXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Np
b24oKQotICAgIDogbV9wcml2YXRlKG1ha2VVbmlxdWU8QXVkaW9TZXNzaW9uUHJpdmF0ZT4oKSkK
LXsKLX0KLQotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0OwotCi1BdWRp
b1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5jYXRlZ29yeTsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246
OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YXVkaW9P
dXRwdXREZXZpY2VDaGFuZ2VkKCkKIHsKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikK
LSAgICBpZiAoIW1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoIHx8ICptX3ByaXZhdGUtPnBs
YXlpbmdUb0JsdWV0b290aCA9PSBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKSkK
KyAgICBpZiAoIW1fcGxheWluZ1RvQmx1ZXRvb3RoIHx8ICptX3BsYXlpbmdUb0JsdWV0b290aCA9
PSBkZWZhdWx0RGV2aWNlVHJhbnNwb3J0SXNCbHVldG9vdGgoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggPSBXVEY6Om51bGxvcHQ7CisgICAg
bV9wbGF5aW5nVG9CbHVldG9vdGggPSBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIH0KIAotdm9pZCBB
dWRpb1Nlc3Npb246OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUoT3B0aW9uYWw8Ym9v
bD4gdmFsdWUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhP
dmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1ZSkKIHsKICNpZiBFTkFCTEUoUk9VVElOR19BUkJJ
VFJBVElPTikKICAgICBpc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlID0gdmFsdWU7CkBAIC0y
MDYsMjUgKzE2OSwyNSBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9v
dGhPdmVycmlkZShPcHRpb25hbDxib29sPiB2YWx1ZSkKICNlbmRpZgogfQogCi12b2lkIEF1ZGlv
U2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQ
b2xpY3kpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIGNh
dGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kpCiB7CiAjaWYgRU5BQkxFKFJPVVRJTkdfQVJCSVRS
QVRJT04pCiAgICAgYm9vbCBwbGF5aW5nVG9CbHVldG9vdGggPSBkZWZhdWx0RGV2aWNlVHJhbnNw
b3J0SXNCbHVldG9vdGgoKTsKLSAgICBpZiAoY2F0ZWdvcnkgPT0gbV9wcml2YXRlLT5jYXRlZ29y
eSAmJiBtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCAmJiAqbV9wcml2YXRlLT5wbGF5aW5n
VG9CbHVldG9vdGggPT0gcGxheWluZ1RvQmx1ZXRvb3RoKQorICAgIGlmIChjYXRlZ29yeSA9PSBt
X2NhdGVnb3J5ICYmIG1fcGxheWluZ1RvQmx1ZXRvb3RoICYmICptX3BsYXlpbmdUb0JsdWV0b290
aCA9PSBwbGF5aW5nVG9CbHVldG9vdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0
ZS0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAKLSAg
ICBpZiAobV9wcml2YXRlLT5zZXR1cEFyYml0cmF0aW9uT25nb2luZykgewotICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGEgYmVn
aW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeSBpcyBzdGlsbCBvbmdvaW5nIik7CisgICAgaWYgKG1f
c2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVk
aWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5KCkgLSBhIGJlZ2luQXJiaXRyYXRpb25X
aXRoQ2F0ZWdvcnkgaXMgc3RpbGwgb25nb2luZyIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgaWYgKCFtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKG1fcHJpdmF0ZS0+aW5Sb3V0aW5nQXJiaXRyYXRpb24pIHsKLSAgICAgICAgbV9w
cml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlvbiA9IGZhbHNlOworICAgIGlmIChtX2luUm91dGlu
Z0FyYml0cmF0aW9uKSB7CisgICAgICAgIG1faW5Sb3V0aW5nQXJiaXRyYXRpb24gPSBmYWxzZTsK
ICAgICAgICAgbV9yb3V0aW5nQXJiaXRyYXRpb25DbGllbnQtPmxlYXZlUm91dGluZ0Ficml0cmF0
aW9uKCk7CiAgICAgfQogCkBAIC0yMzQsNDQgKzE5NywzOSBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6
c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3kpCiAg
ICAgdXNpbmcgUm91dGluZ0FyYml0cmF0aW9uRXJyb3IgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJi
aXRyYXRpb25DbGllbnQ6OlJvdXRpbmdBcmJpdHJhdGlvbkVycm9yOwogICAgIHVzaW5nIERlZmF1
bHRSb3V0ZUNoYW5nZWQgPSBBdWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ6OkRl
ZmF1bHRSb3V0ZUNoYW5nZWQ7CiAKLSAgICBtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9
IHBsYXlpbmdUb0JsdWV0b290aDsKLSAgICBtX3ByaXZhdGUtPnNldHVwQXJiaXRyYXRpb25Pbmdv
aW5nID0gdHJ1ZTsKLSAgICBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudC0+YmVnaW5Sb3V0aW5n
QXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkobV9wcml2YXRlLT5jYXRlZ29yeSwgW3RoaXNdIChSb3V0
aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRlQ2hhbmdlZCBkZWZhdWx0Um91
dGVDaGFuZ2VkKSB7Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcg
PSBmYWxzZTsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IHBsYXlpbmdUb0JsdWV0b290aDsK
KyAgICBtX3NldHVwQXJiaXRyYXRpb25PbmdvaW5nID0gdHJ1ZTsKKyAgICBtX3JvdXRpbmdBcmJp
dHJhdGlvbkNsaWVudC0+YmVnaW5Sb3V0aW5nQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnkobV9jYXRl
Z29yeSwgW3RoaXNdIChSb3V0aW5nQXJiaXRyYXRpb25FcnJvciBlcnJvciwgRGVmYXVsdFJvdXRl
Q2hhbmdlZCBkZWZhdWx0Um91dGVDaGFuZ2VkKSB7CisgICAgICAgIG1fc2V0dXBBcmJpdHJhdGlv
bk9uZ29pbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKGVycm9yICE9IFJvdXRpbmdBcmJpdHJhdGlv
bkVycm9yOjpOb25lKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIkF1
ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoKSAtIGJlZ2luQXJiaXRyYXRpb25XaXRoQ2F0ZWdvcnk6
JXMgZmFpbGVkIHdpdGggZXJyb3IgJXMiLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhtX3By
aXZhdGUtPmNhdGVnb3J5KS5hc2NpaSgpLmRhdGEoKSwgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoZXJyb3IpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSgpIC0gYmVnaW5BcmJpdHJhdGlv
bldpdGhDYXRlZ29yeTolcyBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKG1fY2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyhlcnJvcikuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgbV9wcml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlvbiA9IHRydWU7
CisgICAgICAgIG1faW5Sb3V0aW5nQXJiaXRyYXRpb24gPSB0cnVlOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBEbyB3ZSBuZWVkIHRvIHJlc2V0IHNhbXBsZSByYXRlIGFuZCBidWZmZXIgc2l6ZSBmb3Ig
dGhlIG5ldyBkZWZhdWx0IGRldmljZT8KICAgICAgICAgaWYgKGRlZmF1bHRSb3V0ZUNoYW5nZWQg
PT0gRGVmYXVsdFJvdXRlQ2hhbmdlZDo6WWVzKQotICAgICAgICAgICAgTE9HKE1lZGlhLCAiQXVk
aW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gZGVmYXVsdFJvdXRlQ2hhbmdlZCEiKTsKKyAgICAg
ICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnkoKSAtIGRlZmF1
bHRSb3V0ZUNoYW5nZWQhIik7CiAgICAgfSk7CiAjZWxzZQotICAgIG1fcHJpdmF0ZS0+Y2F0ZWdv
cnkgPSBjYXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5ID0gY2F0ZWdvcnk7CiAjZW5kaWYKIH0KIAot
QXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVkaW9TZXNzaW9uOjpjYXRlZ29yeU92ZXJyaWRl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGU7Ci19
Ci0KLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVnb3J5VHlwZSBj
YXRlZ29yeSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeU92ZXJyaWRlKENhdGVn
b3J5VHlwZSBjYXRlZ29yeSkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJp
ZGUgPT0gY2F0ZWdvcnkpCisgICAgaWYgKG1fY2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcml2YXRlLT5tX2NhdGVnb3J5T3ZlcnJpZGUgPSBj
YXRlZ29yeTsKKyAgICBtX2NhdGVnb3J5T3ZlcnJpZGUgPSBjYXRlZ29yeTsKICAgICBzZXRDYXRl
Z29yeShjYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0KTsKIH0KIAotZmxvYXQg
QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgY29uc3QKK2Zsb2F0IEF1ZGlvU2Vzc2lvbk1hYzo6
c2FtcGxlUmF0ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3ByaXZhdGUtPnNhbXBsZVJhdGUpIHsK
LSAgICAgICAgbV9wcml2YXRlLT5hZGRTYW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpOworICAg
IGlmICghbV9zYW1wbGVSYXRlKSB7CisgICAgICAgIGFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVl
ZGVkKCk7CiAKICAgICAgICAgRmxvYXQ2NCBub21pbmFsU2FtcGxlUmF0ZTsKICAgICAgICAgVUlu
dDMyIG5vbWluYWxTYW1wbGVSYXRlU2l6ZSA9IHNpemVvZihGbG9hdDY0KTsKQEAgLTI4NSwyNSAr
MjQzLDI1IEBAIGZsb2F0IEF1ZGlvU2Vzc2lvbjo6c2FtcGxlUmF0ZSgpIGNvbnN0CiAgICAgICAg
IH07CiAgICAgICAgIE9TU3RhdHVzIHJlc3VsdCA9IEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRh
KGRlZmF1bHREZXZpY2UoKSwgJm5vbWluYWxTYW1wbGVSYXRlQWRkcmVzcywgMCwgMCwgJm5vbWlu
YWxTYW1wbGVSYXRlU2l6ZSwgKHZvaWQqKSZub21pbmFsU2FtcGxlUmF0ZSk7CiAgICAgICAgIGlm
IChyZXN1bHQgIT0gbm9FcnIpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlh
LCAiQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgLSBBdWRpb09iamVjdEdldFByb3BlcnR5RGF0
YSgpIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlKCkgLSBBdWRpb09i
amVjdEdldFByb3BlcnR5RGF0YSgpIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgcmVzdWx0KTsKICAg
ICAgICAgICAgIHJldHVybiA0NDEwMDsKICAgICAgICAgfQogCi0gICAgICAgIG1fcHJpdmF0ZS0+
c2FtcGxlUmF0ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQobm9taW5hbFNhbXBsZVJhdGUpOwot
ICAgICAgICBpZiAoISptX3ByaXZhdGUtPnNhbXBsZVJhdGUpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkgLSBBdWRpb09i
amVjdEdldFByb3BlcnR5RGF0YSgpIHJldHVybiBhbiBpbnZhbGlkIHNhbXBsZSByYXRlIik7Ci0g
ICAgICAgICAgICBtX3ByaXZhdGUtPnNhbXBsZVJhdGUgPSA0NDEwMDsKKyAgICAgICAgbV9zYW1w
bGVSYXRlID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7CisgICAg
ICAgIGlmICghKm1fc2FtcGxlUmF0ZSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJhdGUoKSAtIEF1ZGlvT2JqZWN0R2V0UHJv
cGVydHlEYXRhKCkgcmV0dXJuIGFuIGludmFsaWQgc2FtcGxlIHJhdGUiKTsKKyAgICAgICAgICAg
IG1fc2FtcGxlUmF0ZSA9IDQ0MTAwOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAqbV9w
cml2YXRlLT5zYW1wbGVSYXRlOworICAgIHJldHVybiAqbV9zYW1wbGVSYXRlOwogfQogCi1zaXpl
X3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25N
YWM6OmJ1ZmZlclNpemUoKSBjb25zdAogewotICAgIGlmIChtX3ByaXZhdGUtPmJ1ZmZlclNpemUp
Ci0gICAgICAgIHJldHVybiAqbV9wcml2YXRlLT5idWZmZXJTaXplOworICAgIGlmIChtX2J1ZmZl
clNpemUpCisgICAgICAgIHJldHVybiAqbV9idWZmZXJTaXplOwogCi0gICAgbV9wcml2YXRlLT5h
ZGRCdWZmZXJTaXplT2JzZXJ2ZXJJZk5lZWRlZCgpOworICAgIGFkZEJ1ZmZlclNpemVPYnNlcnZl
cklmTmVlZGVkKCk7CiAKICAgICBVSW50MzIgYnVmZmVyU2l6ZTsKICAgICBVSW50MzIgYnVmZmVy
U2l6ZVNpemUgPSBzaXplb2YoYnVmZmVyU2l6ZSk7CkBAIC0zMjAsMTggKzI3OCwxOCBAQCBzaXpl
X3QgQXVkaW9TZXNzaW9uOjpidWZmZXJTaXplKCkgY29uc3QKICAgICBpZiAocmVzdWx0KQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIG1fcHJpdmF0ZS0+YnVmZmVyU2l6ZSA9IGJ1ZmZlclNpemU7
CisgICAgbV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZTsKIAogICAgIHJldHVybiBidWZmZXJTaXpl
OwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29u
c3QKK3NpemVfdCBBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25z
dAogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLXNpemVfdCBB
dWRpb1Nlc3Npb246Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QKK3NpemVf
dCBBdWRpb1Nlc3Npb25NYWM6Om1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QK
IHsKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBzaXplQWRkcmVzcyA9IHsKICAgICAg
ICAga0F1ZGlvRGV2aWNlUHJvcGVydHlTdHJlYW1Db25maWd1cmF0aW9uLApAQCAtMzU5LDMwICsz
MTcsMzAgQEAgc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5l
bHMoKSBjb25zdAogICAgIHJldHVybiBjaGFubmVsczsKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb246
OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCkKK2Jvb2wgQXVkaW9TZXNzaW9uTWFjOjp0cnlU
b1NldEFjdGl2ZUludGVybmFsKGJvb2wpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotUm91dGVTaGFyaW5nUG9saWN5IEF1ZGlvU2Vzc2lvbjo6cm91dGVT
aGFyaW5nUG9saWN5KCkgY29uc3QKK1JvdXRlU2hhcmluZ1BvbGljeSBBdWRpb1Nlc3Npb25NYWM6
OnJvdXRlU2hhcmluZ1BvbGljeSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFJvdXRlU2hhcmluZ1Bv
bGljeTo6RGVmYXVsdDsKIH0KIAotU3RyaW5nIEF1ZGlvU2Vzc2lvbjo6cm91dGluZ0NvbnRleHRV
SUQoKSBjb25zdAorU3RyaW5nIEF1ZGlvU2Vzc2lvbk1hYzo6cm91dGluZ0NvbnRleHRVSUQoKSBj
b25zdAogewogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQogCi1zaXplX3QgQXVkaW9TZXNz
aW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25NYWM6
OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAogewogICAgIHJldHVybiBidWZmZXJTaXplKCk7
CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBi
dWZmZXJTaXplKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
c2l6ZV90IGJ1ZmZlclNpemUpCiB7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+YnVmZmVyU2l6ZSA9PSBi
dWZmZXJTaXplKQorICAgIGlmIChtX2J1ZmZlclNpemUgPT0gYnVmZmVyU2l6ZSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQXVkaW9WYWx1ZVJhbmdlIGJ1ZmZlclNpemVSYW5nZSA9IHswLCAwfTsK
QEAgLTQxMywxNyArMzcxLDE3IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZm
ZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogICAgIHJlc3VsdCA9IEF1ZGlvT2JqZWN0U2V0UHJv
cGVydHlEYXRhKGRlZmF1bHREZXZpY2UoKSwgJnByZWZlcnJlZEJ1ZmZlclNpemVBZGRyZXNzLCAw
LCAwLCBzaXplb2YoYnVmZmVyU2l6ZU91dCksICh2b2lkKikmYnVmZmVyU2l6ZU91dCk7CiAKICAg
ICBpZiAoIXJlc3VsdCkKLSAgICAgICAgbV9wcml2YXRlLT5idWZmZXJTaXplID0gYnVmZmVyU2l6
ZU91dDsKKyAgICAgICAgbV9idWZmZXJTaXplID0gYnVmZmVyU2l6ZU91dDsKIAogI2lmICFMT0df
RElTQUJMRUQKICAgICBpZiAocmVzdWx0KQotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Np
b246OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSAtIGZhaWxlZCB3aXRoIGVycm9yICVkIiwg
YnVmZmVyU2l6ZSwgc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQpKTsKKyAgICAgICAgTE9HKE1lZGlh
LCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKCV6dSkgLSBmYWlsZWQg
d2l0aCBlcnJvciAlZCIsIGJ1ZmZlclNpemUsIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KSk7CiAg
ICAgZWxzZQotICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1
ZmZlclNpemUoJXp1KSIsIGJ1ZmZlclNpemUpOworICAgICAgICBMT0coTWVkaWEsICJBdWRpb1Nl
c3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUoJXp1KSIsIGJ1ZmZlclNpemUpOwogI2Vu
ZGlmCiB9CiAKLWJvb2wgQXVkaW9TZXNzaW9uOjppc011dGVkKCkgY29uc3QKK2Jvb2wgQXVkaW9T
ZXNzaW9uTWFjOjppc011dGVkKCkgY29uc3QKIHsKICAgICBVSW50MzIgbXV0ZSA9IDA7CiAgICAg
VUludDMyIG11dGVTaXplID0gc2l6ZW9mKG11dGUpOwpAQCAtNDU1LDIyICs0MTMsMTkgQEAgc3Rh
dGljIE9TU3RhdHVzIGhhbmRsZU11dGVQcm9wZXJ0eUNoYW5nZShBdWRpb09iamVjdElELCBVSW50
MzIsIGNvbnN0IEF1ZGlvT2JqZWMKICAgICByZXR1cm4gbm9FcnI7CiB9CiAKLXZvaWQgQXVkaW9T
ZXNzaW9uOjpoYW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpo
YW5kbGVNdXRlZFN0YXRlQ2hhbmdlKCkKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZSkKLSAgICAgICAg
cmV0dXJuOwotCiAgICAgYm9vbCBpc0N1cnJlbnRseU11dGVkID0gaXNNdXRlZCgpOwotICAgIGlm
IChtX3ByaXZhdGUtPmxhc3RNdXRlZFN0YXRlICYmICptX3ByaXZhdGUtPmxhc3RNdXRlZFN0YXRl
ID09IGlzQ3VycmVudGx5TXV0ZWQpCisgICAgaWYgKG1fbGFzdE11dGVkU3RhdGUgJiYgKm1fbGFz
dE11dGVkU3RhdGUgPT0gaXNDdXJyZW50bHlNdXRlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Zm9yIChhdXRvKiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+aGFy
ZHdhcmVNdXRlZFN0YXRlRGlkQ2hhbmdlKHRoaXMpOwogCi0gICAgbV9wcml2YXRlLT5sYXN0TXV0
ZWRTdGF0ZSA9IGlzQ3VycmVudGx5TXV0ZWQ7CisgICAgbV9sYXN0TXV0ZWRTdGF0ZSA9IGlzQ3Vy
cmVudGx5TXV0ZWQ7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjphZGRNdXRlZFN0YXRlT2JzZXJ2
ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjph
ZGRNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRTdGF0ZU9ic2VydmVyKiBvYnNlcnZlcikKIHsKICAg
ICBtX29ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwogCkBAIC00ODcsNyArNDQyLDcgQEAgdm9pZCBB
dWRpb1Nlc3Npb246OmFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogICAgIEF1ZGlvT2JqZWN0QWRkUHJvcGVydHlMaXN0ZW5lcihkZWZhdWx0RGV2aWNl
KCksICZtdXRlQWRkcmVzcywgaGFuZGxlTXV0ZVByb3BlcnR5Q2hhbmdlLCB0aGlzKTsKIH0KIAot
dm9pZCBBdWRpb1Nlc3Npb246OnJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2Jz
ZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnJlbW92ZU11dGVkU3RhdGVP
YnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIGlmIChtX29ic2Vy
dmVycy5zaXplKCkgPT0gMSkgewogICAgICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBt
dXRlQWRkcmVzcyA9IHsK
</data>
<flag name="commit-queue"
          id="450005"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>428947</attachid>
            <date>2021-05-18 09:31:33 -0700</date>
            <delta_ts>2021-05-18 13:59:44 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-223564-20210518093132.patch</filename>
            <type>text/plain</type>
            <size>48365</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmVmMzZmNTVmZmYxYzcy
ZmJjOGNkZGNjOWRhMDkzNTU5MzdjMGI1ZC4uNzI1YjRhMjAzOTA3ZmNiN2RkYTJjMzQ4Nzk2NWE2
OTlmODY5YjM3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMS0wMy0yMSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVUF0gUmVtb3RlQXVk
aW9TZXNzaW9uIGNhbGxzIGludG8gQVZBdWRpb1Nlc3Npb24gd2hlbiBHUFVQIGlzIGVuYWJsZWQs
IGNhdXNpbmcgaGFuZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyMzU2NAorICAgICAgICA8cmRhcjovLzc0NzUwMjkxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEVyaWMgQ2FybHNvbi4KKworICAgICAgICBOb3cgdGhhdCBBdWRpb1Nlc3Npb24gY2Fu
IGhhdmUgdHdvIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbnMgYXQgcnVudGltZSwgaXQgc2hvdWxk
IGJlIGFuCisgICAgICAgIGFjdHVhbCB2aXJ0dWFsIGNsYXNzLCB3aG9zZSBjb25jcmV0ZSwgcGVy
LXBsYXRmb3JtIGltcGxlbWVudGF0aW9ucyBhcmUgZGVyaXZhdGlvbnMgb2YgdGhlCisgICAgICAg
IGJhc2UgY2xhc3MuIE1ha2UgQXVkaW9TZXNzaW9uSU9TIGFuZCBBdWRpb1Nlc3Npb25NYWMgdHJ1
ZSBzdWJjbGFzc2VzIG9mIEF1ZGlvU2Vzc2lvbiwgYW5kCisgICAgICAgIGFsbG93IFJlbW90ZUF1
ZGlvU2Vzc2lvbiB0byBkZXJpdmUgZnJvbSB0aGF0IHNhbWUgYmFzZSBjbGFzcyAocmF0aGVyIHRo
YW4gQXVkaW9TZXNzaW9uSU9TCisgICAgICAgIG9yIEF1ZGlvU2Vzc2lvbk1hYykuCisKKyAgICAg
ICAgQWxzbyBlbnN1cmUgQXVkaW9TZXNzaW9uSU9TIG9yIEF1ZGlvU2Vzc2lvbk1hYyBpcyBub3Qg
YWNjaWRlbnRhbGx5IGNyZWF0ZWQgd2hlbiBjYWxsaW5nCisgICAgICAgIEF1ZGlvU2Vzc2lvbjo6
c2V0U2hhcmVkU2Vzc2lvbigpIGJ5IG1ha2luZyB0aGUgTmV2ZXJEZXN0cm95ZWQgb2JqZWN0IGhv
bGRpbmcgdGhlIHNlc3Npb24KKyAgICAgICAgYW4gT3B0aW9uYWwsIGFuZCBvbmx5IGxhemlseSBj
cmVhdGluZyB0aGUgc2Vzc2lvbiBmcm9tIEF1ZGlvU2Vzc2lvbjo6c2hhcmVkU2Vzc2lvbigpIGlm
CisgICAgICAgIG9uZSBoYXMgbm90IGJlZW4gZXhwbGljaXRseSBzZXQgYWxyZWFkeS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzaGFyZWRBdWRpb1Nlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzaGFyZWRTZXNzaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERl
bGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmg6CisgICAgICAg
ICogcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpBdWRpb1Nlc3Npb25JT1MpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uSU9TOjp+QXVkaW9TZXNzaW9uSU9TKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNz
aW9uSU9TOjpjYXRlZ29yeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25J
T1M6OnJvdXRlU2hhcmluZ1BvbGljeSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbklPUzo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvU2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6OnRyeVRvU2V0QWN0aXZl
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpwcmVmZXJyZWRC
dWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6c2V0
UHJlZmVycmVkQnVmZmVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25JT1M6
OmlzTXV0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uSU9TOjpoYW5k
bGVNdXRlZFN0YXRlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbklPUzo6
YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
SU9TOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb25JT1M6OmJlZ2luSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvbklPUzo6ZW5kSW50ZXJydXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvblByaXZhdGU6OkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6fkF1ZGlvU2Vzc2lvblByaXZhdGUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpBdWRpb1Nlc3Npb24pOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpjYXRlZ29yeSBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRlU2hhcmluZ1BvbGljeSBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnJvdXRpbmdD
b250ZXh0VUlEIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bjo6c2V0Q2F0ZWdvcnlPdmVycmlkZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5T3ZlcnJpZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uOjpwcmVmZXJyZWRCdWZmZXJTaXplIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmlzTXV0ZWQgY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpoYW5kbGVNdXRlZFN0
YXRlQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6YWRk
SW50ZXJydXB0aW9uT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcik6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb246OmJlZ2luSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6ZW5kSW50ZXJydXB0aW9uKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW06CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZFNhbXBsZVJhdGVPYnNlcnZlcklmTmVlZGVkIGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbk1hYzo6aGFuZGxlU2FtcGxlUmF0
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OmFkZEJ1ZmZlclNp
emVPYnNlcnZlcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lv
bk1hYzo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1Nlc3Npb25NYWM6OnNldElzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeSk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5T3ZlcnJpZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1Nlc3Npb25NYWM6Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVs
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25NYWM6OnRyeVRvU2V0QWN0
aXZlSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpyb3V0ZVNo
YXJpbmdQb2xpY3kgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uTWFjOjpy
b3V0aW5nQ29udGV4dFVJRCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb25N
YWM6OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9T
ZXNzaW9uTWFjOjpzZXRQcmVmZXJyZWRCdWZmZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbk1hYzo6aXNNdXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nl
c3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uTWFjOjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uTWFjOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOgorICAgICAgICAoKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZFNhbXBs
ZVJhdGVPYnNlcnZlcklmTmVlZGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
U2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6YWRkQnVmZmVyU2l6ZU9ic2VydmVySWZO
ZWVkZWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZTo6
aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246OmNhdGVnb3J5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6Y2F0ZWdvcnlPdmVycmlk
ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5T3ZlcnJpZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjpzYW1wbGVSYXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vz
c2lvbjo6YnVmZmVyU2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRp
b1Nlc3Npb246Om51bWJlck9mT3V0cHV0Q2hhbm5lbHMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVyT2ZPdXRwdXRDaGFubmVscyBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnRyeVRvU2V0
QWN0aXZlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
Ojpyb3V0ZVNoYXJpbmdQb2xpY3kgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJyZWRCdWZmZXJT
aXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nlc3Npb246OmhhbmRsZU11
dGVkU3RhdGVDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9TZXNzaW9u
OjphZGRNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9TZXNzaW9uOjpyZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIpOiBEZWxldGVkLgorCiAyMDIxLTA1
LTE3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhU2Vz
c2lvbiBhY3Rpb24gaGFuZGxlcnMgYXJlbid0IHRyZWF0ZWQgYXMgaGF2aW5nIGEgdXNlciBnZXN0
dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggYmViMTg4YTAwYjFiZDk4YmVlOTQ2ZjVmZDAwY2E1ODU1ZjVhNDhhZC4uZjAyZGZl
ZGNjNDI3OTU4Y2E2YTVmODE2NjFhM2VkZmUyOTkxNmZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDMxMSw2ICs0MzExLDcg
QEAKIAkJQ0QzMzZGNjcxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDMz
NkY2NTE3RkEwQUM2MDBERERDRDAgLyogVmlkZW9UcmFja1ByaXZhdGVBVkZPYmpDLmNwcCAqLzsg
fTsKIAkJQ0QzMzZGNjgxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2Jq
Qy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzMzZG
NjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQcml2YXRlQVZGT2JqQy5oICovOyB9Owog
CQlDRDM2QzE2QjI2MEE2NUNDMDBDOEM1MjkgLyogU2hhcmVkUm91dGluZ0FyYml0cmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEMzZDMTY4MjYw
QTYzRDMwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUNEMzZDMTYyMjYwN0U3ODYwMEM4
QzUyOSAvKiBBdWRpb1Nlc3Npb25JT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEMzZDMTYxMjYwN0U3ODYwMEM4QzUyOSAvKiBBdWRpb1Nlc3Npb25J
T1MuaCAqLzsgfTsKIAkJQ0QzQTQ5NUYxN0E5RDAxQjAwMjc0RTQyIC8qIE1lZGlhU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDNBNDk1NjE3
QTlEMDFCMDAyNzRFNDIgLyogTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0QzQTQ5NjIxN0E5RDAx
QjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5NTkxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZl
ci5oICovOyB9OwogCQlDRDNBNDk2NTE3QTlEMDFCMDAyNzRFNDIgLyogU291cmNlQnVmZmVyTGlz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0QzQTQ5
NUMxN0E5RDAxQjAwMjc0RTQyIC8qIFNvdXJjZUJ1ZmZlckxpc3QuaCAqLzsgfTsKQEAgLTE0ODU0
LDYgKzE0ODU1LDggQEAKIAkJQ0QzMzZGNjYxN0ZBMEFDNjAwREREQ0QwIC8qIFZpZGVvVHJhY2tQ
cml2YXRlQVZGT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb1Ry
YWNrUHJpdmF0ZUFWRk9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0QzNkMx
NjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEMzZDMTY5MjYwQTYzRDQwMEM4QzUyOSAvKiBTaGFyZWRSb3V0aW5nQXJiaXRyYXRv
ci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFJvdXRpbmdBcmJpdHJhdG9yLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE1RjI2MDY3QzFGMDBDOEM1MjkgLyog
QXVkaW9TZXNzaW9uTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbk1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvU2Vzc2lvbklPUy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDM3QjM3NDE1QzFBN0UxMDA2REM4OTggLyogRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEMzdCMzc1MTVDMUE3RTEwMDZEQzg5OCAvKiBEaWFnbm9zdGljTG9nZ2luZ0tleXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEM0E0OTU1MTdBOUQwMUIwMDI3NEU0MiAvKiBN
ZWRpYVNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRp
YVNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODE5Niw2ICsyODE5
OSw3IEBACiAJCQkJQ0Q1NTk2OEYxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRlcklP
Uy5jcHAgKi8sCiAJCQkJQ0Q1NTk2OTAxNDc1QjY3ODAwMUQwQkQwIC8qIEF1ZGlvRmlsZVJlYWRl
cklPUy5oICovLAogCQkJCUNEMEVFRTBCMTQ3NDNFMzUwMDNFQUZBMiAvKiBBdWRpb091dHB1dFVu
aXRBZGFwdG9ySU9TLmNwcCAqLywKKwkJCQlDRDM2QzE2MTI2MDdFNzg2MDBDOEM1MjkgLyogQXVk
aW9TZXNzaW9uSU9TLmggKi8sCiAJCQkJQ0RBNzk4MjUxNzBBMjc5MDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbklPUy5tbSAqLywKIAkJCQlDRDg3NUE3NDI0MTFCNzk4MDBCMDlGNTggLyogTWVkaWFT
ZXNzaW9uSGVscGVySU9TLmggKi8sCiAJCQkJQ0Q4NzVBNzUyNDExQjc5ODAwQjA5RjU4IC8qIE1l
ZGlhU2Vzc2lvbkhlbHBlcklPUy5tbSAqLywKQEAgLTMxMjc0LDYgKzMxMjc4LDcgQEAKIAkJCQlD
RDJGNEEyNTE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVyTWFjLmNwcCAq
LywKIAkJCQlDRDJGNEEyNjE4RDhBMzQ5MDA2Mzc0NkQgLyogQXVkaW9IYXJkd2FyZUxpc3RlbmVy
TWFjLmggKi8sCiAJCQkJRkQzMTYwQjYxMkIwMjcyQTAwQzFBMzU5IC8qIEF1ZGlvT3V0cHV0VW5p
dEFkYXB0b3JNYWMuY3BwICovLAorCQkJCUNEMzZDMTVGMjYwNjdDMUYwMEM4QzUyOSAvKiBBdWRp
b1Nlc3Npb25NYWMuaCAqLywKIAkJCQlDRDU0REU0OTE3NDY5QzZEMDA1RTVCMzYgLyogQXVkaW9T
ZXNzaW9uTWFjLm1tICovLAogCQkJCUZEMzE2MEJBMTJCMDI3MkEwMEMxQTM1OSAvKiBGRlRGcmFt
ZU1hYy5jcHAgKi8sCiAJCQkJQ0QzNkMxNjgyNjBBNjNEMzAwQzhDNTI5IC8qIFNoYXJlZFJvdXRp
bmdBcmJpdHJhdG9yLmggKi8sCkBAIC0zMTU5Nyw2ICszMTYwMiw3IEBACiAJCQkJMDczQjg3Njkx
RTQzODVBQzAwNzFDMEVDIC8qIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQ4QzQ2RUMxNTQ2MDhFNzAwQTU5MTBDIC8qIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RBNzk4MkExNzBBM0QwMDAwRDQ1QzU1IC8qIEF1ZGlv
U2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0QzNkMxNjIyNjA3RTc4NjAwQzhDNTI5IC8q
IEF1ZGlvU2Vzc2lvbklPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQzMTYwODkxMkIwMjZGNzAw
QzFBMzU5IC8qIEF1ZGlvU291cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEE3
QkJDMTk3NzM1RkUwMENCRDY0MyAvKiBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ2MkY1MkUxNDU4OThEODAwOTRCMEVEIC8qIEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0F1ZGlvU2Vzc2lvbi5jcHAKaW5kZXggZjdhM2ViMGU3ZGZkNWNkZGZlZTBmYzFjNzMw
MDM1OGMxNjczOWVmNi4uOGU2ODZlNDQ3YjliNjZkY2U4YWI3ZTIxMzcxNGZkZTYwZTkzYmI1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9TZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uY3BwCkBA
IC0zMSwyMiArMzEsNDEgQEAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIkF1
ZGlvU2Vzc2lvbk1hYy5oIgorI2VuZGlmCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorI2lu
Y2x1ZGUgIkF1ZGlvU2Vzc2lvbklPUy5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotc3RhdGljIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+JiBzaGFyZWRBdWRpb1Nlc3Npb24oKQor
c3RhdGljIE9wdGlvbmFsPFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+PiYgc2hhcmVkQXVkaW9TZXNz
aW9uKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VW5pcXVlUmVmPEF1ZGlvU2Vzc2lv
bj4+IHNlc3Npb24gPSBBdWRpb1Nlc3Npb246OmNyZWF0ZSgpOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxPcHRpb25hbDxVbmlxdWVSZWY8QXVkaW9TZXNzaW9uPj4+IHNlc3Npb247CiAgICAg
cmV0dXJuIHNlc3Npb24uZ2V0KCk7CiB9CiAKIFVuaXF1ZVJlZjxBdWRpb1Nlc3Npb24+IEF1ZGlv
U2Vzc2lvbjo6Y3JlYXRlKCkKIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgcmV0dXJuIG1ha2VV
bmlxdWVSZWY8QXVkaW9TZXNzaW9uTWFjPigpOworI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KyAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxBdWRpb1Nlc3Npb25JT1M+KCk7CisjZWxzZQogICAg
IHJldHVybiBtYWtlVW5pcXVlUmVmPEF1ZGlvU2Vzc2lvbj4oKTsKKyNlbmRpZgogfQogCitBdWRp
b1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpID0gZGVmYXVsdDsKK0F1ZGlvU2Vzc2lvbjo6fkF1ZGlv
U2Vzc2lvbigpID0gZGVmYXVsdDsKKwogQXVkaW9TZXNzaW9uJiBBdWRpb1Nlc3Npb246OnNoYXJl
ZFNlc3Npb24oKQogewotICAgIHJldHVybiBzaGFyZWRBdWRpb1Nlc3Npb24oKTsKKyAgICBpZiAo
IXNoYXJlZEF1ZGlvU2Vzc2lvbigpKQorICAgICAgICBzaGFyZWRBdWRpb1Nlc3Npb24oKSA9IEF1
ZGlvU2Vzc2lvbjo6Y3JlYXRlKCk7CisgICAgcmV0dXJuICpzaGFyZWRBdWRpb1Nlc3Npb24oKTsK
IH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OnNldFNoYXJlZFNlc3Npb24oVW5pcXVlUmVmPEF1ZGlv
U2Vzc2lvbj4mJiBzZXNzaW9uKQpAQCAtNjMsMzcgKzgyLDI2IEBAIGJvb2wgQXVkaW9TZXNzaW9u
Ojp0cnlUb1NldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBBdWRpb1Nlc3Npb246OmFkZEludGVycnVwdGlv
bk9ic2VydmVyKEludGVycnVwdGlvbk9ic2VydmVyJikKIHsKKyAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50
ZXJydXB0aW9uT2JzZXJ2ZXImKQogeworICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQg
QXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCiB7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAogdm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpCi17
Ci19Ci0jZW5kaWYKLQotI2lmICFQTEFURk9STShDT0NPQSkKLWNsYXNzIEF1ZGlvU2Vzc2lvblBy
aXZhdGUgewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotfTsKLQotQXVkaW9TZXNzaW9u
OjpBdWRpb1Nlc3Npb24oKQotICAgIDogbV9wcml2YXRlKG51bGxwdHIpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotQXVkaW9TZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkgPSBkZWZhdWx0
OwotCiB2b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNo
YXJpbmdQb2xpY3kpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE2Nyw5ICsxNzUsNiBA
QCBTdHJpbmcgQXVkaW9TZXNzaW9uOjpyb3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CiAgICAgcmV0
dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLSNlbmRpZiAvLyAhUExBVEZPUk0oQ09DT0EpCi0KLSNp
ZiAhUExBVEZPUk0oTUFDKQogdm9pZCBBdWRpb1Nlc3Npb246OmF1ZGlvT3V0cHV0RGV2aWNlQ2hh
bmdlZCgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE3OSw4ICsxODQsNiBAQCB2b2lk
IEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxi
b29sPikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQotI2VuZGlmIC8vICFQTEFURk9STShD
T0NPQSkKLQogCiBTdHJpbmcgY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoUm91dGVTaGFyaW5n
UG9saWN5IGVudW1lcmF0aW9uVmFsdWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9BdWRpb1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0F1ZGlvU2Vzc2lvbi5oCmluZGV4IDFkY2NlM2ExMjhiOTdlYTg4YzIyMmI4M2EwNmQzODQx
OWIyYTY5MzQuLmI4ZjdkMzBmN2Q2NTEwOGRiM2QwYjczNjk4ODk3ZTMwNjBmOThiYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvU2Vzc2lvbi5oCkBAIC0zOCw4ICsz
OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0
ZTsKLQogZW51bSBjbGFzcyBSb3V0ZVNoYXJpbmdQb2xpY3kgOiB1aW50OF90IHsKICAgICBEZWZh
dWx0LAogICAgIExvbmdGb3JtQXVkaW8sCkBAIC03Miw4ICs3MCw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJpbmdQb2xpY3kp
OwogICAgIHZpcnR1YWwgQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlKTsKLSAgICBDYXRlZ29yeVR5cGUgY2F0
ZWdvcnlPdmVycmlkZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDYXRlZ29yeU92ZXJy
aWRlKENhdGVnb3J5VHlwZSk7CisgICAgdmlydHVhbCBDYXRlZ29yeVR5cGUgY2F0ZWdvcnlPdmVy
cmlkZSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFy
aW5nUG9saWN5KCkgY29uc3Q7CiAgICAgdmlydHVhbCBTdHJpbmcgcm91dGluZ0NvbnRleHRVSUQo
KSBjb25zdDsKQEAgLTk1LDE4ICs5MywxOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBoYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UoQXVkaW9TZXNzaW9uKikgPSAwOwogICAgIH07
CiAKLSAgICB2b2lkIGFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
LSAgICB2b2lkIHJlbW92ZU11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZl
ciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVNdXRlZFN0YXRlT2JzZXJ2ZXIoTXV0ZWRT
dGF0ZU9ic2VydmVyKikgeyB9CiAKLSAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgp
OwotICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
Pik7CisgICAgdmlydHVhbCB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc1BsYXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+
KTsKIAotICAgIHZpcnR1YWwgYm9vbCBpc011dGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZU11dGVkU3RhdGVD
aGFuZ2UoKSB7IH0KIAotICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKKyAgICB2aXJ0dWFs
IHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKTsKICAgICBlbnVtIGNsYXNzIE1heVJlc3VtZSB7IE5v
LCBZZXMgfTsKLSAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpOworICAgIHZpcnR1
YWwgdm9pZCBlbmRJbnRlcnJ1cHRpb24oTWF5UmVzdW1lKTsKIAogICAgIGNsYXNzIEludGVycnVw
dGlvbk9ic2VydmVyIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEludGVycnVwdGlvbk9ic2VydmVy
PiB7CiAgICAgcHVibGljOgpAQCAtMTE1LDEyICsxMTMsMTIgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5BdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBlbmRBdWRpb1Nlc3Npb25JbnRlcnJ1cHRpb24oTWF5UmVzdW1lKSA9IDA7
CiAgICAgfTsKLSAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9i
c2VydmVyJik7Ci0gICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRp
b25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnRlcnJ1cHRpb25PYnNlcnZlcihJ
bnRlcnJ1cHRpb25PYnNlcnZlciYpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbnRlcnJ1cHRp
b25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYpOwogCiAgICAgdmlydHVhbCBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmU7IH0KIAotICAgIHZvaWQgc2V0Um91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50KFdlYWtQdHI8QXVkaW9TZXNzaW9uUm91dGluZ0FyYml0cmF0aW9u
Q2xpZW50PiYmIGNsaWVudCkgeyBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudCA9IGNsaWVudDsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRSb3V0aW5nQXJiaXRyYXRpb25DbGllbnQoV2Vha1B0cjxB
dWRpb1Nlc3Npb25Sb3V0aW5nQXJiaXRyYXRpb25DbGllbnQ+JiYgY2xpZW50KSB7IG1fcm91dGlu
Z0FyYml0cmF0aW9uQ2xpZW50ID0gY2xpZW50OyB9CiAKIHByb3RlY3RlZDoKICAgICBmcmllbmQg
Y2xhc3MgTmV2ZXJEZXN0cm95ZWQ8QXVkaW9TZXNzaW9uPjsKQEAgLTEyOCw3ICsxMjYsNiBAQCBw
cm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29s
KTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1Nlc3Npb25Qcml2YXRlPiBtX3ByaXZhdGU7
CiAgICAgSGFzaFNldDxNdXRlZFN0YXRlT2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQogICAgIFdlYWtIYXNoU2V0PEludGVycnVwdGlvbk9ic2VydmVyPiBt
X2ludGVycnVwdGlvbk9ic2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Y2IxNmQ0OTA1NmJjZTMw
ZmZhMTYwODdmNzQxNTI0ODZhMzQ4OGRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5oCkBAIC0wLDAgKzEsNzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShBVURJT19TRVNTSU9OKSAmJiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKK09CSkNf
Q0xBU1MgV2ViSW50ZXJydXB0aW9uT2JzZXJ2ZXJIZWxwZXI7CisKK25hbWVzcGFjZSBXVEYgewor
Y2xhc3MgV29ya1F1ZXVlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlv
U2Vzc2lvbklPUyBmaW5hbCA6IHB1YmxpYyBBdWRpb1Nlc3Npb24geworcHVibGljOgorICAgIEF1
ZGlvU2Vzc2lvbklPUygpOworICAgIHZpcnR1YWwgfkF1ZGlvU2Vzc2lvbklPUygpOworCitwcml2
YXRlOgorICAgIC8vIEF1ZGlvU2Vzc2lvbgorICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNv
bnN0IGZpbmFsOworICAgIHZvaWQgc2V0Q2F0ZWdvcnkoQ2F0ZWdvcnlUeXBlLCBSb3V0ZVNoYXJp
bmdQb2xpY3kpIGZpbmFsOworICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5
T3ZlcnJpZGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNldENhdGVnb3J5T3ZlcnJpZGUoQ2F0
ZWdvcnlUeXBlKSBmaW5hbDsKKyAgICBmbG9hdCBzYW1wbGVSYXRlKCkgY29uc3QgZmluYWw7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIHNpemVfdCBtYXhpbXVtTnVtYmVyT2ZP
dXRwdXRDaGFubmVscygpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgdHJ5VG9TZXRBY3RpdmVJbnRl
cm5hbChib29sKSBmaW5hbDsKKyAgICBSb3V0ZVNoYXJpbmdQb2xpY3kgcm91dGVTaGFyaW5nUG9s
aWN5KCkgY29uc3QgZmluYWw7CisgICAgU3RyaW5nIHJvdXRpbmdDb250ZXh0VUlEKCkgY29uc3Qg
ZmluYWw7CisgICAgc2l6ZV90IHByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHNldFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90KSBmaW5hbDsKKyAgICBib29sIGlz
TXV0ZWQoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKSBm
aW5hbDsKKyAgICB2b2lkIGFkZEludGVycnVwdGlvbk9ic2VydmVyKEludGVycnVwdGlvbk9ic2Vy
dmVyJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1
cHRpb25PYnNlcnZlciYpIGZpbmFsOworICAgIHZvaWQgYmVnaW5JbnRlcnJ1cHRpb24oKSBmaW5h
bDsKKyAgICB2b2lkIGVuZEludGVycnVwdGlvbihNYXlSZXN1bWUpIGZpbmFsOworCisgICAgQXVk
aW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgbV9jYXRlZ29yeU92ZXJyaWRlIHsgQXVkaW9TZXNzaW9u
OjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKKyAgICBSZWZQdHI8V1RGOjpXb3JrUXVldWU+IG1fd29y
a1F1ZXVlOworICAgIFJldGFpblB0cjxXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcj4gbV9p
bnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlcjsKK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vaW9zL0F1ZGlvU2Vzc2lvbklPUy5tbQppbmRl
eCBiM2Q0MzhlYWQzMTllOTNiMWU1Y2JhYjkyNjcyYzBmMzg1NTYxYTQ3Li45ZDVkMDE0OGJkOTE0
Yzg4NzI5YTE3MmFkZGVkYTAyMDc1NGIzYWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9pb3MvQXVkaW9TZXNzaW9uSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2lvcy9BdWRpb1Nlc3Npb25JT1MubW0KQEAgLTI0LDcgKzI0LDcgQEAK
ICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1ZGlvU2Vzc2lvbi5oIgorI2lt
cG9ydCAiQXVkaW9TZXNzaW9uSU9TLmgiCiAKICNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIApAQCAtOTYsNDAgKzk2LDE5IEBAIEBlbmQKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdWRpb1Nlc3Npb25Qcml2YXRlIHsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1Nlc3Npb25Qcml2YXRl
KEF1ZGlvU2Vzc2lvbiopOwotICAgIH5BdWRpb1Nlc3Npb25Qcml2YXRlKCk7Ci0KLSAgICBBdWRp
b1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAgUmVmUHRyPFdv
cmtRdWV1ZT4gbV93b3JrUXVldWU7Ci0gICAgUmV0YWluUHRyPFdlYkludGVycnVwdGlvbk9ic2Vy
dmVySGVscGVyPiBtX2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyOwotfTsKLQotQXVkaW9TZXNz
aW9uUHJpdmF0ZTo6QXVkaW9TZXNzaW9uUHJpdmF0ZShBdWRpb1Nlc3Npb24qIHNlc3Npb24pCi0g
ICAgOiBtX2NhdGVnb3J5T3ZlcnJpZGUoQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUp
CitBdWRpb1Nlc3Npb25JT1M6OkF1ZGlvU2Vzc2lvbklPUygpCiB7CiAgICAgQkVHSU5fQkxPQ0tf
T0JKQ19FWENFUFRJT05TCi0gICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0
TlMoW1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFj
azpzZXNzaW9uXSk7CisgICAgbV9pbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciA9IGFkb3B0TlMo
W1tXZWJJbnRlcnJ1cHRpb25PYnNlcnZlckhlbHBlciBhbGxvY10gaW5pdFdpdGhDYWxsYmFjazp0
aGlzXSk7CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi1BdWRpb1Nlc3Npb25Q
cml2YXRlOjp+QXVkaW9TZXNzaW9uUHJpdmF0ZSgpCitBdWRpb1Nlc3Npb25JT1M6On5BdWRpb1Nl
c3Npb25JT1MoKQogewogICAgIFttX2ludGVycnVwdGlvbk9ic2VydmVySGVscGVyIGNsZWFyQ2Fs
bGJhY2tdOwogfQogCi1BdWRpb1Nlc3Npb246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZh
dGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Npb25Qcml2YXRlPih0aGlzKSkKLXsKLX0KLQotQXVkaW9T
ZXNzaW9uOjp+QXVkaW9TZXNzaW9uKCkKLXsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENh
dGVnb3J5KENhdGVnb3J5VHlwZSBuZXdDYXRlZ29yeSwgUm91dGVTaGFyaW5nUG9saWN5IHBvbGlj
eSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0
ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSBwb2xpY3kpCiB7CiAjaWYgIUhBVkUoUk9VVEVfU0hB
UklOR19QT0xJQ1lfTE9OR19GT1JNX1ZJREVPKQogICAgIGlmIChwb2xpY3kgPT0gUm91dGVTaGFy
aW5nUG9saWN5OjpMb25nRm9ybVZpZGVvKQpAQCAtMTgwLDcgKzE1OSw3IEBAIHZvaWQgQXVkaW9T
ZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgbmV3Q2F0ZWdvcnksIFJvdXRlU2hhcmlu
Z1BvbGljeSBwb2xpCiAjZW5kaWYKIH0KIAotQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgQXVk
aW9TZXNzaW9uOjpjYXRlZ29yeSgpIGNvbnN0CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5KCkgY29uc3QKIHsKICAgICBOU1N0cmluZyAqY2F0ZWdv
cnlTdHJpbmcgPSBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3RhbmNl
XSBjYXRlZ29yeV07CiAgICAgaWYgKFtjYXRlZ29yeVN0cmluZyBpc0VxdWFsOkFWQXVkaW9TZXNz
aW9uQ2F0ZWdvcnlBbWJpZW50XSkKQEAgLTE5OCw3ICsxNzcsNyBAQCBBdWRpb1Nlc3Npb246OkNh
dGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNhdGVnb3J5KCkgY29uc3QKICAgICByZXR1cm4gQ2F0
ZWdvcnlUeXBlOjpOb25lOwogfQogCi1Sb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9TZXNzaW9uOjpy
b3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAorUm91dGVTaGFyaW5nUG9saWN5IEF1ZGlvU2Vzc2lv
bklPUzo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKIHsKICAgICBzdGF0aWNfYXNzZXJ0KHN0
YXRpY19jYXN0PHNpemVfdD4oUm91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0KSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KEFWQXVkaW9TZXNzaW9uUm91dGVTaGFyaW5nUG9saWN5RGVmYXVsdCksICJS
b3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQgaXMgbm90IEFWQXVkaW9TZXNzaW9uUm91dGVTaGFy
aW5nUG9saWN5RGVmYXVsdCBhcyBleHBlY3RlZCIpOwogI2lmIEhBVkUoUk9VVEVfU0hBUklOR19Q
T0xJQ1lfTE9OR19GT1JNX1ZJREVPKQpAQCAtMjE2LDcgKzE5NSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfREVDTEFSQVRJT05TX0VORAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSb3V0ZVNoYXJpbmdQ
b2xpY3k+KHBvbGljeSk7CiB9CiAKLVN0cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250ZXh0
VUlEKCkgY29uc3QKK1N0cmluZyBBdWRpb1Nlc3Npb25JT1M6OnJvdXRpbmdDb250ZXh0VUlEKCkg
Y29uc3QKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpICYmICFQTEFURk9S
TShNQUNDQVRBTFlTVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCiAgICAgcmV0dXJuIFtbUEFMOjpn
ZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHJvdXRpbmdDb250ZXh0VUlE
XTsKQEAgLTIyNSw1MSArMjA0LDUxIEBAIFN0cmluZyBBdWRpb1Nlc3Npb246OnJvdXRpbmdDb250
ZXh0VUlEKCkgY29uc3QKICNlbmRpZgogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0Q2F0ZWdv
cnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
c2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUgY2F0ZWdvcnkpCiB7Ci0gICAgaWYgKG1f
cHJpdmF0ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID09IGNhdGVnb3J5KQorICAgIGlmIChtX2NhdGVn
b3J5T3ZlcnJpZGUgPT0gY2F0ZWdvcnkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJpdmF0
ZS0+bV9jYXRlZ29yeU92ZXJyaWRlID0gY2F0ZWdvcnk7CisgICAgbV9jYXRlZ29yeU92ZXJyaWRl
ID0gY2F0ZWdvcnk7CiAgICAgc2V0Q2F0ZWdvcnkoY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGlj
eTo6RGVmYXVsdCk7CiB9CiAKLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lv
bjo6Y2F0ZWdvcnlPdmVycmlkZSgpIGNvbnN0CitBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBB
dWRpb1Nlc3Npb25JT1M6OmNhdGVnb3J5T3ZlcnJpZGUoKSBjb25zdAogewotICAgIHJldHVybiBt
X3ByaXZhdGUtPm1fY2F0ZWdvcnlPdmVycmlkZTsKKyAgICByZXR1cm4gbV9jYXRlZ29yeU92ZXJy
aWRlOwogfQogCi1mbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSBjb25zdAorZmxvYXQg
QXVkaW9TZXNzaW9uSU9TOjpzYW1wbGVSYXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gW1tQQUw6
OmdldEFWQXVkaW9TZXNzaW9uQ2xhc3MoKSBzaGFyZWRJbnN0YW5jZV0gc2FtcGxlUmF0ZV07CiB9
CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1ZGlv
U2Vzc2lvbklPUzo6YnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRB
VkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIElPQnVmZmVyRHVyYXRpb25dICog
c2FtcGxlUmF0ZSgpOwogfQogCi1zaXplX3QgQXVkaW9TZXNzaW9uOjpudW1iZXJPZk91dHB1dENo
YW5uZWxzKCkgY29uc3QKK3NpemVfdCBBdWRpb1Nlc3Npb25JT1M6Om51bWJlck9mT3V0cHV0Q2hh
bm5lbHMoKSBjb25zdAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFz
cygpIHNoYXJlZEluc3RhbmNlXSBvdXRwdXROdW1iZXJPZkNoYW5uZWxzXTsKIH0KIAotc2l6ZV90
IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25zdAorc2l6
ZV90IEF1ZGlvU2Vzc2lvbklPUzo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMoKSBjb25z
dAogewogICAgIHJldHVybiBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZElu
c3RhbmNlXSBtYXhpbXVtT3V0cHV0TnVtYmVyT2ZDaGFubmVsc107CiB9CiAKLWJvb2wgQXVkaW9T
ZXNzaW9uOjp0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wgYWN0aXZlKQorYm9vbCBBdWRpb1Nl
c3Npb25JT1M6OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCBhY3RpdmUpCiB7Ci0gICAgaWYg
KCFtX3ByaXZhdGUtPm1fd29ya1F1ZXVlKQotICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVl
ID0gV29ya1F1ZXVlOjpjcmVhdGUoIkF1ZGlvU2Vzc2lvbiBBY3RpdmF0aW9uIFF1ZXVlIik7Cisg
ICAgaWYgKCFtX3dvcmtRdWV1ZSkKKyAgICAgICAgbV93b3JrUXVldWUgPSBXb3JrUXVldWU6OmNy
ZWF0ZSgiQXVkaW9TZXNzaW9uIEFjdGl2YXRpb24gUXVldWUiKTsKIAogICAgIC8vIFdlIG5lZWQg
dG8gZGVhY3RpdmF0ZSB0aGUgc2Vzc2lvbiBvbiBhbm90aGVyIHF1ZXVlIGJlY2F1c2UgdGhlIEFW
QXVkaW9TZXNzaW9uU2V0QWN0aXZlT3B0aW9uTm90aWZ5T3RoZXJzT25EZWFjdGl2YXRpb24gb3B0
aW9uCiAgICAgLy8gbWVhbnMgdGhhdCBBVkF1ZGlvU2Vzc2lvbiBtYXkgc3luY2hyb25vdXNseSB1
bmR1Y2sgcHJldmlvdXNseSBkdWNrZWQgY2xpZW50cy4gQWN0aXZhdGlvbiBuZWVkcyB0byBjb21w
bGV0ZSBiZWZvcmUgdGhpcyBtZXRob2QKICAgICAvLyByZXR1cm5zLCBzbyBkbyBpdCBzeW5jaHJv
bm91c2x5IG9uIHRoZSBzYW1lIHNlcmlhbCBxdWV1ZS4KICAgICBpZiAoYWN0aXZlKSB7CiAgICAg
ICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICBtX3ByaXZhdGUtPm1fd29ya1F1ZXVl
LT5kaXNwYXRjaFN5bmMoWyZzdWNjZXNzXSB7CisgICAgICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRj
aFN5bmMoWyZzdWNjZXNzXSB7CiAgICAgICAgICAgICBOU0Vycm9yICplcnJvciA9IG5pbDsKICAg
ICAgICAgICAgIFtbUEFMOjpnZXRBVkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2Vd
IHNldEFjdGl2ZTpZRVMgd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAgICAgICAgICAg
c3VjY2VzcyA9ICFlcnJvcjsKQEAgLTI3Nyw3ICsyNTYsNyBAQCBib29sIEF1ZGlvU2Vzc2lvbjo6
dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sIGFjdGl2ZSkKICAgICAgICAgcmV0dXJuIHN1Y2Nl
c3M7CiAgICAgfQogCi0gICAgbV9wcml2YXRlLT5tX3dvcmtRdWV1ZS0+ZGlzcGF0Y2goW10gewor
ICAgIG1fd29ya1F1ZXVlLT5kaXNwYXRjaChbXSB7CiAgICAgICAgIE5TRXJyb3IgKmVycm9yID0g
bmlsOwogICAgICAgICBbW1BBTDo6Z2V0QVZBdWRpb1Nlc3Npb25DbGFzcygpIHNoYXJlZEluc3Rh
bmNlXSBzZXRBY3RpdmU6Tk8gd2l0aE9wdGlvbnM6MCBlcnJvcjomZXJyb3JdOwogICAgIH0pOwpA
QCAtMjg1LDEyICsyNjQsMTIgQEAgYm9vbCBBdWRpb1Nlc3Npb246OnRyeVRvU2V0QWN0aXZlSW50
ZXJuYWwoYm9vbCBhY3RpdmUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXNpemVfdCBBdWRpb1Nl
c3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbklP
Uzo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFtbUEFMOjpnZXRB
VkF1ZGlvU2Vzc2lvbkNsYXNzKCkgc2hhcmVkSW5zdGFuY2VdIHByZWZlcnJlZElPQnVmZmVyRHVy
YXRpb25dICogc2FtcGxlUmF0ZSgpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKK3ZvaWQgQXVkaW9TZXNzaW9uSU9TOjpz
ZXRQcmVmZXJyZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogewogICAgIE5TRXJyb3Ig
KmVycm9yID0gbmlsOwogICAgIGZsb2F0IGR1cmF0aW9uID0gYnVmZmVyU2l6ZSAvIHNhbXBsZVJh
dGUoKTsKQEAgLTI5OCwzMiArMjc3LDMyIEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRQcmVmZXJy
ZWRCdWZmZXJTaXplKHNpemVfdCBidWZmZXJTaXplKQogICAgIEFTU0VSVCghZXJyb3IpOwogfQog
Ci1ib29sIEF1ZGlvU2Vzc2lvbjo6aXNNdXRlZCgpIGNvbnN0Citib29sIEF1ZGlvU2Vzc2lvbklP
Uzo6aXNNdXRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEF1ZGlv
U2Vzc2lvbjo6aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
aGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpCiB7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjphZGRJ
bnRlcnJ1cHRpb25PYnNlcnZlcihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lk
IEF1ZGlvU2Vzc2lvbklPUzo6YWRkSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2Jz
ZXJ2ZXImIG9ic2VydmVyKQogewogICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzLmFkZChvYnNl
cnZlcik7CiB9CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpyZW1vdmVJbnRlcnJ1cHRpb25PYnNlcnZl
cihJbnRlcnJ1cHRpb25PYnNlcnZlciYgb2JzZXJ2ZXIpCit2b2lkIEF1ZGlvU2Vzc2lvbklPUzo6
cmVtb3ZlSW50ZXJydXB0aW9uT2JzZXJ2ZXIoSW50ZXJydXB0aW9uT2JzZXJ2ZXImIG9ic2VydmVy
KQogewogICAgIG1faW50ZXJydXB0aW9uT2JzZXJ2ZXJzLnJlbW92ZShvYnNlcnZlcik7CiB9CiAK
LXZvaWQgQXVkaW9TZXNzaW9uOjpiZWdpbkludGVycnVwdGlvbigpCit2b2lkIEF1ZGlvU2Vzc2lv
bklPUzo6YmVnaW5JbnRlcnJ1cHRpb24oKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBt
X2ludGVycnVwdGlvbk9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuYmVnaW5BdWRpb1Nlc3Np
b25JbnRlcnJ1cHRpb24oKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmVuZEludGVycnVwdGlv
bihNYXlSZXN1bWUgbWF5UmVzdW1lKQordm9pZCBBdWRpb1Nlc3Npb25JT1M6OmVuZEludGVycnVw
dGlvbihNYXlSZXN1bWUgbWF5UmVzdW1lKQogewogICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBt
X2ludGVycnVwdGlvbk9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXIuZW5kQXVkaW9TZXNzaW9u
SW50ZXJydXB0aW9uKG1heVJlc3VtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA1YmJkODUyY2NjODgz
ZDdiODkyM2VmNmI4ZDE1MzMzNDI5NzkwNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMuaApAQCAtMCwwICsxLDg3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBVU0UoQVVESU9fU0VTU0lPTikgJiYg
UExBVEZPUk0oTUFDKQorCisjaW5jbHVkZSAiQXVkaW9TZXNzaW9uLmgiCisKK3R5cGVkZWYgVUlu
dDMyIEF1ZGlvT2JqZWN0SUQ7Cit0eXBlZGVmIHN0cnVjdCBBdWRpb09iamVjdFByb3BlcnR5QWRk
cmVzcyBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzczsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBBdWRpb1Nlc3Npb25NYWMgZmluYWwgOiBwdWJsaWMgQXVkaW9TZXNzaW9uIHsKK3B1
YmxpYzoKKyAgICBBdWRpb1Nlc3Npb25NYWMoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+QXVk
aW9TZXNzaW9uTWFjKCkgPSBkZWZhdWx0OworCitwcml2YXRlOgorICAgIHZvaWQgYWRkU2FtcGxl
UmF0ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdDsKKyAgICB2b2lkIGFkZEJ1ZmZlclNpemVPYnNl
cnZlcklmTmVlZGVkKCkgY29uc3Q7CisKKyAgICBzdGF0aWMgT1NTdGF0dXMgaGFuZGxlU2FtcGxl
UmF0ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVy
dHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKKyAgICBzdGF0aWMgT1NTdGF0dXMgaGFu
ZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKKworICAgIC8vIEF1ZGlv
U2Vzc2lvbgorICAgIENhdGVnb3J5VHlwZSBjYXRlZ29yeSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fY2F0ZWdvcnk7IH0KKyAgICB2b2lkIGF1ZGlvT3V0cHV0RGV2aWNlQ2hhbmdlZCgpIGZpbmFs
OworICAgIHZvaWQgc2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZShPcHRpb25hbDxib29s
PikgZmluYWw7CisgICAgdm9pZCBzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUsIFJvdXRlU2hhcmlu
Z1BvbGljeSkgZmluYWw7CisgICAgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGUgY2F0ZWdvcnlP
dmVycmlkZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fY2F0ZWdvcnlPdmVycmlkZTsgfQorICAg
IHZvaWQgc2V0Q2F0ZWdvcnlPdmVycmlkZShDYXRlZ29yeVR5cGUpIGZpbmFsOworICAgIGZsb2F0
IHNhbXBsZVJhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSgpIGNvbnN0
IGZpbmFsOworICAgIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QgZmluYWw7
CisgICAgc2l6ZV90IG1heGltdW1OdW1iZXJPZk91dHB1dENoYW5uZWxzKCkgY29uc3QgZmluYWw7
CisgICAgYm9vbCB0cnlUb1NldEFjdGl2ZUludGVybmFsKGJvb2wpIGZpbmFsOworICAgIFJvdXRl
U2hhcmluZ1BvbGljeSByb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdCBmaW5hbDsKKyAgICBTdHJp
bmcgcm91dGluZ0NvbnRleHRVSUQoKSBjb25zdCBmaW5hbDsKKyAgICBzaXplX3QgcHJlZmVycmVk
QnVmZmVyU2l6ZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc2V0UHJlZmVycmVkQnVmZmVyU2l6
ZShzaXplX3QpIGZpbmFsOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0IGZpbmFsOworICAgIHZv
aWQgaGFuZGxlTXV0ZWRTdGF0ZUNoYW5nZSgpIGZpbmFsOworICAgIHZvaWQgYWRkTXV0ZWRTdGF0
ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlTXV0
ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciopIGZpbmFsOworCisgICAgT3B0aW9u
YWw8Ym9vbD4gbV9sYXN0TXV0ZWRTdGF0ZTsKKyAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlw
ZSBtX2NhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKKyNpZiBF
TkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKKyAgICBib29sIG1fc2V0dXBBcmJpdHJhdGlvbk9u
Z29pbmcgeyBmYWxzZSB9OworICAgIGJvb2wgbV9pblJvdXRpbmdBcmJpdHJhdGlvbiB7IGZhbHNl
IH07CisgICAgT3B0aW9uYWw8Ym9vbD4gbV9wbGF5aW5nVG9CbHVldG9vdGg7CisgICAgT3B0aW9u
YWw8Ym9vbD4gbV9wbGF5aW5nVG9CbHVldG9vdGhPdmVycmlkZTsKKyNlbmRpZgorICAgIEF1ZGlv
U2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIG1fY2F0ZWdvcnlPdmVycmlkZSB7IEF1ZGlvU2Vzc2lvbjo6
Q2F0ZWdvcnlUeXBlOjpOb25lIH07CisgICAgbXV0YWJsZSBib29sIG1faGFzU2FtcGxlUmF0ZU9i
c2VydmVyIHsgZmFsc2UgfTsKKyAgICBtdXRhYmxlIGJvb2wgbV9oYXNCdWZmZXJTaXplT2JzZXJ2
ZXIgeyBmYWxzZSB9OworICAgIG11dGFibGUgT3B0aW9uYWw8ZG91YmxlPiBtX3NhbXBsZVJhdGU7
CisgICAgbXV0YWJsZSBPcHRpb25hbDxzaXplX3Q+IG1fYnVmZmVyU2l6ZTsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVk
aW9TZXNzaW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vbWFjL0F1ZGlv
U2Vzc2lvbk1hYy5tbQppbmRleCBmOGU0NDlkMzdmMDhlMWUyNzEyNjA1NDlmNzc5NDBjM2JlMzVh
NjE5Li45OTM1MGY4NzljMTc0MjVlZjE1MDY1MTUwMjQ3OTczNDQ4YTE3NjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9TZXNzaW9uTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL21hYy9BdWRpb1Nlc3Npb25NYWMubW0K
QEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkF1
ZGlvU2Vzc2lvbi5oIgorI2ltcG9ydCAiQXVkaW9TZXNzaW9uTWFjLmgiCiAKICNpZiBVU0UoQVVE
SU9fU0VTU0lPTikgJiYgUExBVEZPUk0oTUFDKQogCkBAIC04MiwzNyArODIsMTEgQEAgc3RhdGlj
IGZsb2F0IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpCiB9CiAjZW5kaWYKIAot
Y2xhc3MgQXVkaW9TZXNzaW9uUHJpdmF0ZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgQXVkaW9TZXNzaW9uUHJpdmF0ZSgpID0gZGVmYXVsdDsK
LQotICAgIHZvaWQgYWRkU2FtcGxlUmF0ZU9ic2VydmVySWZOZWVkZWQoKTsKLSAgICB2b2lkIGFk
ZEJ1ZmZlclNpemVPYnNlcnZlcklmTmVlZGVkKCk7Ci0KLSAgICBzdGF0aWMgT1NTdGF0dXMgaGFu
ZGxlU2FtcGxlUmF0ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0IEF1ZGlvT2Jq
ZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKLSAgICBzdGF0aWMgT1NT
dGF0dXMgaGFuZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElELCBVSW50MzIsIGNvbnN0
IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiwgdm9pZCogaW5DbGllbnREYXRhKTsKLQotICAg
IE9wdGlvbmFsPGJvb2w+IGxhc3RNdXRlZFN0YXRlOwotICAgIEF1ZGlvU2Vzc2lvbjo6Q2F0ZWdv
cnlUeXBlIGNhdGVnb3J5IHsgQXVkaW9TZXNzaW9uOjpDYXRlZ29yeVR5cGU6Ok5vbmUgfTsKLSNp
ZiBFTkFCTEUoUk9VVElOR19BUkJJVFJBVElPTikKLSAgICBib29sIHNldHVwQXJiaXRyYXRpb25P
bmdvaW5nIHsgZmFsc2UgfTsKLSAgICBPcHRpb25hbDxib29sPiBwbGF5aW5nVG9CbHVldG9vdGg7
Ci0gICAgT3B0aW9uYWw8Ym9vbD4gcGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGU7Ci0jZW5kaWYK
LSAgICBBdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBtX2NhdGVnb3J5T3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpblJvdXRpbmdBcmJpdHJhdGlvbiB7IGZhbHNlIH07Ci0gICAgYm9vbCBoYXNTYW1wbGVS
YXRlT2JzZXJ2ZXIgeyBmYWxzZSB9OwotICAgIGJvb2wgaGFzQnVmZmVyU2l6ZU9ic2VydmVyIHsg
ZmFsc2UgfTsKLSAgICBPcHRpb25hbDxkb3VibGU+IHNhbXBsZVJhdGU7Ci0gICAgT3B0aW9uYWw8
c2l6ZV90PiBidWZmZXJTaXplOwotfTsKLQotdm9pZCBBdWRpb1Nlc3Npb25Qcml2YXRlOjphZGRT
YW1wbGVSYXRlT2JzZXJ2ZXJJZk5lZWRlZCgpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6YWRkU2Ft
cGxlUmF0ZU9ic2VydmVySWZOZWVkZWQoKSBjb25zdAogewotICAgIGlmIChoYXNTYW1wbGVSYXRl
T2JzZXJ2ZXIpCisgICAgaWYgKG1faGFzU2FtcGxlUmF0ZU9ic2VydmVyKQogICAgICAgICByZXR1
cm47Ci0gICAgaGFzU2FtcGxlUmF0ZU9ic2VydmVyID0gdHJ1ZTsKKyAgICBtX2hhc1NhbXBsZVJh
dGVPYnNlcnZlciA9IHRydWU7CiAKICAgICBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyBub21p
bmFsU2FtcGxlUmF0ZUFkZHJlc3MgPSB7CiAgICAgICAgIGtBdWRpb0RldmljZVByb3BlcnR5Tm9t
aW5hbFNhbXBsZVJhdGUsCkBAIC0xMjEsMTYgKzk1LDE2IEBAIHZvaWQgQXVkaW9TZXNzaW9uUHJp
dmF0ZTo6YWRkU2FtcGxlUmF0ZU9ic2VydmVySWZOZWVkZWQoKQogICAgICAgICBrQXVkaW9PYmpl
Y3RQcm9wZXJ0eUVsZW1lbnRNYXN0ZXIKICAgICAgICAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfRU5ECiAgICAgfTsKLSAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoZGVm
YXVsdERldmljZSgpLCAmbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzLCBoYW5kbGVTYW1wbGVSYXRl
Q2hhbmdlLCB0aGlzKTsKKyAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoZGVmYXVs
dERldmljZSgpLCAmbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNzLCBoYW5kbGVTYW1wbGVSYXRlQ2hh
bmdlLCBjb25zdF9jYXN0PEF1ZGlvU2Vzc2lvbk1hYyo+KHRoaXMpKTsKIH0KIAotT1NTdGF0dXMg
QXVkaW9TZXNzaW9uUHJpdmF0ZTo6aGFuZGxlU2FtcGxlUmF0ZUNoYW5nZShBdWRpb09iamVjdElE
IGRldmljZSwgVUludDMyLCBjb25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyogc2FtcGxl
UmF0ZUFkZHJlc3MsIHZvaWQqIGluQ2xpZW50RGF0YSkKK09TU3RhdHVzIEF1ZGlvU2Vzc2lvbk1h
Yzo6aGFuZGxlU2FtcGxlUmF0ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwgVUludDMyLCBj
b25zdCBBdWRpb09iamVjdFByb3BlcnR5QWRkcmVzcyogc2FtcGxlUmF0ZUFkZHJlc3MsIHZvaWQq
IGluQ2xpZW50RGF0YSkKIHsKICAgICBBU1NFUlQoaW5DbGllbnREYXRhKTsKICAgICBpZiAoIWlu
Q2xpZW50RGF0YSkKICAgICAgICAgcmV0dXJuIG5vRXJyOwogCi0gICAgYXV0byogc2Vzc2lvblBy
aXZhdGUgPSBzdGF0aWNfY2FzdDxBdWRpb1Nlc3Npb25Qcml2YXRlKj4oaW5DbGllbnREYXRhKTsK
KyAgICBhdXRvKiBzZXNzaW9uID0gc3RhdGljX2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4oaW5DbGll
bnREYXRhKTsKIAogICAgIEZsb2F0NjQgbm9taW5hbFNhbXBsZVJhdGU7CiAgICAgVUludDMyIG5v
bWluYWxTYW1wbGVSYXRlU2l6ZSA9IHNpemVvZihGbG9hdDY0KTsKQEAgLTEzOCwxNCArMTEyLDE1
IEBAIE9TU3RhdHVzIEF1ZGlvU2Vzc2lvblByaXZhdGU6OmhhbmRsZVNhbXBsZVJhdGVDaGFuZ2Uo
QXVkaW9PYmplY3RJRCBkZXZpY2UsIFVJbnQzCiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAotICAgIHNlc3Npb25Qcml2YXRlLT5zYW1wbGVSYXRlID0gbmFycm93UHJl
Y2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7CisgICAgc2Vzc2lvbi0+bV9zYW1wbGVS
YXRlID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFsU2FtcGxlUmF0ZSk7CiAgICAgcmV0
dXJuIG5vRXJyOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvblByaXZhdGU6OmFkZEJ1ZmZlclNpemVP
YnNlcnZlcklmTmVlZGVkKCkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjphZGRCdWZmZXJTaXplT2Jz
ZXJ2ZXJJZk5lZWRlZCgpIGNvbnN0CiB7Ci0gICAgaWYgKGhhc0J1ZmZlclNpemVPYnNlcnZlcikK
KyAgICBpZiAobV9oYXNCdWZmZXJTaXplT2JzZXJ2ZXIpCiAgICAgICAgIHJldHVybjsKKyAgICBt
X2hhc0J1ZmZlclNpemVPYnNlcnZlciA9IHRydWU7CiAKICAgICBBdWRpb09iamVjdFByb3BlcnR5
QWRkcmVzcyBidWZmZXJTaXplQWRkcmVzcyA9IHsKICAgICAgICAga0F1ZGlvRGV2aWNlUHJvcGVy
dHlCdWZmZXJGcmFtZVNpemUsCkBAIC0xNTQsMTYgKzEyOSwxNiBAQCB2b2lkIEF1ZGlvU2Vzc2lv
blByaXZhdGU6OmFkZEJ1ZmZlclNpemVPYnNlcnZlcklmTmVlZGVkKCkKICAgICAgICAga0F1ZGlv
T2JqZWN0UHJvcGVydHlFbGVtZW50TWFzdGVyCiAgICAgICAgIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgIH07Ci0gICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVy
KGRlZmF1bHREZXZpY2UoKSwgJmJ1ZmZlclNpemVBZGRyZXNzLCBoYW5kbGVCdWZmZXJTaXplQ2hh
bmdlLCB0aGlzKTsKKyAgICBBdWRpb09iamVjdEFkZFByb3BlcnR5TGlzdGVuZXIoZGVmYXVsdERl
dmljZSgpLCAmYnVmZmVyU2l6ZUFkZHJlc3MsIGhhbmRsZUJ1ZmZlclNpemVDaGFuZ2UsIGNvbnN0
X2Nhc3Q8QXVkaW9TZXNzaW9uTWFjKj4odGhpcykpOwogfQogCi1PU1N0YXR1cyBBdWRpb1Nlc3Np
b25Qcml2YXRlOjpoYW5kbGVCdWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBV
SW50MzIsIGNvbnN0IEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzKiBidWZmZXJTaXplQWRkcmVz
cywgdm9pZCogaW5DbGllbnREYXRhKQorT1NTdGF0dXMgQXVkaW9TZXNzaW9uTWFjOjpoYW5kbGVC
dWZmZXJTaXplQ2hhbmdlKEF1ZGlvT2JqZWN0SUQgZGV2aWNlLCBVSW50MzIsIGNvbnN0IEF1ZGlv
T2JqZWN0UHJvcGVydHlBZGRyZXNzKiBidWZmZXJTaXplQWRkcmVzcywgdm9pZCogaW5DbGllbnRE
YXRhKQogewogICAgIEFTU0VSVChpbkNsaWVudERhdGEpOwogICAgIGlmICghaW5DbGllbnREYXRh
KQogICAgICAgICByZXR1cm4gbm9FcnI7CiAKLSAgICBhdXRvKiBzZXNzaW9uUHJpdmF0ZSA9IHN0
YXRpY19jYXN0PEF1ZGlvU2Vzc2lvblByaXZhdGUqPihpbkNsaWVudERhdGEpOworICAgIGF1dG8q
IHNlc3Npb24gPSBzdGF0aWNfY2FzdDxBdWRpb1Nlc3Npb25NYWMqPihpbkNsaWVudERhdGEpOwog
CiAgICAgVUludDMyIGJ1ZmZlclNpemU7CiAgICAgVUludDMyIGJ1ZmZlclNpemVTaXplID0gc2l6
ZW9mKGJ1ZmZlclNpemUpOwpAQCAtMTcxLDMzICsxNDYsMjEgQEAgT1NTdGF0dXMgQXVkaW9TZXNz
aW9uUHJpdmF0ZTo6aGFuZGxlQnVmZmVyU2l6ZUNoYW5nZShBdWRpb09iamVjdElEIGRldmljZSwg
VUludDMKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgc2Vz
c2lvblByaXZhdGUtPmJ1ZmZlclNpemUgPSBidWZmZXJTaXplOworICAgIHNlc3Npb24tPm1fYnVm
ZmVyU2l6ZSA9IGJ1ZmZlclNpemU7CiAgICAgcmV0dXJuIG5vRXJyOwogfQogCi1BdWRpb1Nlc3Np
b246OkF1ZGlvU2Vzc2lvbigpCi0gICAgOiBtX3ByaXZhdGUobWFrZVVuaXF1ZTxBdWRpb1Nlc3Np
b25Qcml2YXRlPigpKQotewotfQotCi1BdWRpb1Nlc3Npb246On5BdWRpb1Nlc3Npb24oKSA9IGRl
ZmF1bHQ7Ci0KLUF1ZGlvU2Vzc2lvbjo6Q2F0ZWdvcnlUeXBlIEF1ZGlvU2Vzc2lvbjo6Y2F0ZWdv
cnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmNhdGVnb3J5OwotfQotCi12b2lk
IEF1ZGlvU2Vzc2lvbjo6YXVkaW9PdXRwdXREZXZpY2VDaGFuZ2VkKCkKK3ZvaWQgQXVkaW9TZXNz
aW9uTWFjOjphdWRpb091dHB1dERldmljZUNoYW5nZWQoKQogewogI2lmIEVOQUJMRShST1VUSU5H
X0FSQklUUkFUSU9OKQotICAgIGlmICghbV9wcml2YXRlLT5wbGF5aW5nVG9CbHVldG9vdGggfHwg
Km1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJ
c0JsdWV0b290aCgpKQorICAgIGlmICghbV9wbGF5aW5nVG9CbHVldG9vdGggfHwgKm1fcGxheWlu
Z1RvQmx1ZXRvb3RoID09IGRlZmF1bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9IFdURjo6
bnVsbG9wdDsKKyAgICBtX3BsYXlpbmdUb0JsdWV0b290aCA9IFdURjo6bnVsbG9wdDsKICNlbmRp
ZgogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6c2V0SXNQbGF5aW5nVG9CbHVldG9vdGhPdmVycmlk
ZShPcHRpb25hbDxib29sPiB2YWx1ZSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRJc1BsYXlp
bmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQogewogI2lmIEVOQUJM
RShST1VUSU5HX0FSQklUUkFUSU9OKQogICAgIGlzUGxheWluZ1RvQmx1ZXRvb3RoT3ZlcnJpZGUg
PSB2YWx1ZTsKQEAgLTIwNiwyNSArMTY5LDI1IEBAIHZvaWQgQXVkaW9TZXNzaW9uOjpzZXRJc1Bs
YXlpbmdUb0JsdWV0b290aE92ZXJyaWRlKE9wdGlvbmFsPGJvb2w+IHZhbHVlKQogI2VuZGlmCiB9
CiAKLXZvaWQgQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgY2F0ZWdvcnks
IFJvdXRlU2hhcmluZ1BvbGljeSkKK3ZvaWQgQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRlZ29yeShD
YXRlZ29yeVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hhcmluZ1BvbGljeSkKIHsKICNpZiBFTkFCTEUo
Uk9VVElOR19BUkJJVFJBVElPTikKICAgICBib29sIHBsYXlpbmdUb0JsdWV0b290aCA9IGRlZmF1
bHREZXZpY2VUcmFuc3BvcnRJc0JsdWV0b290aCgpOwotICAgIGlmIChjYXRlZ29yeSA9PSBtX3By
aXZhdGUtPmNhdGVnb3J5ICYmIG1fcHJpdmF0ZS0+cGxheWluZ1RvQmx1ZXRvb3RoICYmICptX3By
aXZhdGUtPnBsYXlpbmdUb0JsdWV0b290aCA9PSBwbGF5aW5nVG9CbHVldG9vdGgpCisgICAgaWYg
KGNhdGVnb3J5ID09IG1fY2F0ZWdvcnkgJiYgbV9wbGF5aW5nVG9CbHVldG9vdGggJiYgKm1fcGxh
eWluZ1RvQmx1ZXRvb3RoID09IHBsYXlpbmdUb0JsdWV0b290aCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcml2YXRlLT5jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnkgPSBj
YXRlZ29yeTsKIAotICAgIGlmIChtX3ByaXZhdGUtPnNldHVwQXJiaXRyYXRpb25PbmdvaW5nKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRl
Z29yeSgpIC0gYSBiZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5IGlzIHN0aWxsIG9uZ29pbmci
KTsKKyAgICBpZiAobV9zZXR1cEFyYml0cmF0aW9uT25nb2luZykgeworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0Q2F0ZWdvcnkoKSAtIGEgYmVn
aW5BcmJpdHJhdGlvbldpdGhDYXRlZ29yeSBpcyBzdGlsbCBvbmdvaW5nIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9wcml2YXRlLT5pblJvdXRpbmdBcmJpdHJhdGlvbikg
ewotICAgICAgICBtX3ByaXZhdGUtPmluUm91dGluZ0FyYml0cmF0aW9uID0gZmFsc2U7CisgICAg
aWYgKG1faW5Sb3V0aW5nQXJiaXRyYXRpb24pIHsKKyAgICAgICAgbV9pblJvdXRpbmdBcmJpdHJh
dGlvbiA9IGZhbHNlOwogICAgICAgICBtX3JvdXRpbmdBcmJpdHJhdGlvbkNsaWVudC0+bGVhdmVS
b3V0aW5nQWJyaXRyYXRpb24oKTsKICAgICB9CiAKQEAgLTIzNCw0NCArMTk3LDM5IEBAIHZvaWQg
QXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeShDYXRlZ29yeVR5cGUgY2F0ZWdvcnksIFJvdXRlU2hh
cmluZ1BvbGljeSkKICAgICB1c2luZyBSb3V0aW5nQXJiaXRyYXRpb25FcnJvciA9IEF1ZGlvU2Vz
c2lvblJvdXRpbmdBcmJpdHJhdGlvbkNsaWVudDo6Um91dGluZ0FyYml0cmF0aW9uRXJyb3I7CiAg
ICAgdXNpbmcgRGVmYXVsdFJvdXRlQ2hhbmdlZCA9IEF1ZGlvU2Vzc2lvblJvdXRpbmdBcmJpdHJh
dGlvbkNsaWVudDo6RGVmYXVsdFJvdXRlQ2hhbmdlZDsKIAotICAgIG1fcHJpdmF0ZS0+cGxheWlu
Z1RvQmx1ZXRvb3RoID0gcGxheWluZ1RvQmx1ZXRvb3RoOwotICAgIG1fcHJpdmF0ZS0+c2V0dXBB
cmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOwotICAgIG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50
LT5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhDYXRlZ29yeShtX3ByaXZhdGUtPmNhdGVnb3J5
LCBbdGhpc10gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9yLCBEZWZhdWx0Um91dGVDaGFu
Z2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIHsKLSAgICAgICAgbV9wcml2YXRlLT5zZXR1cEFyYml0
cmF0aW9uT25nb2luZyA9IGZhbHNlOworICAgIG1fcGxheWluZ1RvQmx1ZXRvb3RoID0gcGxheWlu
Z1RvQmx1ZXRvb3RoOworICAgIG1fc2V0dXBBcmJpdHJhdGlvbk9uZ29pbmcgPSB0cnVlOworICAg
IG1fcm91dGluZ0FyYml0cmF0aW9uQ2xpZW50LT5iZWdpblJvdXRpbmdBcmJpdHJhdGlvbldpdGhD
YXRlZ29yeShtX2NhdGVnb3J5LCBbdGhpc10gKFJvdXRpbmdBcmJpdHJhdGlvbkVycm9yIGVycm9y
LCBEZWZhdWx0Um91dGVDaGFuZ2VkIGRlZmF1bHRSb3V0ZUNoYW5nZWQpIHsKKyAgICAgICAgbV9z
ZXR1cEFyYml0cmF0aW9uT25nb2luZyA9IGZhbHNlOwogICAgICAgICBpZiAoZXJyb3IgIT0gUm91
dGluZ0FyYml0cmF0aW9uRXJyb3I6Ok5vbmUpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SKE1lZGlhLCAiQXVkaW9TZXNzaW9uOjpzZXRDYXRlZ29yeSgpIC0gYmVnaW5BcmJpdHJhdGlv
bldpdGhDYXRlZ29yeTolcyBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIGNvbnZlcnRFbnVtZXJhdGlv
blRvU3RyaW5nKG1fcHJpdmF0ZS0+Y2F0ZWdvcnkpLmFzY2lpKCkuZGF0YSgpLCBjb252ZXJ0RW51
bWVyYXRpb25Ub1N0cmluZyhlcnJvcikuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5KCkgLSBi
ZWdpbkFyYml0cmF0aW9uV2l0aENhdGVnb3J5OiVzIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcobV9jYXRlZ29yeSkuYXNjaWkoKS5kYXRhKCksIGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKGVycm9yKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBtX3ByaXZhdGUtPmluUm91dGluZ0FyYml0
cmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgbV9pblJvdXRpbmdBcmJpdHJhdGlvbiA9IHRydWU7CiAK
ICAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gcmVzZXQgc2FtcGxlIHJhdGUgYW5kIGJ1
ZmZlciBzaXplIGZvciB0aGUgbmV3IGRlZmF1bHQgZGV2aWNlPwogICAgICAgICBpZiAoZGVmYXVs
dFJvdXRlQ2hhbmdlZCA9PSBEZWZhdWx0Um91dGVDaGFuZ2VkOjpZZXMpCi0gICAgICAgICAgICBM
T0coTWVkaWEsICJBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5KCkgLSBkZWZhdWx0Um91dGVDaGFu
Z2VkISIpOworICAgICAgICAgICAgTE9HKE1lZGlhLCAiQXVkaW9TZXNzaW9uTWFjOjpzZXRDYXRl
Z29yeSgpIC0gZGVmYXVsdFJvdXRlQ2hhbmdlZCEiKTsKICAgICB9KTsKICNlbHNlCi0gICAgbV9w
cml2YXRlLT5jYXRlZ29yeSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnkgPSBjYXRlZ29yeTsK
ICNlbmRpZgogfQogCi1BdWRpb1Nlc3Npb246OkNhdGVnb3J5VHlwZSBBdWRpb1Nlc3Npb246OmNh
dGVnb3J5T3ZlcnJpZGUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1fY2F0ZWdv
cnlPdmVycmlkZTsKLX0KLQotdm9pZCBBdWRpb1Nlc3Npb246OnNldENhdGVnb3J5T3ZlcnJpZGUo
Q2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQordm9pZCBBdWRpb1Nlc3Npb25NYWM6OnNldENhdGVnb3J5
T3ZlcnJpZGUoQ2F0ZWdvcnlUeXBlIGNhdGVnb3J5KQogewotICAgIGlmIChtX3ByaXZhdGUtPm1f
Y2F0ZWdvcnlPdmVycmlkZSA9PSBjYXRlZ29yeSkKKyAgICBpZiAobV9jYXRlZ29yeU92ZXJyaWRl
ID09IGNhdGVnb3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3ByaXZhdGUtPm1fY2F0ZWdv
cnlPdmVycmlkZSA9IGNhdGVnb3J5OworICAgIG1fY2F0ZWdvcnlPdmVycmlkZSA9IGNhdGVnb3J5
OwogICAgIHNldENhdGVnb3J5KGNhdGVnb3J5LCBSb3V0ZVNoYXJpbmdQb2xpY3k6OkRlZmF1bHQp
OwogfQogCi1mbG9hdCBBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSBjb25zdAorZmxvYXQgQXVk
aW9TZXNzaW9uTWFjOjpzYW1wbGVSYXRlKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcHJpdmF0ZS0+
c2FtcGxlUmF0ZSkgewotICAgICAgICBtX3ByaXZhdGUtPmFkZFNhbXBsZVJhdGVPYnNlcnZlcklm
TmVlZGVkKCk7CisgICAgaWYgKCFtX3NhbXBsZVJhdGUpIHsKKyAgICAgICAgYWRkU2FtcGxlUmF0
ZU9ic2VydmVySWZOZWVkZWQoKTsKIAogICAgICAgICBGbG9hdDY0IG5vbWluYWxTYW1wbGVSYXRl
OwogICAgICAgICBVSW50MzIgbm9taW5hbFNhbXBsZVJhdGVTaXplID0gc2l6ZW9mKEZsb2F0NjQp
OwpAQCAtMjg1LDI1ICsyNDMsMjUgQEAgZmxvYXQgQXVkaW9TZXNzaW9uOjpzYW1wbGVSYXRlKCkg
Y29uc3QKICAgICAgICAgfTsKICAgICAgICAgT1NTdGF0dXMgcmVzdWx0ID0gQXVkaW9PYmplY3RH
ZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmbm9taW5hbFNhbXBsZVJhdGVBZGRyZXNz
LCAwLCAwLCAmbm9taW5hbFNhbXBsZVJhdGVTaXplLCAodm9pZCopJm5vbWluYWxTYW1wbGVSYXRl
KTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBub0VycikgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNhbXBsZVJhdGUoKSAtIEF1ZGlvT2JqZWN0
R2V0UHJvcGVydHlEYXRhKCkgZmFpbGVkIHdpdGggZXJyb3IgJWQiLCByZXN1bHQpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNhbXBsZVJh
dGUoKSAtIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKCkgZmFpbGVkIHdpdGggZXJyb3IgJWQi
LCByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIDQ0MTAwOwogICAgICAgICB9CiAKLSAgICAg
ICAgbV9wcml2YXRlLT5zYW1wbGVSYXRlID0gbmFycm93UHJlY2lzaW9uVG9GbG9hdChub21pbmFs
U2FtcGxlUmF0ZSk7Ci0gICAgICAgIGlmICghKm1fcHJpdmF0ZS0+c2FtcGxlUmF0ZSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTWVkaWEsICJBdWRpb1Nlc3Npb246OnNhbXBsZVJh
dGUoKSAtIEF1ZGlvT2JqZWN0R2V0UHJvcGVydHlEYXRhKCkgcmV0dXJuIGFuIGludmFsaWQgc2Ft
cGxlIHJhdGUiKTsKLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+c2FtcGxlUmF0ZSA9IDQ0MTAwOwor
ICAgICAgICBtX3NhbXBsZVJhdGUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG5vbWluYWxTYW1w
bGVSYXRlKTsKKyAgICAgICAgaWYgKCEqbV9zYW1wbGVSYXRlKSB7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUihNZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2FtcGxlUmF0ZSgpIC0gQXVk
aW9PYmplY3RHZXRQcm9wZXJ0eURhdGEoKSByZXR1cm4gYW4gaW52YWxpZCBzYW1wbGUgcmF0ZSIp
OworICAgICAgICAgICAgbV9zYW1wbGVSYXRlID0gNDQxMDA7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgcmV0dXJuICptX3ByaXZhdGUtPnNhbXBsZVJhdGU7CisgICAgcmV0dXJuICptX3NhbXBsZVJh
dGU7CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90
IEF1ZGlvU2Vzc2lvbk1hYzo6YnVmZmVyU2l6ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fcHJpdmF0
ZS0+YnVmZmVyU2l6ZSkKLSAgICAgICAgcmV0dXJuICptX3ByaXZhdGUtPmJ1ZmZlclNpemU7Cisg
ICAgaWYgKG1fYnVmZmVyU2l6ZSkKKyAgICAgICAgcmV0dXJuICptX2J1ZmZlclNpemU7CiAKLSAg
ICBtX3ByaXZhdGUtPmFkZEJ1ZmZlclNpemVPYnNlcnZlcklmTmVlZGVkKCk7CisgICAgYWRkQnVm
ZmVyU2l6ZU9ic2VydmVySWZOZWVkZWQoKTsKIAogICAgIFVJbnQzMiBidWZmZXJTaXplOwogICAg
IFVJbnQzMiBidWZmZXJTaXplU2l6ZSA9IHNpemVvZihidWZmZXJTaXplKTsKQEAgLTMyMCwxOCAr
Mjc4LDE4IEBAIHNpemVfdCBBdWRpb1Nlc3Npb246OmJ1ZmZlclNpemUoKSBjb25zdAogICAgIGlm
IChyZXN1bHQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9wcml2YXRlLT5idWZmZXJTaXpl
ID0gYnVmZmVyU2l6ZTsKKyAgICBtX2J1ZmZlclNpemUgPSBidWZmZXJTaXplOwogCiAgICAgcmV0
dXJuIGJ1ZmZlclNpemU7CiB9CiAKLXNpemVfdCBBdWRpb1Nlc3Npb246Om51bWJlck9mT3V0cHV0
Q2hhbm5lbHMoKSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbk1hYzo6bnVtYmVyT2ZPdXRwdXRD
aGFubmVscygpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsK
IH0KIAotc2l6ZV90IEF1ZGlvU2Vzc2lvbjo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hhbm5lbHMo
KSBjb25zdAorc2l6ZV90IEF1ZGlvU2Vzc2lvbk1hYzo6bWF4aW11bU51bWJlck9mT3V0cHV0Q2hh
bm5lbHMoKSBjb25zdAogewogICAgIEF1ZGlvT2JqZWN0UHJvcGVydHlBZGRyZXNzIHNpemVBZGRy
ZXNzID0gewogICAgICAgICBrQXVkaW9EZXZpY2VQcm9wZXJ0eVN0cmVhbUNvbmZpZ3VyYXRpb24s
CkBAIC0zNTksMzAgKzMxNywzMCBAQCBzaXplX3QgQXVkaW9TZXNzaW9uOjptYXhpbXVtTnVtYmVy
T2ZPdXRwdXRDaGFubmVscygpIGNvbnN0CiAgICAgcmV0dXJuIGNoYW5uZWxzOwogfQogCi1ib29s
IEF1ZGlvU2Vzc2lvbjo6dHJ5VG9TZXRBY3RpdmVJbnRlcm5hbChib29sKQorYm9vbCBBdWRpb1Nl
c3Npb25NYWM6OnRyeVRvU2V0QWN0aXZlSW50ZXJuYWwoYm9vbCkKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1Sb3V0ZVNoYXJpbmdQb2xpY3kgQXVkaW9T
ZXNzaW9uOjpyb3V0ZVNoYXJpbmdQb2xpY3koKSBjb25zdAorUm91dGVTaGFyaW5nUG9saWN5IEF1
ZGlvU2Vzc2lvbk1hYzo6cm91dGVTaGFyaW5nUG9saWN5KCkgY29uc3QKIHsKICAgICByZXR1cm4g
Um91dGVTaGFyaW5nUG9saWN5OjpEZWZhdWx0OwogfQogCi1TdHJpbmcgQXVkaW9TZXNzaW9uOjpy
b3V0aW5nQ29udGV4dFVJRCgpIGNvbnN0CitTdHJpbmcgQXVkaW9TZXNzaW9uTWFjOjpyb3V0aW5n
Q29udGV4dFVJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiB9CiAKLXNp
emVfdCBBdWRpb1Nlc3Npb246OnByZWZlcnJlZEJ1ZmZlclNpemUoKSBjb25zdAorc2l6ZV90IEF1
ZGlvU2Vzc2lvbk1hYzo6cHJlZmVycmVkQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGJ1ZmZlclNpemUoKTsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OnNldFByZWZlcnJlZEJ1ZmZl
clNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJlZmVy
cmVkQnVmZmVyU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5i
dWZmZXJTaXplID09IGJ1ZmZlclNpemUpCisgICAgaWYgKG1fYnVmZmVyU2l6ZSA9PSBidWZmZXJT
aXplKQogICAgICAgICByZXR1cm47CiAKICAgICBBdWRpb1ZhbHVlUmFuZ2UgYnVmZmVyU2l6ZVJh
bmdlID0gezAsIDB9OwpAQCAtNDEzLDE3ICszNzEsMTcgQEAgdm9pZCBBdWRpb1Nlc3Npb246OnNl
dFByZWZlcnJlZEJ1ZmZlclNpemUoc2l6ZV90IGJ1ZmZlclNpemUpCiAgICAgcmVzdWx0ID0gQXVk
aW9PYmplY3RTZXRQcm9wZXJ0eURhdGEoZGVmYXVsdERldmljZSgpLCAmcHJlZmVycmVkQnVmZmVy
U2l6ZUFkZHJlc3MsIDAsIDAsIHNpemVvZihidWZmZXJTaXplT3V0KSwgKHZvaWQqKSZidWZmZXJT
aXplT3V0KTsKIAogICAgIGlmICghcmVzdWx0KQotICAgICAgICBtX3ByaXZhdGUtPmJ1ZmZlclNp
emUgPSBidWZmZXJTaXplT3V0OworICAgICAgICBtX2J1ZmZlclNpemUgPSBidWZmZXJTaXplT3V0
OwogCiAjaWYgIUxPR19ESVNBQkxFRAogICAgIGlmIChyZXN1bHQpCi0gICAgICAgIExPRyhNZWRp
YSwgIkF1ZGlvU2Vzc2lvbjo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIC0gZmFpbGVkIHdp
dGggZXJyb3IgJWQiLCBidWZmZXJTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOworICAg
ICAgICBMT0coTWVkaWEsICJBdWRpb1Nlc3Npb25NYWM6OnNldFByZWZlcnJlZEJ1ZmZlclNpemUo
JXp1KSAtIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgYnVmZmVyU2l6ZSwgc3RhdGljX2Nhc3Q8aW50
PihyZXN1bHQpKTsKICAgICBlbHNlCi0gICAgICAgIExPRyhNZWRpYSwgIkF1ZGlvU2Vzc2lvbjo6
c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVmZmVyU2l6ZSk7CisgICAgICAgIExPRyhN
ZWRpYSwgIkF1ZGlvU2Vzc2lvbk1hYzo6c2V0UHJlZmVycmVkQnVmZmVyU2l6ZSglenUpIiwgYnVm
ZmVyU2l6ZSk7CiAjZW5kaWYKIH0KIAotYm9vbCBBdWRpb1Nlc3Npb246OmlzTXV0ZWQoKSBjb25z
dAorYm9vbCBBdWRpb1Nlc3Npb25NYWM6OmlzTXV0ZWQoKSBjb25zdAogewogICAgIFVJbnQzMiBt
dXRlID0gMDsKICAgICBVSW50MzIgbXV0ZVNpemUgPSBzaXplb2YobXV0ZSk7CkBAIC00NTUsMjIg
KzQxMywxOSBAQCBzdGF0aWMgT1NTdGF0dXMgaGFuZGxlTXV0ZVByb3BlcnR5Q2hhbmdlKEF1ZGlv
T2JqZWN0SUQsIFVJbnQzMiwgY29uc3QgQXVkaW9PYmplYwogICAgIHJldHVybiBub0VycjsKIH0K
IAotdm9pZCBBdWRpb1Nlc3Npb246OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQordm9pZCBBdWRp
b1Nlc3Npb25NYWM6OmhhbmRsZU11dGVkU3RhdGVDaGFuZ2UoKQogewotICAgIGlmICghbV9wcml2
YXRlKQotICAgICAgICByZXR1cm47Ci0KICAgICBib29sIGlzQ3VycmVudGx5TXV0ZWQgPSBpc011
dGVkKCk7Ci0gICAgaWYgKG1fcHJpdmF0ZS0+bGFzdE11dGVkU3RhdGUgJiYgKm1fcHJpdmF0ZS0+
bGFzdE11dGVkU3RhdGUgPT0gaXNDdXJyZW50bHlNdXRlZCkKKyAgICBpZiAobV9sYXN0TXV0ZWRT
dGF0ZSAmJiAqbV9sYXN0TXV0ZWRTdGF0ZSA9PSBpc0N1cnJlbnRseU11dGVkKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCiAgICAgICAg
IG9ic2VydmVyLT5oYXJkd2FyZU11dGVkU3RhdGVEaWRDaGFuZ2UodGhpcyk7CiAKLSAgICBtX3By
aXZhdGUtPmxhc3RNdXRlZFN0YXRlID0gaXNDdXJyZW50bHlNdXRlZDsKKyAgICBtX2xhc3RNdXRl
ZFN0YXRlID0gaXNDdXJyZW50bHlNdXRlZDsKIH0KIAotdm9pZCBBdWRpb1Nlc3Npb246OmFkZE11
dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBBdWRp
b1Nlc3Npb25NYWM6OmFkZE11dGVkU3RhdGVPYnNlcnZlcihNdXRlZFN0YXRlT2JzZXJ2ZXIqIG9i
c2VydmVyKQogewogICAgIG1fb2JzZXJ2ZXJzLmFkZChvYnNlcnZlcik7CiAKQEAgLTQ4Nyw3ICs0
NDIsNyBAQCB2b2lkIEF1ZGlvU2Vzc2lvbjo6YWRkTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3Rh
dGVPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgQXVkaW9PYmplY3RBZGRQcm9wZXJ0eUxpc3RlbmVy
KGRlZmF1bHREZXZpY2UoKSwgJm11dGVBZGRyZXNzLCBoYW5kbGVNdXRlUHJvcGVydHlDaGFuZ2Us
IHRoaXMpOwogfQogCi12b2lkIEF1ZGlvU2Vzc2lvbjo6cmVtb3ZlTXV0ZWRTdGF0ZU9ic2VydmVy
KE11dGVkU3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEF1ZGlvU2Vzc2lvbk1hYzo6cmVt
b3ZlTXV0ZWRTdGF0ZU9ic2VydmVyKE11dGVkU3RhdGVPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAg
ICAgaWYgKG1fb2JzZXJ2ZXJzLnNpemUoKSA9PSAxKSB7CiAgICAgICAgIEF1ZGlvT2JqZWN0UHJv
cGVydHlBZGRyZXNzIG11dGVBZGRyZXNzID0gewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>