<?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>237241</bug_id>
          
          <creation_ts>2022-02-26 15:20:20 -0800</creation_ts>
          <short_desc>Simplify SerializedScriptValue construction</short_desc>
          <delta_ts>2022-02-27 11:46:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237144</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1846352</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 15:20:20 -0800</bug_when>
    <thetext>Simplify SerializedScriptValue construction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846353</commentid>
    <comment_count>1</comment_count>
      <attachid>453311</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 15:20:44 -0800</bug_when>
    <thetext>Created attachment 453311
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846359</commentid>
    <comment_count>2</comment_count>
      <attachid>453315</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 16:35:01 -0800</bug_when>
    <thetext>Created attachment 453315
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846363</commentid>
    <comment_count>3</comment_count>
      <attachid>453317</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 18:50:16 -0800</bug_when>
    <thetext>Created attachment 453317
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846364</commentid>
    <comment_count>4</comment_count>
      <attachid>453318</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 19:24:16 -0800</bug_when>
    <thetext>Created attachment 453318
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846365</commentid>
    <comment_count>5</comment_count>
      <attachid>453319</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 20:29:33 -0800</bug_when>
    <thetext>Created attachment 453319
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846366</commentid>
    <comment_count>6</comment_count>
      <attachid>453320</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 20:39:08 -0800</bug_when>
    <thetext>Created attachment 453320
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846369</commentid>
    <comment_count>7</comment_count>
      <attachid>453323</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 20:59:23 -0800</bug_when>
    <thetext>Created attachment 453323
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846377</commentid>
    <comment_count>8</comment_count>
      <attachid>453325</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 23:41:36 -0800</bug_when>
    <thetext>Created attachment 453325
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846381</commentid>
    <comment_count>9</comment_count>
      <attachid>453326</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-02-26 23:55:31 -0800</bug_when>
    <thetext>Created attachment 453326
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846463</commentid>
    <comment_count>10</comment_count>
      <attachid>453326</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-02-27 10:59:08 -0800</bug_when>
    <thetext>Comment on attachment 453326
Patch

This is great. I have some other SerializedScriptValue simplification to do soon, things discovered when I started working on using JSDOMGlobalObject more consistently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846467</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-27 11:45:30 -0800</bug_when>
    <thetext>Committed r290566 (247844@main): &lt;https://commits.webkit.org/247844@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453326.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846468</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-27 11:46:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/89531066&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453311</attachid>
            <date>2022-02-26 15:20:44 -0800</date>
            <delta_ts>2022-02-26 16:47:59 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>7223</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuY3BwCmluZGV4IGE1YjI4Yzg1M2ZiYi4uNDRhNTY1OGY2ZTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKQEAgLTkw
LDEyICs5MCw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3Jr
bGV0Tm9kZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAgICAgewogICAgICAgICBhdXRv
IGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7ICZnbG9iYWxPYmplY3QgfTsKICAgICAgICAgYXV0
byoganNPcHRpb25zID0gY29udmVydERpY3Rpb25hcnlUb0pTKGdsb2JhbE9iamVjdCwgKkpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIG9wdGlvbnMpOwotICAg
ICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAgICAgIGF1dG8gc2Vy
aWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBqc09wdGlvbnMsIHsgfSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0
TWVzc2FnZSk7Ci0gICAgICAgIGlmIChzZXJpYWxpemVkVmFsdWUuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBqc09wdGlvbnMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGU6Ok5vblRocm93
aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgICAgICBp
ZiAoIXNlcmlhbGl6ZWRPcHRpb25zKQogICAgICAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXJpYWxpemVkT3B0aW9ucyA9IHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKICAgICB9CiAKICAgICBhdXRvIHBhcmFtZXRlckRhdGEgPSBXVEZNb3ZlKG9wdGlvbnMu
cGFyYW1ldGVyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0MjUyYTU2NDc2M2IuLjk5YTdlNTgwMjQxZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC00MjIwLDI4ICs0MjIwLDIzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZl
CiAgICAgcmV0dXJuIGNvbnRlbnRzOwogfQogCi1zdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0
aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQorc3RhdGljIHZvaWQgbWF5YmVUaHJv
d0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRXhjZXB0aW9uQ29kZSBjb2RlKQogewogICAgIGF1dG8mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgorICAgIGNhc2UgRXhj
ZXB0aW9uQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcigmbGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I6CisgICAgY2FzZSBFeGNlcHRpb25Db2RlOjpU
eXBlRXJyb3I6CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiJfcyk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOgorICAgIGNh
c2UgRXhjZXB0aW9uQ29kZTo6RGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHRocm93RGF0YUNsb25l
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgotICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CisgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogfQogCkBAIC00MjY5LDQ5ICs0MjY0LDE4IEBAIHN0YXRpYyBFeGNlcHRpb24gZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29k
ZSkKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiB9CiAKLVJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93
RXhjZXB0aW9ucywgU2VyaWFsaXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNvbnRleHQpCiB7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4g
YmxvYkhhbmRsZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2Fn
ZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFw
czsKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZlY3RvcjxS
ZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfUlRDKQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBkdW1t
eVJUQ0RhdGFDaGFubmVsczsKLSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBX
YXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBk
dW1teU1lbW9yeUhhbmRsZXM7Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
ZHVtbXlTaGFyZWRCdWZmZXJzOwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1
bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5uZWxzLAot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVsZXMsCi0g
ICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFuZGxlcywg
YnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJz
KTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlQb3J0czsKKyAgICBhdXRv
IHJlc3VsdCA9IGNyZWF0ZShnbG9iYWxPYmplY3QsIHZhbHVlLCB7IH0sIGR1bW15UG9ydHMsIHNl
cmlhbGl6YXRpb25Db250ZXh0KTsKIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGR1bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2Vy
aWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJX
YXNtOjpNZW1vcnkgc2VyaWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNz
YWdlIGNvbnRleHQiKTsKLSNlbmRpZgotCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlv
bklmU2VyaWFsaXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAg
IGlmIChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0
ZWQpCisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAodGhyb3dF
eGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQorICAgICAgICAg
ICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChnbG9iYWxPYmplY3Qs
IHJlc3VsdC5leGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CisgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogc3RhdGljIGJvb2wgY29u
dGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VC
aXRtYXBzKQpAQCAtNDUzNyw3ICs0NTAxLDcgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogI2Vu
ZGlmCiAgICAgICAgICk7CiAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlOjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFs
aXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCByZXN1bHQuc2Vjb25kKTsKKyAgICAg
ICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShyZXN1bHQuc2Vjb25kKS5j
b2RlKCkpOwogICAgIHJldHVybiByZXN1bHQuZmlyc3QgPyByZXN1bHQuZmlyc3QgOiBqc051bGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAppbmRleCBlZjM3ZjFkMGNhNDYuLjdiNThhZmE3MDJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTcx
LDkgKzcxLDggQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFs
dWUpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5n
KTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUs
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlciwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiwgU2VyaWFsaXphdGlvbkNvbnRleHQgPSBTZXJpYWxpemF0aW9u
Q29udGV4dDo6RGVmYXVsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhy
b3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1
bHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQo=
</data>
<flag name="commit-queue"
          id="480639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453315</attachid>
            <date>2022-02-26 16:35:01 -0800</date>
            <delta_ts>2022-02-26 18:50:16 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>7394</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuY3BwCmluZGV4IGE1YjI4Yzg1M2ZiYi4uNDRhNTY1OGY2ZTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKQEAgLTkw
LDEyICs5MCw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3Jr
bGV0Tm9kZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAgICAgewogICAgICAgICBhdXRv
IGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7ICZnbG9iYWxPYmplY3QgfTsKICAgICAgICAgYXV0
byoganNPcHRpb25zID0gY29udmVydERpY3Rpb25hcnlUb0pTKGdsb2JhbE9iamVjdCwgKkpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIG9wdGlvbnMpOwotICAg
ICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAgICAgIGF1dG8gc2Vy
aWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBqc09wdGlvbnMsIHsgfSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0
TWVzc2FnZSk7Ci0gICAgICAgIGlmIChzZXJpYWxpemVkVmFsdWUuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBqc09wdGlvbnMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGU6Ok5vblRocm93
aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgICAgICBp
ZiAoIXNlcmlhbGl6ZWRPcHRpb25zKQogICAgICAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXJpYWxpemVkT3B0aW9ucyA9IHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKICAgICB9CiAKICAgICBhdXRvIHBhcmFtZXRlckRhdGEgPSBXVEZNb3ZlKG9wdGlvbnMu
cGFyYW1ldGVyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0MjUyYTU2NDc2M2IuLjY4NDQ3NGJmNzY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC00MjIwLDI4ICs0MjIwLDIzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZl
CiAgICAgcmV0dXJuIGNvbnRlbnRzOwogfQogCi1zdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0
aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQorc3RhdGljIHZvaWQgbWF5YmVUaHJv
d0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgRXhjZXB0aW9uQ29kZSBjb2RlKQogewogICAgIGF1dG8mIHZtID0gbGV4aWNh
bEdsb2JhbE9iamVjdC52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgorICAgIGNhc2UgRXhj
ZXB0aW9uQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbigm
bGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcigmbGV4
aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRp
b25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I6CisgICAgY2FzZSBFeGNlcHRpb25Db2RlOjpU
eXBlRXJyb3I6CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiJfcyk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOgorICAgIGNh
c2UgRXhjZXB0aW9uQ29kZTo6RGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHRocm93RGF0YUNsb25l
RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgotICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CisgICAgZGVm
YXVsdDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogfQogCkBAIC00MjY5LDQ5ICs0MjY0LDE4IEBAIHN0YXRpYyBFeGNlcHRpb24gZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29k
ZSkKICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiB9CiAKLVJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93
RXhjZXB0aW9ucywgU2VyaWFsaXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNvbnRleHQpCiB7
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4g
YmxvYkhhbmRsZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2Fn
ZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFw
czsKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZlY3RvcjxS
ZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfUlRDKQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBkdW1t
eVJUQ0RhdGFDaGFubmVsczsKLSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBX
YXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBk
dW1teU1lbW9yeUhhbmRsZXM7Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
ZHVtbXlTaGFyZWRCdWZmZXJzOwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1
bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5uZWxzLAot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVsZXMsCi0g
ICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFuZGxlcywg
YnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJz
KTsKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1
bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFsaXphdGlvbiBpcyBvbmx5
IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNtOjpNZW1vcnkgc2VyaWFs
aXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSNl
bmRpZgorICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teVBvcnRzOworICAgIGF1
dG8gcmVzdWx0ID0gY3JlYXRlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHsgfSwgZHVtbXlQb3J0cywg
c2VyaWFsaXphdGlvbkNvbnRleHQpOwogCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlv
bklmU2VyaWFsaXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAg
IGlmIChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0
ZWQpCisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAodGhyb3dF
eGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQorICAgICAgICAg
ICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChnbG9iYWxPYmplY3Qs
IHJlc3VsdC5leGNlcHRpb24oKS5jb2RlKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CisgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogc3RhdGljIGJvb2wgY29u
dGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VC
aXRtYXBzKQpAQCAtNDUzNiw4ICs0NTAwLDggQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAogICAg
ICAgICAsIG1fd2FzbU1lbW9yeUhhbmRsZXNBcnJheS5nZXQoKQogI2VuZGlmCiAgICAgICAgICk7
Ci0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJv
d2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCByZXN1bHQuc2Vjb25kKTsKKyAgICBpZiAodGhyb3dFeGNlcHRp
b25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nICYmIHJlc3VsdC5zZWNvbmQg
IT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICAg
ICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFs
T2JqZWN0LCBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShyZXN1bHQuc2Vjb25kKS5j
b2RlKCkpOwogICAgIHJldHVybiByZXN1bHQuZmlyc3QgPyByZXN1bHQuZmlyc3QgOiBqc051bGwo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAppbmRleCBlZjM3ZjFkMGNhNDYuLjdiNThhZmE3MDJkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTcx
LDkgKzcxLDggQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFs
dWUpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwg
U2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5n
KTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUs
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlciwgVmVjdG9yPFJl
ZlB0cjxNZXNzYWdlUG9ydD4+JiwgU2VyaWFsaXphdGlvbkNvbnRleHQgPSBTZXJpYWxpemF0aW9u
Q29udGV4dDo6RGVmYXVsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1Zh
bHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhy
b3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1
bHQpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453317</attachid>
            <date>2022-02-26 18:50:16 -0800</date>
            <delta_ts>2022-02-26 19:24:16 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>22724</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5v
ZGUuY3BwCmluZGV4IGE1YjI4Yzg1M2ZiYi4uNDRhNTY1OGY2ZTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKQEAgLTkw
LDEyICs5MCw5IEBAIEV4Y2VwdGlvbk9yPFJlZjxBdWRpb1dvcmtsZXROb2RlPj4gQXVkaW9Xb3Jr
bGV0Tm9kZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmCiAgICAgewogICAgICAgICBhdXRv
IGxvY2sgPSBKU0M6OkpTTG9ja0hvbGRlciB7ICZnbG9iYWxPYmplY3QgfTsKICAgICAgICAgYXV0
byoganNPcHRpb25zID0gY29udmVydERpY3Rpb25hcnlUb0pTKGdsb2JhbE9iamVjdCwgKkpTQzo6
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCksIG9wdGlvbnMpOwotICAg
ICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAgICAgIGF1dG8gc2Vy
aWFsaXplZFZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LCBqc09wdGlvbnMsIHsgfSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0
TWVzc2FnZSk7Ci0gICAgICAgIGlmIChzZXJpYWxpemVkVmFsdWUuaGFzRXhjZXB0aW9uKCkpCisg
ICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
Z2xvYmFsT2JqZWN0LCBqc09wdGlvbnMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGU6Ok5vblRocm93
aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgICAgICBp
ZiAoIXNlcmlhbGl6ZWRPcHRpb25zKQogICAgICAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBzZXJpYWxpemVkT3B0aW9ucyA9IHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKICAgICB9CiAKICAgICBhdXRvIHBhcmFtZXRlckRhdGEgPSBXVEZNb3ZlKG9wdGlvbnMu
cGFyYW1ldGVyRGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcAppbmRleCA0MjUyYTU2NDc2M2IuLjdjMmE1Y2E1NGRhMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwCkBAIC00MjIwLDM1ICs0MjIwLDMxIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6
OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZl
CiAgICAgcmV0dXJuIGNvbnRlbnRzOwogfQogCi1zdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0
aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQorc3RhdGljIHZvaWQgbWF5YmVUaHJv
d0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgc3RkOjpvcHRpb25hbDxFeGNlcHRpb24+IGV4Y2VwdGlvbikKIHsKKyAgICBp
ZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byYgdm0gPSBsZXhpY2Fs
R2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogCi0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkOgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CisgICAgc3dpdGNoIChl
eGNlcHRpb24tPmNvZGUoKSkgeworICAgIGNhc2UgRXhjZXB0aW9uQ29kZTo6U3RhY2tPdmVyZmxv
d0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9u
RXJyb3I6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiJfcyk7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkRhdGFDbG9uZUVycm9yOgorICAgIGNhc2Ug
RXhjZXB0aW9uQ29kZTo6RGF0YUNsb25lRXJyb3I6CiAgICAgICAgIHRocm93RGF0YUNsb25lRXJy
b3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgotICAgIGNh
c2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CisgICAgY2FzZSBF
eGNlcHRpb25Db2RlOjpUeXBlRXJyb3I6CisgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRhLiJfcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OkludGVycnVwdGVkRXhlY3V0aW9uRXJyb3I6Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIH0KIAotc3RhdGljIEV4Y2VwdGlvbiBleGNl
cHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2Rl
KQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uPiBleGNlcHRpb25Gb3JTZXJpYWxpemF0
aW9uUmVzdWx0KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCiB7Ci0gICAgQVNTRVJUKGNv
ZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7Ci0g
ICAgCiAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tP
dmVyZmxvd0Vycm9yIH07CkBAIC00MjU4LDYwICs0MjU0LDI2IEBAIHN0YXRpYyBFeGNlcHRpb24g
ZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUg
Y29kZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IERhdGFDbG9uZUVycm9yIH07CiAgICAg
Y2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICBj
YXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVycm9yOgotICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0
dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkOgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJl
dHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CiAgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShK
U0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCitSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9k
ZSB0aHJvd0V4Y2VwdGlvbnMsIFNlcmlhbGl6YXRpb25Db250ZXh0IHNlcmlhbGl6YXRpb25Db250
ZXh0KQogewotICAgIFZlY3Rvcjx1aW50OF90PiBidWZmZXI7Ci0gICAgVmVjdG9yPEJsb2JVUkxI
YW5kbGU+IGJsb2JIYW5kbGVzOwotICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1t
eU1lc3NhZ2VQb3J0czsKLSAgICBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFn
ZUJpdG1hcHM7Ci0jaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKLSAgICBW
ZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+IGR1bW15T2Zmc2NyZWVuQ2FudmFzZXM7Ci0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICBWZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVs
Pj4gZHVtbXlSVENEYXRhQ2hhbm5lbHM7Ci0jZW5kaWYKLSAgICBWZWN0b3I8UmVmUHRyPEpTQzo6
QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVyczsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9kdWxlczsKLSAgICBXYXNtTWVtb3J5SGFuZGxl
QXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwotI2VuZGlmCi0gICAgQXJyYXlCdWZmZXJDb250ZW50
c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKLSAgICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6
ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUsIGR1bW15TWVzc2FnZVBv
cnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJbWFnZUJpdG1hcHMsCi0jaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKLSAgICAgICAgZHVtbXlPZmZzY3JlZW5DYW52YXNl
cywKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRDKQotICAgICAgICBkdW1teVJUQ0RhdGFDaGFu
bmVscywKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgZHVtbXlNb2R1
bGVzLAotICAgICAgICBkdW1teU1lbW9yeUhhbmRsZXMsCi0jZW5kaWYKLSAgICAgICAgYmxvYkhh
bmRsZXMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVk
QnVmZmVycyk7Ci0KLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkdW1teU1vZHVsZXMuaXNFbXB0eSgpLCAiV2FzbTo6TW9kdWxlIHNlcmlhbGl6YXRpb24g
aXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0Iik7Ci0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShkdW1teU1lbW9yeUhhbmRsZXMuaXNFbXB0eSgpLCAiV2FzbTo6TWVtb3J5
IHNlcmlhbGl6YXRpb24gaXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0
Iik7Ci0jZW5kaWYKLQotICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVy
cm9yTW9kZTo6VGhyb3dpbmcpCi0gICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6
YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgY29kZSk7CisgICAgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+IGR1bW15UG9ydHM7CisgICAgYXV0byByZXN1bHQgPSBjcmVhdGUoZ2xv
YmFsT2JqZWN0LCB2YWx1ZSwgeyB9LCBkdW1teVBvcnRzLCBzZXJpYWxpemF0aW9uQ29udGV4dCk7
CiAKLSAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5
Q29tcGxldGVkKQorICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKKyAg
ICAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQoZ2xvYmFs
T2JqZWN0LCByZXN1bHQuZXhjZXB0aW9uKCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9KSk7CisgICAg
cmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKIH0KIAogc3RhdGljIGJvb2wgY29u
dGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VC
aXRtYXBzKQpAQCAtNDQ0Myw4ICs0NDA1LDggQEAgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNl
bmRpZgogICAgICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBjb250ZXh0LCAqc2hhcmVkQnVmZmVy
cyk7CiAKLSAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1
bGx5Q29tcGxldGVkKQotICAgICAgICByZXR1cm4gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZh
aWx1cmUoY29kZSk7CisgICAgaWYgKGF1dG8gZXhjZXB0aW9uID0gZXhjZXB0aW9uRm9yU2VyaWFs
aXphdGlvblJlc3VsdChjb2RlKSkKKyAgICAgICAgcmV0dXJuIFdURk1vdmUoKmV4Y2VwdGlvbik7
CiAKICAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZm
ZXJzKHZtLCBhcnJheUJ1ZmZlcnMpOwogICAgIGlmIChhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXku
aGFzRXhjZXB0aW9uKCkpCkBAIC00NDc3LDE0ICs0NDM5LDYgQEAgRXhjZXB0aW9uT3I8UmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xv
YmFsT2IKICAgICAgICAgICAgICAgICApKTsKIH0KIAotUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3RyaW5nVmlldyBzdHJpbmcpCi17
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBpZiAoIUNsb25lU2VyaWFsaXplcjo6
c2VyaWFsaXplKHN0cmluZywgYnVmZmVyKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVy
KSkpOwotfQotCiBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3JpZ2luQ29udGV4dCwgSlNWYWx1ZVJlZiBhcGlW
YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0ID0gdG9KUyhvcmlnaW5Db250ZXh0KTsKQEAgLTQ1MzcsNyArNDQ5MSw3
IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0
aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCi0gICAg
ICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2Jh
bE9iamVjdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNl
cmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZXhjZXB0aW9uRm9yU2VyaWFs
aXphdGlvblJlc3VsdChyZXN1bHQuc2Vjb25kKSk7CiAgICAgcmV0dXJuIHJlc3VsdC5maXJzdCA/
IHJlc3VsdC5maXJzdCA6IGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGVmMzdmMWQwY2E0Ni4uOTc3
Y2M0ZjNhZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaApAQCAtNzEsMTEgKzcxLDkgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lU
SF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIGNsYXNzIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJ
RklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6
YXRpb25FcnJvck1vZGU6OlRocm93aW5nKTsKLQogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBF
eGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gY3JlYXRlKEpTQzo6SlNHbG9i
YWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4mJiB0cmFuc2ZlciwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiwgU2VyaWFsaXphdGlv
bkNvbnRleHQgPSBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gU2Vy
aWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2Vy
aWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGlj
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKICAgICBz
dGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiYg
YnVmZmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENo
YW5uZWwuY3BwCmluZGV4IGU3NjI1M2NkNjQ4Yi4uMmI2ZWFiM2E1Y2RkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBCcm9h
ZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
JiBtZXNzYWdlKQogCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIFt0aGlzLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2lzQ2xvc2VkICYmIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNl
Y3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQo
TWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlKSwgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7CiAgICAgfSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMjg4ZjQ2Mjg2MmE5Li42YTMyNzliNTIx
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC01Miw4ICs1Miw4IEBAIGlu
bGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJ
bml0JiYgaW5pdGlhbGl6ZXIsIElzCiB7CiB9CiAKLWlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3Vy
Y2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQotICAgIDogRXZlbnQoZXZl
bnROYW1lcygpLm1lc3NhZ2VFdmVudCwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykK
K2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBl
LCBEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorICAgIDogRXZlbnQodHlwZSwgQ2Fu
QnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEp
KQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJ
ZCkKQEAgLTYyLDM3ICs2MiwxNCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQo
RGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUwogewogfQogCi1p
bmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKLSAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6
Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCi0gICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAs
IG1fb3JpZ2luKG9yaWdpbikKLSAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCi17Ci19
Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYmIHBvcnRzLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9w
dGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQs
IFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVu
dD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZl
bnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCkpOwotfQotCi1SZWY8
TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VF
dmVudChkYXRhLCBvcmlnaW4pKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50
OjpjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitSZWY8TWVz
c2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBE
YXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0
RXZlbnRJZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBvcnRzKSkpOwogfQogCi1SZWY8TWVz
c2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4pCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2Us
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1
cm4gY3JlYXRlKGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIFdURk1vdmUoZGF0YSksIG9yaWdp
biwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpOwogfQogCiBS
ZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA2NTEwNjk5NDI0MDAuLjQ2Njg4MDdiY2U0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsMTEgKzQ4LDEwIEBAIHVzaW5nIE1lc3Nh
Z2VFdmVudFNvdXJjZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8
TWVzc2FnZVBvcnQ+CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewog
ICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2ZW50KTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9
IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNz
YWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKLSAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0pOwotICAgIHN0YXRpYyBSZWY8
TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4pOwotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVy
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKKyAgICBzdHJ1Y3QgSlNWYWx1
ZVRhZyB7IH07CisgICAgdXNpbmcgRGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8SlNWYWx1ZVRhZywg
UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+LCBSZWY8QXJyYXlC
dWZmZXI+PjsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUsIERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7
IH0pOworICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoRGF0YVR5cGUmJiwgY29u
c3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0s
IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdl
RXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5p
dCB7CkBAIC03Myw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBwb3J0cygpIGNvbnN0IHsgcmV0
dXJuIG1fcG9ydHM7IH0KIAotICAgIHN0cnVjdCBKU1ZhbHVlVGFnIHsgfTsKLSAgICB1c2luZyBE
YXRhVHlwZSA9IHN0ZDo6dmFyaWFudDxKU1ZhbHVlVGFnLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiwgU3RyaW5nLCBSZWY8QmxvYj4sIFJlZjxBcnJheUJ1ZmZlcj4+OwogICAgIGNvbnN0IERh
dGFUeXBlJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBKU1ZhbHVlSW5X
cmFwcGVkT2JqZWN0JiBqc0RhdGEoKSB7IHJldHVybiBtX2pzRGF0YTsgfQpAQCAtODYsOCArODMs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VF
dmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7Ci0gICAgTWVz
c2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQpOwotICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZl
bnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
ID0geyB9KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5
cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAKICAgICBFdmVudEludGVyZmFj
ZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcAppbmRleCAxNzdmOGU0M2Q0NTguLjkyNTFlODQ2NmQzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0
Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXV0byBw
b3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBXVEZNb3ZlKG1lc3Nh
Z2UudHJhbnNmZXJyZWRQb3J0cykpOwogICAgICAgICAgICAgLy8gUGVyIHNwZWNpZmljYXRpb24s
IGVhY2ggTWVzc2FnZVBvcnQgb2JqZWN0IGhhcyBhIHRhc2sgc291cmNlIGNhbGxlZCB0aGUgcG9y
dCBtZXNzYWdlIHF1ZXVlLgotICAgICAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0
aGlzLCBUYXNrU291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRl
KFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOworICAg
ICAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpQb3N0
ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgICAgICB9
CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDYwYzc1OWRjOGFmMy4u
ODY0MzVlMWNmODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05NjMsNyArOTYz
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0
b3IgdXNlckdlc3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb0ZvcndhcmQpOwogICAgICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBw
b3N0TWVzc2FnZUlkZW50aWZpZXIpOwogCi0gICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92
ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25O
dWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBpbmN1bWJlbnRXaW5kb3dQcm94eSA/IHN0ZDo6bWFr
ZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94
eSkpKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7
IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVu
dFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3RkOjpudWxsb3B0LCBN
ZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92ZShtZXNzYWdlLnRy
YW5zZmVycmVkUG9ydHMpKSk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFt
ZSwgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAK
aW5kZXggOGNjOGRmMWFjMjZjLi43MDczZWY2MTczY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCkBAIC00MzEsMTQgKzQzMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRj
aE1lc3NhZ2VFdmVudCgpCiAKICAgICBhdXRvJiBuYW1lID0gbV9ldmVudE5hbWUuaXNFbXB0eSgp
ID8gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCA6IG1fZXZlbnROYW1lOwogCi0gICAgLy8gT21p
dCB0aGUgdHJhaWxpbmcgIlxuIiBjaGFyYWN0ZXIuCiAgICAgQVNTRVJUKCFtX2RhdGEuaXNFbXB0
eSgpKTsKLSAgICB1bnNpZ25lZCBzaXplID0gbV9kYXRhLnNpemUoKSAtIDE7Ci0gICAgYXV0byBk
YXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoeyBtX2RhdGEuZGF0YSgpLCBzaXpl
IH0pOwotICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEpOworCisgICAgLy8gT21pdCB0aGUgdHJhaWxp
bmcgIlxuIiBjaGFyYWN0ZXIuCisgICAgU3RyaW5nIGRhdGEobV9kYXRhLmRhdGEoKSwgbV9kYXRh
LnNpemUoKSAtIDEpOwogICAgIG1fZGF0YSA9IHsgfTsKIAotICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUobmFtZSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBtX2V2ZW50U3Ry
ZWFtT3JpZ2luLCBtX2xhc3RFdmVudElkKSk7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShuYW1lLCBXVEZNb3ZlKGRhdGEpLCBtX2V2ZW50U3RyZWFtT3JpZ2luLCBtX2xh
c3RFdmVudElkKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggOTlkMWJjMDI2Y2Ex
Li42YWQyMTc3NjM1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQ
cm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG0KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9y
dHMpKTsKLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
Kndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxs
KCkpKTsKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQo
Kndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHN0
ZDo6bnVsbG9wdCwgV1RGTW92ZShwb3J0cykpKTsKICAgICB9KTsKIH0KIApAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9i
YWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAg
ICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlJj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQ
b3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVh
dGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7Cisg
ICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdl
Lm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92
ZShwb3J0cykpKTsKICAgICAgICAgY29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgp
LmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdBY3Rpdml0
eSgpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBmMjE0YWM2YTAwNzYuLjQx
ZjM0YzYxZDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1Nl
cnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQg
U2VydmljZVdvcmtlckNvbnRhaW5lcjo6cG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmJiBtZXNzYWdlLCBTZXJ2CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CiAgICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxTZXJ2aWNl
V29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKGNvbnRleHQsIFdURk1vdmUoc291
cmNlRGF0YSkpIH07CiAKLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6Y3Jl
YXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50
cmFuc2ZlcnJlZFBvcnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3Vy
Y2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBz
b3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpLCBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpKTsKICAgICBp
ZiAobV9zaG91bGREZWZlck1lc3NhZ2VFdmVudHMpCiAgICAgICAgIG1fZGVmZXJyZWRNZXNzYWdl
RXZlbnRzLmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogICAgIGVsc2UgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFs
U2NvcGUuY3BwCmluZGV4IDEyYjhlMWFjOGQwMS4uOWZlOGRiMzhlYTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6
Y2xvc2UoKQogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RFdmVudChU
cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBjb25zdCBTdHJpbmcmIHNv
dXJjZU9yaWdpbikKIHsKICAgICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoi
KTsKLSAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZW1wdHlT
dHJpbmcoKSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBv
cnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOwog
ICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CiAgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07
CiAgICAgQVNTRVJUKHBvcnQpOwotICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShXVEZNb3ZlKHBvcnRzKSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7
IH0sIHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShlbXB0eVN0
cmluZygpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCwgV1RGTW92ZShwb3J0cykpOwogICAgIGV2
ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsK
IAogICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453318</attachid>
            <date>2022-02-26 19:24:16 -0800</date>
            <delta_ts>2022-02-26 20:29:33 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>39146</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAppbmRleCBh
MzYxMTEzZGRjNTIuLjcyODI1NTQwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJREJWYWx1ZTo6SURCVmFs
dWUoKQogfQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZl
Y3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgSURCVmFs
dWU6OklEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIH0KIAogSURC
VmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JGaWxlUGF0aHMpCi0gICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0
b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKKyAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y29weVZlY3RvcihzY3JpcHRWYWx1ZS53aXJlQnl0ZXMoKSkpCiAgICAgLCBtX2Jsb2JVUkxz
KGJsb2JVUkxzKQogICAgICwgbV9ibG9iRmlsZVBhdGhzKGJsb2JGaWxlUGF0aHMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAppbmRleCBhNWIyOGM4NTNmYmIuLjQ0YTU2NThmNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC05MCwxMiAr
OTAsOSBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CiAgICAgICAgIGF1dG8qIGpz
T3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNP
cHRpb25zLCB7IH0sIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOwotICAgICAgICBpZiAoc2VyaWFsaXplZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFz
ZXJpYWxpemVkT3B0aW9ucykKICAgICAgICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VyaWFsaXplZE9wdGlvbnMgPSBzZXJpYWxpemVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25zLnBhcmFt
ZXRlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNDI1MmE1NjQ3NjNiLi45OWVhY2YyOTJkOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtNjQ1LDIyICs2NDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzZXJpYWxp
emVyLnNlcmlhbGl6ZSh2YWx1ZSk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgc2VyaWFsaXpl
KFN0cmluZ1ZpZXcgc3RyaW5nLCBWZWN0b3I8dWludDhfdD4mIG91dCkKLSAgICB7Ci0gICAgICAg
IHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgQ3VycmVudFZlcnNpb24pOwotICAgICAgICBpZiAoc3Ry
aW5nLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW48dWludDhfdD4o
b3V0LCBFbXB0eVN0cmluZ1RhZyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICB3cml0ZUxpdHRsZUVuZGlhbjx1aW50OF90PihvdXQsIFN0cmluZ1RhZyk7Ci0g
ICAgICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKLSAgICAgICAgICAgIHdyaXRlTGl0dGxlRW5k
aWFuKG91dCwgc3RyaW5nLmxlbmd0aCgpIHwgU3RyaW5nRGF0YUlzOEJpdEZsYWcpOwotICAgICAg
ICAgICAgcmV0dXJuIHdyaXRlTGl0dGxlRW5kaWFuKG91dCwgc3RyaW5nLmNoYXJhY3RlcnM4KCks
IHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVMaXR0bGVFbmRpYW4o
b3V0LCBzdHJpbmcubGVuZ3RoKCkpOwotICAgICAgICByZXR1cm4gd3JpdGVMaXR0bGVFbmRpYW4o
b3V0LCBzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSk7Ci0gICAgfQotCiBw
cml2YXRlOgogICAgIHR5cGVkZWYgSGFzaE1hcDxKU09iamVjdCosIHVpbnQzMl90PiBPYmplY3RQ
b29sOwogCkBAIC00MTAyLDEyICs0MDg2LDYgQEAgZXJyb3I6CiAKIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6flNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsKIAotU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVy
KQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKLXsKLSAgICBtX21lbW9yeUNvc3QgPSBj
b21wdXRlTWVtb3J5Q29zdCgpOwotfQotCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxB
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAjaWYg
RU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hl
ZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscwpAQCAtNDIyMCwzNSAr
NDE5OCwzMSBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZQogICAgIHJldHVybiBjb250ZW50czsK
IH0KIAotc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxl
ZChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgU2VyaWFsaXphdGlvblJldHVy
bkNvZGUgY29kZSkKK3N0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRp
b25GYWlsZWQoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIHN0ZDo6b3B0aW9u
YWw8RXhjZXB0aW9uPiBleGNlcHRpb24pCiB7CisgICAgaWYgKCFleGNlcHRpb24pCisgICAgICAg
IHJldHVybjsKKwogICAgIGF1dG8mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHN3aXRjaCAoY29k
ZSkgewotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBs
ZXRlZDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
U3RhY2tPdmVyZmxvd0Vycm9yOgorICAgIHN3aXRjaCAoZXhjZXB0aW9uLT5jb2RlKCkpIHsKKyAg
ICBjYXNlIEV4Y2VwdGlvbkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjoKICAgICAgICAgdGhyb3dF
eGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VmFsaWRhdGlvbkVycm9yOgotICAgICAgICB0aHJvd1R5
cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmFibGUgdG8gZGVzZXJpYWxp
emUgZGF0YS4iX3MpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpEYXRhQ2xvbmVFcnJvcjoKKyAgICBjYXNlIEV4Y2VwdGlvbkNvZGU6OkRhdGFDbG9u
ZUVycm9yOgogICAgICAgICB0aHJvd0RhdGFDbG9uZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3Qs
IHNjb3BlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6RXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpVbnNwZWNpZmllZEVycm9yOgorICAgIGNhc2UgRXhjZXB0aW9uQ29kZTo6VHlwZUVycm9y
OgorICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsICJV
bmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iX3MpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpJ
bnRlcnJ1cHRlZEV4ZWN1dGlvbkVycm9yOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiB9CiAKLXN0YXRpYyBFeGNlcHRpb24gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZh
aWx1cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvblJlc3VsdChTZXJpYWxpemF0aW9u
UmV0dXJuQ29kZSBjb2RlKQogewotICAgIEFTU0VSVChjb2RlICE9IFNlcmlhbGl6YXRpb25SZXR1
cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpOwotICAgIAogICAgIHN3aXRjaCAoY29kZSkg
ewogICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0YWNrT3ZlcmZsb3dFcnJvcjoK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN0YWNrT3ZlcmZsb3dFcnJvciB9OwpAQCAtNDI1
OCw2MCArNDIzMiwyNiBAQCBzdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRp
b25GYWlsdXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBEYXRhQ2xvbmVFcnJvciB9OwogICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVy
bkNvZGU6OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBFeGlzdGluZ0V4Y2VwdGlvbkVycm9yIH07Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6VW5zcGVjaWZpZWRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwogICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNv
bXBsZXRlZDoKKyAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNpZmllZEVy
cm9yOgogICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkludGVycnVwdGVkRXhlY3V0
aW9uRXJyb3I6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CisgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Cisg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAotUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxH
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dF
eGNlcHRpb25zKQorUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zLCBTZXJp
YWxpemF0aW9uQ29udGV4dCBzZXJpYWxpemF0aW9uQ29udGV4dCkKIHsKLSAgICBWZWN0b3I8dWlu
dDhfdD4gYnVmZmVyOwotICAgIFZlY3RvcjxCbG9iVVJMSGFuZGxlPiBibG9iSGFuZGxlczsKLSAg
ICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlNZXNzYWdlUG9ydHM7Ci0gICAgVmVj
dG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+IGR1bW15SW1hZ2VCaXRtYXBzOwotI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCi0gICAgVmVjdG9yPFJlZlB0cjxPZmZzY3JlZW5D
YW52YXM+PiBkdW1teU9mZnNjcmVlbkNhbnZhc2VzOwotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9S
VEMpCi0gICAgVmVjdG9yPFJlZjxSVENEYXRhQ2hhbm5lbD4+IGR1bW15UlRDRGF0YUNoYW5uZWxz
OwotI2VuZGlmCi0gICAgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4gZHVtbXlBcnJh
eUJ1ZmZlcnM7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIFdhc21Nb2R1bGVBcnJheSBk
dW1teU1vZHVsZXM7Ci0gICAgV2FzbU1lbW9yeUhhbmRsZUFycmF5IGR1bW15TWVtb3J5SGFuZGxl
czsKLSNlbmRpZgotICAgIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSBkdW1teVNoYXJlZEJ1ZmZl
cnM7Ci0gICAgYXV0byBjb2RlID0gQ2xvbmVTZXJpYWxpemVyOjpzZXJpYWxpemUoJmxleGljYWxH
bG9iYWxPYmplY3QsIHZhbHVlLCBkdW1teU1lc3NhZ2VQb3J0cywgZHVtbXlBcnJheUJ1ZmZlcnMs
IGR1bW15SW1hZ2VCaXRtYXBzLAotI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktF
UlMpCi0gICAgICAgIGR1bW15T2Zmc2NyZWVuQ2FudmFzZXMsCi0jZW5kaWYKLSNpZiBFTkFCTEUo
V0VCX1JUQykKLSAgICAgICAgZHVtbXlSVENEYXRhQ2hhbm5lbHMsCi0jZW5kaWYKLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0gICAgICAgIGR1bW15TW9kdWxlcywKLSAgICAgICAgZHVtbXlNZW1v
cnlIYW5kbGVzLAotI2VuZGlmCi0gICAgICAgIGJsb2JIYW5kbGVzLCBidWZmZXIsIFNlcmlhbGl6
YXRpb25Db250ZXh0OjpEZWZhdWx0LCBkdW1teVNoYXJlZEJ1ZmZlcnMpOwotCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNb2R1bGVzLmlzRW1w
dHkoKSwgIldhc206Ok1vZHVsZSBzZXJpYWxpemF0aW9uIGlzIG9ubHkgYWxsb3dlZCBpbiB0aGUg
cG9zdE1lc3NhZ2UgY29udGV4dCIpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZHVtbXlNZW1v
cnlIYW5kbGVzLmlzRW1wdHkoKSwgIldhc206Ok1lbW9yeSBzZXJpYWxpemF0aW9uIGlzIG9ubHkg
YWxsb3dlZCBpbiB0aGUgcG9zdE1lc3NhZ2UgY29udGV4dCIpOwotI2VuZGlmCi0KLSAgICBpZiAo
dGhyb3dFeGNlcHRpb25zID09IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQotICAg
ICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGxleGljYWxHbG9i
YWxPYmplY3QsIGNvZGUpOworICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teVBv
cnRzOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlKGdsb2JhbE9iamVjdCwgdmFsdWUsIHsgfSwg
ZHVtbXlQb3J0cywgc2VyaWFsaXphdGlvbkNvbnRleHQpOwogCi0gICAgaWYgKGNvZGUgIT0gU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKKyAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2Vy
aWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCisgICAgICAgICAgICBtYXliZVRocm93RXhj
ZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGdsb2JhbE9iamVjdCwgcmVzdWx0LmV4Y2VwdGlv
bigpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogCi0gICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRs
ZXMsIG51bGxwdHIsIG51bGxwdHIsIHsgfSkpOworICAgIHJldHVybiByZXN1bHQucmVsZWFzZVJl
dHVyblZhbHVlKCk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zRHVwbGljYXRlcyhjb25zdCBW
ZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcykKQEAgLTQ0NDMsOCArNDM4
Myw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAjZW5kaWYKICAgICAgICAgYmxvYkhhbmRs
ZXMsIGJ1ZmZlciwgY29udGV4dCwgKnNoYXJlZEJ1ZmZlcnMpOwogCi0gICAgaWYgKGNvZGUgIT0g
U2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKLSAgICAgICAg
cmV0dXJuIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJlKGNvZGUpOworICAgIGlmIChh
dXRvIGV4Y2VwdGlvbiA9IGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25SZXN1bHQoY29kZSkpCisg
ICAgICAgIHJldHVybiBXVEZNb3ZlKCpleGNlcHRpb24pOwogCiAgICAgYXV0byBhcnJheUJ1ZmZl
ckNvbnRlbnRzQXJyYXkgPSB0cmFuc2ZlckFycmF5QnVmZmVycyh2bSwgYXJyYXlCdWZmZXJzKTsK
ICAgICBpZiAoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5Lmhhc0V4Y2VwdGlvbigpKQpAQCAtNDQ3
NywxNCArNDQxNyw2IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgICAgICAgICAg
KSk7CiB9CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7Ci0gICAgaWYgKCFDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZShzdHJpbmcsIGJ1ZmZl
cikpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlcikpKTsKLX0KLQogUmVmUHRyPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0
UmVmIG9yaWdpbkNvbnRleHQsIEpTVmFsdWVSZWYgYXBpVmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2Vw
dGlvbikKIHsKICAgICBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCA9IHRvSlMo
b3JpZ2luQ29udGV4dCk7CkBAIC00NTA0LDcgKzQ0MzYsNyBAQCBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0NvbnRleHRSZWYgb3Jp
Z2luQwogICAgIHJldHVybiBzZXJpYWxpemVkVmFsdWU7CiB9CiAKLVN0cmluZyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OnRvU3RyaW5nKCkKK1N0cmluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OnRv
U3RyaW5nKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFs
aXplU3RyaW5nKG1fZGF0YSk7CiB9CkBAIC00NTM3LDcgKzQ0NjksNyBAQCBKU1ZhbHVlIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsCiAjZW5kaWYKICAgICAgICAgKTsKICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09
IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQotICAgICAgICBtYXliZVRocm93RXhj
ZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKGxleGljYWxHbG9iYWxPYmplY3QsIHJlc3VsdC5z
ZWNvbmQpOworICAgICAgICBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVk
KGxleGljYWxHbG9iYWxPYmplY3QsIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25SZXN1bHQocmVz
dWx0LnNlY29uZCkpOwogICAgIHJldHVybiByZXN1bHQuZmlyc3QgPyByZXN1bHQuZmlyc3QgOiBq
c051bGwoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCBlZjM3ZjFkMGNhNDYuLjdlMzExNDM2MmQ2YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
QEAgLTcxLDE1ICs3MSw4IEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpT
VmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpU
aHJvd2luZyk7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U1ZhbHVlLCBWZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFs
aXphdGlvbkNvbnRleHQ6OkRlZmF1bHQpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKLSAgICBzdGF0
aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVm
ZmVyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlw
dFZhbHVlKFdURk1vdmUoYnVmZmVyKSkpOwotICAgIH0KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgPSBTZXJpYWxpemF0aW9u
RXJyb3JNb2RlOjpUaHJvd2luZywgU2VyaWFsaXphdGlvbkNvbnRleHQgPSBTZXJpYWxpemF0aW9u
Q29udGV4dDo6RGVmYXVsdCk7CiAKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4gbnVsbFZhbHVlKCk7CiAKQEAgLTg5LDEzICs4MiwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0cmluZygp
OworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAgICAgLy8gQVBJIGltcGxlbWVudGF0
aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBBcnJh
eUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVm
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVSZWYg
ZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCi0gICAg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAg
ICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1w
dHkoKTsgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKQEAgLTEwNiw3
ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGRhdGEpKSk7CiAgICAgfQotICAgIGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgdG9XaXJlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAg
ICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHdpcmVCeXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAtMTE2LDEwICsxMDgsOSBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwogCiBw
cml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJD
b250ZW50c0FycmF5PiYmCisgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiYmID0gbnVsbHB0cgogI2lmIEVOQUJMRShXRUJfUlRDKQotICAgICAgICAsIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYKKyAgICAgICAg
LCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmID0geyB9
CiAjZW5kaWYKICAgICAgICAgKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Jy
b2FkY2FzdENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwu
Y3BwCmluZGV4IGU3NjI1M2NkNjQ4Yi4uMmI2ZWFiM2E1Y2RkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0Jyb2FkY2FzdENoYW5uZWwuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBCcm9hZGNhc3RD
aGFubmVsOjpkaXNwYXRjaE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBtZXNz
YWdlKQogCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNl
OjpQb3N0ZWRNZXNzYWdlUXVldWUsIFt0aGlzLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2lzQ2xvc2VkICYmIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUo
eyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMjg4ZjQ2Mjg2MmE5Li42YTMyNzliNTIxNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC01Miw4ICs1Miw4IEBAIGlubGluZSBN
ZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYg
aW5pdGlhbGl6ZXIsIElzCiB7CiB9CiAKLWlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVu
dChEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxh
c3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQotICAgIDogRXZlbnQoZXZlbnROYW1l
cygpLm1lc3NhZ2VFdmVudCwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKK2lubGlu
ZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRh
VHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxS
ZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxl
OjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAg
ICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJZCkKQEAg
LTYyLDM3ICs2MiwxNCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5
cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgUwogewogfQogCi1pbmxpbmUg
TWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCkKLSAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElz
Q2FuY2VsYWJsZTo6Tm8pCi0gICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAsIG1fb3Jp
Z2luKG9yaWdpbikKLSAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCi17Ci19Ci0KLVJl
ZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYmIHBvcnRzLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFs
PE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1v
dmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVz
c2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlw
ZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCkpOwotfQotCi1SZWY8TWVzc2Fn
ZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChk
YXRhLCBvcmlnaW4pKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitSZWY8TWVzc2FnZUV2
ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlw
ZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1l
c3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJ
ZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBvcnRzKSkpOwogfQogCi1SZWY8TWVzc2FnZUV2
ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShE
YXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1cm4gY3Jl
YXRlKGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFz
dEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpOwogfQogCiBSZWY8TWVz
c2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAppbmRleCA2NTEwNjk5NDI0MDAuLjQ2Njg4MDdiY2U0NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsMTEgKzQ4LDEwIEBAIHVzaW5nIE1lc3NhZ2VFdmVu
dFNvdXJjZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8V2luZG93UHJveHk+LCBSZWZQdHI8TWVzc2Fn
ZVBvcnQ+CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJsaWMgRXZlbnQgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2ZW50KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZl
bnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKLSAgICBzdGF0aWMgUmVmPE1lc3Nh
Z2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0pOwotICAgIHN0YXRpYyBSZWY8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pOwot
ICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGRh
dGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKKyAgICBzdHJ1Y3QgSlNWYWx1ZVRhZyB7
IH07CisgICAgdXNpbmcgRGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8SlNWYWx1ZVRhZywgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+LCBSZWY8QXJyYXlCdWZmZXI+
PjsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcm
IHR5cGUsIERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJp
bmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4m
JiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOwor
ICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoRGF0YVR5cGUmJiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6
b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+
IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5pdCA6IEV2ZW50SW5pdCB7CkBA
IC03Myw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VF
dmVudFNvdXJjZT4mIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlOyB9CiAgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBwb3J0cygpIGNvbnN0IHsgcmV0dXJuIG1f
cG9ydHM7IH0KIAotICAgIHN0cnVjdCBKU1ZhbHVlVGFnIHsgfTsKLSAgICB1c2luZyBEYXRhVHlw
ZSA9IHN0ZDo6dmFyaWFudDxKU1ZhbHVlVGFnLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwg
U3RyaW5nLCBSZWY8QmxvYj4sIFJlZjxBcnJheUJ1ZmZlcj4+OwogICAgIGNvbnN0IERhdGFUeXBl
JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0JiBqc0RhdGEoKSB7IHJldHVybiBtX2pzRGF0YTsgfQpAQCAtODYsOCArODMsNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwogICAgIE1lc3NhZ2VFdmVudChj
b25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3RlZCk7Ci0gICAgTWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwot
ICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3Vy
Y2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9
KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0
ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAKICAgICBFdmVudEludGVyZmFjZSBldmVu
dEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApp
bmRleCAxNzdmOGU0M2Q0NTguLjkyNTFlODQ2NmQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBv
cnQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNz
YWdlcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYXV0byBwb3J0cyA9
IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJh
bnNmZXJyZWRQb3J0cykpOwogICAgICAgICAgICAgLy8gUGVyIHNwZWNpZmljYXRpb24sIGVhY2gg
TWVzc2FnZVBvcnQgb2JqZWN0IGhhcyBhIHRhc2sgc291cmNlIGNhbGxlZCB0aGUgcG9ydCBtZXNz
YWdlIHF1ZXVlLgotICAgICAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBU
YXNrU291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1v
dmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICAg
ICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpQb3N0ZWRNZXNz
YWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9u
TnVsbCgpLCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgICAgICB9CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDYwYzc1OWRjOGFmMy4uODY0MzVl
MWNmODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC05NjMsNyArOTYzLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgdXNl
ckdlc3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb0ZvcndhcmQpOwogICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBwb3N0TWVz
c2FnZUlkZW50aWZpZXIpOwogCi0gICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92ZShtZXNz
YWdlLnRyYW5zZmVycmVkUG9ydHMpKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCks
IHNvdXJjZU9yaWdpbiwgeyB9LCBpbmN1bWJlbnRXaW5kb3dQcm94eSA/IHN0ZDo6bWFrZV9vcHRp
b25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94eSkpKSA6
IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIGlu
Y3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJj
ZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3RkOjpudWxsb3B0LCBNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVy
cmVkUG9ydHMpKSk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFtZSwgcG9z
dE1lc3NhZ2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZl
bnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXgg
OGNjOGRmMWFjMjZjLi43MDczZWY2MTczY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2Uu
Y3BwCkBAIC00MzEsMTQgKzQzMSwxMyBAQCB2b2lkIEV2ZW50U291cmNlOjpkaXNwYXRjaE1lc3Nh
Z2VFdmVudCgpCiAKICAgICBhdXRvJiBuYW1lID0gbV9ldmVudE5hbWUuaXNFbXB0eSgpID8gZXZl
bnROYW1lcygpLm1lc3NhZ2VFdmVudCA6IG1fZXZlbnROYW1lOwogCi0gICAgLy8gT21pdCB0aGUg
dHJhaWxpbmcgIlxuIiBjaGFyYWN0ZXIuCiAgICAgQVNTRVJUKCFtX2RhdGEuaXNFbXB0eSgpKTsK
LSAgICB1bnNpZ25lZCBzaXplID0gbV9kYXRhLnNpemUoKSAtIDE7Ci0gICAgYXV0byBkYXRhID0g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoeyBtX2RhdGEuZGF0YSgpLCBzaXplIH0pOwot
ICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEpOworCisgICAgLy8gT21pdCB0aGUgdHJhaWxpbmcgIlxu
IiBjaGFyYWN0ZXIuCisgICAgU3RyaW5nIGRhdGEobV9kYXRhLmRhdGEoKSwgbV9kYXRhLnNpemUo
KSAtIDEpOwogICAgIG1fZGF0YSA9IHsgfTsKIAotICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2
ZW50OjpjcmVhdGUobmFtZSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBtX2V2ZW50U3RyZWFtT3Jp
Z2luLCBtX2xhc3RFdmVudElkKSk7CisgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNy
ZWF0ZShuYW1lLCBXVEZNb3ZlKGRhdGEpLCBtX2V2ZW50U3RyZWFtT3JpZ2luLCBtX2xhc3RFdmVu
dElkKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
CmluZGV4IGYxZGEyYzg1YTAwOC4uZDc4YTdjNGZlZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAKQEAgLTIzOSw3ICsyMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBIaXN0b3J5OjpzdGF0ZU9i
amVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YQogCiAgICAgQ2hl
Y2tlZDx1aW50NjRfdD4gcGF5bG9hZFNpemUgPSB0aXRsZVNpemU7CiAgICAgcGF5bG9hZFNpemUg
Kz0gdXJsU2l6ZTsKLSAgICBwYXlsb2FkU2l6ZSArPSBkYXRhID8gZGF0YS0+ZGF0YSgpLnNpemUo
KSA6IDA7CisgICAgcGF5bG9hZFNpemUgKz0gZGF0YSA/IGRhdGEtPndpcmVCeXRlcygpLnNpemUo
KSA6IDA7CiAKICAgICBDaGVja2VkPHVpbnQ2NF90PiBuZXdUb3RhbFVzYWdlID0gbWFpbkhpc3Rv
cnkubV90b3RhbFN0YXRlT2JqZWN0VXNhZ2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA5NDZlZmY5NzQ0ZTQuLmQyMmI5ZTNmMjRjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtMzg0MSwxNCArMzg0MSwxNCBAQCBFeGNlcHRpb25PcjxTdHJp
bmc+IEludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8oKQogCiBSZWY8QXJyYXlCdWZmZXI+
IEludGVybmFsczo6c2VyaWFsaXplT2JqZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiB2YWx1ZSkgY29uc3QKIHsKLSAgICBhdXRvJiBieXRlcyA9IHZhbHVlLT5kYXRhKCk7
CisgICAgYXV0byYgYnl0ZXMgPSB2YWx1ZS0+d2lyZUJ5dGVzKCk7CiAgICAgcmV0dXJuIEFycmF5
QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXplKCkpOwogfQogCiBSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFsaXplQnVmZmVyKEFycmF5QnVm
ZmVyJiBidWZmZXIpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzIHsgc3RhdGlj
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuYnl0ZUxlbmd0aCgp
IH07Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShieXRl
cykpOworICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0
ZXMoV1RGTW92ZShieXRlcykpOwogfQogCiBib29sIEludGVybmFsczo6aXNGcm9tQ3VycmVudFdv
cmxkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggOTlkMWJjMDI2Y2ExLi42YWQyMTc3NjM1
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG0KICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVj
dCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShX
VEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAg
ICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNoRXZlbnQoKndvcmtlck9iamVj
dCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZSht
ZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShwb3J0cykpKTsKICAgICB9KTsKIH0KIApAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQg
V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0CiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKHNjcmlwdENvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgpKTsKICAgICAgICAgYXV0byYg
Y29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlJj4oc2NyaXB0
Q29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0
cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAg
ICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShw
b3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIGNvbnRl
eHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShwb3J0cykpKTsK
ICAgICAgICAgY29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQcm94eSgpLmNvbmZpcm1NZXNz
YWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdBY3Rpdml0eSgpKTsKICAgICB9
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBmMjE0YWM2YTAwNzYuLjQxZjM0YzYxZDAwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJD
b250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgU2VydmljZVdvcmtl
ckNvbnRhaW5lcjo6cG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdl
LCBTZXJ2CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNl
cnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKGNvbnRleHQsIFdURk1vdmUoc291cmNlRGF0YSkpIH07
CiAKLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQ
b3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBv
cnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsg
fSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4s
IHsgfSwgV1RGTW92ZShzb3VyY2UpLCBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0
LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpKTsKICAgICBpZiAobV9zaG91bGRE
ZWZlck1lc3NhZ2VFdmVudHMpCiAgICAgICAgIG1fZGVmZXJyZWRNZXNzYWdlRXZlbnRzLmFwcGVu
ZChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IDEyYjhlMWFjOGQwMS4uOWZlOGRiMzhlYTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02
NSwxMyArNjUsMTEgQEAgdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQogdm9p
ZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1l
c3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikK
IHsKICAgICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RFdmVudDoiKTsKLSAgICBhdXRv
IHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSk7Ci0g
ICAgQVNTRVJUKHZhbHVlKTsKICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xl
UG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQpIH0pOwogICAgIEFTU0VSVChw
b3J0cy5zaXplKCkgPT0gMSk7CiAgICAgYXV0byBwb3J0ID0gcG9ydHNbMF07CiAgICAgQVNTRVJU
KHBvcnQpOwotICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBv
cnRzKSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOwor
ICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBzb3Vy
Y2VPcmlnaW4sIHsgfSwgcG9ydCwgV1RGTW92ZShwb3J0cykpOwogICAgIGV2ZW50LT5pbml0RXZl
bnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZhbHNlKTsKIAogICAgIGRpc3Bh
dGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDZmZTg1NzZhYzM4ZS4uNGRkYzgw
ZjE0ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCkBAIC00OSw5ICs0OSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS5yZWxl
YXNlTm9uTnVsbCgpKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCisgICAgc3RhdGljIFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21XaXJlQnl0ZXMoVmVjdG9yPHVpbnQ4
X3Q+JiYgYnVmZmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFs
aXplZFNjcmlwdFZhbHVlKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RG
TW92ZShidWZmZXIpKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2ly
ZUJ5dGVzKFdURk1vdmUoYnVmZmVyKSkpKTsKICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZVJlZiBk
ZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpA
QCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0
YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU2Ny
aXB0VmFsdWUtPmRhdGEoKTsgfQorICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNl
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPndpcmVCeXRlcygpOyB9
CiAKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUmIGludGVybmFsUmVwcmVzZW50
YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBhMDhkZDE1ZDM1MTcuLmJlZTkzMmQw
NTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3BwCkBAIC0xODMsNyArMTgz
LDcgQEAgdm9pZCBQYWdlU3RhdGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBtYWluRnJhbWVTdGF0ZSA8PCAhIXNlc3Npb25TdGF0
ZU9iamVjdDsKIAogICAgIGlmIChzZXNzaW9uU3RhdGVPYmplY3QpCi0gICAgICAgIGVuY29kZXIg
PDwgc2Vzc2lvblN0YXRlT2JqZWN0LT50b1dpcmVCeXRlcygpOworICAgICAgICBlbmNvZGVyIDw8
IHNlc3Npb25TdGF0ZU9iamVjdC0+d2lyZUJ5dGVzKCk7CiAKICAgICBlbmNvZGVyIDw8IHNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKaW5k
ZXggZjhiN2VkY2Y0NDkxLi5lMTk0MDczNzI4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5j
cHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBib29sIFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVy
JiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQpCiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KHsgZGF0
YVJlZmVyZW5jZSB9KTsKKyAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlIH0pOwogICAgICAgICBicmVh
azsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IDU0NTlkMmUzYmY4NS4uMzAxNDMyMDgyNzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTExMjgsNyArMTEyOCw3
IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRl
cm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJlQnl0ZXMoKSk7CisgICAgICAgIGFyZ3VtZW50c01h
cC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkud2ly
ZUJ5dGVzKCkpOwogICAgIH0KIAogICAgIGlmIChlcnJvck1lc3NhZ2UgJiYgaGFuZGxlcikgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5k
ZXggYTgwNjU1YmZlZGZjLi5jZGJkMzQ1YTJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9y
RXh0ZW5zaW9uKGNvbnN0IEluCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChWZWN0
b3IgeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkg
fSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3IgeyBkYXRhUmVmZXJlbmNlLmRh
dGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdAogICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0
YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRl
cyh7IGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUoKSB9KS5wdHIoKSB9
IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmNwcAppbmRleCA1YmJlNzM5NjIwNTIuLjM4ZGVlYWEyZmIyZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtMzQwLDE1ICszNDAsMTUgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFn
ZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYW5k
bGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgewotICAgICAgICBoYW5kbGVyLT5j
bGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFu
ZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBk
YXRhUmVmZXJlbmNlIH0pKTsKKyAgICAgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3Nh
Z2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVm
ZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHkoeyB9LCB7IH0pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBs
eSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pLCBbcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7CisgICAgaGFuZGxlci0+Y2xpZW50
KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9E
YXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFSZWZlcmVuY2UgfSksIFtyZXBseSA9IFdURk1vdmUo
cmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5pc051bGwo
KSkgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAgICAgICAgIHJlcGx5KHsgdmFs
dWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRlcygpIH0sIHsgfSk7CisgICAg
ICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkud2lyZUJ5dGVz
KCkgfSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4NTUyODQ1NzBlZWIuLjI5YjYyMDdm
Y2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00Mzk5
LDcgKzQzOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAogICAgICAgICAgICAgcmV0dXJu
IGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsKICAg
ICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuZW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBjYWxs
YmFja0Z1bmN0aW9uKHsgbnVsbHB0ciB9KTsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbih7IEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChWZWN0b3IoZGF0YVJlZmVyZW5jZSkpLnB0
cigpIH0pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoVmVjdG9yKGRhdGFSZWZlcmVuY2UpKS5wdHIoKSB9
KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwCmluZGV4IGU4NDA5OWEzZGEzOC4uYjljNzk2YWUyMTk0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0
ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5dGVzKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxs
b3B0KTsKICAgICB9KTsKIH0KIApAQCAtNDM4LDcgKzQzOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNvbnN0
IEluc3BlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0
VmFsdWUtPndpcmVCeXRlcygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNGJhOTkwMTk0MDVi
Li4zMzBkYTZhZjdlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0y
NzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZh
bHVlLnB0cigpLCB7IH0pOwogICAgICAgICB9OwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBh
Z2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlm
aWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VS
ZXBseUhhbmRsZXIpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RN
ZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8o
KSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPndpcmVCeXRlcygpKSks
IFdURk1vdmUobWVzc2FnZVJlcGx5SGFuZGxlciksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigp
KTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRy
b2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKaW5kZXggYmNkOTg3NDlj
MmNkLi40MmI0ZTAwZjBiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAK
QEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhp
c3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogICAgIGZyYW1lU3RhdGUuc2V0RG9jdW1lbnRTdGF0
ZShoaXN0b3J5SXRlbS5kb2N1bWVudFN0YXRlKCkpOwogICAgIGlmIChSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCA9IGhpc3RvcnlJdGVtLnN0YXRlT2JqZWN0KCkpCi0g
ICAgICAgIGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhID0gc3RhdGVPYmplY3QtPmRhdGEoKTsK
KyAgICAgICAgZnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgPSBzdGF0ZU9iamVjdC0+d2lyZUJ5
dGVzKCk7CiAKICAgICBmcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIgPSBoaXN0b3J5
SXRlbS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCk7CiAgICAgZnJhbWVTdGF0ZS5pdGVtU2VxdWVu
Y2VOdW1iZXIgPSBoaXN0b3J5SXRlbS5pdGVtU2VxdWVuY2VOdW1iZXIoKTsKQEAgLTE1MSw3ICsx
NTEsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJ
dGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogCiAgICAgaWYgKGZyYW1lU3RhdGUuc3Rh
dGVPYmplY3REYXRhKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiBzdGF0ZU9iamVjdERhdGEg
PSBmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YS52YWx1ZSgpOwotICAgICAgICBoaXN0b3J5SXRl
bS5zZXRTdGF0ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoc3Rh
dGVPYmplY3REYXRhKSkpOworICAgICAgICBoaXN0b3J5SXRlbS5zZXRTdGF0ZU9iamVjdChTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RGTW92ZShzdGF0ZU9iamVj
dERhdGEpKSk7CiAgICAgfQogCiAgICAgaGlzdG9yeUl0ZW0uc2V0RG9jdW1lbnRTZXF1ZW5jZU51
bWJlcihmcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBmMzYzNmNhYmQ2NWQuLjk2N2Nl
YjhmY2JhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKQEAgLTM3NjUsNyArMzc2NSw3IEBAIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJG
cmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKICAgICAg
ICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAgICAgICAgIGlmIChzZXJpYWxp
emVkUmVzdWx0VmFsdWUpCi0gICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCk7CisgICAgICAgICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXpl
ZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKTsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2Vw
dGlvbkRldGFpbHM+IGRldGFpbHM7CiAgICAgICAgIGlmICghcmVzdWx0KQo=
</data>
<flag name="commit-queue"
          id="480645"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453319</attachid>
            <date>2022-02-26 20:29:33 -0800</date>
            <delta_ts>2022-02-26 20:39:08 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>37755</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAppbmRleCBh
MzYxMTEzZGRjNTIuLjcyODI1NTQwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJREJWYWx1ZTo6SURCVmFs
dWUoKQogfQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZl
Y3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgSURCVmFs
dWU6OklEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIH0KIAogSURC
VmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JGaWxlUGF0aHMpCi0gICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0
b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKKyAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y29weVZlY3RvcihzY3JpcHRWYWx1ZS53aXJlQnl0ZXMoKSkpCiAgICAgLCBtX2Jsb2JVUkxz
KGJsb2JVUkxzKQogICAgICwgbV9ibG9iRmlsZVBhdGhzKGJsb2JGaWxlUGF0aHMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAppbmRleCBhNWIyOGM4NTNmYmIuLjQ0YTU2NThmNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC05MCwxMiAr
OTAsOSBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CiAgICAgICAgIGF1dG8qIGpz
T3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNP
cHRpb25zLCB7IH0sIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOwotICAgICAgICBpZiAoc2VyaWFsaXplZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFz
ZXJpYWxpemVkT3B0aW9ucykKICAgICAgICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VyaWFsaXplZE9wdGlvbnMgPSBzZXJpYWxpemVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25zLnBhcmFt
ZXRlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNDI1MmE1NjQ3NjNiLi4wNjdlYTA3ODA2ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtNDEwMiwxMiArNDEwMiw2IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKLVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikK
LSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCi17Ci0gICAgbV9tZW1vcnlDb3N0ID0gY29t
cHV0ZU1lbW9yeUNvc3QoKTsKLX0KLQogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQogI2lmIEVO
QUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRS
VENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKQEAgLTQyMjAsMzUgKzQy
MTQsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICByZXR1cm4gY29udGVudHM7CiB9
CiAKLXN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIGNvZGUpCitzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9u
RmFpbGVkKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uKQogeworICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICBy
ZXR1cm47CisKICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBzd2l0Y2ggKGNvZGUp
IHsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0
ZWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0
YWNrT3ZlcmZsb3dFcnJvcjoKKyAgICBzd2l0Y2ggKGV4Y2VwdGlvbi0+Y29kZSgpKSB7CisgICAg
Y2FzZSBFeGNlcHRpb25Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjoKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IGRhdGEuIl9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6RGF0YUNsb25lRXJyb3I6CisgICAgY2FzZSBFeGNlcHRpb25Db2RlOjpEYXRhQ2xvbmVF
cnJvcjoKICAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6VW5zcGVjaWZpZWRFcnJvcjoKKyAgICBjYXNlIEV4Y2VwdGlvbkNvZGU6OlR5cGVFcnJvcjoK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIl9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6SW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogfQogCi1zdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWls
dXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+IGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25SZXN1bHQoU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSkKIHsKLSAgICBBU1NFUlQoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKLSAgICAKICAgICBzd2l0Y2ggKGNvZGUpIHsK
ICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTdGFja092ZXJmbG93RXJyb3IgfTsKQEAgLTQyNTgs
NjAgKzQyNDgsMjYgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9u
RmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlVuc3BlY2lmaWVkRXJyb3I6Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IgfTsKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21w
bGV0ZWQ6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJv
cjoKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhj
ZXB0aW9ucykKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucywgU2VyaWFs
aXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNvbnRleHQpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4gYmxvYkhhbmRsZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwotICAgIFZlY3Rv
cjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKLSNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2Fu
dmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRD
KQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBkdW1teVJUQ0RhdGFDaGFubmVsczsK
LSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlC
dWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBXYXNtTW9kdWxlQXJyYXkgZHVt
bXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1teU1lbW9yeUhhbmRsZXM7
Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJz
OwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCBk
dW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJT
KQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAotI2VuZGlmCi0jaWYgRU5BQkxFKFdF
Ql9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5uZWxzLAotI2VuZGlmCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVsZXMsCi0gICAgICAgIGR1bW15TWVtb3J5
SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBTZXJpYWxpemF0
aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKKyAgICBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlQb3J0czsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShn
bG9iYWxPYmplY3QsIHZhbHVlLCB7IH0sIGR1bW15UG9ydHMsIHNlcmlhbGl6YXRpb25Db250ZXh0
KTsKIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1
bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFsaXphdGlvbiBpcyBvbmx5
IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNtOjpNZW1vcnkgc2VyaWFs
aXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSNl
bmRpZgotCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
OjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAgIGlmIChjb2RlICE9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlh
bGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQorICAgICAgICAgICAgbWF5YmVUaHJvd0V4Y2Vw
dGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChnbG9iYWxPYmplY3QsIHJlc3VsdC5leGNlcHRpb24o
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JIYW5kbGVz
LCBudWxscHRyLCBudWxscHRyLCB7IH0pKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVj
dG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMpCkBAIC00NDQzLDggKzQzOTks
OCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogI2VuZGlmCiAgICAgICAgIGJsb2JIYW5kbGVz
LCBidWZmZXIsIGNvbnRleHQsICpzaGFyZWRCdWZmZXJzKTsKIAotICAgIGlmIChjb2RlICE9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCi0gICAgICAgIHJl
dHVybiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShjb2RlKTsKKyAgICBpZiAoYXV0
byBleGNlcHRpb24gPSBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uUmVzdWx0KGNvZGUpKQorICAg
ICAgICByZXR1cm4gV1RGTW92ZSgqZXhjZXB0aW9uKTsKIAogICAgIGF1dG8gYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5ID0gdHJhbnNmZXJBcnJheUJ1ZmZlcnModm0sIGFycmF5QnVmZmVycyk7CiAg
ICAgaWYgKGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5oYXNFeGNlcHRpb24oKSkKQEAgLTQ1MDQs
NyArNDQ2MCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgcmV0dXJuIHNlcmlhbGl6
ZWRWYWx1ZTsKIH0KIAotU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKQor
U3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJl
dHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVTdHJpbmcobV9kYXRhKTsKIH0KQEAg
LTQ1MzcsNyArNDQ5Myw3IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICNlbmRpZgogICAgICAg
ICApOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6
VGhyb3dpbmcpCi0gICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWls
ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIG1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvblJlc3VsdChyZXN1bHQuc2Vjb25kKSk7CiAgICAgcmV0dXJu
IHJlc3VsdC5maXJzdCA/IHJlc3VsdC5maXJzdCA6IGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGVm
MzdmMWQwY2E0Ni4uOTNlMjMzNDEzYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNzEsMTUgKzcxLDEwIEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURf
V0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZyk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IGNy
ZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nLCBTZXJpYWxpemF0
aW9uQ29udGV4dCA9IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0KTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoU3Ry
aW5nVmlldyk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZl
Y3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlcikpKTsKLSAgICB9CiAKICAg
ICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVsbFZhbHVlKCk7CiAKQEAgLTg5
LDEzICs4NCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZl
cnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0cmluZygpOworICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwogCiAgICAgLy8gQVBJIGltcGxlbWVudGF0aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0
IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBBcnJheUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNv
bnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAgVmVjdG9yPFN0
cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKQEAgLTEwNiw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShkYXRhKSkpOwogICAgIH0KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHRvV2lyZUJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3aXJlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGVjb2Rl
KERlY29kZXImKTsKQEAgLTExNiwxMCArMTEwLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VY
UE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgorICAgIFdF
QkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
Jiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiA9IG51bGxwdHIK
ICNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERl
dGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiA9IHsgfQogI2VuZGlmCiAgICAgICAgICk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCBlNzYyNTNjZDY0OGIu
LjJiNmVhYjNhNWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcApA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdl
KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkKIAogICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBb
dGhpcywgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghbV9pc0Nsb3NlZCAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICBk
aXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7
CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
bWVzc2FnZSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmlu
ZGV4IDI4OGY0NjI4NjJhOS4uNmEzMjc5YjUyMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcApAQCAtNTIsOCArNTIsOCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJcwogewogfQog
Ci1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiBwb3J0cykKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1
YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNz
YWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBw
b3J0cykKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAg
ICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCkBAIC02MiwzNyArNjIsMTQgQEAgaW5saW5l
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFMKIHsKIH0KIAotaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpCi0g
ICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAgICwg
bV9kYXRhKFdURk1vdmUoZGF0YSkpCi0gICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgLCBtX2xh
c3RFdmVudElkKGxhc3RFdmVudElkKQotewotfQotCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYg
c291cmNlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3Zl
KGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9y
dHMpKSk7Ci19Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIFdURk1vdmUoZGF0YSksIG9yaWdp
biwgbGFzdEV2ZW50SWQpKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luKSk7Ci19Ci0KLVJl
ZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92ZShkYXRh
KSwgb3JpZ2luKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUs
IFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RG
TW92ZShwb3J0cykpKTsKIH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1l
c3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiBwb3J0cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92
ZShkYXRhKSwgb3JpZ2luKSk7CisgICAgcmV0dXJuIGNyZWF0ZShldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50LCBXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJj
ZSksIFdURk1vdmUocG9ydHMpKTsKIH0KIAogUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50
OjpjcmVhdGVGb3JCaW5kaW5ncygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjUx
MDY5OTQyNDAwLi40NjY4ODA3YmNlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAg
LTQ4LDExICs0OCwxMCBAQCB1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBzdGQ6OnZhcmlhbnQ8
UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0PgogY2xhc3MgTWVzc2FnZUV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
c3NhZ2VFdmVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7Ci0gICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0geyB9KTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9i
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VF
dmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biA9IHsgfSk7CisgICAgc3RydWN0IEpTVmFsdWVUYWcgeyB9OworICAgIHVzaW5nIERhdGFUeXBl
ID0gc3RkOjp2YXJpYW50PEpTVmFsdWVUYWcsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBT
dHJpbmcsIFJlZjxCbG9iPiwgUmVmPEFycmF5QnVmZmVyPj47CisgICAgc3RhdGljIFJlZjxNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VF
dmVudD4gY3JlYXRlKERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7
IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpOwog
CiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewpAQCAtNzMsOCArNzIsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzOyB9CiAKLSAgICBzdHJ1Y3Qg
SlNWYWx1ZVRhZyB7IH07Ci0gICAgdXNpbmcgRGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8SlNWYWx1
ZVRhZywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+LCBSZWY8
QXJyYXlCdWZmZXI+PjsKICAgICBjb25zdCBEYXRhVHlwZSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYganNEYXRhKCkgeyByZXR1
cm4gbV9qc0RhdGE7IH0KQEAgLTg2LDggKzgzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBN
ZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
SW5pdCYmLCBJc1RydXN0ZWQpOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKLSAgICBNZXNzYWdlRXZlbnQoRGF0YVR5
cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CisgICAgTWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYg
PSB7IH0pOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggMTc3ZjhlNDNkNDU4Li45MjUx
ZTg0NjZkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMjg0LDcgKzI4NCw3
IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAg
ICAgICAgIC8vIFBlciBzcGVjaWZpY2F0aW9uLCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBoYXMg
YSB0YXNrIHNvdXJjZSBjYWxsZWQgdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZS4KLSAgICAgICAgICAg
IHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2Fn
ZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNz
YWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHsgfSwg
V1RGTW92ZShwb3J0cykpKTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCA2MGM3NTlkYzhhZjMuLjg2NDM1ZTFjZjgxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtOTYzLDcgKzk2Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHVzZXJHZXN0dXJlSW5kaWNhdG9yKHVzZXJH
ZXN0dXJlVG9Gb3J3YXJkKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFtZSwgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKIAotICAg
ICAgICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKmRvY3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSks
IG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgaW5j
dW1iZW50V2luZG93UHJveHkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2ZW50U291cmNl
KFdURk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpKSkgOiBzdGQ6Om51bGxvcHQpOworICAgICAg
ICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVh
c2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBpbmN1bWJlbnRXaW5kb3dQcm94eSA/IHN0
ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShpbmN1bWJlbnRXaW5k
b3dQcm94eSkpKSA6IHN0ZDo6bnVsbG9wdCwgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmRv
Y3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSkpOwogICAgICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNzYWdlSWRlbnRpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDhjYzhkZjFhYzI2Yy4uNzA3M2VmNjE3
M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDMxLDE0ICs0MzEsMTMg
QEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKQogCiAgICAgYXV0byYg
bmFtZSA9IG1fZXZlbnROYW1lLmlzRW1wdHkoKSA/IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQg
OiBtX2V2ZW50TmFtZTsKIAotICAgIC8vIE9taXQgdGhlIHRyYWlsaW5nICJcbiIgY2hhcmFjdGVy
LgogICAgIEFTU0VSVCghbV9kYXRhLmlzRW1wdHkoKSk7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IG1f
ZGF0YS5zaXplKCkgLSAxOwotICAgIGF1dG8gZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKHsgbV9kYXRhLmRhdGEoKSwgc2l6ZSB9KTsKLSAgICBSRUxFQVNFX0FTU0VSVChkYXRh
KTsKKworICAgIC8vIE9taXQgdGhlIHRyYWlsaW5nICJcbiIgY2hhcmFjdGVyLgorICAgIFN0cmlu
ZyBkYXRhKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5zaXplKCkgLSAxKTsKICAgICBtX2RhdGEgPSB7
IH07CiAKLSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG5hbWUsIGRhdGEu
cmVsZWFzZU5vbk51bGwoKSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZlbnRJZCkpOwor
ICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobmFtZSwgV1RGTW92ZShkYXRh
KSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZlbnRJZCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCBmMWRhMmM4NWEwMDguLmQ3
OGE3YzRmZWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKIAogICAgIENoZWNrZWQ8dWludDY0X3Q+IHBheWxvYWRT
aXplID0gdGl0bGVTaXplOwogICAgIHBheWxvYWRTaXplICs9IHVybFNpemU7Ci0gICAgcGF5bG9h
ZFNpemUgKz0gZGF0YSA/IGRhdGEtPmRhdGEoKS5zaXplKCkgOiAwOworICAgIHBheWxvYWRTaXpl
ICs9IGRhdGEgPyBkYXRhLT53aXJlQnl0ZXMoKS5zaXplKCkgOiAwOwogCiAgICAgQ2hlY2tlZDx1
aW50NjRfdD4gbmV3VG90YWxVc2FnZSA9IG1haW5IaXN0b3J5Lm1fdG90YWxTdGF0ZU9iamVjdFVz
YWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZmOTc0NGU0
Li5kMjJiOWUzZjI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM4
NDEsMTQgKzM4NDEsMTQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmdldEN1cnJl
bnRDdXJzb3JJbmZvKCkKIAogUmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6OnNlcmlhbGl6ZU9i
amVjdChjb25zdCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpIGNvbnN0CiB7
Ci0gICAgYXV0byYgYnl0ZXMgPSB2YWx1ZS0+ZGF0YSgpOworICAgIGF1dG8mIGJ5dGVzID0gdmFs
dWUtPndpcmVCeXRlcygpOwogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRh
dGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50
ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9OwotICAgIHJldHVybiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnl0ZXMpKTsKKyAgICByZXR1cm4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYnl0ZXMpKTsKIH0K
IAogYm9vbCBJbnRlcm5hbHM6OmlzRnJvbUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUgdmFsdWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCmluZGV4IDk5ZDFiYzAyNmNhMS4uNmFkMjE3NzYzNTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUo
bWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OlBvc3RlZE1l
c3NhZ2VRdWV1ZSwgTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OlBvc3RlZE1l
c3NhZ2VRdWV1ZSwgTWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VO
b25OdWxsKCksIHsgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocG9ydHMpKSk7CiAgICAg
fSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSY+KHNjcmlwdENvbnRleHQpOwogICAgICAgICBhdXRv
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92
ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2Uu
cmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgeyB9
LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocG9ydHMpKSk7CiAgICAgICAgIGNvbnRleHQudGhyZWFk
KCkud29ya2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29u
dGV4dC5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
aW5kZXggZjIxNGFjNmEwMDc2Li40MWYzNGM2MWQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAg
LTQzOCw3ICs0MzgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNzYWdl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogICAgIGF1dG8mIGNvbnRl
eHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBz
b3VyY2UgPSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0
ZShjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZURhdGEpKSB9OwogCi0gICAgYXV0byBtZXNzYWdlRXZl
bnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250
ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2Uu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSk7Cisg
ICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSwg
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5z
ZmVycmVkUG9ydHMpKSk7CiAgICAgaWYgKG1fc2hvdWxkRGVmZXJNZXNzYWdlRXZlbnRzKQogICAg
ICAgICBtX2RlZmVycmVkTWVzc2FnZUV2ZW50cy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlRXZlbnQp
KTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxMmI4ZTFhYzhkMDEuLjlmZThk
YjM4ZWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjUsMTMgKzY1LDExIEBAIHZvaWQgU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVk
UG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgU0NPUEVfUkVMRUFTRV9M
T0coInBvc3RDb25uZWN0RXZlbnQ6Iik7Ci0gICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpOwotICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCp0aGlzLCB7IFdURk1vdmUo
dHJhbnNmZXJyZWRQb3J0KSB9KTsKICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwogICAg
IGF1dG8gcG9ydCA9IHBvcnRzWzBdOwogICAgIEFTU0VSVChwb3J0KTsKLSAgICBhdXRvIGV2ZW50
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHZhbHVlLnJlbGVhc2VOb25O
dWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKKyAgICBhdXRvIGV2ZW50ID0gTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQsIFdU
Rk1vdmUocG9ydHMpKTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0
RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAKICAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCA2ZmU4NTc2YWMzOGUuLjRkZGM4MGYxNGZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNDks
OSArNDksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkVmFsdWUucmVsZWFzZU5vbk51bGwoKSkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9y
PHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGJ1ZmZlcikp
KSk7CiAgICAgfQogICAgIAogICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tTlNP
YmplY3QoaWQpOwogI2VuZGlmCiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KKyAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLT53aXJlQnl0ZXMoKTsgfQogCiAgICAgV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlJiBpbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5jcHAKaW5kZXggYTA4ZGQxNWQzNTE3Li5iZWU5MzJkMDU1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUGFnZVN0YXRlOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGl0bGUg
PDwgbWFpbkZyYW1lU3RhdGUgPDwgISFzZXNzaW9uU3RhdGVPYmplY3Q7CiAKICAgICBpZiAoc2Vz
c2lvblN0YXRlT2JqZWN0KQotICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZU9iamVjdC0+
dG9XaXJlQnl0ZXMoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uU3RhdGVPYmplY3QtPndp
cmVCeXRlcygpOwogCiAgICAgZW5jb2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IGY4YjdlZGNmNDQ5MS4uZTE5NDA3
MzcyODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAg
Ym9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVu
Y2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCh7IGRhdGFSZWZlcmVuY2UgfSk7CisgICAgICAg
IHJlc3VsdCA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVz
KHsgZGF0YVJlZmVyZW5jZSB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1NDU5ZDJlM2Jm
ODUuLjMwMTQzMjA4Mjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTI4LDcgKzExMjgsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBhcmd1bWVudHNN
YXAtPnNldChrZXksIHNlcmlhbGl6ZWRWYWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRv
V2lyZUJ5dGVzKCkpOworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksIHNlcmlhbGl6ZWRW
YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLndpcmVCeXRlcygpKTsKICAgICB9CiAKICAg
ICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGE4MDY1NWJmZWRmYy4uY2RiZDM0
NWEyYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgogICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlQnl0ZXMoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpIH0pLnB0cigpIH0gfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmFkb3B0KHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0
cigpIH0gfSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlLmRhdGEo
KSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWJi
ZTczOTYyMDUyLi4zOGRlZWFhMmZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKQEAgLTM0MCwxNSArMzQwLDE1IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaGFuZGxlci0+Y2xpZW50KCkuc3VwcG9ydHNB
c3luY1JlcGx5KCkpIHsKLSAgICAgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2Uo
KnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KSk7CisgICAg
ICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1l
SW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHsgZGF0YVJlZmVyZW5jZSB9KSk7CiAgICAgICAgIHJl
cGx5KHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZXItPmNs
aWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoKnBhZ2UsIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpIG11dGFibGUgeworICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFz
eW5jUmVwbHkoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCks
ICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBk
YXRhUmVmZXJlbmNlIH0pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VCh2YWx1ZSk7Ci0gICAgICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkudG9XaXJlQnl0ZXMoKSB9LCB7IH0pOworICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLndpcmVCeXRlcygpIH0sIHsgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggODU1Mjg0NTcwZWViLi4yOWI2MjA3ZmNlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDM5OSw3ICs0Mzk5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHAKICAgICAgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uKG1ha2VV
bmV4cGVjdGVkKFdURk1vdmUoKmRldGFpbHMpKSk7CiAgICAgICAgIGlmIChkYXRhUmVmZXJlbmNl
LmVtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbih7IG51bGxwdHIg
fSk7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoVmVjdG9yKGRhdGFSZWZlcmVuY2UpKS5wdHIoKSB9KTsKKyAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbih7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5
dGVzKFZlY3RvcihkYXRhUmVmZXJlbmNlKSkucHRyKCkgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCBlODQwOTlhM2Rh
MzguLmI5Yzc5NmFlMjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPndp
cmVCeXRlcygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKQEAg
LTQzOCw3ICs0MzgsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCmluZGV4IDRiYTk5MDE5NDA1Yi4uMzMwZGE2YWY3ZWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2YWx1ZS5wdHIoKSwgeyB9KTsKICAgICAg
ICAgfTsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
KHZhbHVlLT5kYXRhKCkpKSwgV1RGTW92ZShtZXNzYWdlUmVwbHlIYW5kbGVyKSwgbV9jb250cm9s
bGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdl
UHJveHlJZGVudGlmaWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpE
YXRhUmVmZXJlbmNlKHZhbHVlLT53aXJlQnl0ZXMoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhh
bmRsZXIpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGJjZDk4NzQ5YzJjZC4uNDJiNGUwMGYwYmY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRp
YyBGcmFtZVN0YXRlIHRvRnJhbWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0p
CiAKICAgICBmcmFtZVN0YXRlLnNldERvY3VtZW50U3RhdGUoaGlzdG9yeUl0ZW0uZG9jdW1lbnRT
dGF0ZSgpKTsKICAgICBpZiAoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmpl
Y3QgPSBoaXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpKQotICAgICAgICBmcmFtZVN0YXRlLnN0YXRl
T2JqZWN0RGF0YSA9IHN0YXRlT2JqZWN0LT5kYXRhKCk7CisgICAgICAgIGZyYW1lU3RhdGUuc3Rh
dGVPYmplY3REYXRhID0gc3RhdGVPYmplY3QtPndpcmVCeXRlcygpOwogCiAgICAgZnJhbWVTdGF0
ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyID0gaGlzdG9yeUl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51
bWJlcigpOwogICAgIGZyYW1lU3RhdGUuaXRlbVNlcXVlbmNlTnVtYmVyID0gaGlzdG9yeUl0ZW0u
aXRlbVNlcXVlbmNlTnVtYmVyKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYg
ZnJhbWVTdGEKIAogICAgIGlmIChmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSkgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gc3RhdGVPYmplY3REYXRhID0gZnJhbWVTdGF0ZS5zdGF0ZU9iamVj
dERhdGEudmFsdWUoKTsKLSAgICAgICAgaGlzdG9yeUl0ZW0uc2V0U3RhdGVPYmplY3QoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKHN0YXRlT2JqZWN0RGF0YSkpKTsKKyAgICAg
ICAgaGlzdG9yeUl0ZW0uc2V0U3RhdGVPYmplY3QoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoc3RhdGVPYmplY3REYXRhKSkpOwogICAgIH0KIAogICAg
IGhpc3RvcnlJdGVtLnNldERvY3VtZW50U2VxdWVuY2VOdW1iZXIoZnJhbWVTdGF0ZS5kb2N1bWVu
dFNlcXVlbmNlTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZjM2MzZjYWJkNjVkLi45NjdjZWI4ZmNiYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzY1LDcgKzM3NjUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogCiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAgICAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
ICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5dGVz
KCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwog
ICAgICAgICBpZiAoIXJlc3VsdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453320</attachid>
            <date>2022-02-26 20:39:08 -0800</date>
            <delta_ts>2022-02-26 21:55:46 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>39221</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAppbmRleCBh
MzYxMTEzZGRjNTIuLjcyODI1NTQwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJREJWYWx1ZTo6SURCVmFs
dWUoKQogfQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZl
Y3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgSURCVmFs
dWU6OklEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIH0KIAogSURC
VmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JGaWxlUGF0aHMpCi0gICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0
b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKKyAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y29weVZlY3RvcihzY3JpcHRWYWx1ZS53aXJlQnl0ZXMoKSkpCiAgICAgLCBtX2Jsb2JVUkxz
KGJsb2JVUkxzKQogICAgICwgbV9ibG9iRmlsZVBhdGhzKGJsb2JGaWxlUGF0aHMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAppbmRleCBhNWIyOGM4NTNmYmIuLjQ0YTU2NThmNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC05MCwxMiAr
OTAsOSBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CiAgICAgICAgIGF1dG8qIGpz
T3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNP
cHRpb25zLCB7IH0sIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOwotICAgICAgICBpZiAoc2VyaWFsaXplZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFz
ZXJpYWxpemVkT3B0aW9ucykKICAgICAgICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VyaWFsaXplZE9wdGlvbnMgPSBzZXJpYWxpemVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25zLnBhcmFt
ZXRlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNDI1MmE1NjQ3NjNiLi45Y2Y5NTE0NWM0NTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtMjE0OSwyOSArMjE0OSw2IEBAIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIENsb25l
U2VyaWFsaXplcjo6c2VyaWFsaXplKEpTVmFsdWUgaW4pCiAKIGNsYXNzIENsb25lRGVzZXJpYWxp
emVyIDogQ2xvbmVCYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgU3RyaW5nIGRlc2VyaWFsaXpl
U3RyaW5nKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyKQotICAgIHsKLSAgICAgICAgaWYg
KGJ1ZmZlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAg
IGNvbnN0IHVpbnQ4X3QqIHB0ciA9IGJ1ZmZlci5iZWdpbigpOwotICAgICAgICBjb25zdCB1aW50
OF90KiBlbmQgPSBidWZmZXIuZW5kKCk7Ci0gICAgICAgIHVpbnQzMl90IHZlcnNpb247Ci0gICAg
ICAgIGlmICghcmVhZExpdHRsZUVuZGlhbihwdHIsIGVuZCwgdmVyc2lvbikgfHwgdmVyc2lvbiA+
IEN1cnJlbnRWZXJzaW9uKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB1
aW50OF90IHRhZzsKLSAgICAgICAgaWYgKCFyZWFkTGl0dGxlRW5kaWFuKHB0ciwgZW5kLCB0YWcp
IHx8IHRhZyAhPSBTdHJpbmdUYWcpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
ICAgIHVpbnQzMl90IGxlbmd0aDsKLSAgICAgICAgaWYgKCFyZWFkTGl0dGxlRW5kaWFuKHB0ciwg
ZW5kLCBsZW5ndGgpKQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICBib29s
IGlzOEJpdCA9IGxlbmd0aCAmIFN0cmluZ0RhdGFJczhCaXRGbGFnOwotICAgICAgICBsZW5ndGgg
Jj0gflN0cmluZ0RhdGFJczhCaXRGbGFnOwotICAgICAgICBTdHJpbmcgc3RyOwotICAgICAgICBp
ZiAoIXJlYWRTdHJpbmcocHRyLCBlbmQsIHN0ciwgbGVuZ3RoLCBpczhCaXQpKQotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1cm4gc3RyOwotICAgIH0KLQogICAgIHN0
YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8c3RkOjpvcHRp
b25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMK
QEAgLTQxMDIsMTIgKzQwNzksNiBAQCBlcnJvcjoKIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp+
U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPSBkZWZhdWx0OwogCi1TZXJpYWxpemVkU2NyaXB0VmFs
dWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCi0gICAg
OiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQotewotICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVN
ZW1vcnlDb3N0KCk7Ci19Ci0KIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4mJiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkKICNpZiBFTkFCTEUo
V0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0
YUNoYW5uZWw+PiYmIGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzCkBAIC00MjIwLDM1ICs0MTkxLDMx
IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5Pj4gdHJhbnNmZXJBcnJheUJ1ZmZlCiAgICAgcmV0dXJuIGNvbnRlbnRzOwogfQogCi1z
dGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9uRmFpbGVkKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBj
b2RlKQorc3RhdGljIHZvaWQgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZhaWxl
ZChKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgc3RkOjpvcHRpb25hbDxFeGNl
cHRpb24+IGV4Y2VwdGlvbikKIHsKKyAgICBpZiAoIWV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJu
OworCiAgICAgYXV0byYgdm0gPSBsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgc3dpdGNoIChjb2RlKSB7Ci0g
ICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkOgot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092
ZXJmbG93RXJyb3I6CisgICAgc3dpdGNoIChleGNlcHRpb24tPmNvZGUoKSkgeworICAgIGNhc2Ug
RXhjZXB0aW9uQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAgICB0aHJvd0V4Y2VwdGlv
bigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcigm
bGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6
YXRpb25SZXR1cm5Db2RlOjpWYWxpZGF0aW9uRXJyb3I6Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuYWJsZSB0byBkZXNlcmlhbGl6ZSBkYXRh
LiJfcyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OkRhdGFDbG9uZUVycm9yOgorICAgIGNhc2UgRXhjZXB0aW9uQ29kZTo6RGF0YUNsb25lRXJyb3I6
CiAgICAgICAgIHRocm93RGF0YUNsb25lRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUp
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpFeGlz
dGluZ0V4Y2VwdGlvbkVycm9yOgotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVu
c3BlY2lmaWVkRXJyb3I6CisgICAgY2FzZSBFeGNlcHRpb25Db2RlOjpUeXBlRXJyb3I6CisgICAg
ICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuYWJsZSB0
byBkZXNlcmlhbGl6ZSBkYXRhLiJfcyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OkludGVycnVw
dGVkRXhlY3V0aW9uRXJyb3I6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0K
IH0KIAotc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShT
ZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8RXhjZXB0
aW9uPiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uUmVzdWx0KFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIGNvZGUpCiB7Ci0gICAgQVNTRVJUKGNvZGUgIT0gU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCk7Ci0gICAgCiAgICAgc3dpdGNoIChjb2RlKSB7CiAgICAg
Y2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3RhY2tPdmVyZmxvd0Vycm9yOgogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgU3RhY2tPdmVyZmxvd0Vycm9yIH07CkBAIC00MjU4LDYwICs0
MjI1LDI2IEBAIHN0YXRpYyBFeGNlcHRpb24gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1
cmUoU2VyaWFsaXphdGlvblJldHVybkNvZGUgY29kZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IERhdGFDbG9uZUVycm9yIH07CiAgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6
RXhpc3RpbmdFeGNlcHRpb25FcnJvcjoKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEV4aXN0
aW5nRXhjZXB0aW9uRXJyb3IgfTsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpV
bnNwZWNpZmllZEVycm9yOgotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07
CiAgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVk
OgorICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlVuc3BlY2lmaWVkRXJyb3I6CiAg
ICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6SW50ZXJydXB0ZWRFeGVjdXRpb25FcnJv
cjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IgfTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKyAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogfQogCi1SZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSB2
YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMsIFNlcmlhbGl6YXRp
b25Db250ZXh0IHNlcmlhbGl6YXRpb25Db250ZXh0KQogewotICAgIFZlY3Rvcjx1aW50OF90PiBi
dWZmZXI7Ci0gICAgVmVjdG9yPEJsb2JVUkxIYW5kbGU+IGJsb2JIYW5kbGVzOwotICAgIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBkdW1teU1lc3NhZ2VQb3J0czsKLSAgICBWZWN0b3I8UmVm
UHRyPEltYWdlQml0bWFwPj4gZHVtbXlJbWFnZUJpdG1hcHM7Ci0jaWYgRU5BQkxFKE9GRlNDUkVF
Tl9DQU5WQVNfSU5fV09SS0VSUykKLSAgICBWZWN0b3I8UmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4+
IGR1bW15T2Zmc2NyZWVuQ2FudmFzZXM7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX1JUQykKLSAg
ICBWZWN0b3I8UmVmPFJUQ0RhdGFDaGFubmVsPj4gZHVtbXlSVENEYXRhQ2hhbm5lbHM7Ci0jZW5k
aWYKLSAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+PiBkdW1teUFycmF5QnVmZmVy
czsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgV2FzbU1vZHVsZUFycmF5IGR1bW15TW9k
dWxlczsKLSAgICBXYXNtTWVtb3J5SGFuZGxlQXJyYXkgZHVtbXlNZW1vcnlIYW5kbGVzOwotI2Vu
ZGlmCi0gICAgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5IGR1bW15U2hhcmVkQnVmZmVyczsKLSAg
ICBhdXRvIGNvZGUgPSBDbG9uZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9i
amVjdCwgdmFsdWUsIGR1bW15TWVzc2FnZVBvcnRzLCBkdW1teUFycmF5QnVmZmVycywgZHVtbXlJ
bWFnZUJpdG1hcHMsCi0jaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKLSAg
ICAgICAgZHVtbXlPZmZzY3JlZW5DYW52YXNlcywKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRD
KQotICAgICAgICBkdW1teVJUQ0RhdGFDaGFubmVscywKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAgICAgZHVtbXlNb2R1bGVzLAotICAgICAgICBkdW1teU1lbW9yeUhhbmRs
ZXMsCi0jZW5kaWYKLSAgICAgICAgYmxvYkhhbmRsZXMsIGJ1ZmZlciwgU2VyaWFsaXphdGlvbkNv
bnRleHQ6OkRlZmF1bHQsIGR1bW15U2hhcmVkQnVmZmVycyk7Ci0KLSNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkdW1teU1vZHVsZXMuaXNFbXB0eSgpLCAi
V2FzbTo6TW9kdWxlIHNlcmlhbGl6YXRpb24gaXMgb25seSBhbGxvd2VkIGluIHRoZSBwb3N0TWVz
c2FnZSBjb250ZXh0Iik7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkdW1teU1lbW9yeUhhbmRs
ZXMuaXNFbXB0eSgpLCAiV2FzbTo6TWVtb3J5IHNlcmlhbGl6YXRpb24gaXMgb25seSBhbGxvd2Vk
IGluIHRoZSBwb3N0TWVzc2FnZSBjb250ZXh0Iik7Ci0jZW5kaWYKLQotICAgIGlmICh0aHJvd0V4
Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCi0gICAgICAgIG1h
eWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVj
dCwgY29kZSk7CisgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15UG9ydHM7Cisg
ICAgYXV0byByZXN1bHQgPSBjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgeyB9LCBkdW1teVBv
cnRzLCBzZXJpYWxpemF0aW9uQ29udGV4dCk7CiAKLSAgICBpZiAoY29kZSAhPSBTZXJpYWxpemF0
aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQorICAgIGlmIChyZXN1bHQuaGFz
RXhjZXB0aW9uKCkpIHsKKyAgICAgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKKyAgICAgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25J
ZlNlcmlhbGl6YXRpb25GYWlsZWQoZ2xvYmFsT2JqZWN0LCByZXN1bHQuZXhjZXB0aW9uKCkpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVs
bHB0ciwgbnVsbHB0ciwgeyB9KSk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKTsKIH0KIAogc3RhdGljIGJvb2wgY29udGFpbnNEdXBsaWNhdGVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8SW1hZ2VCaXRtYXA+PiYgaW1hZ2VCaXRtYXBzKQpAQCAtNDQ0Myw4ICs0Mzc2LDggQEAg
RXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2IKICNlbmRpZgogICAgICAgICBibG9iSGFuZGxlcywgYnVm
ZmVyLCBjb250ZXh0LCAqc2hhcmVkQnVmZmVycyk7CiAKLSAgICBpZiAoY29kZSAhPSBTZXJpYWxp
emF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQotICAgICAgICByZXR1cm4g
ZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoY29kZSk7CisgICAgaWYgKGF1dG8gZXhj
ZXB0aW9uID0gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvblJlc3VsdChjb2RlKSkKKyAgICAgICAg
cmV0dXJuIFdURk1vdmUoKmV4Y2VwdGlvbik7CiAKICAgICBhdXRvIGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSA9IHRyYW5zZmVyQXJyYXlCdWZmZXJzKHZtLCBhcnJheUJ1ZmZlcnMpOwogICAgIGlm
IChhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkuaGFzRXhjZXB0aW9uKCkpCkBAIC00NTA0LDExICs0
NDM3LDYgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMKICAgICByZXR1cm4gc2VyaWFsaXplZFZh
bHVlOwogfQogCi1TdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpCi17Ci0g
ICAgcmV0dXJuIENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZVN0cmluZyhtX2RhdGEpOwot
fQotCiBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxP
YmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRpb25zKQogewogICAgIHJldHVybiBk
ZXNlcmlhbGl6ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIHsgfSwgdGhyb3dF
eGNlcHRpb25zKTsKQEAgLTQ1MzcsNyArNDQ2NSw3IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpkZXNlcmlhbGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwK
ICNlbmRpZgogICAgICAgICApOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXph
dGlvbkVycm9yTW9kZTo6VGhyb3dpbmcpCi0gICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNl
cmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0LnNlY29uZCk7Cisg
ICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEds
b2JhbE9iamVjdCwgZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvblJlc3VsdChyZXN1bHQuc2Vjb25k
KSk7CiAgICAgcmV0dXJuIHJlc3VsdC5maXJzdCA/IHJlc3VsdC5maXJzdCA6IGpzTnVsbCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oCmluZGV4IGVmMzdmMWQwY2E0Ni4uMzVjZTMxYzc3OGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNzEsMTUg
KzcxLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgPSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZyk7
Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNv
bnRleHQ6OkRlZmF1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1
ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93
aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dCA9IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlcikp
KTsKLSAgICB9CiAKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVsbFZh
bHVlKCk7CiAKQEAgLTg5LDEzICs4NCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDMy
X3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0cmluZygpOwotCiAgICAg
Ly8gQVBJIGltcGxlbWVudGF0aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0IGV4cG9zZSBzcGVjaWFs
IGJlaGF2aW9yIGZvciBBcnJheUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRzLgogICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250
ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVf
RVhQT1JUIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pOwogCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFt
X2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMo
KSBjb25zdDsKQEAgLTEwNiw3ICs5OCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGRhdGEpKSk7CiAg
ICAgfQotICAgIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgdG9XaXJlQnl0ZXMoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KKyAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHdpcmVCeXRlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0
YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOwpAQCAt
MTE2LDEwICsxMDgsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgflNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSgpOwogCiBwcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmCisgICAgV0VCQ09SRV9FWFBPUlQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmID0gbnVsbHB0cgogI2lmIEVOQUJMRShXRUJf
UlRDKQotICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hh
bm5lbD4+JiYKKyAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0
YUNoYW5uZWw+PiYmID0geyB9CiAjZW5kaWYKICAgICAgICAgKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0Jyb2FkY2FzdENoYW5uZWwuY3BwCmluZGV4IGU3NjI1M2NkNjQ4Yi4uMmI2ZWFiM2E1Y2RkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCkBAIC0yMzksNyArMjM5LDcg
QEAgdm9pZCBCcm9hZGNhc3RDaGFubmVsOjpkaXNwYXRjaE1lc3NhZ2UoUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4mJiBtZXNzYWdlKQogCiAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIFt0aGlzLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKV0oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFtX2lzQ2xvc2VkICYm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKLSAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVz
c2FnZUV2ZW50OjpjcmVhdGUoeyB9LCBXVEZNb3ZlKG1lc3NhZ2UpLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIGRp
c3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShtZXNzYWdlKSwgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7CiAgICAg
fSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXggMjg4ZjQ2Mjg2MmE5
Li42YTMyNzliNTIxNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCkBAIC01Miw4
ICs1Miw4IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzCiB7CiB9CiAKLWlubGluZSBNZXNzYWdl
RXZlbnQ6Ok1lc3NhZ2VFdmVudChEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQotICAg
IDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwgQ2FuQnViYmxlOjpObywgSXNDYW5j
ZWxhYmxlOjpObykKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4m
JiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQorICAgIDogRXZl
bnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKICAgICAsIG1fZGF0YShX
VEZNb3ZlKGRhdGEpKQogICAgICwgbV9vcmlnaW4ob3JpZ2luKQogICAgICwgbV9sYXN0RXZlbnRJ
ZChsYXN0RXZlbnRJZCkKQEAgLTYyLDM3ICs2MiwxNCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpN
ZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
UwogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0
cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKLSAgICA6IEV2ZW50KHR5cGUs
IENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCi0gICAgLCBtX2RhdGEoV1RGTW92ZShk
YXRhKSkKLSAgICAsIG1fb3JpZ2luKG9yaWdpbikKLSAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2
ZW50SWQpCi17Ci19Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFZl
Y3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdURk1vdmUoZGF0YSksIG9yaWdpbiwg
bGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpKTsKLX0KLQotUmVm
PE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCkp
OwotfQotCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBTdHJp
bmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewotICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4g
TWVzc2FnZUV2ZW50OjpjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmln
aW4pCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9tU3Ry
aW5nJiB0eXBlLCBEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBT
dHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBz
b3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwg
b3JpZ2luLCBsYXN0RXZlbnRJZCwgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKHBvcnRzKSkpOwog
fQogCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShSZWY8QXJyYXlCdWZm
ZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJj
ZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzKQogewotICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4p
KTsKKyAgICByZXR1cm4gY3JlYXRlKGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIFdURk1vdmUo
ZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0
cykpOwogfQogCiBSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZUZvckJpbmRp
bmdzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCA2NTEwNjk5NDI0MDAuLjQ2Njg4
MDdiY2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaApAQCAtNDgsMTEgKzQ4LDEwIEBA
IHVzaW5nIE1lc3NhZ2VFdmVudFNvdXJjZSA9IHN0ZDo6dmFyaWFudDxSZWZQdHI8V2luZG93UHJv
eHk+LCBSZWZQdHI8TWVzc2FnZVBvcnQ+CiBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBwdWJs
aWMgRXZlbnQgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoTWVzc2FnZUV2ZW50KTsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFZlY3RvcjxSZWZQdHI8
TWVzc2FnZVBvcnQ+PiYmLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpv
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlID0gc3RkOjpudWxsb3B0KTsKLSAg
ICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0pOwotICAg
IHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVmPEJsb2I+JiYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4pOwotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoUmVm
PEFycmF5QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKKyAgICBz
dHJ1Y3QgSlNWYWx1ZVRhZyB7IH07CisgICAgdXNpbmcgRGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8
SlNWYWx1ZVRhZywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+
LCBSZWY8QXJyYXlCdWZmZXI+PjsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRl
KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
ID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiYgPSB7IH0pOworICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoRGF0
YVR5cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2
ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpu
dWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAgICAgc3RhdGlj
IFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZUZvckJpbmRpbmdzKCk7CiAKICAgICBzdHJ1Y3QgSW5p
dCA6IEV2ZW50SW5pdCB7CkBAIC03Myw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICBjb25zdCBzdGQ6
Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mIHNvdXJjZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlOyB9CiAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBwb3J0cygp
IGNvbnN0IHsgcmV0dXJuIG1fcG9ydHM7IH0KIAotICAgIHN0cnVjdCBKU1ZhbHVlVGFnIHsgfTsK
LSAgICB1c2luZyBEYXRhVHlwZSA9IHN0ZDo6dmFyaWFudDxKU1ZhbHVlVGFnLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiwgU3RyaW5nLCBSZWY8QmxvYj4sIFJlZjxBcnJheUJ1ZmZlcj4+Owog
ICAgIGNvbnN0IERhdGFUeXBlJiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAg
ICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBqc0RhdGEoKSB7IHJldHVybiBtX2pzRGF0YTsgfQpA
QCAtODYsOCArODMsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIE1lc3NhZ2VFdmVudCgpOwog
ICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYsIElzVHJ1c3Rl
ZCk7Ci0gICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbGFzdEV2ZW50SWQpOwotICAgIE1lc3NhZ2VFdmVudChEYXRhVHlwZSYmLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVz
c2FnZVBvcnQ+PiYmID0geyB9KTsKKyAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYg
dHlwZSwgRGF0YVR5cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFz
dEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3Rk
OjpudWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CiAKICAgICBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VQb3J0LmNwcAppbmRleCAxNzdmOGU0M2Q0NTguLjkyNTFlODQ2NmQzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpjb250ZXh0LCBX
VEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwogICAgICAgICAgICAgLy8gUGVyIHNw
ZWNpZmljYXRpb24sIGVhY2ggTWVzc2FnZVBvcnQgb2JqZWN0IGhhcyBhIHRhc2sgc291cmNlIGNh
bGxlZCB0aGUgcG9ydCBtZXNzYWdlIHF1ZXVlLgotICAgICAgICAgICAgcXVldWVUYXNrVG9EaXNw
YXRjaEV2ZW50KCp0aGlzLCBUYXNrU291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51
bGwoKSkpOworICAgICAgICAgICAgcXVldWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp0aGlzLCBUYXNr
U291cmNlOjpQb3N0ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIHsgfSwgeyB9LCBXVEZNb3ZlKHBvcnRzKSkp
OwogICAgICAgICB9CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDYw
Yzc1OWRjOGFmMy4uODY0MzVlMWNmODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBA
IC05NjMsNyArOTYzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9NV2luZG93Ojpwb3N0TWVzc2Fn
ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWMKICAgICAgICAgVXNlckdl
c3R1cmVJbmRpY2F0b3IgdXNlckdlc3R1cmVJbmRpY2F0b3IodXNlckdlc3R1cmVUb0ZvcndhcmQp
OwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaFBvc3RNZXNz
YWdlKGZyYW1lLCBwb3N0TWVzc2FnZUlkZW50aWZpZXIpOwogCi0gICAgICAgIGF1dG8gZXZlbnQg
PSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1l
bnQoKSwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKSwgbWVzc2FnZS5tZXNzYWdl
LnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBpbmN1bWJlbnRXaW5kb3dQcm94
eSA/IHN0ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShpbmN1bWJl
bnRXaW5kb3dQcm94eSkpKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGF1dG8gZXZlbnQgPSBN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291
cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFs
KE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3Rk
OjpudWxsb3B0LCBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92
ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKSk7CiAgICAgICAgIGRpc3BhdGNoRXZlbnQoZXZl
bnQpOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0
TWVzc2FnZShmcmFtZSwgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dFNvdXJjZS5jcHAKaW5kZXggOGNjOGRmMWFjMjZjLi43MDczZWY2MTczY2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRTb3VyY2UuY3BwCkBAIC00MzEsMTQgKzQzMSwxMyBAQCB2b2lkIEV2ZW50U291
cmNlOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCgpCiAKICAgICBhdXRvJiBuYW1lID0gbV9ldmVudE5h
bWUuaXNFbXB0eSgpID8gZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCA6IG1fZXZlbnROYW1lOwog
Ci0gICAgLy8gT21pdCB0aGUgdHJhaWxpbmcgIlxuIiBjaGFyYWN0ZXIuCiAgICAgQVNTRVJUKCFt
X2RhdGEuaXNFbXB0eSgpKTsKLSAgICB1bnNpZ25lZCBzaXplID0gbV9kYXRhLnNpemUoKSAtIDE7
Ci0gICAgYXV0byBkYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoeyBtX2RhdGEu
ZGF0YSgpLCBzaXplIH0pOwotICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEpOworCisgICAgLy8gT21p
dCB0aGUgdHJhaWxpbmcgIlxuIiBjaGFyYWN0ZXIuCisgICAgU3RyaW5nIGRhdGEobV9kYXRhLmRh
dGEoKSwgbV9kYXRhLnNpemUoKSAtIDEpOwogICAgIG1fZGF0YSA9IHsgfTsKIAotICAgIGRpc3Bh
dGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobmFtZSwgZGF0YS5yZWxlYXNlTm9uTnVsbCgp
LCBtX2V2ZW50U3RyZWFtT3JpZ2luLCBtX2xhc3RFdmVudElkKSk7CisgICAgZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShuYW1lLCBXVEZNb3ZlKGRhdGEpLCBtX2V2ZW50U3RyZWFt
T3JpZ2luLCBtX2xhc3RFdmVudElkKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IGYxZGEyYzg1YTAwOC4uZDc4YTdjNGZlZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgZGF0YQogCiAgICAgQ2hlY2tlZDx1aW50NjRfdD4gcGF5bG9hZFNpemUgPSB0aXRsZVNpemU7
CiAgICAgcGF5bG9hZFNpemUgKz0gdXJsU2l6ZTsKLSAgICBwYXlsb2FkU2l6ZSArPSBkYXRhID8g
ZGF0YS0+ZGF0YSgpLnNpemUoKSA6IDA7CisgICAgcGF5bG9hZFNpemUgKz0gZGF0YSA/IGRhdGEt
PndpcmVCeXRlcygpLnNpemUoKSA6IDA7CiAKICAgICBDaGVja2VkPHVpbnQ2NF90PiBuZXdUb3Rh
bFVzYWdlID0gbWFpbkhpc3RvcnkubV90b3RhbFN0YXRlT2JqZWN0VXNhZ2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA5NDZlZmY5NzQ0ZTQuLmQyMmI5ZTNmMjRjNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzg0MSwxNCArMzg0MSwxNCBA
QCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6Z2V0Q3VycmVudEN1cnNvckluZm8oKQog
CiBSZWY8QXJyYXlCdWZmZXI+IEludGVybmFsczo6c2VyaWFsaXplT2JqZWN0KGNvbnN0IFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZSkgY29uc3QKIHsKLSAgICBhdXRvJiBieXRl
cyA9IHZhbHVlLT5kYXRhKCk7CisgICAgYXV0byYgYnl0ZXMgPSB2YWx1ZS0+d2lyZUJ5dGVzKCk7
CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZGF0YSgpLCBieXRlcy5zaXpl
KCkpOwogfQogCiBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbnRlcm5hbHM6OmRlc2VyaWFs
aXplQnVmZmVyKEFycmF5QnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ5dGVzIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBi
dWZmZXIuYnl0ZUxlbmd0aCgpIH07Ci0gICAgcmV0dXJuIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
YWRvcHQoV1RGTW92ZShieXRlcykpOworICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RGTW92ZShieXRlcykpOwogfQogCiBib29sIEludGVybmFs
czo6aXNGcm9tQ3VycmVudFdvcmxkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHkuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKaW5kZXggOTlkMWJj
MDI2Y2ExLi42YWQyMTc3NjM1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyTWVzc2FnaW5nUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYmIG0KICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBhdXRvIHBvcnRzID0gTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVy
cmVkUG9ydHMpKTsKLSAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VO
b25OdWxsKCkpKTsKKyAgICAgICAgQWN0aXZlRE9NT2JqZWN0OjpxdWV1ZVRhc2tUb0Rpc3BhdGNo
RXZlbnQoKndvcmtlck9iamVjdCwgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNz
YWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7
IH0sIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZShwb3J0cykpKTsKICAgICB9KTsKIH0KIApAQCAtMTI0
LDcgKzEyNCw3IEBAIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJHbG9iYWxTY29wZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0CiAgICAgICAgIEFTU0VSVF9XSVRI
X1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNjcmlwdENvbnRleHQuaXNXb3JrZXJHbG9iYWxTY29wZSgp
KTsKICAgICAgICAgYXV0byYgY29udGV4dCA9IHN0YXRpY19jYXN0PERlZGljYXRlZFdvcmtlckds
b2JhbFNjb3BlJj4oc2NyaXB0Q29udGV4dCk7CiAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdl
UG9ydDo6ZW50YW5nbGVQb3J0cyhzY3JpcHRDb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNm
ZXJyZWRQb3J0cykpOwotICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50
OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgp
KSk7CisgICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZSht
ZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHN0ZDo6bnVsbG9wdCwg
V1RGTW92ZShwb3J0cykpKTsKICAgICAgICAgY29udGV4dC50aHJlYWQoKS53b3JrZXJPYmplY3RQ
cm94eSgpLmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtlck9iamVjdChjb250ZXh0Lmhhc1BlbmRpbmdB
Y3Rpdml0eSgpKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRleCBmMjE0YWM2YTAw
NzYuLjQxZjM0YzYxZDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNDM4LDcgKzQzOCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2CiAgICAgYXV0byYgY29udGV4dCA9ICpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiAgICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJjZSA9IFJlZlB0cjxT
ZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKGNvbnRleHQsIFdURk1v
dmUoc291cmNlRGF0YSkpIH07CiAKLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUobWVz
c2FnZS50cmFuc2ZlcnJlZFBvcnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgp
LCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBhdXRvIG1lc3NhZ2VF
dmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVs
bCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpLCBNZXNzYWdlUG9ydDo6ZW50
YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpKTsK
ICAgICBpZiAobV9zaG91bGREZWZlck1lc3NhZ2VFdmVudHMpCiAgICAgICAgIG1fZGVmZXJyZWRN
ZXNzYWdlRXZlbnRzLmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwogICAgIGVsc2Ugewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2Vy
R2xvYmFsU2NvcGUuY3BwCmluZGV4IDEyYjhlMWFjOGQwMS4uOWZlOGRiMzhlYTUzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3JrZXJHbG9iYWxTY29w
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVkV29ya2VyR2xv
YmFsU2NvcGUuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxT
Y29wZTo6Y2xvc2UoKQogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6cG9zdENvbm5lY3RF
dmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0LCBjb25zdCBTdHJp
bmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBTQ09QRV9SRUxFQVNFX0xPRygicG9zdENvbm5lY3RF
dmVudDoiKTsKLSAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
ZW1wdHlTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKICAgICBhdXRvIHBvcnRzID0gTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFuc2ZlcnJlZFBvcnQp
IH0pOwogICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CiAgICAgYXV0byBwb3J0ID0gcG9y
dHNbMF07CiAgICAgQVNTRVJUKHBvcnQpOwotICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgdmFsdWUucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3Jp
Z2luLCB7IH0sIHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShl
bXB0eVN0cmluZygpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCwgV1RGTW92ZShwb3J0cykpOwog
ICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVudCwgZmFsc2UsIGZh
bHNlKTsKIAogICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IDZm
ZTg1NzZhYzM4ZS4uNGRkYzgwZjE0ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00OSw5ICs0OSw5IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKHNl
cmlhbGl6ZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgfQogICAgIAotICAgIHN0YXRp
YyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBhZG9wdChWZWN0b3I8dWludDhfdD4mJiBidWZm
ZXIpCisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21XaXJl
Qnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYnVmZmVyKSkpKTsKICAgICB9CiAgICAg
CiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVjdChpZCk7CiAjZW5k
aWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1
cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQorICAgIElQQzo6RGF0YVJlZmVy
ZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFs
dWUtPndpcmVCeXRlcygpOyB9CiAKICAgICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUm
IGludGVybmFsUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3Rh
dGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAppbmRleCBhMDhk
ZDE1ZDM1MTcuLmJlZTkzMmQwNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
U2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUu
Y3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBQYWdlU3RhdGU6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBtYWluRnJhbWVTdGF0
ZSA8PCAhIXNlc3Npb25TdGF0ZU9iamVjdDsKIAogICAgIGlmIChzZXNzaW9uU3RhdGVPYmplY3Qp
Ci0gICAgICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlT2JqZWN0LT50b1dpcmVCeXRlcygpOwor
ICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZU9iamVjdC0+d2lyZUJ5dGVzKCk7CiAKICAg
ICBlbmNvZGVyIDw8IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Vc2VyRGF0YS5jcHAKaW5kZXggZjhiN2VkY2Y0NDkxLi5lMTk0MDczNzI4NjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBib29sIFVzZXJEYXRhOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXN1bHQp
CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KTsKKyAgICAgICAgcmVzdWx0ID0gQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNl
IH0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDU0NTlkMmUzYmY4NS4uMzAxNDMyMDgyNzg3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTExMjgsNyArMTEyOCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJp
bmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgc2Vy
aWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJlQnl0ZXMoKSk7Cisg
ICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJl
cHJlc2VudGF0aW9uKCkud2lyZUJ5dGVzKCkpOwogICAgIH0KIAogICAgIGlmIChlcnJvck1lc3Nh
Z2UgJiYgaGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRy
b2xsZXJQcm94eS5jcHAKaW5kZXggYTgwNjU1YmZlZGZjLi5jZGJkMzQ1YTJiZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcApAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6
OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlOjphZG9wdChWZWN0b3IgeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5j
ZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsg
eyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3Ig
eyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9
KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVu
c2lvblRhYihjb25zdAogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7
IHJldHVybmVkVmFsdWUgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVm
ZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNl
LnNpemUoKSB9KS5wdHIoKSB9IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA1YmJlNzM5NjIwNTIuLjM4ZGVl
YWEyZmIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAt
MzQwLDE1ICszNDAsMTUgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlk
UG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKCFoYW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHkoKSkgewot
ICAgICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RGTW92ZShm
cmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pKTsKKyAgICAgICAgaGFuZGxlci0+Y2xp
ZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRs
ZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHkoeyB9LCB7IH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1l
c3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxl
ci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRh
UmVmZXJlbmNlIH0pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7Cisg
ICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwg
V1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFSZWZlcmVuY2UgfSks
IFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogdmFs
dWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGVy
cm9yTWVzc2FnZS5pc051bGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsKLSAgICAg
ICAgICAgIHJlcGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRl
cygpIH0sIHsgfSk7CisgICAgICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2Vu
dGF0aW9uKCkud2lyZUJ5dGVzKCkgfSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4NTUy
ODQ1NzBlZWIuLjI5YjYyMDdmY2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC00Mzk5LDcgKzQzOTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcAog
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhwZWN0ZWQoV1RGTW92
ZSgqZGV0YWlscykpKTsKICAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuZW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uKHsgbnVsbHB0ciB9KTsKLSAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbih7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChWZWN0b3Io
ZGF0YVJlZmVyZW5jZSkpLnB0cigpIH0pOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHsgQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoVmVjdG9yKGRhdGFS
ZWZlcmVuY2UpKS5wdHIoKSB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JV
SUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGU4NDA5OWEzZGEzOC4uYjljNzk2YWUyMTk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCkBAIC0y
ODcsNyArMjg3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXI6OmV2
YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1
bHRWYWx1ZS0+ZGF0YSgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5dGVzKCksIHN0ZDo6
bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KIApAQCAtNDM4LDcgKzQzOCw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdElu
RXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEo
KSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPndpcmVCeXRlcygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6
bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAK
aW5kZXggNGJhOTkwMTk0MDViLi4zMzBkYTZhZjdlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOwogICAgICAgICB9OwogCi0gICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRp
ZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUt
PmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkp
LCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIo
KSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIo
KSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFs
dWUtPndpcmVCeXRlcygpKSksIFdURk1vdmUobWVzc2FnZVJlcGx5SGFuZGxlciksIG1fY29udHJv
bGxlci0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAKaW5kZXggYmNkOTg3NDljMmNkLi40MmI0ZTAwZjBiZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIEZyYW1lU3RhdGUgdG9G
cmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAogICAgIGZyYW1lU3Rh
dGUuc2V0RG9jdW1lbnRTdGF0ZShoaXN0b3J5SXRlbS5kb2N1bWVudFN0YXRlKCkpOwogICAgIGlm
IChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCA9IGhpc3RvcnlJdGVt
LnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhID0gc3Rh
dGVPYmplY3QtPmRhdGEoKTsKKyAgICAgICAgZnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgPSBz
dGF0ZU9iamVjdC0+d2lyZUJ5dGVzKCk7CiAKICAgICBmcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVu
Y2VOdW1iZXIgPSBoaXN0b3J5SXRlbS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCk7CiAgICAgZnJh
bWVTdGF0ZS5pdGVtU2VxdWVuY2VOdW1iZXIgPSBoaXN0b3J5SXRlbS5pdGVtU2VxdWVuY2VOdW1i
ZXIoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUZyYW1lU3RhdGUoSGlz
dG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFtZVN0YQogCiAgICAg
aWYgKGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKSB7CiAgICAgICAgIFZlY3Rvcjx1aW50OF90
PiBzdGF0ZU9iamVjdERhdGEgPSBmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YS52YWx1ZSgpOwot
ICAgICAgICBoaXN0b3J5SXRlbS5zZXRTdGF0ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmFkb3B0KFdURk1vdmUoc3RhdGVPYmplY3REYXRhKSkpOworICAgICAgICBoaXN0b3J5SXRlbS5z
ZXRTdGF0ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMo
V1RGTW92ZShzdGF0ZU9iamVjdERhdGEpKSk7CiAgICAgfQogCiAgICAgaGlzdG9yeUl0ZW0uc2V0
RG9jdW1lbnRTZXF1ZW5jZU51bWJlcihmcmFtZVN0YXRlLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBm
MzYzNmNhYmQ2NWQuLjk2N2NlYjhmY2JhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3NjUsNyArMzc2NSw3IEBAIHZvaWQgV2ViUGFnZTo6
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVyCiAKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CiAg
ICAgICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCi0gICAgICAgICAgICBkYXRhUmVmZXJl
bmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAgICAgICAgICBkYXRhUmVm
ZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKTsKIAogICAgICAgICBz
dGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7CiAgICAgICAgIGlmICghcmVz
dWx0KQo=
</data>
<flag name="commit-queue"
          id="480648"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453323</attachid>
            <date>2022-02-26 20:59:23 -0800</date>
            <delta_ts>2022-02-26 23:41:36 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>37755</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAppbmRleCBh
MzYxMTEzZGRjNTIuLjcyODI1NTQwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJREJWYWx1ZTo6SURCVmFs
dWUoKQogfQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZl
Y3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgSURCVmFs
dWU6OklEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIH0KIAogSURC
VmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JGaWxlUGF0aHMpCi0gICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0
b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKKyAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y29weVZlY3RvcihzY3JpcHRWYWx1ZS53aXJlQnl0ZXMoKSkpCiAgICAgLCBtX2Jsb2JVUkxz
KGJsb2JVUkxzKQogICAgICwgbV9ibG9iRmlsZVBhdGhzKGJsb2JGaWxlUGF0aHMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAppbmRleCBhNWIyOGM4NTNmYmIuLjQ0YTU2NThmNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC05MCwxMiAr
OTAsOSBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CiAgICAgICAgIGF1dG8qIGpz
T3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNP
cHRpb25zLCB7IH0sIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOwotICAgICAgICBpZiAoc2VyaWFsaXplZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFz
ZXJpYWxpemVkT3B0aW9ucykKICAgICAgICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VyaWFsaXplZE9wdGlvbnMgPSBzZXJpYWxpemVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25zLnBhcmFt
ZXRlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNDI1MmE1NjQ3NjNiLi4wNjdlYTA3ODA2ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtNDEwMiwxMiArNDEwMiw2IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKLVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikK
LSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCi17Ci0gICAgbV9tZW1vcnlDb3N0ID0gY29t
cHV0ZU1lbW9yeUNvc3QoKTsKLX0KLQogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQogI2lmIEVO
QUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRS
VENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKQEAgLTQyMjAsMzUgKzQy
MTQsMzEgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXk+PiB0cmFuc2ZlckFycmF5QnVmZmUKICAgICByZXR1cm4gY29udGVudHM7CiB9
CiAKLXN0YXRpYyB2b2lkIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQo
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlIGNvZGUpCitzdGF0aWMgdm9pZCBtYXliZVRocm93RXhjZXB0aW9uSWZTZXJpYWxpemF0aW9u
RmFpbGVkKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdGQ6Om9wdGlvbmFs
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uKQogeworICAgIGlmICghZXhjZXB0aW9uKQorICAgICAgICBy
ZXR1cm47CisKICAgICBhdXRvJiB2bSA9IGxleGljYWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBzd2l0Y2ggKGNvZGUp
IHsKLSAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0
ZWQ6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6OlN0
YWNrT3ZlcmZsb3dFcnJvcjoKKyAgICBzd2l0Y2ggKGV4Y2VwdGlvbi0+Y29kZSgpKSB7CisgICAg
Y2FzZSBFeGNlcHRpb25Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CiAgICAgICAgIHRocm93RXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlZhbGlkYXRpb25FcnJvcjoKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIGRlc2VyaWFsaXpl
IGRhdGEuIl9zKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6RGF0YUNsb25lRXJyb3I6CisgICAgY2FzZSBFeGNlcHRpb25Db2RlOjpEYXRhQ2xvbmVF
cnJvcjoKICAgICAgICAgdGhyb3dEYXRhQ2xvbmVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBz
Y29wZSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNvZGU6
OkV4aXN0aW5nRXhjZXB0aW9uRXJyb3I6Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZTo6VW5zcGVjaWZpZWRFcnJvcjoKKyAgICBjYXNlIEV4Y2VwdGlvbkNvZGU6OlR5cGVFcnJvcjoK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIl9zKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6SW50
ZXJydXB0ZWRFeGVjdXRpb25FcnJvcjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogfQogCi1zdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWls
dXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxF
eGNlcHRpb24+IGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25SZXN1bHQoU2VyaWFsaXphdGlvblJl
dHVybkNvZGUgY29kZSkKIHsKLSAgICBBU1NFUlQoY29kZSAhPSBTZXJpYWxpemF0aW9uUmV0dXJu
Q29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKTsKLSAgICAKICAgICBzd2l0Y2ggKGNvZGUpIHsK
ICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdGFja092ZXJmbG93RXJyb3I6CiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTdGFja092ZXJmbG93RXJyb3IgfTsKQEAgLTQyNTgs
NjAgKzQyNDgsMjYgQEAgc3RhdGljIEV4Y2VwdGlvbiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9u
RmFpbHVyZShTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSBjb2RlKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgRGF0YUNsb25lRXJyb3IgfTsKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5D
b2RlOjpFeGlzdGluZ0V4Y2VwdGlvbkVycm9yOgogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
RXhpc3RpbmdFeGNlcHRpb25FcnJvciB9OwotICAgIGNhc2UgU2VyaWFsaXphdGlvblJldHVybkNv
ZGU6OlVuc3BlY2lmaWVkRXJyb3I6Ci0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IgfTsKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21w
bGV0ZWQ6CisgICAgY2FzZSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6VW5zcGVjaWZpZWRFcnJv
cjoKICAgICBjYXNlIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpJbnRlcnJ1cHRlZEV4ZWN1dGlv
bkVycm9yOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKLVJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhj
ZXB0aW9ucykKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHZhbHVlLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucywgU2VyaWFs
aXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNvbnRleHQpCiB7Ci0gICAgVmVjdG9yPHVpbnQ4
X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4gYmxvYkhhbmRsZXM7Ci0gICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2FnZVBvcnRzOwotICAgIFZlY3Rv
cjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFwczsKLSNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZlY3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2Fu
dmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfUlRD
KQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBkdW1teVJUQ0RhdGFDaGFubmVsczsK
LSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlC
dWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBXYXNtTW9kdWxlQXJyYXkgZHVt
bXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBkdW1teU1lbW9yeUhhbmRsZXM7
Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJz
OwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2VyaWFsaXplKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1bW15QXJyYXlCdWZmZXJzLCBk
dW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJT
KQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAotI2VuZGlmCi0jaWYgRU5BQkxFKFdF
Ql9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5uZWxzLAotI2VuZGlmCi0jaWYgRU5BQkxF
KFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVsZXMsCi0gICAgICAgIGR1bW15TWVtb3J5
SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFuZGxlcywgYnVmZmVyLCBTZXJpYWxpemF0
aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJzKTsKKyAgICBWZWN0b3I8UmVm
UHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlQb3J0czsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShn
bG9iYWxPYmplY3QsIHZhbHVlLCB7IH0sIGR1bW15UG9ydHMsIHNlcmlhbGl6YXRpb25Db250ZXh0
KTsKIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1
bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFsaXphdGlvbiBpcyBvbmx5
IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNtOjpNZW1vcnkgc2VyaWFs
aXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSNl
bmRpZgotCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
OjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAgIGlmIChjb2RlICE9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCisgICAgaWYgKHJlc3Vs
dC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICBpZiAodGhyb3dFeGNlcHRpb25zID09IFNlcmlh
bGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKQorICAgICAgICAgICAgbWF5YmVUaHJvd0V4Y2Vw
dGlvbklmU2VyaWFsaXphdGlvbkZhaWxlZChnbG9iYWxPYmplY3QsIHJlc3VsdC5leGNlcHRpb24o
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciksIGJsb2JIYW5kbGVz
LCBudWxscHRyLCBudWxscHRyLCB7IH0pKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogfQogCiBzdGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVj
dG9yPFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMpCkBAIC00NDQzLDggKzQzOTks
OCBAQCBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYgogI2VuZGlmCiAgICAgICAgIGJsb2JIYW5kbGVz
LCBidWZmZXIsIGNvbnRleHQsICpzaGFyZWRCdWZmZXJzKTsKIAotICAgIGlmIChjb2RlICE9IFNl
cmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCi0gICAgICAgIHJl
dHVybiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShjb2RlKTsKKyAgICBpZiAoYXV0
byBleGNlcHRpb24gPSBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uUmVzdWx0KGNvZGUpKQorICAg
ICAgICByZXR1cm4gV1RGTW92ZSgqZXhjZXB0aW9uKTsKIAogICAgIGF1dG8gYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5ID0gdHJhbnNmZXJBcnJheUJ1ZmZlcnModm0sIGFycmF5QnVmZmVycyk7CiAg
ICAgaWYgKGFycmF5QnVmZmVyQ29udGVudHNBcnJheS5oYXNFeGNlcHRpb24oKSkKQEAgLTQ1MDQs
NyArNDQ2MCw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgcmV0dXJuIHNlcmlhbGl6
ZWRWYWx1ZTsKIH0KIAotU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKQor
U3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIHJl
dHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVTdHJpbmcobV9kYXRhKTsKIH0KQEAg
LTQ1MzcsNyArNDQ5Myw3IEBAIEpTVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpkZXNlcmlh
bGl6ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwKICNlbmRpZgogICAgICAg
ICApOwogICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6
VGhyb3dpbmcpCi0gICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWls
ZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgcmVzdWx0LnNlY29uZCk7CisgICAgICAgIG1heWJlVGhy
b3dFeGNlcHRpb25JZlNlcmlhbGl6YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgZXhj
ZXB0aW9uRm9yU2VyaWFsaXphdGlvblJlc3VsdChyZXN1bHQuc2Vjb25kKSk7CiAgICAgcmV0dXJu
IHJlc3VsdC5maXJzdCA/IHJlc3VsdC5maXJzdCA6IGpzTnVsbCgpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGVm
MzdmMWQwY2E0Ni4uOTNlMjMzNDEzYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNzEsMTUgKzcxLDEwIEBAIERFQ0xB
UkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7
CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURURf
V0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIHB1YmxpYzoKLSAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFNlcmlhbGl6YXRpb25FcnJv
ck1vZGUgPSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZyk7Ci0KICAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IGNy
ZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQp
OworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlv
bkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nLCBTZXJpYWxpemF0
aW9uQ29udGV4dCA9IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0KTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoU3Ry
aW5nVmlldyk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZl
Y3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlcikpKTsKLSAgICB9CiAKICAg
ICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVsbFZhbHVlKCk7CiAKQEAgLTg5
LDEzICs4NCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZl
cnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0cmluZygpOworICAgIFN0cmluZyB0b1N0cmluZygp
IGNvbnN0OwogCiAgICAgLy8gQVBJIGltcGxlbWVudGF0aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0
IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBBcnJheUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRz
LgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
OwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVm
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCi0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBk
YXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNv
bnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQogCiAgICAgVmVjdG9yPFN0
cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKQEAgLTEwNiw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RG
TW92ZShkYXRhKSkpOwogICAgIH0KLSAgICBjb25zdCBWZWN0b3I8dWludDhfdD4mIHRvV2lyZUJ5
dGVzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3aXJlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGVjb2Rl
KERlY29kZXImKTsKQEAgLTExNiwxMCArMTEwLDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VY
UE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAg
IFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hh
cj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgorICAgIFdF
QkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
Jiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiA9IG51bGxwdHIK
ICNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERl
dGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCisgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiA9IHsgfQogI2VuZGlmCiAgICAgICAgICk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcAppbmRleCBlNzYyNTNjZDY0OGIu
LjJiNmVhYjNhNWNkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENo
YW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcApA
QCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdl
KFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkKIAogICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBb
dGhpcywgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghbV9pc0Nsb3NlZCAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICBk
aXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwg
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7
CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUo
bWVzc2FnZSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9T
dHJpbmcoKSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmlu
ZGV4IDI4OGY0NjI4NjJhOS4uNmEzMjc5YjUyMTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmNwcApAQCAtNTIsOCArNTIsOCBAQCBpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZl
bnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmIGluaXRpYWxpemVyLCBJcwogewogfQog
Ci1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25h
bDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiBwb3J0cykKLSAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1
YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNz
YWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBw
b3J0cykKKyAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAg
ICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCkBAIC02MiwzNyArNjIsMTQgQEAgaW5saW5l
IE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3RyaW5n
JiBvcmlnaW4sIGNvbnN0IFMKIHsKIH0KIAotaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2
ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYg
ZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpCi0g
ICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAgICwg
bV9kYXRhKFdURk1vdmUoZGF0YSkpCi0gICAgLCBtX29yaWdpbihvcmlnaW4pCi0gICAgLCBtX2xh
c3RFdmVudElkKGxhc3RFdmVudElkKQotewotfQotCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYg
c291cmNlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3Zl
KGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9y
dHMpKSk7Ci19Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0
IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpCi17Ci0gICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIFdURk1vdmUoZGF0YSksIG9yaWdp
biwgbGFzdEV2ZW50SWQpKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoZGF0YSwgb3JpZ2luKSk7Ci19Ci0KLVJl
ZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92ZShkYXRh
KSwgb3JpZ2luKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUs
IFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RG
TW92ZShwb3J0cykpKTsKIH0KIAotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVh
dGUoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1l
c3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiBwb3J0cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92
ZShkYXRhKSwgb3JpZ2luKSk7CisgICAgcmV0dXJuIGNyZWF0ZShldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50LCBXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJj
ZSksIFdURk1vdmUocG9ydHMpKTsKIH0KIAogUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50
OjpjcmVhdGVGb3JCaW5kaW5ncygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjUx
MDY5OTQyNDAwLi40NjY4ODA3YmNlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAg
LTQ4LDExICs0OCwxMCBAQCB1c2luZyBNZXNzYWdlRXZlbnRTb3VyY2UgPSBzdGQ6OnZhcmlhbnQ8
UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRyPE1lc3NhZ2VQb3J0PgogY2xhc3MgTWVzc2FnZUV2
ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1l
c3NhZ2VFdmVudCk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0
ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50
SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0
ZDo6bnVsbG9wdCk7Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBB
dG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJp
bmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7Ci0gICAgc3RhdGljIFJlZjxN
ZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luID0geyB9KTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9i
PiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VF
dmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZlcj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biA9IHsgfSk7CisgICAgc3RydWN0IEpTVmFsdWVUYWcgeyB9OworICAgIHVzaW5nIERhdGFUeXBl
ID0gc3RkOjp2YXJpYW50PEpTVmFsdWVUYWcsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBT
dHJpbmcsIFJlZjxCbG9iPiwgUmVmPEFycmF5QnVmZmVyPj47CisgICAgc3RhdGljIFJlZjxNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmLCBjb25z
dCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwg
c3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3Rv
cjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0geyB9KTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VF
dmVudD4gY3JlYXRlKERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25z
dCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNv
dXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7
IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpOwog
CiAgICAgc3RydWN0IEluaXQgOiBFdmVudEluaXQgewpAQCAtNzMsOCArNzIsNiBAQCBwdWJsaWM6
CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7IHJldHVybiBtX3BvcnRzOyB9CiAKLSAgICBzdHJ1Y3Qg
SlNWYWx1ZVRhZyB7IH07Ci0gICAgdXNpbmcgRGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8SlNWYWx1
ZVRhZywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+LCBSZWY8
QXJyYXlCdWZmZXI+PjsKICAgICBjb25zdCBEYXRhVHlwZSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YTsgfQogCiAgICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYganNEYXRhKCkgeyByZXR1
cm4gbV9qc0RhdGE7IH0KQEAgLTg2LDggKzgzLDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBN
ZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
SW5pdCYmLCBJc1RydXN0ZWQpOwotICAgIE1lc3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0
eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkKTsKLSAgICBNZXNzYWdlRXZlbnQoRGF0YVR5
cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CisgICAgTWVzc2FnZUV2ZW50KGNv
bnN0IEF0b21TdHJpbmcmIHR5cGUsIERhdGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVu
dFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYg
PSB7IH0pOwogCiAgICAgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggMTc3ZjhlNDNkNDU4Li45MjUx
ZTg0NjZkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMjg0LDcgKzI4NCw3
IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQ
b3J0cygqY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAg
ICAgICAgIC8vIFBlciBzcGVjaWZpY2F0aW9uLCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBoYXMg
YSB0YXNrIHNvdXJjZSBjYWxsZWQgdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZS4KLSAgICAgICAgICAg
IHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2Fn
ZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNz
YWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hF
dmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHsgfSwg
V1RGTW92ZShwb3J0cykpKTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCA2MGM3NTlkYzhhZjMuLjg2NDM1ZTFjZjgxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcApAQCAtOTYzLDcgKzk2Myw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdp
bmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIHVzZXJHZXN0dXJlSW5kaWNhdG9yKHVzZXJH
ZXN0dXJlVG9Gb3J3YXJkKTsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFtZSwgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsKIAotICAg
ICAgICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoTWVzc2FnZVBvcnQ6OmVudGFu
Z2xlUG9ydHMoKmRvY3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSks
IG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgaW5j
dW1iZW50V2luZG93UHJveHkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2ZW50U291cmNl
KFdURk1vdmUoaW5jdW1iZW50V2luZG93UHJveHkpKSkgOiBzdGQ6Om51bGxvcHQpOworICAgICAg
ICBhdXRvIGV2ZW50ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVh
c2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBpbmN1bWJlbnRXaW5kb3dQcm94eSA/IHN0
ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3VyY2UoV1RGTW92ZShpbmN1bWJlbnRXaW5k
b3dQcm94eSkpKSA6IHN0ZDo6bnVsbG9wdCwgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmRv
Y3VtZW50KCksIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSkpOwogICAgICAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50KTsKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNzYWdlSWRlbnRpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwCmluZGV4IDhjYzhkZjFhYzI2Yy4uNzA3M2VmNjE3
M2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcApAQCAtNDMxLDE0ICs0MzEsMTMg
QEAgdm9pZCBFdmVudFNvdXJjZTo6ZGlzcGF0Y2hNZXNzYWdlRXZlbnQoKQogCiAgICAgYXV0byYg
bmFtZSA9IG1fZXZlbnROYW1lLmlzRW1wdHkoKSA/IGV2ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQg
OiBtX2V2ZW50TmFtZTsKIAotICAgIC8vIE9taXQgdGhlIHRyYWlsaW5nICJcbiIgY2hhcmFjdGVy
LgogICAgIEFTU0VSVCghbV9kYXRhLmlzRW1wdHkoKSk7Ci0gICAgdW5zaWduZWQgc2l6ZSA9IG1f
ZGF0YS5zaXplKCkgLSAxOwotICAgIGF1dG8gZGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlKHsgbV9kYXRhLmRhdGEoKSwgc2l6ZSB9KTsKLSAgICBSRUxFQVNFX0FTU0VSVChkYXRh
KTsKKworICAgIC8vIE9taXQgdGhlIHRyYWlsaW5nICJcbiIgY2hhcmFjdGVyLgorICAgIFN0cmlu
ZyBkYXRhKG1fZGF0YS5kYXRhKCksIG1fZGF0YS5zaXplKCkgLSAxKTsKICAgICBtX2RhdGEgPSB7
IH07CiAKLSAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG5hbWUsIGRhdGEu
cmVsZWFzZU5vbk51bGwoKSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZlbnRJZCkpOwor
ICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUobmFtZSwgV1RGTW92ZShkYXRh
KSwgbV9ldmVudFN0cmVhbU9yaWdpbiwgbV9sYXN0RXZlbnRJZCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAppbmRleCBmMWRhMmM4NWEwMDguLmQ3
OGE3YzRmZWQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKIAogICAgIENoZWNrZWQ8dWludDY0X3Q+IHBheWxvYWRT
aXplID0gdGl0bGVTaXplOwogICAgIHBheWxvYWRTaXplICs9IHVybFNpemU7Ci0gICAgcGF5bG9h
ZFNpemUgKz0gZGF0YSA/IGRhdGEtPmRhdGEoKS5zaXplKCkgOiAwOworICAgIHBheWxvYWRTaXpl
ICs9IGRhdGEgPyBkYXRhLT53aXJlQnl0ZXMoKS5zaXplKCkgOiAwOwogCiAgICAgQ2hlY2tlZDx1
aW50NjRfdD4gbmV3VG90YWxVc2FnZSA9IG1haW5IaXN0b3J5Lm1fdG90YWxTdGF0ZU9iamVjdFVz
YWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZmOTc0NGU0
Li5kMjJiOWUzZjI0YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM4
NDEsMTQgKzM4NDEsMTQgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmdldEN1cnJl
bnRDdXJzb3JJbmZvKCkKIAogUmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6OnNlcmlhbGl6ZU9i
amVjdChjb25zdCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpIGNvbnN0CiB7
Ci0gICAgYXV0byYgYnl0ZXMgPSB2YWx1ZS0+ZGF0YSgpOworICAgIGF1dG8mIGJ5dGVzID0gdmFs
dWUtPndpcmVCeXRlcygpOwogICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRh
dGEoKSwgYnl0ZXMuc2l6ZSgpKTsKIH0KIAogUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50
ZXJuYWxzOjpkZXNlcmlhbGl6ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewog
ICAgIFZlY3Rvcjx1aW50OF90PiBieXRlcyB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihi
dWZmZXIuZGF0YSgpKSwgYnVmZmVyLmJ5dGVMZW5ndGgoKSB9OwotICAgIHJldHVybiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnl0ZXMpKTsKKyAgICByZXR1cm4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYnl0ZXMpKTsKIH0K
IAogYm9vbCBJbnRlcm5hbHM6OmlzRnJvbUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUgdmFsdWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2lu
Z1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJveHku
Y3BwCmluZGV4IDk5ZDFiYzAyNmNhMS4uNmFkMjE3NzYzNTViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQsIFdURk1vdmUo
bWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OlBvc3RlZE1l
c3NhZ2VRdWV1ZSwgTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIG1lc3NhZ2Uu
bWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CisgICAgICAgIEFjdGl2ZURPTU9iamVjdDo6cXVl
dWVUYXNrVG9EaXNwYXRjaEV2ZW50KCp3b3JrZXJPYmplY3QsIFRhc2tTb3VyY2U6OlBvc3RlZE1l
c3NhZ2VRdWV1ZSwgTWVzc2FnZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VO
b25OdWxsKCksIHsgfSwgeyB9LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocG9ydHMpKSk7CiAgICAg
fSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpw
b3N0TWVzc2FnZVRvV29ya2VyR2xvYmFsU2NvcGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydAogICAg
ICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRDb250ZXh0LmlzV29y
a2VyR2xvYmFsU2NvcGUoKSk7CiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxE
ZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSY+KHNjcmlwdENvbnRleHQpOwogICAgICAgICBhdXRv
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoc2NyaXB0Q29udGV4dCwgV1RGTW92
ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKLSAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2
ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3NhZ2Uu
cmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXZlbnQoTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUobWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgfSwgeyB9
LCBzdGQ6Om51bGxvcHQsIFdURk1vdmUocG9ydHMpKSk7CiAgICAgICAgIGNvbnRleHQudGhyZWFk
KCkud29ya2VyT2JqZWN0UHJveHkoKS5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoY29u
dGV4dC5oYXNQZW5kaW5nQWN0aXZpdHkoKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAK
aW5kZXggZjIxNGFjNmEwMDc2Li40MWYzNGM2MWQwMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAg
LTQzOCw3ICs0MzgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNzYWdl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogICAgIGF1dG8mIGNvbnRl
eHQgPSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBz
b3VyY2UgPSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0
ZShjb250ZXh0LCBXVEZNb3ZlKHNvdXJjZURhdGEpKSB9OwogCi0gICAgYXV0byBtZXNzYWdlRXZl
bnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250
ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2Uu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSk7Cisg
ICAgYXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSwg
TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5z
ZmVycmVkUG9ydHMpKSk7CiAgICAgaWYgKG1fc2hvdWxkRGVmZXJNZXNzYWdlRXZlbnRzKQogICAg
ICAgICBtX2RlZmVycmVkTWVzc2FnZUV2ZW50cy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlRXZlbnQp
KTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxMmI4ZTFhYzhkMDEuLjlmZThk
YjM4ZWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hhcmVk
V29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtNjUsMTMgKzY1LDExIEBAIHZvaWQgU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGU6OmNsb3NlKCkKIHZvaWQgU2hhcmVkV29ya2VyR2xvYmFsU2Nv
cGU6OnBvc3RDb25uZWN0RXZlbnQoVHJhbnNmZXJyZWRNZXNzYWdlUG9ydCYmIHRyYW5zZmVycmVk
UG9ydCwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pCiB7CiAgICAgU0NPUEVfUkVMRUFTRV9M
T0coInBvc3RDb25uZWN0RXZlbnQ6Iik7Ci0gICAgYXV0byB2YWx1ZSA9IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKGVtcHR5U3RyaW5nKCkpOwotICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCp0aGlzLCB7IFdURk1vdmUo
dHJhbnNmZXJyZWRQb3J0KSB9KTsKICAgICBBU1NFUlQocG9ydHMuc2l6ZSgpID09IDEpOwogICAg
IGF1dG8gcG9ydCA9IHBvcnRzWzBdOwogICAgIEFTU0VSVChwb3J0KTsKLSAgICBhdXRvIGV2ZW50
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0cyksIHZhbHVlLnJlbGVhc2VOb25O
dWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBwb3J0KTsKKyAgICBhdXRvIGV2ZW50ID0gTWVzc2Fn
ZUV2ZW50OjpjcmVhdGUoZW1wdHlTdHJpbmcoKSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQsIFdU
Rk1vdmUocG9ydHMpKTsKICAgICBldmVudC0+aW5pdEV2ZW50KGV2ZW50TmFtZXMoKS5jb25uZWN0
RXZlbnQsIGZhbHNlLCBmYWxzZSk7CiAKICAgICBkaXNwYXRjaEV2ZW50KFdURk1vdmUoZXZlbnQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCA2ZmU4NTc2YWMzOGUuLjRkZGM4MGYxNGZiZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNDks
OSArNDksOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkVmFsdWUucmVsZWFzZU5vbk51bGwoKSkpOwogICAgIH0K
ICAgICAKLSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gYWRvcHQoVmVjdG9y
PHVpbnQ4X3Q+JiYgYnVmZmVyKQorICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBjcmVhdGVGcm9tV2lyZUJ5dGVzKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoYnVmZmVyKSkpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhXVEZNb3ZlKGJ1ZmZlcikp
KSk7CiAgICAgfQogICAgIAogICAgIEpTVmFsdWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGVGcm9tTlNP
YmplY3QoaWQpOwogI2VuZGlmCiAKLSAgICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5kYXRhKCk7IH0KKyAg
ICBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLT53aXJlQnl0ZXMoKTsgfQogCiAgICAgV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlJiBpbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkgeyByZXR1cm4gbV9zZXJp
YWxpemVkU2NyaXB0VmFsdWUuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvU2Vzc2lvblN0YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0
ZS5jcHAKaW5kZXggYTA4ZGQxNWQzNTE3Li5iZWU5MzJkMDU1NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2Vzc2lvblN0YXRlLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUGFnZVN0YXRlOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGl0bGUg
PDwgbWFpbkZyYW1lU3RhdGUgPDwgISFzZXNzaW9uU3RhdGVPYmplY3Q7CiAKICAgICBpZiAoc2Vz
c2lvblN0YXRlT2JqZWN0KQotICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZU9iamVjdC0+
dG9XaXJlQnl0ZXMoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uU3RhdGVPYmplY3QtPndp
cmVCeXRlcygpOwogCiAgICAgZW5jb2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IGY4YjdlZGNmNDQ5MS4uZTE5NDA3
MzcyODY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCkBAIC00MjYsNyArNDI2LDcgQEAg
Ym9vbCBVc2VyRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEFQSTo6
T2JqZWN0PiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGFSZWZlcmVu
Y2UpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdCh7IGRhdGFSZWZlcmVuY2UgfSk7CisgICAgICAg
IHJlc3VsdCA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVz
KHsgZGF0YVJlZmVyZW5jZSB9KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA1NDU5ZDJlM2Jm
ODUuLjMwMTQzMjA4Mjc4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCkBAIC0xMTI4LDcgKzExMjgsNyBAQCAtICh2b2lkKV9ldmFsdWF0ZUph
dmFTY3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJP
T0wpYQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBhcmd1bWVudHNN
YXAtPnNldChrZXksIHNlcmlhbGl6ZWRWYWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLnRv
V2lyZUJ5dGVzKCkpOworICAgICAgICBhcmd1bWVudHNNYXAtPnNldChrZXksIHNlcmlhbGl6ZWRW
YWx1ZS0+aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLndpcmVCeXRlcygpKTsKICAgICB9CiAKICAg
ICBpZiAoZXJyb3JNZXNzYWdlICYmIGhhbmRsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGE4MDY1NWJmZWRmYy4uY2RiZDM0
NWEyYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
SW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9u
Q29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgogICAg
ICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRh
KCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CisgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21X
aXJlQnl0ZXMoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6
ZSgpIH0pLnB0cigpIH0gfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMjMzLDcgKzIz
Myw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1
YXRlU2NyaXB0SW5FeHRlbnNpb25UYWIoY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmFkb3B0KHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0
cigpIH0gfSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlLmRhdGEo
KSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAgICAg
fSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWJi
ZTczOTYyMDUyLi4zOGRlZWFhMmZiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAKQEAgLTM0MCwxNSArMzQwLDE1IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZVBy
CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghaGFuZGxlci0+Y2xpZW50KCkuc3VwcG9ydHNB
c3luY1JlcGx5KCkpIHsKLSAgICAgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2Uo
KnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3Jl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KSk7CisgICAg
ICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlKCpwYWdlLCBXVEZNb3ZlKGZyYW1l
SW5mb0RhdGEpLCBoYW5kbGVyLT53b3JsZCgpLCAgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKHsgZGF0YVJlZmVyZW5jZSB9KSk7CiAgICAgICAgIHJl
cGx5KHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGhhbmRsZXItPmNs
aWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFzeW5jUmVwbHkoKnBhZ2UsIFdURk1vdmUoZnJhbWVJ
bmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KSwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpIG11dGFibGUgeworICAgIGhhbmRsZXItPmNsaWVudCgpLmRpZFBvc3RNZXNzYWdlV2l0aEFz
eW5jUmVwbHkoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIGhhbmRsZXItPndvcmxkKCks
ICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBk
YXRhUmVmZXJlbmNlIH0pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7
CiAgICAgICAgIGlmIChlcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAgICAgICAgIEFTU0VS
VCh2YWx1ZSk7Ci0gICAgICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0
aW9uKCkudG9XaXJlQnl0ZXMoKSB9LCB7IH0pOworICAgICAgICAgICAgcmVwbHkoeyB2YWx1ZS0+
aW50ZXJuYWxSZXByZXNlbnRhdGlvbigpLndpcmVCeXRlcygpIH0sIHsgfSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKaW5kZXggODU1Mjg0NTcwZWViLi4yOWI2MjA3ZmNlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDM5OSw3ICs0Mzk5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0
UGFyYW1ldGVycyYmIHAKICAgICAgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uKG1ha2VV
bmV4cGVjdGVkKFdURk1vdmUoKmRldGFpbHMpKSk7CiAgICAgICAgIGlmIChkYXRhUmVmZXJlbmNl
LmVtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbih7IG51bGxwdHIg
fSk7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoVmVjdG9yKGRhdGFSZWZlcmVuY2UpKS5wdHIoKSB9KTsKKyAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbih7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5
dGVzKFZlY3RvcihkYXRhUmVmZXJlbmNlKSkucHRyKCkgfSk7CiAgICAgfSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlF
eHRlbnNpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcAppbmRleCBlODQwOTlhM2Rh
MzguLmI5Yzc5NmFlMjE5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
c3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyLmNwcApAQCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNp
b25Db250cm9sbGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPndp
cmVCeXRlcygpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKQEAg
LTQzOCw3ICs0MzgsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6
ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJl
c3VsdFZhbHVlLT5kYXRhKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKSwgc3Rk
OjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCmluZGV4IDRiYTk5MDE5NDA1Yi4uMzMwZGE2YWY3ZWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtMjc4LDcgKzI3OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih2YWx1ZS5wdHIoKSwgeyB9KTsKICAgICAg
ICAgfTsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdlUHJveHlJZGVudGlm
aWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNl
KHZhbHVlLT5kYXRhKCkpKSwgV1RGTW92ZShtZXNzYWdlUmVwbHlIYW5kbGVyKSwgbV9jb250cm9s
bGVyLT5pZGVudGlmaWVyKCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT53ZWJQYWdl
UHJveHlJZGVudGlmaWVyKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpE
YXRhUmVmZXJlbmNlKHZhbHVlLT53aXJlQnl0ZXMoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhh
bmRsZXIpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRy
PFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25T
dGF0ZUNvbnZlcnNpb24uY3BwCmluZGV4IGJjZDk4NzQ5YzJjZC4uNDJiNGUwMGYwYmY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24uY3BwCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRp
YyBGcmFtZVN0YXRlIHRvRnJhbWVTdGF0ZShjb25zdCBIaXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0p
CiAKICAgICBmcmFtZVN0YXRlLnNldERvY3VtZW50U3RhdGUoaGlzdG9yeUl0ZW0uZG9jdW1lbnRT
dGF0ZSgpKTsKICAgICBpZiAoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gc3RhdGVPYmpl
Y3QgPSBoaXN0b3J5SXRlbS5zdGF0ZU9iamVjdCgpKQotICAgICAgICBmcmFtZVN0YXRlLnN0YXRl
T2JqZWN0RGF0YSA9IHN0YXRlT2JqZWN0LT5kYXRhKCk7CisgICAgICAgIGZyYW1lU3RhdGUuc3Rh
dGVPYmplY3REYXRhID0gc3RhdGVPYmplY3QtPndpcmVCeXRlcygpOwogCiAgICAgZnJhbWVTdGF0
ZS5kb2N1bWVudFNlcXVlbmNlTnVtYmVyID0gaGlzdG9yeUl0ZW0uZG9jdW1lbnRTZXF1ZW5jZU51
bWJlcigpOwogICAgIGZyYW1lU3RhdGUuaXRlbVNlcXVlbmNlTnVtYmVyID0gaGlzdG9yeUl0ZW0u
aXRlbVNlcXVlbmNlTnVtYmVyKCk7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlGcmFtZVN0YXRlKEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSwgY29uc3QgRnJhbWVTdGF0ZSYg
ZnJhbWVTdGEKIAogICAgIGlmIChmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSkgewogICAgICAg
ICBWZWN0b3I8dWludDhfdD4gc3RhdGVPYmplY3REYXRhID0gZnJhbWVTdGF0ZS5zdGF0ZU9iamVj
dERhdGEudmFsdWUoKTsKLSAgICAgICAgaGlzdG9yeUl0ZW0uc2V0U3RhdGVPYmplY3QoU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKHN0YXRlT2JqZWN0RGF0YSkpKTsKKyAgICAg
ICAgaGlzdG9yeUl0ZW0uc2V0U3RhdGVPYmplY3QoU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoc3RhdGVPYmplY3REYXRhKSkpOwogICAgIH0KIAogICAg
IGhpc3RvcnlJdGVtLnNldERvY3VtZW50U2VxdWVuY2VOdW1iZXIoZnJhbWVTdGF0ZS5kb2N1bWVu
dFNlcXVlbmNlTnVtYmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKaW5kZXggZjM2MzZjYWJkNjVkLi45NjdjZWI4ZmNiYTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzY1LDcgKzM3NjUsNyBA
QCB2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcgogCiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBk
YXRhUmVmZXJlbmNlOwogICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAgICAg
ICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAg
ICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5dGVz
KCk7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwog
ICAgICAgICBpZiAoIXJlc3VsdCkK
</data>
<flag name="commit-queue"
          id="480651"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453325</attachid>
            <date>2022-02-26 23:41:36 -0800</date>
            <delta_ts>2022-02-26 23:55:29 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>237241_wip.patch</filename>
            <type>text/plain</type>
            <size>41000</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNwcAppbmRleCBh
MzYxMTEzZGRjNTIuLjcyODI1NTQwY2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlZhbHVlLmNwcApAQCAtMzYsNyArMzYsNyBAQCBJREJWYWx1ZTo6SURCVmFs
dWUoKQogfQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVl
JiBzY3JpcHRWYWx1ZSkKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6Y29weVZl
Y3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVm
ZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1fYmxvYlVS
THMoc2NyaXB0VmFsdWUuYmxvYlVSTHMoKSkKIHsKIH0KQEAgLTQ3LDcgKzQ3LDcgQEAgSURCVmFs
dWU6OklEQlZhbHVlKGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKIH0KIAogSURC
VmFsdWU6OklEQlZhbHVlKGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JGaWxlUGF0aHMpCi0gICAgOiBtX2RhdGEoVGhyZWFkU2FmZURhdGFCdWZmZXI6OmNvcHlWZWN0
b3Ioc2NyaXB0VmFsdWUuZGF0YSgpKSkKKyAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZl
cjo6Y29weVZlY3RvcihzY3JpcHRWYWx1ZS53aXJlQnl0ZXMoKSkpCiAgICAgLCBtX2Jsb2JVUkxz
KGJsb2JVUkxzKQogICAgICwgbV9ibG9iRmlsZVBhdGhzKGJsb2JGaWxlUGF0aHMpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNw
cAppbmRleCBhNWIyOGM4NTNmYmIuLjQ0YTU2NThmNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC05MCwxMiAr
OTAsOSBAQCBFeGNlcHRpb25PcjxSZWY8QXVkaW9Xb3JrbGV0Tm9kZT4+IEF1ZGlvV29ya2xldE5v
ZGU6OmNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JgogICAgIHsKICAgICAgICAgYXV0byBsb2Nr
ID0gSlNDOjpKU0xvY2tIb2xkZXIgeyAmZ2xvYmFsT2JqZWN0IH07CiAgICAgICAgIGF1dG8qIGpz
T3B0aW9ucyA9IGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhnbG9iYWxPYmplY3QsICpKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLCBvcHRpb25zKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgICAgICBhdXRvIHNlcmlhbGl6
ZWRWYWx1ZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdCwganNP
cHRpb25zLCB7IH0sIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOwotICAgICAgICBpZiAoc2VyaWFsaXplZFZhbHVlLmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICBzZXJpYWxpemVkT3B0aW9ucyA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwganNPcHRpb25zLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywg
U2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICAgICAgaWYgKCFz
ZXJpYWxpemVkT3B0aW9ucykKICAgICAgICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VyaWFsaXplZE9wdGlvbnMgPSBzZXJpYWxpemVkVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCk7
CiAgICAgfQogCiAgICAgYXV0byBwYXJhbWV0ZXJEYXRhID0gV1RGTW92ZShvcHRpb25zLnBhcmFt
ZXRlckRhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNDI1MmE1NjQ3NjNiLi41ZWMyMjFiZDIzMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcApAQCAtNDEwMiwxMiArNDEwMiw2IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKLVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikK
LSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCi17Ci0gICAgbV9tZW1vcnlDb3N0ID0gY29t
cHV0ZU1lbW9yeUNvc3QoKTsKLX0KLQogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJy
YXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQogI2lmIEVO
QUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRS
VENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKQEAgLTQyNjksNTEgKzQy
NjMsNiBAQCBzdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25GYWlsdXJl
KFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCiAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciB9OwogfQogCi1SZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlvbnMpCi17
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhhbmRsZT4g
YmxvYkhhbmRsZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15TWVzc2Fn
ZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdlQml0bWFw
czsKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZlY3RvcjxS
ZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfUlRDKQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiBkdW1t
eVJUQ0RhdGFDaGFubmVsczsKLSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBX
YXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVBcnJheSBk
dW1teU1lbW9yeUhhbmRsZXM7Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkg
ZHVtbXlTaGFyZWRCdWZmZXJzOwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXplcjo6c2Vy
aWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9ydHMsIGR1
bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2VzLAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5uZWxzLAot
I2VuZGlmCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVsZXMsCi0g
ICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFuZGxlcywg
YnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRCdWZmZXJz
KTsKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGR1
bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFsaXphdGlvbiBpcyBvbmx5
IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNtOjpNZW1vcnkgc2VyaWFs
aXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSNl
bmRpZgotCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJyb3JNb2Rl
OjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXphdGlvbkZh
aWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAgIGlmIChjb2RlICE9IFNlcmlh
bGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCi0gICAgICAgIHJldHVy
biBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRsZXMsIG51bGxwdHIsIG51bGxwdHIsIHsgfSkp
OwotfQotCiBzdGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMpCiB7CiAgICAgSGFzaFNldDxJbWFnZUJpdG1h
cCo+IHZpc2l0ZWQ7CkBAIC00MzU0LDcgKzQzMDMsMTYgQEAgc3RhdGljIGJvb2wgY2FuRGV0YWNo
UlRDRGF0YUNoYW5uZWxzKGNvbnN0IFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiYgY2hhbm5l
bHMKIH0KICNlbmRpZgogCi1FeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4mJiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBv
cnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQorUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25FcnJvck1v
ZGUgdGhyb3dFeGNlcHRpb25zLCBTZXJpYWxpemF0aW9uQ29udGV4dCBzZXJpYWxpemF0aW9uQ29u
dGV4dCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlQb3J0czsKKyAg
ICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShnbG9iYWxPYmplY3QsIHZhbHVlLCB7IH0sIGR1bW15UG9y
dHMsIHRocm93RXhjZXB0aW9ucywgc2VyaWFsaXphdGlvbkNvbnRleHQpOworICAgIGlmIChyZXN1
bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVmVjdG9yPEpTQzo6U3Ry
b25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyTGlzdCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdl
UG9ydD4+JiBtZXNzYWdlUG9ydHMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUgdGhyb3dFeGNlcHRp
b25zLCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQogewogICAgIFZNJiB2bSA9IGxleGlj
YWxHbG9iYWxPYmplY3Qudm0oKTsKICAgICBWZWN0b3I8UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
PiBhcnJheUJ1ZmZlcnM7CkBAIC00NDQzLDYgKzQ0MDEsOSBAQCBFeGNlcHRpb25PcjxSZWY8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9i
YWxPYgogI2VuZGlmCiAgICAgICAgIGJsb2JIYW5kbGVzLCBidWZmZXIsIGNvbnRleHQsICpzaGFy
ZWRCdWZmZXJzKTsKIAorICAgIGlmICh0aHJvd0V4Y2VwdGlvbnMgPT0gU2VyaWFsaXphdGlvbkVy
cm9yTW9kZTo6VGhyb3dpbmcpCisgICAgICAgIG1heWJlVGhyb3dFeGNlcHRpb25JZlNlcmlhbGl6
YXRpb25GYWlsZWQobGV4aWNhbEdsb2JhbE9iamVjdCwgY29kZSk7CisKICAgICBpZiAoY29kZSAh
PSBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZTo6U3VjY2Vzc2Z1bGx5Q29tcGxldGVkKQogICAgICAg
ICByZXR1cm4gZXhjZXB0aW9uRm9yU2VyaWFsaXphdGlvbkZhaWx1cmUoY29kZSk7CiAKQEAgLTQ1
MDQsNyArNDQ2NSw3IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlKEpTQ29udGV4dFJlZiBvcmlnaW5DCiAgICAgcmV0dXJuIHNlcmlh
bGl6ZWRWYWx1ZTsKIH0KIAotU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmco
KQorU3RyaW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6dG9TdHJpbmcoKSBjb25zdAogewogICAg
IHJldHVybiBDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVTdHJpbmcobV9kYXRhKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKaW5kZXggZWYzN2YxZDBjYTQ2Li5lYTZmMWNkY2ZhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC03MSwxNSArNzEs
MTAgQEAgREVDTEFSRV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNj
cmlwdFZhbHVlKTsKIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRF9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwog
cHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFs
aXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93aW5nKTsKLQot
ICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPj4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFZlY3Rv
cjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlciwgVmVjdG9yPFJlZlB0cjxN
ZXNzYWdlUG9ydD4+JiwgU2VyaWFsaXphdGlvbkNvbnRleHQgPSBTZXJpYWxpemF0aW9uQ29udGV4
dDo6RGVmYXVsdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6
SlNWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiYmIHRyYW5zZmVyLCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlID0gU2Vy
aWFsaXphdGlvbkVycm9yTW9kZTo6Tm9uVGhyb3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0g
U2VyaWFsaXphdGlvbkNvbnRleHQ6OkRlZmF1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVj
dCYsIEpTQzo6SlNWYWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25F
cnJvck1vZGU6OlRocm93aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dCA9IFNlcmlhbGl6YXRpb25D
b250ZXh0OjpEZWZhdWx0KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShX
VEZNb3ZlKGJ1ZmZlcikpKTsKLSAgICB9CiAKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gbnVsbFZhbHVlKCk7CiAKQEAgLTg5LDEzICs4NCwxMiBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgdWludDMyX3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0
cmluZygpOworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAgICAgLy8gQVBJIGltcGxl
bWVudGF0aW9uIGhlbHBlcnMuIFRoZXNlIGRvbid0IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZv
ciBBcnJheUJ1ZmZlcnMgb3IgTWVzc2FnZVBvcnRzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRp
YyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1Zh
bHVlUmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFs
dWVSZWYgZGVzZXJpYWxpemUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwog
Ci0gICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CiAgICAgYm9vbCBoYXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVz
LmlzRW1wdHkoKTsgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKQEAg
LTEwNiw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkpOwogICAgIH0KLSAgICBj
b25zdCBWZWN0b3I8dWludDhfdD4mIHRvV2lyZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisgICAgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3aXJlQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2RhdGE7IH0KIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVu
Y29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTExNiwxMCArMTEw
LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUo
KTsKIAogcHJpdmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4mJgorICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVm
ZmVyQ29udGVudHNBcnJheT4mJiA9IG51bGxwdHIKICNpZiBFTkFCTEUoV0VCX1JUQykKLSAgICAg
ICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCisg
ICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4m
JiA9IHsgfQogI2VuZGlmCiAgICAgICAgICk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RD
aGFubmVsLmNwcAppbmRleCBlNzYyNTNjZDY0OGIuLjJiNmVhYjNhNWNkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVsLmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQnJv
YWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
JiYgbWVzc2FnZSkKIAogICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBbdGhpcywgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbV9pc0Nsb3NlZCAmJiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCi0gICAgICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6
Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNzYWdlKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50
KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUobWVzc2FnZSksIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSkpOwogICAgIH0pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCmluZGV4IDI4OGY0NjI4NjJhOS4uNmEzMjc5YjUy
MTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtNTIsOCArNTIsOCBAQCBp
bmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
SW5pdCYmIGluaXRpYWxpemVyLCBJcwogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291
cmNlLCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKLSAgICA6IEV2ZW50KGV2
ZW50TmFtZXMoKS5tZXNzYWdlRXZlbnQsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8p
CitpbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlw
ZSwgRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKKyAgICA6IEV2ZW50KHR5cGUsIENh
bkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCiAgICAgLCBtX2RhdGEoV1RGTW92ZShkYXRh
KSkKICAgICAsIG1fb3JpZ2luKG9yaWdpbikKICAgICAsIG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50
SWQpCkBAIC02MiwzNyArNjIsMTQgQEAgaW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50
KERhdGFUeXBlJiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFMKIHsKIH0KIAot
aW5saW5lIE1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpCi0gICAgOiBFdmVudCh0eXBlLCBDYW5CdWJibGU6
Ok5vLCBJc0NhbmNlbGFibGU6Ok5vKQotICAgICwgbV9kYXRhKFdURk1vdmUoZGF0YSkpCi0gICAg
LCBtX29yaWdpbihvcmlnaW4pCi0gICAgLCBtX2xhc3RFdmVudElkKGxhc3RFdmVudElkKQotewot
fQotCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgc3RkOjpv
cHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlKQotewotICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3ZlKGRhdGEpLCBvcmlnaW4sIGxhc3RFdmVudElk
LCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMpKSk7Ci19Ci0KLVJlZjxNZXNzYWdlRXZl
bnQ+IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIFJlZjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0
cmluZyYgbGFzdEV2ZW50SWQpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2
ZW50KHR5cGUsIFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQpKTsKLX0KLQotUmVm
PE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBj
b25zdCBTdHJpbmcmIG9yaWdpbikKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdl
RXZlbnQoZGF0YSwgb3JpZ2luKSk7Ci19Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1lc3NhZ2VFdmVu
dDo6Y3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1l
c3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwg
RGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0
RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNlLCBWZWN0
b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBNZXNzYWdlRXZlbnQoV1RGTW92ZShkYXRhKSwgb3JpZ2luKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KHR5cGUsIFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFz
dEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92ZShwb3J0cykpKTsKIH0KIAotUmVmPE1l
c3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoUmVmPEFycmF5QnVmZmVyPiYmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luKQorUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50Ojpj
cmVhdGUoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5n
JiBsYXN0RXZlbnRJZCwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRTb3VyY2U+JiYgc291cmNl
LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiBwb3J0cykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQoV1RGTW92ZShkYXRhKSwgb3JpZ2luKSk7CisgICAgcmV0
dXJuIGNyZWF0ZShldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50LCBXVEZNb3ZlKGRhdGEpLCBvcmln
aW4sIGxhc3RFdmVudElkLCBXVEZNb3ZlKHNvdXJjZSksIFdURk1vdmUocG9ydHMpKTsKIH0KIAog
UmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGVGb3JCaW5kaW5ncygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmgKaW5kZXggNjUxMDY5OTQyNDAwLi40NjY4ODA3YmNlNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTQ4LDExICs0OCwxMCBAQCB1c2luZyBNZXNz
YWdlRXZlbnRTb3VyY2UgPSBzdGQ6OnZhcmlhbnQ8UmVmUHRyPFdpbmRvd1Byb3h5PiwgUmVmUHRy
PE1lc3NhZ2VQb3J0PgogY2xhc3MgTWVzc2FnZUV2ZW50IGZpbmFsIDogcHVibGljIEV2ZW50IHsK
ICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lc3NhZ2VFdmVudCk7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0
Pj4mJiwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4g
PSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVz
c2FnZUV2ZW50U291cmNlPiYmIHNvdXJjZSA9IHN0ZDo6bnVsbG9wdCk7Ci0gICAgc3RhdGljIFJl
ZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBs
YXN0RXZlbnRJZCk7Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBT
dHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9KTsKLSAgICBzdGF0aWMgUmVm
PE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxCbG9iPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKLSAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKFJlZjxBcnJheUJ1ZmZl
cj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSk7CisgICAgc3RydWN0IEpTVmFs
dWVUYWcgeyB9OworICAgIHVzaW5nIERhdGFUeXBlID0gc3RkOjp2YXJpYW50PEpTVmFsdWVUYWcs
IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBTdHJpbmcsIFJlZjxCbG9iPiwgUmVmPEFycmF5
QnVmZmVyPj47CisgICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9t
U3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwgY29u
c3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZlbnRT
b3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmID0g
eyB9KTsKKyAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlKERhdGFUeXBlJiYsIGNv
bnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0geyB9
LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwgVmVj
dG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOwogICAgIHN0YXRpYyBSZWY8TWVzc2Fn
ZUV2ZW50PiBjcmVhdGVGb3JCaW5kaW5ncygpOwogCiAgICAgc3RydWN0IEluaXQgOiBFdmVudElu
aXQgewpAQCAtNzMsOCArNzIsNiBAQCBwdWJsaWM6CiAgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxN
ZXNzYWdlRXZlbnRTb3VyY2U+JiBzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZTsgfQog
ICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgcG9ydHMoKSBjb25zdCB7IHJl
dHVybiBtX3BvcnRzOyB9CiAKLSAgICBzdHJ1Y3QgSlNWYWx1ZVRhZyB7IH07Ci0gICAgdXNpbmcg
RGF0YVR5cGUgPSBzdGQ6OnZhcmlhbnQ8SlNWYWx1ZVRhZywgUmVmPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4sIFN0cmluZywgUmVmPEJsb2I+LCBSZWY8QXJyYXlCdWZmZXI+PjsKICAgICBjb25zdCBE
YXRhVHlwZSYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQogCiAgICAgSlNWYWx1ZUlu
V3JhcHBlZE9iamVjdCYganNEYXRhKCkgeyByZXR1cm4gbV9qc0RhdGE7IH0KQEAgLTg2LDggKzgz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdl
RXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgSW5pdCYmLCBJc1RydXN0ZWQpOwotICAgIE1l
c3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVu
dElkKTsKLSAgICBNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiwgY29uc3QgU3RyaW5nJiBvcmlnaW4s
IGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2
ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
JiA9IHsgfSk7CisgICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIERhdGFU
eXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkID0g
eyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9wdCwg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOwogCiAgICAgRXZlbnRJbnRlcmZh
Y2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKaW5kZXggMTc3ZjhlNDNkNDU4Li45MjUxZTg0NjZkMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcApAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3Bh
dGNoTWVzc2FnZXMoKQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGF1dG8g
cG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygqY29udGV4dCwgV1RGTW92ZShtZXNz
YWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAgICAgICAgICAgIC8vIFBlciBzcGVjaWZpY2F0aW9u
LCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBoYXMgYSB0YXNrIHNvdXJjZSBjYWxsZWQgdGhlIHBv
cnQgbWVzc2FnZSBxdWV1ZS4KLSAgICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgq
dGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAg
ICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9z
dGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHsgfSwgV1RGTW92ZShwb3J0cykpKTsKICAgICAgICAg
fQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2MGM3NTlkYzhhZjMu
LjIzNzFiM2M3Y2I2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTEyLDcgKzkx
Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoSlNDOjpKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjCiAgICAgfQogCiAgICAgVmVjdG9yPFJlZlB0
cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmNyZWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlVmFsdWUsIFdU
Rk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V2lu
ZG93UG9zdE1lc3NhZ2UpOworICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBtZXNzYWdlVmFsdWUsIFdURk1vdmUo
b3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJv
d2luZywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldpbmRvd1Bvc3RNZXNzYWdlKTsKICAgICBpZiAo
bWVzc2FnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBtZXNzYWdlRGF0YS5y
ZWxlYXNlRXhjZXB0aW9uKCk7CiAKQEAgLTk2Myw3ICs5NjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBET01XaW5kb3c6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9i
YWxPYmplYwogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRvciB1c2VyR2VzdHVyZUluZGljYXRv
cih1c2VyR2VzdHVyZVRvRm9yd2FyZCk7CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERpc3BhdGNoUG9zdE1lc3NhZ2UoZnJhbWUsIHBvc3RNZXNzYWdlSWRlbnRpZmllcik7
CiAKLSAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQb3J0
OjplbnRhbmdsZVBvcnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQ
b3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7
IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8gc3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVu
dFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdpbmRvd1Byb3h5KSkpIDogc3RkOjpudWxsb3B0KTsK
KyAgICAgICAgYXV0byBldmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2Fn
ZS5yZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgaW5jdW1iZW50V2luZG93UHJv
eHkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoTWVzc2FnZUV2ZW50U291cmNlKFdURk1vdmUoaW5jdW1i
ZW50V2luZG93UHJveHkpKSkgOiBzdGQ6Om51bGxvcHQsIE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBv
cnRzKCpkb2N1bWVudCgpLCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpKTsKICAg
ICAgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiAKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBwb3N0TWVzc2FnZUlkZW50aWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmNwcAppbmRleCA4Y2M4ZGYxYWMyNmMuLjcw
NzNlZjYxNzNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQzMSwxNCAr
NDMxLDEzIEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KCkKIAogICAg
IGF1dG8mIG5hbWUgPSBtX2V2ZW50TmFtZS5pc0VtcHR5KCkgPyBldmVudE5hbWVzKCkubWVzc2Fn
ZUV2ZW50IDogbV9ldmVudE5hbWU7CiAKLSAgICAvLyBPbWl0IHRoZSB0cmFpbGluZyAiXG4iIGNo
YXJhY3Rlci4KICAgICBBU1NFUlQoIW1fZGF0YS5pc0VtcHR5KCkpOwotICAgIHVuc2lnbmVkIHNp
emUgPSBtX2RhdGEuc2l6ZSgpIC0gMTsKLSAgICBhdXRvIGRhdGEgPSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSh7IG1fZGF0YS5kYXRhKCksIHNpemUgfSk7Ci0gICAgUkVMRUFTRV9BU1NF
UlQoZGF0YSk7CisKKyAgICAvLyBPbWl0IHRoZSB0cmFpbGluZyAiXG4iIGNoYXJhY3Rlci4KKyAg
ICBTdHJpbmcgZGF0YShtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpIC0gMSk7CiAgICAgbV9k
YXRhID0geyB9OwogCi0gICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShuYW1l
LCBkYXRhLnJlbGVhc2VOb25OdWxsKCksIG1fZXZlbnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2ZW50
SWQpKTsKKyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG5hbWUsIFdURk1v
dmUoZGF0YSksIG1fZXZlbnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2ZW50SWQpKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0
b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggZjFkYTJjODVh
MDA4Li5kNzhhN2M0ZmVkOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMjM5LDcgKzIz
OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhCiAKICAgICBDaGVja2VkPHVpbnQ2NF90PiBw
YXlsb2FkU2l6ZSA9IHRpdGxlU2l6ZTsKICAgICBwYXlsb2FkU2l6ZSArPSB1cmxTaXplOwotICAg
IHBheWxvYWRTaXplICs9IGRhdGEgPyBkYXRhLT5kYXRhKCkuc2l6ZSgpIDogMDsKKyAgICBwYXls
b2FkU2l6ZSArPSBkYXRhID8gZGF0YS0+d2lyZUJ5dGVzKCkuc2l6ZSgpIDogMDsKIAogICAgIENo
ZWNrZWQ8dWludDY0X3Q+IG5ld1RvdGFsVXNhZ2UgPSBtYWluSGlzdG9yeS5tX3RvdGFsU3RhdGVP
YmplY3RVc2FnZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldv
cmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJH
bG9iYWxTY29wZS5jcHAKaW5kZXggM2E1ZmI3ZWNmMTM5Li5iMTUxZTkzNDBiNDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvV2luZG93T3JXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAt
NDksNyArNDksNyBAQCB2b2lkIFdpbmRvd09yV29ya2VyR2xvYmFsU2NvcGU6OnJlcG9ydEVycm9y
KEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQwogRXhjZXB0aW9uT3I8SlNDOjpK
U1ZhbHVlPiBXaW5kb3dPcldvcmtlckdsb2JhbFNjb3BlOjpzdHJ1Y3R1cmVkQ2xvbmUoSlNET01H
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiByZWxl
dmFudEdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTdHJ1Y3R1cmVkU2VyaWFsaXpl
T3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBv
cnRzOwotICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwg
cG9ydHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXaW5kb3dQb3N0TWVzc2FnZSk7CisgICAgYXV0
byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGxleGljYWxHbG9i
YWxPYmplY3QsIHZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2VyaWFs
aXphdGlvbkVycm9yTW9kZTo6Tm9uVGhyb3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXaW5k
b3dQb3N0TWVzc2FnZSk7CiAgICAgaWYgKG1lc3NhZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAg
ICAgICByZXR1cm4gbWVzc2FnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZmOTc0NGU0Li5kMjJiOWUzZjI0YzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTM4NDEsMTQgKzM4NDEsMTQgQEAg
RXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbHM6OmdldEN1cnJlbnRDdXJzb3JJbmZvKCkKIAog
UmVmPEFycmF5QnVmZmVyPiBJbnRlcm5hbHM6OnNlcmlhbGl6ZU9iamVjdChjb25zdCBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgYXV0byYgYnl0ZXMg
PSB2YWx1ZS0+ZGF0YSgpOworICAgIGF1dG8mIGJ5dGVzID0gdmFsdWUtPndpcmVCeXRlcygpOwog
ICAgIHJldHVybiBBcnJheUJ1ZmZlcjo6Y3JlYXRlKGJ5dGVzLmRhdGEoKSwgYnl0ZXMuc2l6ZSgp
KTsKIH0KIAogUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gSW50ZXJuYWxzOjpkZXNlcmlhbGl6
ZUJ1ZmZlcihBcnJheUJ1ZmZlciYgYnVmZmVyKSBjb25zdAogewogICAgIFZlY3Rvcjx1aW50OF90
PiBieXRlcyB7IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihidWZmZXIuZGF0YSgpKSwgYnVm
ZmVyLmJ5dGVMZW5ndGgoKSB9OwotICAgIHJldHVybiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFk
b3B0KFdURk1vdmUoYnl0ZXMpKTsKKyAgICByZXR1cm4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYnl0ZXMpKTsKIH0KIAogYm9vbCBJbnRlcm5hbHM6
OmlzRnJvbUN1cnJlbnRXb3JsZChKU0M6OkpTVmFsdWUgdmFsdWUpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IGQzZmJmZTZjZGEzYS4uNjM4ZGIxODk1NTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL0RlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODIsNyArODIs
NyBAQCB2b2lkIERlZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rp
b24oKQogRXhjZXB0aW9uT3I8dm9pZD4gRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGU6OnBvc3RN
ZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbWVzc2FnZVZh
bHVlLCBTdHJ1Y3R1cmVkU2VyaWFsaXplT3B0aW9ucyYmIG9wdGlvbnMpCiB7CiAgICAgVmVjdG9y
PFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0aW9u
cy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3Nh
Z2UpOworICAgIGF1dG8gbWVzc2FnZSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJp
YWxpemF0aW9uRXJyb3JNb2RlOjpOb25UaHJvd2luZywgU2VyaWFsaXphdGlvbkNvbnRleHQ6Oldv
cmtlclBvc3RNZXNzYWdlKTsKICAgICBpZiAobWVzc2FnZS5oYXNFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIG1lc3NhZ2UucmVsZWFzZUV4Y2VwdGlvbigpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlci5jcHAKaW5kZXggNDlmMDc5NzY1N2U4Li5iMGE3NjMzYWY0MTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlci5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBXb3JrZXI6On5Xb3JrZXIoKQogRXhj
ZXB0aW9uT3I8dm9pZD4gV29ya2VyOjpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgU3RydWN0dXJlZFNlcmlhbGl6ZU9wdGlv
bnMmJiBvcHRpb25zKQogewogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsK
LSAgICBhdXRvIG1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwg
bWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXph
dGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICBhdXRvIG1lc3NhZ2UgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9w
dGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6Tm9uVGhyb3dp
bmcsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CiAgICAgaWYgKG1l
c3NhZ2UuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBtZXNzYWdlLnJlbGVhc2VFeGNl
cHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNz
YWdpbmdQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAppbmRleCA5OWQxYmMwMjZjYTEuLjZhZDIxNzc2MzU1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTEwNCw3ICsxMDQs
NyBAQCB2b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZN
b3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpQb3N0
ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNz
YWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICBBY3RpdmVET01PYmplY3Q6
OnF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpQb3N0
ZWRNZXNzYWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpLCB7IH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHBvcnRzKSkpOwog
ICAgIH0pOwogfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94
eTo6cG9zdE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQK
ICAgICAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC5p
c1dvcmtlckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nh
c3Q8RGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUmPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdU
Rk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0
Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNz
YWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0s
IHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgICAgICBjb250ZXh0LnRo
cmVhZCgpLndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0
KGNvbnRleHQuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXIuY3BwCmluZGV4IDVhZDk5MTJl
M2IwYi4uOGZiM2M5NzNmMDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvU2VydmljZVdvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gU2VydmljZVdvcmtlcjo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0LAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKLSAgICBhdXRvIG1lc3Nh
Z2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtZXNz
YWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9u
Q29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOworICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShnbG9iYWxPYmplY3QsIG1lc3NhZ2VWYWx1ZSwgV1RG
TW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRpb25FcnJvck1vZGU6Ok5v
blRocm93aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOwogICAg
IGlmIChtZXNzYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VE
YXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCmluZGV4IDU5NmI5Y2RjOTk0Zi4u
OWYzNmZmYmI0MmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJDbGllbnQuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFN0cmluZyBTZXJ2
aWNlV29ya2VyQ2xpZW50OjppZCgpIGNvbnN0CiBFeGNlcHRpb25Pcjx2b2lkPiBTZXJ2aWNlV29y
a2VyQ2xpZW50Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFN0cnVjdHVyZWRTZXJpYWxpemVPcHRpb25zJiYg
b3B0aW9ucykKIHsKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAg
YXV0byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGdsb2JhbE9i
amVjdCwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2Vy
aWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKKyAgICBhdXRvIG1lc3NhZ2VE
YXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBtZXNzYWdl
VmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlOjpOb25UaHJvd2luZywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNz
YWdlKTsKICAgICBpZiAobWVzc2FnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBtZXNzYWdlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAppbmRl
eCBmMjE0YWM2YTAwNzYuLjQxZjM0YzYxZDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcApAQCAtNDM4
LDcgKzQzOCw3IEBAIHZvaWQgU2VydmljZVdvcmtlckNvbnRhaW5lcjo6cG9zdE1lc3NhZ2UoTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBTZXJ2CiAgICAgYXV0byYgY29udGV4dCA9
ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgTWVzc2FnZUV2ZW50U291cmNlIHNvdXJj
ZSA9IFJlZlB0cjxTZXJ2aWNlV29ya2VyPiB7IFNlcnZpY2VXb3JrZXI6OmdldE9yQ3JlYXRlKGNv
bnRleHQsIFdURk1vdmUoc291cmNlRGF0YSkpIH07CiAKLSAgICBhdXRvIG1lc3NhZ2VFdmVudCA9
IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKGNvbnRleHQs
IFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSksIG1lc3NhZ2UubWVzc2FnZS5yZWxl
YXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpKTsKKyAgICBh
dXRvIG1lc3NhZ2VFdmVudCA9IE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5y
ZWxlYXNlTm9uTnVsbCgpLCBzb3VyY2VPcmlnaW4sIHsgfSwgV1RGTW92ZShzb3VyY2UpLCBNZXNz
YWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJy
ZWRQb3J0cykpKTsKICAgICBpZiAobV9zaG91bGREZWZlck1lc3NhZ2VFdmVudHMpCiAgICAgICAg
IG1fZGVmZXJyZWRNZXNzYWdlRXZlbnRzLmFwcGVuZChXVEZNb3ZlKG1lc3NhZ2VFdmVudCkpOwog
ICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQv
U2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDEyYjhlMWFjOGQwMS4uOWZlOGRiMzhl
YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgdm9pZCBTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6
cG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBTQ09QRV9SRUxFQVNFX0xPRygi
cG9zdENvbm5lY3RFdmVudDoiKTsKLSAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKICAgICBhdXRv
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFu
c2ZlcnJlZFBvcnQpIH0pOwogICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CiAgICAgYXV0
byBwb3J0ID0gcG9ydHNbMF07CiAgICAgQVNTRVJUKHBvcnQpOwotICAgIGF1dG8gZXZlbnQgPSBN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgdmFsdWUucmVsZWFzZU5vbk51bGwo
KSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCwgV1RGTW92
ZShwb3J0cykpOwogICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVu
dCwgZmFsc2UsIGZhbHNlKTsKIAogICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCmluZGV4IDZmZTg1NzZhYzM4ZS4uNGRkYzgwZjE0ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC00OSw5ICs0
OSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKHNlcmlhbGl6ZWRWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgfQogICAg
IAotICAgIHN0YXRpYyBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBhZG9wdChWZWN0b3I8dWlu
dDhfdD4mJiBidWZmZXIpCisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNy
ZWF0ZUZyb21XaXJlQnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShidWZmZXIpKSkpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGVGcm9tV2lyZUJ5dGVzKFdURk1vdmUoYnVmZmVyKSkpKTsK
ICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZVJlZiBkZXNlcmlhbGl6ZShKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGNyZWF0ZUZyb21OU09iamVj
dChpZCk7CiAjZW5kaWYKIAotICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJpYWxpemVkU2NyaXB0VmFsdWUtPmRhdGEoKTsgfQorICAgIElQ
Qzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlKCkgY29uc3QgeyByZXR1cm4gbV9zZXJpYWxp
emVkU2NyaXB0VmFsdWUtPndpcmVCeXRlcygpOyB9CiAKICAgICBXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUmIGludGVybmFsUmVwcmVzZW50YXRpb24oKSB7IHJldHVybiBtX3NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9TZXNzaW9uU3RhdGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNw
cAppbmRleCBhMDhkZDE1ZDM1MTcuLmJlZTkzMmQwNTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvU2Vzc2lvblN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
ZXNzaW9uU3RhdGUuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBQYWdlU3RhdGU6OmVuY29k
ZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB0aXRsZSA8PCBt
YWluRnJhbWVTdGF0ZSA8PCAhIXNlc3Npb25TdGF0ZU9iamVjdDsKIAogICAgIGlmIChzZXNzaW9u
U3RhdGVPYmplY3QpCi0gICAgICAgIGVuY29kZXIgPDwgc2Vzc2lvblN0YXRlT2JqZWN0LT50b1dp
cmVCeXRlcygpOworICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZU9iamVjdC0+d2lyZUJ5
dGVzKCk7CiAKICAgICBlbmNvZGVyIDw8IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKaW5kZXggZjhiN2VkY2Y0NDkxLi5lMTk0MDczNzI4
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBib29s
IFVzZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmpl
Y3Q+JiByZXN1bHQpCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KTsKKyAgICAgICAgcmVz
dWx0ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBk
YXRhUmVmZXJlbmNlIH0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDU0NTlkMmUzYmY4NS4u
MzAxNDMyMDgyNzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KQEAgLTExMjgsNyArMTEyOCw3IEBAIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNj
cmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClh
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGFyZ3VtZW50c01hcC0+
c2V0KGtleSwgc2VyaWFsaXplZFZhbHVlLT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkudG9XaXJl
Qnl0ZXMoKSk7CisgICAgICAgIGFyZ3VtZW50c01hcC0+c2V0KGtleSwgc2VyaWFsaXplZFZhbHVl
LT5pbnRlcm5hbFJlcHJlc2VudGF0aW9uKCkud2lyZUJ5dGVzKCkpOwogICAgIH0KIAogICAgIGlm
IChlcnJvck1lc3NhZ2UgJiYgaGFuZGxlcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4
dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggYTgwNjU1YmZlZGZjLi5jZGJkMzQ1YTJi
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNw
ZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5
LmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250
cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgcmV0dXJuZWRWYWx1ZSB9KTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB7IEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChWZWN0b3IgeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwg
ZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVC
eXRlcyhWZWN0b3IgeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkg
fSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eTo6ZXZhbHVhdGVT
Y3JpcHRJbkV4dGVuc2lvblRhYihjb25zdAogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRv
cHQoeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkgfSkucHRyKCkg
fSB9KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBk
YXRhUmVmZXJlbmNlLnNpemUoKSB9KS5wdHIoKSB9IH0pOwogICAgICAgICB9KTsKICAgICB9KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA1YmJlNzM5
NjIwNTIuLjM4ZGVlYWEyZmIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcApAQCAtMzQwLDE1ICszNDAsMTUgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFoYW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5j
UmVwbHkoKSkgewotICAgICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFn
ZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pKTsKKyAgICAgICAg
aGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZv
RGF0YSksIGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHko
eyB9LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50
KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9E
YXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkg
bXV0YWJsZSB7CisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNS
ZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFS
ZWZlcmVuY2UgfSksIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKGVycm9yTWVzc2FnZS5pc051bGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZh
bHVlKTsKLSAgICAgICAgICAgIHJlcGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24o
KS50b1dpcmVCeXRlcygpIH0sIHsgfSk7CisgICAgICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRl
cm5hbFJlcHJlc2VudGF0aW9uKCkud2lyZUJ5dGVzKCkgfSwgeyB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAppbmRleCA4NTUyODQ1NzBlZWIuLjI5YjYyMDdmY2VjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00Mzk5LDcgKzQzOTksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzJiYgcAogICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24obWFrZVVuZXhw
ZWN0ZWQoV1RGTW92ZSgqZGV0YWlscykpKTsKICAgICAgICAgaWYgKGRhdGFSZWZlcmVuY2UuZW1w
dHkoKSkKICAgICAgICAgICAgIHJldHVybiBjYWxsYmFja0Z1bmN0aW9uKHsgbnVsbHB0ciB9KTsK
LSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbih7IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjph
ZG9wdChWZWN0b3IoZGF0YVJlZmVyZW5jZSkpLnB0cigpIH0pOworICAgICAgICBjYWxsYmFja0Z1
bmN0aW9uKHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMo
VmVjdG9yKGRhdGFSZWZlcmVuY2UpKS5wdHIoKSB9KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVu
c2lvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9X
ZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGU4NDA5OWEzZGEzOC4u
YjljNzk2YWUyMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVj
dG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xs
ZXIuY3BwCkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXI6OmV2YWx1YXRlU2NyaXB0Rm9yRXh0ZW5zaW9uKGNvbnN0IEluc3BlY3QKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNl
cmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpLCBzdGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5
dGVzKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKICAgICB9KTsKIH0KIApAQCAtNDM4
LDcgKzQzOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyOjpldmFs
dWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKGNvbnN0IEluc3BlCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0
VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPndpcmVCeXRlcygpLCBzdGQ6Om51
bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAKaW5kZXggNGJhOTkwMTk0MDViLi4zMzBkYTZhZjdlZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOwogICAgICAgICB9
OwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIo
KSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFs
dWUtPmRhdGEoKSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2NvbnRyb2xsZXIt
PmlkZW50aWZpZXIoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94
eUlkZW50aWZpZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFS
ZWZlcmVuY2UodmFsdWUtPndpcmVCeXRlcygpKSksIFdURk1vdmUobWVzc2FnZVJlcGx5SGFuZGxl
ciksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRl
Q29udmVyc2lvbi5jcHAKaW5kZXggYmNkOTg3NDljMmNkLi40MmI0ZTAwZjBiZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9uU3RhdGVD
b252ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIEZy
YW1lU3RhdGUgdG9GcmFtZVN0YXRlKGNvbnN0IEhpc3RvcnlJdGVtJiBoaXN0b3J5SXRlbSkKIAog
ICAgIGZyYW1lU3RhdGUuc2V0RG9jdW1lbnRTdGF0ZShoaXN0b3J5SXRlbS5kb2N1bWVudFN0YXRl
KCkpOwogICAgIGlmIChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzdGF0ZU9iamVjdCA9
IGhpc3RvcnlJdGVtLnN0YXRlT2JqZWN0KCkpCi0gICAgICAgIGZyYW1lU3RhdGUuc3RhdGVPYmpl
Y3REYXRhID0gc3RhdGVPYmplY3QtPmRhdGEoKTsKKyAgICAgICAgZnJhbWVTdGF0ZS5zdGF0ZU9i
amVjdERhdGEgPSBzdGF0ZU9iamVjdC0+d2lyZUJ5dGVzKCk7CiAKICAgICBmcmFtZVN0YXRlLmRv
Y3VtZW50U2VxdWVuY2VOdW1iZXIgPSBoaXN0b3J5SXRlbS5kb2N1bWVudFNlcXVlbmNlTnVtYmVy
KCk7CiAgICAgZnJhbWVTdGF0ZS5pdGVtU2VxdWVuY2VOdW1iZXIgPSBoaXN0b3J5SXRlbS5pdGVt
U2VxdWVuY2VOdW1iZXIoKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgdm9pZCBhcHBseUZy
YW1lU3RhdGUoSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtLCBjb25zdCBGcmFtZVN0YXRlJiBmcmFt
ZVN0YQogCiAgICAgaWYgKGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhKSB7CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBzdGF0ZU9iamVjdERhdGEgPSBmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0
YS52YWx1ZSgpOwotICAgICAgICBoaXN0b3J5SXRlbS5zZXRTdGF0ZU9iamVjdChTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmFkb3B0KFdURk1vdmUoc3RhdGVPYmplY3REYXRhKSkpOworICAgICAgICBo
aXN0b3J5SXRlbS5zZXRTdGF0ZU9iamVjdChTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZy
b21XaXJlQnl0ZXMoV1RGTW92ZShzdGF0ZU9iamVjdERhdGEpKSk7CiAgICAgfQogCiAgICAgaGlz
dG9yeUl0ZW0uc2V0RG9jdW1lbnRTZXF1ZW5jZU51bWJlcihmcmFtZVN0YXRlLmRvY3VtZW50U2Vx
dWVuY2VOdW1iZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBmMzYzNmNhYmQ2NWQuLjk2N2NlYjhmY2JhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM3NjUsNyArMzc2NSw3IEBAIHZv
aWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVyCiAKICAgICAgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFS
ZWZlcmVuY2U7CiAgICAgICAgIGlmIChzZXJpYWxpemVkUmVzdWx0VmFsdWUpCi0gICAgICAgICAg
ICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5kYXRhKCk7CisgICAgICAg
ICAgICBkYXRhUmVmZXJlbmNlID0gc2VyaWFsaXplZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKTsK
IAogICAgICAgICBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHM7CiAgICAg
ICAgIGlmICghcmVzdWx0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453326</attachid>
            <date>2022-02-26 23:55:31 -0800</date>
            <delta_ts>2022-02-27 11:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237241-20220226235530.patch</filename>
            <type>text/plain</type>
            <size>42357</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4NDk4NzY5NWJlM2Jh
ZmY3NTY1NTA2OTVkM2U5ODc0NjllMzc1OC4uMjkxYmM0ODBiYTEwNGZmODRjNWM4MDFlYmI0NThk
MTFhMmMxYzU3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIyLTAyLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIGNvbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhlIDIgbWFpbiBmYWN0b3J5IGZ1bmN0aW9ucyBmb3IgU2VyaWFs
aXplZFNjcmlwdFZhbHVlIG5vdyBzaGFyZSB0aGUgc2FtZSBjb2RlLgorICAgICAgICBJIGFsc28g
ZHJvcHBlZCBzb21lIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBBUEkgdGhhdCB3YXMgbm8gbG9uZ2Vy
IHVzZWZ1bC4KKyAgICAgICAgRmluYWxseSwgSSBzaW1wbGlmaWVkIGZhY3RvcnkgZnVuY3Rpb25z
IGZvciBNZXNzYWdlRXZlbnQuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJWYWx1ZTo6SURCVmFsdWUpOgorICAgICAgICAq
IE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1dvcmtsZXROb2RlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6dG9TdHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3
aXJlQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlOjphZG9wdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjp0b1dpcmVCeXRlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
ICogZG9tL0Jyb2FkY2FzdENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QnJvYWRjYXN0
Q2hhbm5lbDo6ZGlzcGF0Y2hNZXNzYWdlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6TWVzc2FnZUV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZUV2ZW50Lmg6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAg
ICAgICAgKiBwYWdlL0V2ZW50U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50U291
cmNlOjpkaXNwYXRjaE1lc3NhZ2VFdmVudCk6CisgICAgICAgICogcGFnZS9IaXN0b3J5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQpOgorICAgICAgICAq
IHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6c2Vy
aWFsaXplT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6ZGVzZXJp
YWxpemVCdWZmZXIgY29uc3QpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyTWVzc2FnaW5nUHJv
eHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJveHk6OnBvc3RNZXNz
YWdlVG9Xb3JrZXJPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnaW5nUHJv
eHk6OnBvc3RNZXNzYWdlVG9Xb3JrZXJHbG9iYWxTY29wZSk6CisgICAgICAgICogd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlckNvbnRhaW5lcjo6cG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHdvcmtlcnMvc2hh
cmVkL1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJl
ZFdvcmtlckdsb2JhbFNjb3BlOjpwb3N0Q29ubmVjdEV2ZW50KToKKwogMjAyMi0wMi0yNiAgS2F0
ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUg
Q1NQIGhhbmRsaW5nIG9mIGphdmFzY3JpcHQgVVJMcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAyNjY3MmJkMjc2YzY5
MzVlOGRhN2NiNjk3NzFmYWJhMjcxMTNmZDQ4Li5iNTVhZmI1N2YyMGE2NDg2MmNmOWFkZmM2YWFm
YTdkZTk2ZWVhZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAyLTI2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxpZnkgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlIGNvbnN0cnVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3MjQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGNvZGUgYmFzZSB0byByZWZsZWN0IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSBBUEkgY2hhbmdlcy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmg6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Y3JlYXRlRnJvbVdpcmVCeXRlcyk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGF0YVJlZmVyZW5jZSBjb25zdCk6CisgICAgICAgIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6YWRvcHQpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9TZXNzaW9uU3RhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlU3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgICog
U2hhcmVkL1VzZXJEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNlckRhdGE6OmRlY29kZSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgt
W1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3aXRoU291cmNl
VVJMOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTppbkZyYW1lOmluV29ybGQ6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVu
c2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5OjpldmFsdWF0ZVNjcmlwdEluRXh0ZW5zaW9uVGFiKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3JpcHRJbkV4dGVuc2lvblRh
Yik6CisgICAgICAgICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0
YXRlQ29udmVyc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OnRvRnJhbWVTdGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OmFwcGx5RnJhbWVTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5KYXZhU2NyaXB0
KToKKwogMjAyMi0wMi0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIE11bHRpcGxlIGNvbmN1cnJlbmN5IHZpb2xhdGlvbnMgaW4gTGliV2ViUlRDQ29k
ZWNzUHJveHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZhbHVlLmNw
cAppbmRleCBhMzYxMTEzZGRjNTI3ZWU3Yjg5OTYyMzM0OTc3MGUxNThlNzFhYTE4Li43MjgyNTU0
MGNmNWFmZDc2MWZlYTQxOTUxZTA3Y2JjN2Q3ZGVmOTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVmFsdWUuY3BwCkBAIC0zNiw3ICszNiw3IEBAIElEQlZhbHVl
OjpJREJWYWx1ZSgpCiB9CiAKIElEQlZhbHVlOjpJREJWYWx1ZShjb25zdCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUmIHNjcmlwdFZhbHVlKQotICAgIDogbV9kYXRhKFRocmVhZFNhZmVEYXRhQnVmZmVy
Ojpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLmRhdGEoKSkpCisgICAgOiBtX2RhdGEoVGhyZWFkU2Fm
ZURhdGFCdWZmZXI6OmNvcHlWZWN0b3Ioc2NyaXB0VmFsdWUud2lyZUJ5dGVzKCkpKQogICAgICwg
bV9ibG9iVVJMcyhzY3JpcHRWYWx1ZS5ibG9iVVJMcygpKQogewogfQpAQCAtNDcsNyArNDcsNyBA
QCBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKQog
fQogCiBJREJWYWx1ZTo6SURCVmFsdWUoY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlJiBzY3Jp
cHRWYWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgYmxvYkZpbGVQYXRocykKLSAgICA6IG1fZGF0YShUaHJlYWRTYWZlRGF0YUJ1ZmZlcjo6
Y29weVZlY3RvcihzY3JpcHRWYWx1ZS5kYXRhKCkpKQorICAgIDogbV9kYXRhKFRocmVhZFNhZmVE
YXRhQnVmZmVyOjpjb3B5VmVjdG9yKHNjcmlwdFZhbHVlLndpcmVCeXRlcygpKSkKICAgICAsIG1f
YmxvYlVSTHMoYmxvYlVSTHMpCiAgICAgLCBtX2Jsb2JGaWxlUGF0aHMoYmxvYkZpbGVQYXRocykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3Jr
bGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xl
dE5vZGUuY3BwCmluZGV4IGE1YjI4Yzg1M2ZiYmNjZDY3NjQwMDcyYzA0YjNhZDU0YjE1OTk4MGEu
LjQ0YTU2NThmNmU3NjEwZjk5NzRkNjNjMzJiOTVlMWQ1YTI5ZDkwMTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcApAQCAt
OTAsMTIgKzkwLDkgQEAgRXhjZXB0aW9uT3I8UmVmPEF1ZGlvV29ya2xldE5vZGU+PiBBdWRpb1dv
cmtsZXROb2RlOjpjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYKICAgICB7CiAgICAgICAgIGF1
dG8gbG9jayA9IEpTQzo6SlNMb2NrSG9sZGVyIHsgJmdsb2JhbE9iamVjdCB9OwogICAgICAgICBh
dXRvKiBqc09wdGlvbnMgPSBjb252ZXJ0RGljdGlvbmFyeVRvSlMoZ2xvYmFsT2JqZWN0LCAqSlND
Ojpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KSwgb3B0aW9ucyk7Ci0g
ICAgICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKLSAgICAgICAgYXV0byBz
ZXJpYWxpemVkVmFsdWUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QsIGpzT3B0aW9ucywgeyB9LCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBv
c3RNZXNzYWdlKTsKLSAgICAgICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZS5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgc2VyaWFsaXplZE9wdGlvbnMgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZShnbG9iYWxPYmplY3QsIGpzT3B0aW9ucywgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6Tm9uVGhy
b3dpbmcsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CisgICAgICAg
IGlmICghc2VyaWFsaXplZE9wdGlvbnMpCiAgICAgICAgICAgICBzZXJpYWxpemVkT3B0aW9ucyA9
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bnVsbFZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHNlcmlhbGl6ZWRPcHRpb25zID0gc2VyaWFsaXplZFZhbHVlLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwogICAgIH0KIAogICAgIGF1dG8gcGFyYW1ldGVyRGF0YSA9IFdURk1vdmUob3B0aW9u
cy5wYXJhbWV0ZXJEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDQyNTJhNTY0NzYzYjBjYzYwZDEwNzUxZjk4
OGQ0ZDExYWQ4NDdjNTQuLmNlOTlmZDVmMzIxNGM0MGE1ODYwNTEwNTMxY2MxMWJmMjllODZlNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtNDEwMiwxMiArNDEwMiw2IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKLVNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1
ZmZlcikKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCi17Ci0gICAgbV9tZW1vcnlDb3N0
ID0gY29tcHV0ZU1lbW9yeUNvc3QoKTsKLX0KLQogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKQEAgLTQyNjks
NTEgKzQyNjMsNiBAQCBzdGF0aWMgRXhjZXB0aW9uIGV4Y2VwdGlvbkZvclNlcmlhbGl6YXRpb25G
YWlsdXJlKFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIGNvZGUpCiAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OwogfQogCi1SZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4Y2VwdGlv
bnMpCi17Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IGJ1ZmZlcjsKLSAgICBWZWN0b3I8QmxvYlVSTEhh
bmRsZT4gYmxvYkhhbmRsZXM7Ci0gICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IGR1bW15
TWVzc2FnZVBvcnRzOwotICAgIFZlY3RvcjxSZWZQdHI8SW1hZ2VCaXRtYXA+PiBkdW1teUltYWdl
Qml0bWFwczsKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgIFZl
Y3RvcjxSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPj4gZHVtbXlPZmZzY3JlZW5DYW52YXNlczsKLSNl
bmRpZgotI2lmIEVOQUJMRShXRUJfUlRDKQotICAgIFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+
PiBkdW1teVJUQ0RhdGFDaGFubmVsczsKLSNlbmRpZgotICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4+IGR1bW15QXJyYXlCdWZmZXJzOwotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkK
LSAgICBXYXNtTW9kdWxlQXJyYXkgZHVtbXlNb2R1bGVzOwotICAgIFdhc21NZW1vcnlIYW5kbGVB
cnJheSBkdW1teU1lbW9yeUhhbmRsZXM7Ci0jZW5kaWYKLSAgICBBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXkgZHVtbXlTaGFyZWRCdWZmZXJzOwotICAgIGF1dG8gY29kZSA9IENsb25lU2VyaWFsaXpl
cjo6c2VyaWFsaXplKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSwgZHVtbXlNZXNzYWdlUG9y
dHMsIGR1bW15QXJyYXlCdWZmZXJzLCBkdW1teUltYWdlQml0bWFwcywKLSNpZiBFTkFCTEUoT0ZG
U0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQotICAgICAgICBkdW1teU9mZnNjcmVlbkNhbnZhc2Vz
LAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgICAgIGR1bW15UlRDRGF0YUNoYW5u
ZWxzLAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICBkdW1teU1vZHVs
ZXMsCi0gICAgICAgIGR1bW15TWVtb3J5SGFuZGxlcywKLSNlbmRpZgotICAgICAgICBibG9iSGFu
ZGxlcywgYnVmZmVyLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6RGVmYXVsdCwgZHVtbXlTaGFyZWRC
dWZmZXJzKTsKLQotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKGR1bW15TW9kdWxlcy5pc0VtcHR5KCksICJXYXNtOjpNb2R1bGUgc2VyaWFsaXphdGlvbiBp
cyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQiKTsKLSAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKGR1bW15TWVtb3J5SGFuZGxlcy5pc0VtcHR5KCksICJXYXNtOjpNZW1vcnkg
c2VyaWFsaXphdGlvbiBpcyBvbmx5IGFsbG93ZWQgaW4gdGhlIHBvc3RNZXNzYWdlIGNvbnRleHQi
KTsKLSNlbmRpZgotCi0gICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0aW9uRXJy
b3JNb2RlOjpUaHJvd2luZykKLSAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFsaXph
dGlvbkZhaWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKLQotICAgIGlmIChjb2RlICE9
IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCi0gICAgICAg
IHJldHVybiBudWxscHRyOwotCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKFdURk1vdmUoYnVmZmVyKSwgYmxvYkhhbmRsZXMsIG51bGxwdHIsIG51bGxwdHIs
IHsgfSkpOwotfQotCiBzdGF0aWMgYm9vbCBjb250YWluc0R1cGxpY2F0ZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxJbWFnZUJpdG1hcD4+JiBpbWFnZUJpdG1hcHMpCiB7CiAgICAgSGFzaFNldDxJbWFn
ZUJpdG1hcCo+IHZpc2l0ZWQ7CkBAIC00MzU0LDcgKzQzMDMsMjEgQEAgc3RhdGljIGJvb2wgY2Fu
RGV0YWNoUlRDRGF0YUNoYW5uZWxzKGNvbnN0IFZlY3RvcjxSZWY8UlRDRGF0YUNoYW5uZWw+PiYg
Y2hhbm5lbHMKIH0KICNlbmRpZgogCi1FeGNlcHRpb25PcjxSZWY8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0Pj4mJiB0cmFuc2Zlckxpc3QsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVz
c2FnZVBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dCBjb250ZXh0KQorUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNlcmlhbGl6YXRpb25F
cnJvck1vZGUgdGhyb3dFeGNlcHRpb25zLCBTZXJpYWxpemF0aW9uQ29udGV4dCBzZXJpYWxpemF0
aW9uQ29udGV4dCkKK3sKKyAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gZHVtbXlQb3J0
czsKKyAgICBhdXRvIHJlc3VsdCA9IGNyZWF0ZShnbG9iYWxPYmplY3QsIHZhbHVlLCB7IH0sIGR1
bW15UG9ydHMsIHRocm93RXhjZXB0aW9ucywgc2VyaWFsaXphdGlvbkNvbnRleHQpOworICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7Cit9CisKK0V4Y2VwdGlvbk9yPFJlZjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8SlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJMaXN0LCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQ
b3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQgc2VyaWFsaXphdGlvbkNv
bnRleHQpCit7CisgICAgcmV0dXJuIGNyZWF0ZShnbG9iYWxPYmplY3QsIHZhbHVlLCBXVEZNb3Zl
KHRyYW5zZmVyTGlzdCksIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZTo6Tm9u
VGhyb3dpbmcsIHNlcmlhbGl6YXRpb25Db250ZXh0KTsKK30KKworRXhjZXB0aW9uT3I8UmVmPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKEpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXJMaXN0LCBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgU2VyaWFsaXphdGlvbkVycm9yTW9kZSB0aHJvd0V4
Y2VwdGlvbnMsIFNlcmlhbGl6YXRpb25Db250ZXh0IGNvbnRleHQpCiB7CiAgICAgVk0mIHZtID0g
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpOwogICAgIFZlY3RvcjxSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4+IGFycmF5QnVmZmVyczsKQEAgLTQ0NDMsNiArNDQwNiw5IEBAIEV4Y2VwdGlvbk9yPFJl
ZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShK
U0dsb2JhbE9iCiAjZW5kaWYKICAgICAgICAgYmxvYkhhbmRsZXMsIGJ1ZmZlciwgY29udGV4dCwg
KnNoYXJlZEJ1ZmZlcnMpOwogCisgICAgaWYgKHRocm93RXhjZXB0aW9ucyA9PSBTZXJpYWxpemF0
aW9uRXJyb3JNb2RlOjpUaHJvd2luZykKKyAgICAgICAgbWF5YmVUaHJvd0V4Y2VwdGlvbklmU2Vy
aWFsaXphdGlvbkZhaWxlZChsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb2RlKTsKKwogICAgIGlmIChj
b2RlICE9IFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpTdWNjZXNzZnVsbHlDb21wbGV0ZWQpCiAg
ICAgICAgIHJldHVybiBleGNlcHRpb25Gb3JTZXJpYWxpemF0aW9uRmFpbHVyZShjb2RlKTsKIApA
QCAtNDUwNCw3ICs0NDcwLDcgQEAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoSlNDb250ZXh0UmVmIG9yaWdpbkMKICAgICByZXR1cm4g
c2VyaWFsaXplZFZhbHVlOwogfQogCi1TdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0
cmluZygpCitTdHJpbmcgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp0b1N0cmluZygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIENsb25lRGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZVN0cmluZyhtX2RhdGEp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuaAppbmRleCBlZjM3ZjFkMGNhNDYyYmI5YjdjOWI2YTU1ZDE4ZWJiNGMxMTgxYTdjLi4z
MTNjMGY1NTcyZWUxODk0MmNhNmE0M2JiNDQwMzg2YWZiZGU3MzIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaApAQCAtNzEsMTUg
KzcxLDEwIEBAIERFQ0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSk7CiBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURURfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVl
KTsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUsIFNl
cmlhbGl6YXRpb25FcnJvck1vZGUgPSBTZXJpYWxpemF0aW9uRXJyb3JNb2RlOjpUaHJvd2luZyk7
Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBW
ZWN0b3I8SlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZlY3RvcjxSZWZQ
dHI8TWVzc2FnZVBvcnQ+PiYsIFNlcmlhbGl6YXRpb25Db250ZXh0ID0gU2VyaWFsaXphdGlvbkNv
bnRleHQ6OkRlZmF1bHQpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1
ZSwgU2VyaWFsaXphdGlvbkVycm9yTW9kZSA9IFNlcmlhbGl6YXRpb25FcnJvck1vZGU6OlRocm93
aW5nLCBTZXJpYWxpemF0aW9uQ29udGV4dCA9IFNlcmlhbGl6YXRpb25Db250ZXh0OjpEZWZhdWx0
KTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBjcmVhdGUoU3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlcikp
KTsKLSAgICB9CiAKICAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbnVsbFZh
bHVlKCk7CiAKQEAgLTg5LDEzICs4NCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdWludDMy
X3Qgd2lyZUZvcm1hdFZlcnNpb24oKTsKIAotICAgIFN0cmluZyB0b1N0cmluZygpOworICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAgICAgLy8gQVBJIGltcGxlbWVudGF0aW9uIGhlbHBl
cnMuIFRoZXNlIGRvbid0IGV4cG9zZSBzcGVjaWFsIGJlaGF2aW9yIGZvciBBcnJheUJ1ZmZlcnMg
b3IgTWVzc2FnZVBvcnRzLgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiBjcmVhdGUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pOwogICAgIFdFQkNPUkVfRVhQT1JUIEpTVmFsdWVSZWYgZGVzZXJpYWxp
emUoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCi0gICAgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CiAgICAgYm9vbCBo
YXNCbG9iVVJMcygpIGNvbnN0IHsgcmV0dXJuICFtX2Jsb2JIYW5kbGVzLmlzRW1wdHkoKTsgfQog
CiAgICAgVmVjdG9yPFN0cmluZz4gYmxvYlVSTHMoKSBjb25zdDsKQEAgLTEwNiw3ICsxMDAsNyBA
QCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVk
U2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSkpOwogICAgIH0KLSAgICBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIHRvV2lyZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB3aXJlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KIAog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gZGVjb2RlKERlY29kZXImKTsKQEAgLTExNiwxMCArMTEwLDEwIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZhdGU6
Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+JiYKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4+IGNyZWF0ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlLCBWZWN0b3I8SlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4+JiYgdHJhbnNmZXIsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYsIFNlcmlhbGl6YXRpb25FcnJvck1vZGUsIFNlcmlhbGl6YXRpb25Db250ZXh0KTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYgPSBu
dWxscHRyCiAjaWYgRU5BQkxFKFdFQl9SVEMpCi0gICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJgorICAgICAgICAsIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgPSB7IH0KICNlbmRpZgogICAgICAg
ICApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQnJvYWRjYXN0Q2hhbm5lbC5jcHAKaW5kZXggZTc2MjUz
Y2Q2NDhiNDk4MDFmOWMzNDI1NjZmNzQ2YjRlMjljNzMzNi4uMmI2ZWFiM2E1Y2RkNTA3MDliNTBl
YzRiNzI0OWUxMDEwN2JjOWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Jyb2Fk
Y2FzdENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ccm9hZGNhc3RDaGFubmVs
LmNwcApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6ZGlzcGF0Y2hN
ZXNzYWdlKFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSkKIAogICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1
ZXVlLCBbdGhpcywgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSldKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghbV9pc0Nsb3NlZCAmJiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCi0gICAgICAg
ICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKHsgfSwgV1RGTW92ZShtZXNz
YWdlKSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmlu
ZygpKSk7CisgICAgICAgICAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdU
Rk1vdmUobWVzc2FnZSksIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+dG9TdHJpbmcoKSkpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTWVzc2FnZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQu
Y3BwCmluZGV4IDI4OGY0NjI4NjJhOWI1ZGY0NzAzYjdkNTc0NWU1M2JmNzRhMmE1NDIuLjZhMzI3
OWI1MjE0N2M3ZDQ3YjI1NWU5M2ViMDUwMzYyYmRhZGY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuY3BwCkBAIC01Miw4ICs1Miw4IEBAIGlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3Nh
Z2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBJbml0JiYgaW5pdGlhbGl6ZXIsIElzCiB7
CiB9CiAKLWlubGluZSBNZXNzYWdlRXZlbnQ6Ok1lc3NhZ2VFdmVudChEYXRhVHlwZSYmIGRhdGEs
IGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9w
dGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2Fn
ZVBvcnQ+PiYmIHBvcnRzKQotICAgIDogRXZlbnQoZXZlbnROYW1lcygpLm1lc3NhZ2VFdmVudCwg
Q2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxlOjpObykKK2lubGluZSBNZXNzYWdlRXZlbnQ6Ok1l
c3NhZ2VFdmVudChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmIGRhdGEsIGNvbnN0
IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFs
PE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmIHBvcnRzKQorICAgIDogRXZlbnQodHlwZSwgQ2FuQnViYmxlOjpObywgSXNDYW5jZWxhYmxl
OjpObykKICAgICAsIG1fZGF0YShXVEZNb3ZlKGRhdGEpKQogICAgICwgbV9vcmlnaW4ob3JpZ2lu
KQogICAgICwgbV9sYXN0RXZlbnRJZChsYXN0RXZlbnRJZCkKQEAgLTYyLDM3ICs2MiwxNCBAQCBp
bmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNzYWdlRXZlbnQoRGF0YVR5cGUmJiBkYXRhLCBjb25zdCBT
dHJpbmcmIG9yaWdpbiwgY29uc3QgUwogewogfQogCi1pbmxpbmUgTWVzc2FnZUV2ZW50OjpNZXNz
YWdlRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJ
ZCkKLSAgICA6IEV2ZW50KHR5cGUsIENhbkJ1YmJsZTo6Tm8sIElzQ2FuY2VsYWJsZTo6Tm8pCi0g
ICAgLCBtX2RhdGEoV1RGTW92ZShkYXRhKSkKLSAgICAsIG1fb3JpZ2luKG9yaWdpbikKLSAgICAs
IG1fbGFzdEV2ZW50SWQobGFzdEV2ZW50SWQpCi17Ci19Ci0KLVJlZjxNZXNzYWdlRXZlbnQ+IE1l
c3NhZ2VFdmVudDo6Y3JlYXRlKFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYmIHBvcnRzLCBS
ZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJj
ZT4mJiBzb3VyY2UpCi17Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWVzc2FnZUV2ZW50KFdU
Rk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUoc291cmNlKSwgV1RGTW92
ZShwb3J0cykpKTsKLX0KLQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUo
Y29uc3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRh
LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCkKLXsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQodHlwZSwgV1RGTW92ZShkYXRhKSwg
b3JpZ2luLCBsYXN0RXZlbnRJZCkpOwotfQotCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGRhdGEsIGNvbnN0IFN0cmluZyYgb3JpZ2luKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChkYXRhLCBvcmlnaW4pKTsKLX0K
LQotUmVmPE1lc3NhZ2VFdmVudD4gTWVzc2FnZUV2ZW50OjpjcmVhdGUoUmVmPEJsb2I+JiYgZGF0
YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmIGRhdGEsIGNvbnN0IFN0
cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlvbmFsPE1l
c3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
IHBvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChXVEZNb3Zl
KGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBNZXNzYWdlRXZlbnQo
dHlwZSwgV1RGTW92ZShkYXRhKSwgb3JpZ2luLCBsYXN0RXZlbnRJZCwgV1RGTW92ZShzb3VyY2Up
LCBXVEZNb3ZlKHBvcnRzKSkpOwogfQogCi1SZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6
OmNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBvcmlnaW4pCitS
ZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShEYXRhVHlwZSYmIGRhdGEsIGNv
bnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElkLCBzdGQ6Om9wdGlv
bmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2UsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBv
cnQ+PiYmIHBvcnRzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lc3NhZ2VFdmVudChX
VEZNb3ZlKGRhdGEpLCBvcmlnaW4pKTsKKyAgICByZXR1cm4gY3JlYXRlKGV2ZW50TmFtZXMoKS5t
ZXNzYWdlRXZlbnQsIFdURk1vdmUoZGF0YSksIG9yaWdpbiwgbGFzdEV2ZW50SWQsIFdURk1vdmUo
c291cmNlKSwgV1RGTW92ZShwb3J0cykpOwogfQogCiBSZWY8TWVzc2FnZUV2ZW50PiBNZXNzYWdl
RXZlbnQ6OmNyZWF0ZUZvckJpbmRpbmdzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRl
eCA2NTEwNjk5NDI0MDAyOWI0NjQ2MjYwNzVmZjM2YzZlNTZkNmZhYWQ3Li40NjY4ODA3YmNlNDU2
NGMwYjRiYWFhOGNmYWY2NWE4NTI4OTc3YzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5o
CkBAIC00OCwxMSArNDgsMTAgQEAgdXNpbmcgTWVzc2FnZUV2ZW50U291cmNlID0gc3RkOjp2YXJp
YW50PFJlZlB0cjxXaW5kb3dQcm94eT4sIFJlZlB0cjxNZXNzYWdlUG9ydD4KIGNsYXNzIE1lc3Nh
Z2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRF
RChNZXNzYWdlRXZlbnQpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBj
cmVhdGUoVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYsIFJlZjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luID0geyB9LCBjb25zdCBTdHJpbmcmIGxhc3RF
dmVudElkID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiBzb3VyY2Ug
PSBzdGQ6Om51bGxvcHQpOwotICAgIHN0YXRpYyBSZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29u
c3QgQXRvbVN0cmluZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQpOwotICAgIHN0YXRpYyBS
ZWY8TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiA9IHsgfSk7Ci0gICAgc3RhdGljIFJlZjxNZXNzYWdlRXZlbnQ+IGNyZWF0ZShSZWY8
QmxvYj4mJiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdpbik7Ci0gICAgc3RhdGljIFJlZjxNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShSZWY8QXJyYXlCdWZmZXI+JiYgZGF0YSwgY29uc3QgU3RyaW5nJiBv
cmlnaW4gPSB7IH0pOworICAgIHN0cnVjdCBKU1ZhbHVlVGFnIHsgfTsKKyAgICB1c2luZyBEYXRh
VHlwZSA9IHN0ZDo6dmFyaWFudDxKU1ZhbHVlVGFnLCBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiwgU3RyaW5nLCBSZWY8QmxvYj4sIFJlZjxBcnJheUJ1ZmZlcj4+OworICAgIHN0YXRpYyBSZWY8
TWVzc2FnZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSwgRGF0YVR5cGUmJiwg
Y29uc3QgU3RyaW5nJiBvcmlnaW4gPSB7IH0sIGNvbnN0IFN0cmluZyYgbGFzdEV2ZW50SWQgPSB7
IH0sIHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYmID0gc3RkOjpudWxsb3B0LCBW
ZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mJiA9IHsgfSk7CisgICAgc3RhdGljIFJlZjxNZXNz
YWdlRXZlbnQ+IGNyZWF0ZShEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdpbiA9IHsgfSwg
Y29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdlRXZl
bnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYm
ID0geyB9KTsKICAgICBzdGF0aWMgUmVmPE1lc3NhZ2VFdmVudD4gY3JlYXRlRm9yQmluZGluZ3Mo
KTsKIAogICAgIHN0cnVjdCBJbml0IDogRXZlbnRJbml0IHsKQEAgLTczLDggKzcyLDYgQEAgcHVi
bGljOgogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8TWVzc2FnZUV2ZW50U291cmNlPiYgc291cmNl
KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2U7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPE1l
c3NhZ2VQb3J0Pj4mIHBvcnRzKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0czsgfQogCi0gICAgc3Ry
dWN0IEpTVmFsdWVUYWcgeyB9OwotICAgIHVzaW5nIERhdGFUeXBlID0gc3RkOjp2YXJpYW50PEpT
VmFsdWVUYWcsIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+LCBTdHJpbmcsIFJlZjxCbG9iPiwg
UmVmPEFycmF5QnVmZmVyPj47CiAgICAgY29uc3QgRGF0YVR5cGUmIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGE7IH0KIAogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGpzRGF0YSgpIHsg
cmV0dXJuIG1fanNEYXRhOyB9CkBAIC04Niw4ICs4Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2FnZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5
cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsKLSAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgdHlwZSwgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBkYXRhLCBjb25zdCBTdHJpbmcm
IG9yaWdpbiwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCk7Ci0gICAgTWVzc2FnZUV2ZW50KERh
dGFUeXBlJiYsIGNvbnN0IFN0cmluZyYgb3JpZ2luLCBjb25zdCBTdHJpbmcmIGxhc3RFdmVudElk
ID0geyB9LCBzdGQ6Om9wdGlvbmFsPE1lc3NhZ2VFdmVudFNvdXJjZT4mJiA9IHN0ZDo6bnVsbG9w
dCwgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiYgPSB7IH0pOworICAgIE1lc3NhZ2VFdmVu
dChjb25zdCBBdG9tU3RyaW5nJiB0eXBlLCBEYXRhVHlwZSYmLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCA9IHsgfSwgc3RkOjpvcHRpb25hbDxNZXNzYWdl
RXZlbnRTb3VyY2U+JiYgPSBzdGQ6Om51bGxvcHQsIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+
PiYmID0geyB9KTsKIAogICAgIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDE3N2Y4ZTQzZDQ1OGQ0
OWViZjEyYWFiZjY1MzQwYjk5NTU3NDE4YWYuLjkyNTFlODQ2NmQzNmU1YmYzY2EyNjY0NmRkNmZk
YjY5Y2ZkMTdmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIGF1dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5n
bGVQb3J0cygqY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKICAg
ICAgICAgICAgIC8vIFBlciBzcGVjaWZpY2F0aW9uLCBlYWNoIE1lc3NhZ2VQb3J0IG9iamVjdCBo
YXMgYSB0YXNrIHNvdXJjZSBjYWxsZWQgdGhlIHBvcnQgbWVzc2FnZSBxdWV1ZS4KLSAgICAgICAg
ICAgIHF1ZXVlVGFza1RvRGlzcGF0Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVz
c2FnZVF1ZXVlLCBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5t
ZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgICAgIHF1ZXVlVGFza1RvRGlzcGF0
Y2hFdmVudCgqdGhpcywgVGFza1NvdXJjZTo6UG9zdGVkTWVzc2FnZVF1ZXVlLCBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB9LCB7IH0sIHsg
fSwgV1RGTW92ZShwb3J0cykpKTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAppbmRleCA2MGM3NTlkYzhhZjNlNWNmZGI1ZjJmMjY1YWRlNWFlNTIzZWI4ZmFm
Li44NjQzNWUxY2Y4MWQwOWQyMGI1ZTkxMzI1ZGU5NWFhNGQwNjUwNjI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCkBAIC05NjMsNyArOTYzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRE9N
V2luZG93Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2Jq
ZWMKICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgdXNlckdlc3R1cmVJbmRpY2F0b3IodXNl
ckdlc3R1cmVUb0ZvcndhcmQpOwogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxEaXNwYXRjaFBvc3RNZXNzYWdlKGZyYW1lLCBwb3N0TWVzc2FnZUlkZW50aWZpZXIpOwogCi0g
ICAgICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50
YW5nbGVQb3J0cygqZG9jdW1lbnQoKSwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMp
KSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCksIHNvdXJjZU9yaWdpbiwgeyB9LCBp
bmN1bWJlbnRXaW5kb3dQcm94eSA/IHN0ZDo6bWFrZV9vcHRpb25hbChNZXNzYWdlRXZlbnRTb3Vy
Y2UoV1RGTW92ZShpbmN1bWJlbnRXaW5kb3dQcm94eSkpKSA6IHN0ZDo6bnVsbG9wdCk7CisgICAg
ICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIGluY3VtYmVudFdpbmRvd1Byb3h5ID8g
c3RkOjptYWtlX29wdGlvbmFsKE1lc3NhZ2VFdmVudFNvdXJjZShXVEZNb3ZlKGluY3VtYmVudFdp
bmRvd1Byb3h5KSkpIDogc3RkOjpudWxsb3B0LCBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cygq
ZG9jdW1lbnQoKSwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKSk7CiAgICAgICAg
IGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZShmcmFtZSwgcG9zdE1lc3NhZ2VJZGVudGlmaWVyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKaW5kZXggOGNjOGRmMWFjMjZjZDM0NzkyNGQ3
NmJkYmZlYzkyYWY5MTBlMTM2OS4uNzA3M2VmNjE3M2NiZTc5ZTg3NzcyMzZmZmY3NzhhYTE1MjZm
N2ZmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudFNvdXJjZS5jcHAKQEAgLTQzMSwxNCArNDMxLDEz
IEBAIHZvaWQgRXZlbnRTb3VyY2U6OmRpc3BhdGNoTWVzc2FnZUV2ZW50KCkKIAogICAgIGF1dG8m
IG5hbWUgPSBtX2V2ZW50TmFtZS5pc0VtcHR5KCkgPyBldmVudE5hbWVzKCkubWVzc2FnZUV2ZW50
IDogbV9ldmVudE5hbWU7CiAKLSAgICAvLyBPbWl0IHRoZSB0cmFpbGluZyAiXG4iIGNoYXJhY3Rl
ci4KICAgICBBU1NFUlQoIW1fZGF0YS5pc0VtcHR5KCkpOwotICAgIHVuc2lnbmVkIHNpemUgPSBt
X2RhdGEuc2l6ZSgpIC0gMTsKLSAgICBhdXRvIGRhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZSh7IG1fZGF0YS5kYXRhKCksIHNpemUgfSk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoZGF0
YSk7CisKKyAgICAvLyBPbWl0IHRoZSB0cmFpbGluZyAiXG4iIGNoYXJhY3Rlci4KKyAgICBTdHJp
bmcgZGF0YShtX2RhdGEuZGF0YSgpLCBtX2RhdGEuc2l6ZSgpIC0gMSk7CiAgICAgbV9kYXRhID0g
eyB9OwogCi0gICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShuYW1lLCBkYXRh
LnJlbGVhc2VOb25OdWxsKCksIG1fZXZlbnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2ZW50SWQpKTsK
KyAgICBkaXNwYXRjaEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG5hbWUsIFdURk1vdmUoZGF0
YSksIG1fZXZlbnRTdHJlYW1PcmlnaW4sIG1fbGFzdEV2ZW50SWQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggZjFkYTJjODVhMDA4NDc2
ZmYwODgzMmYzYTBiOGU3YzQwNWJiOTc2NC4uZDc4YTdjNGZlZDhmM2Q1MjIyY2M5ZWZmZTQxMmY0
M2U0ODc1NDQyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCkBAIC0yMzksNyArMjM5LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSGlzdG9yeTo6c3RhdGVPYmplY3RBZGRlZChSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIGRhdGEKIAogICAgIENoZWNrZWQ8dWludDY0X3Q+IHBheWxvYWRT
aXplID0gdGl0bGVTaXplOwogICAgIHBheWxvYWRTaXplICs9IHVybFNpemU7Ci0gICAgcGF5bG9h
ZFNpemUgKz0gZGF0YSA/IGRhdGEtPmRhdGEoKS5zaXplKCkgOiAwOworICAgIHBheWxvYWRTaXpl
ICs9IGRhdGEgPyBkYXRhLT53aXJlQnl0ZXMoKS5zaXplKCkgOiAwOwogCiAgICAgQ2hlY2tlZDx1
aW50NjRfdD4gbmV3VG90YWxVc2FnZSA9IG1haW5IaXN0b3J5Lm1fdG90YWxTdGF0ZU9iamVjdFVz
YWdlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggOTQ2ZWZmOTc0NGU0
YzdjOGY2NWU5OTNkYzNhNTlmOWIyN2RlOTEzZC4uZDIyYjllM2YyNGM1ODA3N2VjOGQ1NDkyZWYw
YWFkNjE5OTI5YjBlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtMzg0
MSwxNCArMzg0MSwxNCBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsczo6Z2V0Q3VycmVu
dEN1cnNvckluZm8oKQogCiBSZWY8QXJyYXlCdWZmZXI+IEludGVybmFsczo6c2VyaWFsaXplT2Jq
ZWN0KGNvbnN0IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiB2YWx1ZSkgY29uc3QKIHsK
LSAgICBhdXRvJiBieXRlcyA9IHZhbHVlLT5kYXRhKCk7CisgICAgYXV0byYgYnl0ZXMgPSB2YWx1
ZS0+d2lyZUJ5dGVzKCk7CiAgICAgcmV0dXJuIEFycmF5QnVmZmVyOjpjcmVhdGUoYnl0ZXMuZGF0
YSgpLCBieXRlcy5zaXplKCkpOwogfQogCiBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBJbnRl
cm5hbHM6OmRlc2VyaWFsaXplQnVmZmVyKEFycmF5QnVmZmVyJiBidWZmZXIpIGNvbnN0CiB7CiAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGJ5dGVzIHsgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1
ZmZlci5kYXRhKCkpLCBidWZmZXIuYnl0ZUxlbmd0aCgpIH07Ci0gICAgcmV0dXJuIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoV1RGTW92ZShieXRlcykpOworICAgIHJldHVybiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RGTW92ZShieXRlcykpOwogfQog
CiBib29sIEludGVybmFsczo6aXNGcm9tQ3VycmVudFdvcmxkKEpTQzo6SlNWYWx1ZSB2YWx1ZSkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2FnaW5n
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5j
cHAKaW5kZXggOTlkMWJjMDI2Y2ExZmQzNGZkZGU4Y2NkYjc5OWRlMmQyM2RkMWNhNS4uNmFkMjE3
NzYzNTViNzI1OTA1NWZmZGJkZTg4MGM3M2JiZWRmMTc3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCB2
b2lkIFdvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiYgbQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1
dG8gcG9ydHMgPSBNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0LCBXVEZNb3ZlKG1l
c3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpOwotICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVl
VGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpQb3N0ZWRNZXNz
YWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1l
c3NhZ2UucmVsZWFzZU5vbk51bGwoKSkpOworICAgICAgICBBY3RpdmVET01PYmplY3Q6OnF1ZXVl
VGFza1RvRGlzcGF0Y2hFdmVudCgqd29ya2VyT2JqZWN0LCBUYXNrU291cmNlOjpQb3N0ZWRNZXNz
YWdlUXVldWUsIE1lc3NhZ2VFdmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9u
TnVsbCgpLCB7IH0sIHsgfSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgIH0p
OwogfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9z
dE1lc3NhZ2VUb1dvcmtlckdsb2JhbFNjb3BlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnQKICAgICAg
ICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oc2NyaXB0Q29udGV4dC5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkpOwogICAgICAgICBhdXRvJiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8RGVk
aWNhdGVkV29ya2VyR2xvYmFsU2NvcGUmPihzY3JpcHRDb250ZXh0KTsKICAgICAgICAgYXV0byBw
b3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKHNjcmlwdENvbnRleHQsIFdURk1vdmUo
bWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgIGNvbnRleHQuZGlzcGF0Y2hFdmVu
dChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJl
bGVhc2VOb25OdWxsKCkpKTsKKyAgICAgICAgY29udGV4dC5kaXNwYXRjaEV2ZW50KE1lc3NhZ2VF
dmVudDo6Y3JlYXRlKG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IH0sIHsgfSwg
c3RkOjpudWxsb3B0LCBXVEZNb3ZlKHBvcnRzKSkpOwogICAgICAgICBjb250ZXh0LnRocmVhZCgp
Lndvcmtlck9iamVjdFByb3h5KCkuY29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGNvbnRl
eHQuaGFzUGVuZGluZ0FjdGl2aXR5KCkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJDb250YWluZXIuY3BwCmlu
ZGV4IGYyMTRhYzZhMDA3NmZhOGQ2Nzg0MzBkNmY0Y2UxNTQwM2U4YTE2YjMuLjQxZjM0YzYxZDAw
OWQ1ZGU1ZmEyMGQ3OTRiMDIxNGNlYmRlNTJkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckNvbnRhaW5lci5jcHAKQEAgLTQz
OCw3ICs0MzgsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250YWluZXI6OnBvc3RNZXNzYWdlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgU2VydgogICAgIGF1dG8mIGNvbnRleHQg
PSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIE1lc3NhZ2VFdmVudFNvdXJjZSBzb3Vy
Y2UgPSBSZWZQdHI8U2VydmljZVdvcmtlcj4geyBTZXJ2aWNlV29ya2VyOjpnZXRPckNyZWF0ZShj
b250ZXh0LCBXVEZNb3ZlKHNvdXJjZURhdGEpKSB9OwogCi0gICAgYXV0byBtZXNzYWdlRXZlbnQg
PSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShNZXNzYWdlUG9ydDo6ZW50YW5nbGVQb3J0cyhjb250ZXh0
LCBXVEZNb3ZlKG1lc3NhZ2UudHJhbnNmZXJyZWRQb3J0cykpLCBtZXNzYWdlLm1lc3NhZ2UucmVs
ZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSk7CisgICAg
YXV0byBtZXNzYWdlRXZlbnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShtZXNzYWdlLm1lc3NhZ2Uu
cmVsZWFzZU5vbk51bGwoKSwgc291cmNlT3JpZ2luLCB7IH0sIFdURk1vdmUoc291cmNlKSwgTWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoY29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVy
cmVkUG9ydHMpKSk7CiAgICAgaWYgKG1fc2hvdWxkRGVmZXJNZXNzYWdlRXZlbnRzKQogICAgICAg
ICBtX2RlZmVycmVkTWVzc2FnZUV2ZW50cy5hcHBlbmQoV1RGTW92ZShtZXNzYWdlRXZlbnQpKTsK
ICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVkL1No
YXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2hhcmVk
L1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAxMmI4ZTFhYzhkMDEwZTMxMDE5MzNm
MWYzMDk4YzQ5NWNjOTk0OTZjLi45ZmU4ZGIzOGVhNTMzZDUzMDdlMTY1NzQzZjliYmU1ZWVjNTkx
Y2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NoYXJlZC9TaGFyZWRXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zaGFyZWQvU2hh
cmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC02NSwxMyArNjUsMTEgQEAgdm9pZCBTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZTo6Y2xvc2UoKQogdm9pZCBTaGFyZWRXb3JrZXJHbG9iYWxTY29wZTo6
cG9zdENvbm5lY3RFdmVudChUcmFuc2ZlcnJlZE1lc3NhZ2VQb3J0JiYgdHJhbnNmZXJyZWRQb3J0
LCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikKIHsKICAgICBTQ09QRV9SRUxFQVNFX0xPRygi
cG9zdENvbm5lY3RFdmVudDoiKTsKLSAgICBhdXRvIHZhbHVlID0gU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoZW1wdHlTdHJpbmcoKSk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKICAgICBhdXRv
IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKnRoaXMsIHsgV1RGTW92ZSh0cmFu
c2ZlcnJlZFBvcnQpIH0pOwogICAgIEFTU0VSVChwb3J0cy5zaXplKCkgPT0gMSk7CiAgICAgYXV0
byBwb3J0ID0gcG9ydHNbMF07CiAgICAgQVNTRVJUKHBvcnQpOwotICAgIGF1dG8gZXZlbnQgPSBN
ZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwgdmFsdWUucmVsZWFzZU5vbk51bGwo
KSwgc291cmNlT3JpZ2luLCB7IH0sIHBvcnQpOworICAgIGF1dG8gZXZlbnQgPSBNZXNzYWdlRXZl
bnQ6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBzb3VyY2VPcmlnaW4sIHsgfSwgcG9ydCwgV1RGTW92
ZShwb3J0cykpOwogICAgIGV2ZW50LT5pbml0RXZlbnQoZXZlbnROYW1lcygpLmNvbm5lY3RFdmVu
dCwgZmFsc2UsIGZhbHNlKTsKIAogICAgIGRpc3BhdGNoRXZlbnQoV1RGTW92ZShldmVudCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCmluZGV4IDZmZTg1NzZhYzM4ZTQyNjgwOTcxYzQ4M2Q4MmYzMjhkNzIzY2U3YzUuLjRkZGM4
MGYxNGZiZTc1OTdmZWQ3NTYwNjliMjBjOTc1OGUxZmI4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTQ5LDkgKzQ5
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoc2VyaWFsaXplZFZhbHVlLnJlbGVhc2VOb25OdWxsKCkpKTsKICAgICB9CiAgICAg
Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IGFkb3B0KFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlcikKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3Jl
YXRlRnJvbVdpcmVCeXRlcyhWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjphZG9wdChXVEZNb3ZlKGJ1ZmZlcikpKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoV1RGTW92ZShidWZmZXIpKSkpOwog
ICAgIH0KICAgICAKICAgICBKU1ZhbHVlUmVmIGRlc2VyaWFsaXplKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gY3JlYXRlRnJvbU5TT2JqZWN0
KGlkKTsKICNlbmRpZgogCi0gICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBj
b25zdCB7IHJldHVybiBtX3NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+ZGF0YSgpOyB9CisgICAgSVBD
OjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS0+d2lyZUJ5dGVzKCk7IH0KIAogICAgIFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSYgaW50ZXJuYWxSZXByZXNlbnRhdGlvbigpIHsgcmV0dXJuIG1fc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1Nlc3Npb25TdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TZXNzaW9uU3RhdGUuY3Bw
CmluZGV4IGEwOGRkMTVkMzUxNzc2ZjM1NDlmMzQxYmQxMWZiZGRiZjI5Mzk4OTMuLmJlZTkzMmQw
NTU3NGQ0NzlhOGY1NWFkOTA4YTU1YTcyYWEwNzRmYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1Nlc3Npb25TdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2Vz
c2lvblN0YXRlLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUGFnZVN0YXRlOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdGl0bGUgPDwgbWFp
bkZyYW1lU3RhdGUgPDwgISFzZXNzaW9uU3RhdGVPYmplY3Q7CiAKICAgICBpZiAoc2Vzc2lvblN0
YXRlT2JqZWN0KQotICAgICAgICBlbmNvZGVyIDw8IHNlc3Npb25TdGF0ZU9iamVjdC0+dG9XaXJl
Qnl0ZXMoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZXNzaW9uU3RhdGVPYmplY3QtPndpcmVCeXRl
cygpOwogCiAgICAgZW5jb2RlciA8PCBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckRhdGEuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckRhdGEuY3BwCmluZGV4IGY4YjdlZGNmNDQ5MTczMTUwYjBmODUwMTM2
MDM5ZDA5ZWM4M2ZjZjMuLmUxOTQwNzM3Mjg2ODUyZDAyM2FhOWFhMTkxNGFjZDAwZDMyNjFhNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJEYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Vc2VyRGF0YS5jcHAKQEAgLTQyNiw3ICs0MjYsNyBAQCBib29sIFVz
ZXJEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8QVBJOjpPYmplY3Q+
JiByZXN1bHQpCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YVJlZmVyZW5jZSkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0gQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmFkb3B0KHsgZGF0YVJlZmVyZW5jZSB9KTsKKyAgICAgICAgcmVzdWx0
ID0gQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRh
UmVmZXJlbmNlIH0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDU0NTlkMmUzYmY4NTc3ODgx
NWE0MWQ0MjRjYTRlMjE0ZjM3YzUzMDIuLjMwMTQzMjA4Mjc4N2QzMGU3ODhiZTNlNTBlN2E1OGEy
YzZkYmVlNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0
OihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWEKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQo
a2V5LCBzZXJpYWxpemVkVmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dpcmVCeXRl
cygpKTsKKyAgICAgICAgYXJndW1lbnRzTWFwLT5zZXQoa2V5LCBzZXJpYWxpemVkVmFsdWUtPmlu
dGVybmFsUmVwcmVzZW50YXRpb24oKS53aXJlQnl0ZXMoKSk7CiAgICAgfQogCiAgICAgaWYgKGVy
cm9yTWVzc2FnZSAmJiBoYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5z
aW9uQ29udHJvbGxlclByb3h5LmNwcAppbmRleCBhODA2NTViZmVkZmNmYWJhNDA0ZGY3NTFlYjkz
ZjMwYmU3Mjc1MTU5Li5jZGJkMzQ1YTJiZmY3YjI5ZmNiMjcxYjM0ZjM4ZjJkYWE5NzY3YzM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAK
QEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxl
clByb3h5OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbgogICAgICAgICAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IHJldHVybmVkVmFsdWUgfSk7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgeyBBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoVmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFS
ZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMo
VmVjdG9yIHsgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0
cigpIH0gfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMjMzLDcgKzIzMyw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHk6OmV2YWx1YXRlU2NyaXB0
SW5FeHRlbnNpb25UYWIoY29uc3QKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoeyByZXR1cm5lZFZhbHVlIH0pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KHsg
ZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpIH0pLnB0cigpIH0gfSk7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmNyZWF0ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlLmRhdGEoKSwgZGF0YVJl
ZmVyZW5jZS5zaXplKCkgfSkucHRyKCkgfSB9KTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggNWJiZTczOTYyMDUy
N2E4MjdjZDU3ZjE2OWFmMmYwYzBjNTk2YTcwZS4uMzhkZWVhYTJmYjJmMWFlN2I0Y2M3Y2U4ODAy
ZjY1ZmYzNmJhNTg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cApAQCAtMzQwLDE1ICszNDAsMTUgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6ZGlkUG9zdE1lc3NhZ2UoV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlUHIKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFoYW5kbGVyLT5jbGllbnQoKS5zdXBwb3J0c0FzeW5jUmVwbHko
KSkgewotICAgICAgICBoYW5kbGVyLT5jbGllbnQoKS5kaWRQb3N0TWVzc2FnZSgqcGFnZSwgV1RG
TW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6YWRvcHQoeyBkYXRhUmVmZXJlbmNlIH0pKTsKKyAgICAgICAgaGFuZGxl
ci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2UoKnBhZ2UsIFdURk1vdmUoZnJhbWVJbmZvRGF0YSks
IGhhbmRsZXItPndvcmxkKCksICBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0
ZUZyb21XaXJlQnl0ZXMoeyBkYXRhUmVmZXJlbmNlIH0pKTsKICAgICAgICAgcmVwbHkoeyB9LCB7
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaGFuZGxlci0+Y2xpZW50KCkuZGlk
UG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgqcGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwg
aGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6YWRvcHQo
eyBkYXRhUmVmZXJlbmNlIH0pLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqIHZhbHVlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgbXV0YWJs
ZSB7CisgICAgaGFuZGxlci0+Y2xpZW50KCkuZGlkUG9zdE1lc3NhZ2VXaXRoQXN5bmNSZXBseSgq
cGFnZSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgaGFuZGxlci0+d29ybGQoKSwgIFdlYkNvcmU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyh7IGRhdGFSZWZlcmVu
Y2UgfSksIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogdmFsdWUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBtdXRhYmxlIHsKICAgICAgICAg
aWYgKGVycm9yTWVzc2FnZS5pc051bGwoKSkgewogICAgICAgICAgICAgQVNTRVJUKHZhbHVlKTsK
LSAgICAgICAgICAgIHJlcGx5KHsgdmFsdWUtPmludGVybmFsUmVwcmVzZW50YXRpb24oKS50b1dp
cmVCeXRlcygpIH0sIHsgfSk7CisgICAgICAgICAgICByZXBseSh7IHZhbHVlLT5pbnRlcm5hbFJl
cHJlc2VudGF0aW9uKCkud2lyZUJ5dGVzKCkgfSwgeyB9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCA4NTUyODQ1NzBlZWJmMmE4ZTQ5NDg3YmQ4ZTUzZDQ1MzQ4YTQ2MTA0Li4yOWI2MjA3ZmNlY2Ux
ZDRkMzc1ODljMTkyM2JlNDUyZmQwNmQ5OTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTQzOTksNyArNDM5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZUluU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMm
JiBwCiAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2tGdW5jdGlvbihtYWtlVW5leHBlY3RlZChX
VEZNb3ZlKCpkZXRhaWxzKSkpOwogICAgICAgICBpZiAoZGF0YVJlZmVyZW5jZS5lbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrRnVuY3Rpb24oeyBudWxscHRyIH0pOwotICAgICAg
ICBjYWxsYmFja0Z1bmN0aW9uKHsgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmFkb3B0KFZl
Y3RvcihkYXRhUmVmZXJlbmNlKSkucHRyKCkgfSk7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
eyBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRlcyhWZWN0b3Io
ZGF0YVJlZmVyZW5jZSkpLnB0cigpIH0pOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlci5jcHAKaW5kZXggZTg0MDk5YTNkYTM4M2NkOWU5NTlj
ZThlNGFkZjk0NWEyYzk4YjhhMC4uYjljNzk2YWUyMTk0YWRiYzU5Y2IxYTkzZGRkODNlZTNhNjFi
YTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyLmNwcApA
QCAtMjg3LDcgKzI4Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVy
OjpldmFsdWF0ZVNjcmlwdEZvckV4dGVuc2lvbihjb25zdCBJbnNwZWN0CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVk
UmVzdWx0VmFsdWUtPmRhdGEoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQpOworICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzZXJpYWxpemVkUmVzdWx0VmFsdWUtPndpcmVCeXRlcygpLCBz
dGQ6Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCk7CiAgICAgfSk7CiB9CiAKQEAgLTQzOCw3ICs0Mzgs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlcjo6ZXZhbHVhdGVTY3Jp
cHRJbkV4dGVuc2lvblRhYihjb25zdCBJbnNwZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT5k
YXRhKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0KTsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoc2VyaWFsaXplZFJlc3VsdFZhbHVlLT53aXJlQnl0ZXMoKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCmluZGV4IDRiYTk5MDE5NDA1YjczZTg5MjJkN2I2ZWE0OGU4YjE1NzBjNWRkMzYuLjMzMGRh
NmFmN2VkNmE0NjY3NWQ0MjczN2M1NTliY2NlODZkYmExZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXIuY3BwCkBAIC0yNzgsNyArMjc4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHZhbHVlLnB0cigpLCB7IH0pOwogICAgICAgICB9OwogCi0gICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZpZXIoKSwgd2ViRnJh
bWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEo
KSkpLCBXVEZNb3ZlKG1lc3NhZ2VSZXBseUhhbmRsZXIpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZp
ZXIoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPndlYlBhZ2VQcm94eUlkZW50aWZp
ZXIoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
dmFsdWUtPndpcmVCeXRlcygpKSksIFdURk1vdmUobWVzc2FnZVJlcGx5SGFuZGxlciksIG1fY29u
dHJvbGxlci0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvU2Vzc2lvblN0YXRlQ29udmVyc2lv
bi5jcHAKaW5kZXggYmNkOTg3NDljMmNkMDI1ZjAwYjVjYmY0MjMwYTE3Mjc3YjIxZmZiMi4uNDJi
NGUwMGYwYmY2YTkyMDZmMmY0ZjA5MzEwYmIyMTZhN2VjN2Y0NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1Nlc3Npb25TdGF0ZUNvbnZlcnNpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9TZXNzaW9u
U3RhdGVDb252ZXJzaW9uLmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgRnJhbWVTdGF0ZSB0
b0ZyYW1lU3RhdGUoY29uc3QgSGlzdG9yeUl0ZW0mIGhpc3RvcnlJdGVtKQogCiAgICAgZnJhbWVT
dGF0ZS5zZXREb2N1bWVudFN0YXRlKGhpc3RvcnlJdGVtLmRvY3VtZW50U3RhdGUoKSk7CiAgICAg
aWYgKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHN0YXRlT2JqZWN0ID0gaGlzdG9yeUl0
ZW0uc3RhdGVPYmplY3QoKSkKLSAgICAgICAgZnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEgPSBz
dGF0ZU9iamVjdC0+ZGF0YSgpOworICAgICAgICBmcmFtZVN0YXRlLnN0YXRlT2JqZWN0RGF0YSA9
IHN0YXRlT2JqZWN0LT53aXJlQnl0ZXMoKTsKIAogICAgIGZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1
ZW5jZU51bWJlciA9IGhpc3RvcnlJdGVtLmRvY3VtZW50U2VxdWVuY2VOdW1iZXIoKTsKICAgICBm
cmFtZVN0YXRlLml0ZW1TZXF1ZW5jZU51bWJlciA9IGhpc3RvcnlJdGVtLml0ZW1TZXF1ZW5jZU51
bWJlcigpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5RnJhbWVTdGF0ZShI
aXN0b3J5SXRlbSYgaGlzdG9yeUl0ZW0sIGNvbnN0IEZyYW1lU3RhdGUmIGZyYW1lU3RhCiAKICAg
ICBpZiAoZnJhbWVTdGF0ZS5zdGF0ZU9iamVjdERhdGEpIHsKICAgICAgICAgVmVjdG9yPHVpbnQ4
X3Q+IHN0YXRlT2JqZWN0RGF0YSA9IGZyYW1lU3RhdGUuc3RhdGVPYmplY3REYXRhLnZhbHVlKCk7
Ci0gICAgICAgIGhpc3RvcnlJdGVtLnNldFN0YXRlT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoV1RGTW92ZShzdGF0ZU9iamVjdERhdGEpKSk7CisgICAgICAgIGhpc3RvcnlJdGVt
LnNldFN0YXRlT2JqZWN0KFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJvbVdpcmVCeXRl
cyhXVEZNb3ZlKHN0YXRlT2JqZWN0RGF0YSkpKTsKICAgICB9CiAKICAgICBoaXN0b3J5SXRlbS5z
ZXREb2N1bWVudFNlcXVlbmNlTnVtYmVyKGZyYW1lU3RhdGUuZG9jdW1lbnRTZXF1ZW5jZU51bWJl
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGYzNjM2Y2FiZDY1ZDY3NmJmNzY4ZGE0YzlmYmRjOTY1NjA5MTI4M2MuLjk2N2NlYjhmY2JhNGRm
MjMxOTQ4ZjQwYWIyZDQ5MzNjNjU5Y2RlYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNzY1LDcgKzM3NjUsNyBAQCB2b2lkIFdlYlBhZ2U6
OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcgogCiAgICAgICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJlbmNlOwog
ICAgICAgICBpZiAoc2VyaWFsaXplZFJlc3VsdFZhbHVlKQotICAgICAgICAgICAgZGF0YVJlZmVy
ZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+ZGF0YSgpOworICAgICAgICAgICAgZGF0YVJl
ZmVyZW5jZSA9IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZS0+d2lyZUJ5dGVzKCk7CiAKICAgICAgICAg
c3RkOjpvcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzOwogICAgICAgICBpZiAoIXJl
c3VsdCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>