<?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>218793</bug_id>
          
          <creation_ts>2020-11-11 01:37:04 -0800</creation_ts>
          <short_desc>Replace confusing extraWidthToEndOfLine parameter with an enum</short_desc>
          <delta_ts>2020-11-11 11:38:16 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1706393</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-11 01:37:04 -0800</bug_when>
    <thetext>In localCaretRect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706397</commentid>
    <comment_count>1</comment_count>
      <attachid>413799</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-11 01:43:49 -0800</bug_when>
    <thetext>Created attachment 413799
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706399</commentid>
    <comment_count>2</comment_count>
      <attachid>413800</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-11 01:54:42 -0800</bug_when>
    <thetext>Created attachment 413800
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706417</commentid>
    <comment_count>3</comment_count>
      <attachid>413808</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-11 03:59:52 -0800</bug_when>
    <thetext>Created attachment 413808
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706495</commentid>
    <comment_count>4</comment_count>
      <attachid>413834</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-11 09:38:34 -0800</bug_when>
    <thetext>Created attachment 413834
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706536</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-11 11:37:51 -0800</bug_when>
    <thetext>Committed r269693: &lt;https://trac.webkit.org/changeset/269693&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 413834.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1706537</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-11 11:38:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/71292103&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413799</attachid>
            <date>2020-11-11 01:43:49 -0800</date>
            <delta_ts>2020-11-11 01:59:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>caret-rect-enum.patch</filename>
            <type>text/plain</type>
            <size>24283</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZGE5ZjQ5ZDRiMTcuLjY5Njc1MzViZDFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDIwLTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIGNvbmZ1c2luZyBleHRyYVdpZHRoVG9FbmRPZkxpbmUgcGFy
YW1ldGVyIHdpdGggYW4gZW51bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBhIGNsaWVudCBvZiBsb2NhbENhcmV0UmVjdCB3YW50cyBhIHJlY3Qg
dGhhdCBleHRlbmRzIGZyb20gY2FyZXQgdG8gdGhlIGVuZCBvZiB0aGUgbGluZSBpdCBnZXRzIHRo
ZSBsZW5ndGgKKyAgICAgICAgb2YgdGhlIHJlbWFpbmluZyBsaW5lIGF3a3dhcmRseSB2aWEgZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lIG91dC1wYXJhbWV0ZXIgYW5kIHRoZW4gdXNlcyBpdCB0byBtdXRh
dGUgdGhlIGNhcmV0IHJlY3QuCisKKyAgICAgICAgSW5zdGVhZCBqdXN0IHBhc3MgYW4gZW51bSB0
ZWxsaW5nIHRoYXQgYW4gZXh0ZW5kZWQgcmVjdCBpcyByZXF1aXJlZCBhbmQgY29tcHV0ZSBpdCBp
biB3aGVuIGNvbnN0cnVjdGluZyB0aGUgcmVjdC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UgY29uc3Qp
OgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QgY29uc3QpOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9jYWxDYXJldFJlY3QgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojpjb21wdXRlQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2Nh
bENhcmV0UmVjdEZvckVtcHR5RWxlbWVudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJl
YWs6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdEVudW1zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6
OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuaDoKKwogMjAyMC0xMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjkyNDQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZjI3MDY2MWIxZjA5Li4yMTA2Yjg1YzBkMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzNDYsMTggKzMzNDYsNyBAQCBJbnRS
ZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSBj
b25zdAogICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0LCBlbmQpKQogICAgICAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdCh1bml0ZWRCb3VuZGluZ0JveGVzKFJlbmRlck9iamVjdDo6YWJzb2x1dGVU
ZXh0UXVhZHMocmFuZ2UpKSk7CiAKLSAgICBMYXlvdXRVbml0IGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZTsKLSAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVyZWRQb3NpdGlvbihzdGFydCku
YWJzb2x1dGVSZWN0KCZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwotICAgIGlmIChzdGFydENhcmV0
UmVjdCA9PSBJbnRSZWN0KCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0KLSAgICAvLyBX
aGVuIHN0YXJ0IGFuZCBlbmQgYXJlbid0IG9uIHRoZSBzYW1lIGxpbmUsIHdlIHdhbnQgdG8gZ28g
ZnJvbSBzdGFydCB0byB0aGUgZW5kIG9mIGl0cyBsaW5lLgotICAgIGF1dG8gcmVzdWx0ID0gc3Rh
cnRDYXJldFJlY3Q7Ci0gICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LndpZHRoKCkgPT0gY2FyZXRXaWR0
aCkKLSAgICAgICAgcmVzdWx0LmV4cGFuZChleHRyYVdpZHRoVG9FbmRPZkxpbmUsIDApOwotICAg
IGVsc2UKLSAgICAgICAgcmVzdWx0LmV4cGFuZCgwLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oc3RhcnQpLmFi
c29sdXRlUmVjdChDYXJldFJlY3RNb2RlOjpFeHBhbmRUb0VuZE9mTGluZSk7CiB9CiAKIGJvb2wg
RWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFmZmluaXR5
IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggYWYzMjdkNTY0ZjY5Li43YzgyZTZhM2E3
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAt
MjI0LDEyICsyMjQsMTIgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdFJp
Z2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHByZXZpb3VzTGVhZk9uTGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSwgcHJl
dmlvdXNMZWFmT25MaW5lKCktPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkpOwogfQogCi1JbnRSZWN0
IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9F
bmRPZkxpbmUpIGNvbnN0CitJbnRSZWN0IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChD
YXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgSW50UmVjdCBsb2NhbFJlY3QgPSBzbmFw
cGVkSW50UmVjdChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG1fcmVuZGVyZXIpLT5sb2NhbENh
cmV0UmVjdCh7IG1fcnVuLCBtX29mZnNldCB9LCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpKTsKKyAg
ICBJbnRSZWN0IGxvY2FsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmxvY2FsQ2Fy
ZXRSZWN0KHsgbV9ydW4sIG1fb2Zmc2V0IH0sIGNhcmV0UmVjdE1vZGUpKTsKICAgICByZXR1cm4g
bG9jYWxSZWN0ID09IEludFJlY3QoKSA/IEludFJlY3QoKSA6IG1fcmVuZGVyZXItPmxvY2FsVG9B
YnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggZDVj
MmE3Y2NhNzg4Li5mMGJmOWRjYWVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbiBwb3Np
dGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAgICAgUG9zaXRpb24gcG9zaXRp
b25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdDsKIAotICAgIEludFJlY3QgYWJzb2x1
dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNvbnN0
OworICAgIEludFJlY3QgYWJzb2x1dGVSZWN0KENhcmV0UmVjdE1vZGUgPSBDYXJldFJlY3RNb2Rl
OjpOb3JtYWwpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGZhMmQxMTlhODA5MC4uYzhkODFlZjI0ODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI4NDEsMTkg
KzI4NDEsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JgogICAgIH0KIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJCbG9jazo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBy
dW5BbmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xh
eW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9m
ZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gRG8gdGhlIG5vcm1hbCBjYWxjdWxhdGlvbiBpbiBtb3N0IGNhc2VzLgogICAgIGlm
IChmaXJzdENoaWxkKCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0
KHJ1bkFuZE9mZnNldCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICAgICAgcmV0dXJuIFJl
bmRlckJveDo6bG9jYWxDYXJldFJlY3QocnVuQW5kT2Zmc2V0LCBjYXJldFJlY3RNb2RlKTsKIAot
ICAgIExheW91dFJlY3QgY2FyZXRSZWN0ID0gbG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQo
d2lkdGgoKSwgdGV4dEluZGVudE9mZnNldCgpKTsKLQotICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMg
bmVlZCB0byBhZGp1c3QgZm9yIHZlcnRpY2FsIG9yaWVudGF0aW9uPwotICAgIGlmIChleHRyYVdp
ZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSB3aWR0aCgp
IC0gY2FyZXRSZWN0Lm1heFgoKTsKLQotICAgIHJldHVybiBjYXJldFJlY3Q7CisgICAgcmV0dXJu
IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KHdpZHRoKCksIHRleHRJbmRlbnRPZmZzZXQo
KSwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1Jl
Y3RzRm9ySW5saW5lQ2hpbGRyZW4oVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggNWU4MTBhM2IyYzMyLi43ZDM0MTRiNGM1ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGFpbnRDb250aW51YXRpb25PdXRsaW5lcyhQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJ
bmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBu
dWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0
IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IGZpbmFsOwogICAgIAog
ICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2Fs
bGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwogICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBlODdlNDU3NDQxYWQuLjAyODZhOTY4
NjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
QEAgLTQ0MzgsNyArNDQzOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
UHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgbWF4TG9n
aWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBpbmxpbmVNYXgpOwog
fQogCi1JbnRSZWN0IFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNhcmV0UmVjdChjb25zdCBMYXlv
dXRSZWN0JiBsaW5lU2VsZWN0aW9uUmVjdCwgZmxvYXQgbG9naWNhbExlZnRQb3NpdGlvbiwgdW5z
aWduZWQgY2FyZXRXaWR0aCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgbGluZVNlbGVjdGlvblJlY3QsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIHVu
c2lnbmVkIGNhcmV0V2lkdGgsIENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkgY29uc3QKIHsK
ICAgICBpbnQgaGVpZ2h0ID0gbGluZVNlbGVjdGlvblJlY3QuaGVpZ2h0KCk7CiAgICAgaW50IHRv
cCA9IGxpbmVTZWxlY3Rpb25SZWN0LnkoKTsKQEAgLTQ0NTMsOSArNDQ1Myw2IEBAIEludFJlY3Qg
UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVT
ZWxlY3Rpb25SZWN0LCBmCiAgICAgZmxvYXQgbGluZUxlZnQgPSBsaW5lU2VsZWN0aW9uUmVjdC54
KCk7CiAgICAgZmxvYXQgbGluZVJpZ2h0ID0gbGluZVNlbGVjdGlvblJlY3QubWF4WCgpOwogCi0g
ICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAgICAgKmV4dHJhV2lkdGhUb0VuZE9m
TGluZSA9IGxpbmVSaWdodCAtIChsZWZ0ICsgY2FyZXRXaWR0aCk7Ci0KICAgICBib29sIHJpZ2h0
QWxpZ25lZCA9IGZhbHNlOwogICAgIHN3aXRjaCAoc3R5bGUoKS50ZXh0QWxpZ24oKSkgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CkBAIC00NDg2LDcgKzQ0ODMsMTMgQEAgSW50UmVj
dCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGlu
ZVNlbGVjdGlvblJlY3QsIGYKICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIHJpZ2h0RWRn
ZSAtIGNhcmV0V2lkdGhSaWdodE9mT2Zmc2V0KTsKICAgICAgICAgbGVmdCA9IHN0ZDo6bWF4KGxl
ZnQsIGxpbmVMZWZ0KTsKICAgICB9Ci0gICAgcmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IEludFJlY3QobGVmdCwgdG9wLCBjYXJldFdpZHRoLCBoZWlnaHQpIDogSW50
UmVjdCh0b3AsIGxlZnQsIGhlaWdodCwgY2FyZXRXaWR0aCk7CisKKyAgICBhdXRvIHJlY3QgPSBM
YXlvdXRSZWN0KGxlZnQsIHRvcCwgY2FyZXRXaWR0aCwgaGVpZ2h0KTsKKworICAgIGlmIChjYXJl
dFJlY3RNb2RlID09IENhcmV0UmVjdE1vZGU6OkV4cGFuZFRvRW5kT2ZMaW5lKQorICAgICAgICBy
ZWN0LnNoaWZ0TWF4WEVkZ2VUbyhsaW5lUmlnaHQpOworCisgICAgcmV0dXJuIHN0eWxlKCkuaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QgOiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCAw
MDYxOGUyNzFkYWQuLjczMTM2OWQzNzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzk4LDcgKzM5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZEZsb2F0c1RvTmV3UGFyZW50KFJlbmRlckJsb2NrRmxvdyYgdG9CbG9ja0Zsb3cpIGNvbnN0Owog
ICAgIAogICAgIExheW91dFVuaXQgZW5kUGFkZGluZ1dpZHRoRm9yQ2FyZXQoKSBjb25zdDsKLSAg
ICBJbnRSZWN0IGNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGluZVNlbGVjdGlv
blJlY3QsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIHVuc2lnbmVkIGNhcmV0V2lkdGgsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBj
b21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmbG9h
dCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNpZ25lZCBjYXJldFdpZHRoLCBDYXJldFJlY3RNb2Rl
KSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wgc2hvdWxkUmVzZXRMb2dpY2FsSGVpZ2h0
QmVmb3JlTGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4NWE0YzU2MmIyMWEuLjQwNjgwOTcwNjdm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTQ0MzAsNyArNDQz
MCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxIZWlnaHRSZXBs
YWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1CiAgICAgY29tcHV0ZWRWYWx1ZXMubV9wb3Np
dGlvbiA9IGxvZ2ljYWxUb3BQb3M7CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENh
cmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgTGF5b3V0VW5p
dCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3g6Omxv
Y2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJl
dFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgLy8gVmlzaWJsZVBvc2l0aW9u
cyBhdCBvZmZzZXRzIGluc2lkZSBjb250YWluZXJzIGVpdGhlciBhKSByZWZlciB0byB0aGUgcG9z
aXRpb25zIGJlZm9yZS9hZnRlcgogICAgIC8vIHRob3NlIGNvbnRhaW5lcnMgKHRhYmxlcyBhbmQg
c2VsZWN0IGVsZW1lbnRzKSBvciBiKSByZWZlciB0byB0aGUgcG9zaXRpb24gaW5zaWRlIGFuIGVt
cHR5IGJsb2NrLgpAQCAtNDQ2Miw5ICs0NDYyLDYgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Omxv
Y2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXkK
ICAgICBpZiAoZm9udEhlaWdodCA+IHJlY3QuaGVpZ2h0KCkgfHwgKCFpc1JlcGxhY2VkKCkgJiYg
IWlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVpZ2h0KGZvbnRIZWlnaHQpOwogCi0gICAg
aWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAgICAgKmV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSA9IHgoKSArIHdpZHRoKCkgLSByZWN0Lm1heFgoKTsKLQogICAgIC8vIE1vdmUgdG8gbG9jYWwg
Y29vcmRzCiAgICAgcmVjdC5tb3ZlQnkoLWxvY2F0aW9uKCkpOwogCkBAIC00NDc2LDEwICs0NDcz
LDEwIEBAIExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVS
dW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgTGF5CiAgICAgICAgIHJlY3Quc2V0WShyZWN0Lnko
KSArIHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpKTsKICAgICB9CiAKLSAgICBpZiAoIWlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJldHVybiByZWN0LnRyYW5zcG9zZWRSZWN0
KCk7CisgICAgaWYgKGNhcmV0UmVjdE1vZGUgPT0gQ2FyZXRSZWN0TW9kZTo6RXhwYW5kVG9FbmRP
ZkxpbmUpCisgICAgICAgIHJlY3Quc2hpZnRNYXhYRWRnZVRvKHgoKSArIHdpZHRoKCkpOwogCi0g
ICAgcmV0dXJuIHJlY3Q7CisgICAgcmV0dXJuIGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBy
ZWN0IDogcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQogCiBWaXNpYmxlUG9zaXRpb24gUmVuZGVy
Qm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCmluZGV4IDc1NTA3NjU0NDMyZC4uM2NkODBiY2QwNzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCkBAIC00OTgsNyArNDk4LDcgQEAgb3ZlcnJpZGU7CiAKICAgICBi
b29sIHNob3VsZFRyZWF0Q2hpbGRBc1JlcGxhY2VkSW5UYWJsZUNlbGxzKCkgY29uc3Q7CiAgICAg
Ci0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBjb25zdCBvdmVy
cmlkZTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9m
ZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBMYXlv
dXRSZWN0IG92ZXJmbG93Q2xpcFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5k
ZXJGcmFnbWVudENvbnRhaW5lciogPSBudWxscHRyLCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2
YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBQYWludFBoYXNlID0gUGFpbnRQaGFz
ZTo6QmxvY2tCYWNrZ3JvdW5kKSBjb25zdDsKICAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZs
b3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVu
ZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBPdmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2
YW5jeSByZWxldmFuY3kpIGNvbnN0IHsgcmV0dXJuIG92ZXJmbG93Q2xpcFJlY3QobG9jYXRpb24s
IGZyYWdtZW50LCByZWxldmFuY3kpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBkOWE3NWM5ZWExOTcuLmI5ODI3YzhhMTRk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpj
bGVhckZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpCiAgICAgZmlyc3RMZXR0ZXJSZW1haW5pbmdU
ZXh0TWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlv
dXRVbml0IHRleHRJbmRlbnRPZmZzZXQpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVs
T2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBM
YXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQsIENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWZpcnN0Q2hpbGQoKSk7CiAKQEAgLTI2ODksNyArMjY4OSwx
MyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVt
cHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLAogICAgIGF1dG8gbGluZUhlaWdodCA9IHRoaXMt
PmxpbmVIZWlnaHQodHJ1ZSwgY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJv
eGVzKTsKICAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWluKGxpbmVIZWlnaHQsIExheW91dFVuaXQg
eyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3MoKS5oZWlnaHQoKSB9KTsKICAgICBhdXRvIHkgPSBw
YWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSArIChsaW5lSGVpZ2h0ID4gaGVpZ2h0ID8gKGxpbmVI
ZWlnaHQgLSBoZWlnaHQpIC8gMiA6IExheW91dFVuaXQgeyB9KTsKLSAgICByZXR1cm4gY3VycmVu
dFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBMYXlvdXRSZWN0KHgsIHksIGNhcmV0
V2lkdGgsIGhlaWdodCkgOiBMYXlvdXRSZWN0KHksIHgsIGhlaWdodCwgY2FyZXRXaWR0aCk7CisK
KyAgICBhdXRvIHJlY3QgPSBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCk7CisK
KyAgICBpZiAoY2FyZXRSZWN0TW9kZSA9PSBDYXJldFJlY3RNb2RlOjpFeHBhbmRUb0VuZE9mTGlu
ZSkKKyAgICAgICAgcmVjdC5zaGlmdE1heFhFZGdlVG8od2lkdGgpOworCisgICAgcmV0dXJuIGN1
cnJlbnRTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdCA6IHJlY3QudHJhbnNw
b3NlZFJlY3QoKTsKIH0KIAogYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c2hvdWxkQW50aWFs
aWFzTGluZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAppbmRleCBlY2E2ZDU4Njg1ZjcuLjBkODdi
MmFjNWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKQEAgLTI2MCw3ICsyNjAsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBJbnRlcnBvbGF0
aW9uUXVhbGl0eSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVhbGl0eShHcmFwaGljc0NvbnRleHQmLCBJ
bWFnZSYsIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRTaXplJik7CiAKLSAgICBMYXlvdXRSZWN0
IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KExheW91dFVuaXQgd2lkdGgsIExheW91dFVu
aXQgdGV4dEluZGVudE9mZnNldCkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVj
dEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRP
ZmZzZXQsIENhcmV0UmVjdE1vZGUgPSBDYXJldFJlY3RNb2RlOjpOb3JtYWwpIGNvbnN0OwogCiAg
ICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0Jik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5jcHAKaW5kZXggZjc4ZWM3ZGNm
ODAxLi5iZDUyNWUwMThiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxp
bmUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBSZW5kZXJJbmxpbmU6OnVwZGF0ZUFsd2F5
c0NyZWF0ZUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpCiAgICAgfQogfQogCi1MYXlvdXRSZWN0
IFJlbmRlcklubGluZTo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0Jiwg
TGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0
UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKGZpcnN0Q2hpbGQoKSkgewogICAgICAgICAvLyBU
aGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpZiB0aGUgUmVuZGVySW5saW5lIGlzIGF0IGFuIGVk
aXRpbmcgYm91bmRhcnksCkBAIC0yMzksOSArMjM5LDYgQEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxp
bmU6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQq
IGUKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKICAgICB9CiAKLSAgICBpZiAoZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lKQotICAgICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMDsKLQog
ICAgIExheW91dFJlY3QgY2FyZXRSZWN0ID0gbG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQo
aG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQoKSwgMCk7CiAKICAgICBpZiAoSW5saW5l
Qm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJveCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlcklubGluZS5oCmluZGV4IGVhNTUwYzI5NWI5OS4uMDc3NDU5OWUxZWQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBAIC04Niw3ICs4Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEFsd2F5c0NyZWF0ZUxpbmVCb3hlcygpIHsgc2V0UmVuZGVySW5saW5lQWx3
YXlzQ3JlYXRlc0xpbmVCb3hlcyh0cnVlKTsgfQogICAgIHZvaWQgdXBkYXRlQWx3YXlzQ3JlYXRl
TGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRS
ZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBmaW5hbDsKIAogICAg
IGJvb2wgaGl0VGVzdEN1bGxlZElubGluZShjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RS
ZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0
IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXggOTE2NDM3MDJkZjc1Li45ODJlZjU1Yjg1
NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBA
IC0xNTgsNyArMTU4LDcgQEAgdm9pZCBSZW5kZXJMaW5lQnJlYWs6OnNldFNlbGVjdGlvblN0YXRl
KEhpZ2hsaWdodFN0YXRlIHN0YXRlKQogICAgIG1faW5saW5lQm94V3JhcHBlci0+cm9vdCgpLnNl
dEhhc1NlbGVjdGVkQ2hpbGRyZW4oc3RhdGUgIT0gSGlnaGxpZ2h0U3RhdGU6Ok5vbmUpOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5l
UnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsb2NhbENhcmV0UmVjdChj
b25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJl
dFJlY3RNb2RlKSBjb25zdAogewogICAgIEFTU0VSVCghcnVuQW5kT2Zmc2V0Lm9mZnNldCk7CiAg
ICAgQVNTRVJUKHJ1bkFuZE9mZnNldC5ydW4gPT0gTGF5b3V0SW50ZWdyYXRpb246OnJ1bkZvcigq
dGhpcykpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIExheW91dFJlY3QgUmVuZGVyTGluZUJyZWFrOjps
b2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNlCiAgICAg
ICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICBhdXRvIGxpbmUgPSBydW5BbmRPZmZzZXQu
cnVuLmxpbmUoKTsKLSAgICByZXR1cm4gbGluZS0+Y29udGFpbmluZ0Jsb2NrKCkuY29tcHV0ZUNh
cmV0UmVjdChsaW5lLT5zZWxlY3Rpb25SZWN0KCksIGxpbmUtPmxvZ2ljYWxMZWZ0KCksIGNhcmV0
V2lkdGgsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSk7CisgICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5p
bmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+c2VsZWN0aW9uUmVjdCgpLCBsaW5lLT5s
b2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBjYXJldFJlY3RNb2RlKTsKIH0KIAogSW50UmVjdCBS
ZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3goKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCmluZGV4IDQwNDMyYWNlN2M5OS4uY2QyYTJlYmYz
OTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFr
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCkBAIC02
Niw3ICs2Niw3IEBAIHByaXZhdGU6CiAgICAgaW50IGNhcmV0TWluT2Zmc2V0KCkgY29uc3QgZmlu
YWw7CiAgICAgaW50IGNhcmV0TWF4T2Zmc2V0KCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBjYW5C
ZVNlbGVjdGlvbkxlYWYoKSBjb25zdCBmaW5hbDsKLSAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRS
ZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIHNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKIAogICAgIExheW91
dFVuaXQgbGluZUhlaWdodChib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQ
b3NpdGlvbk1vZGUpIGNvbnN0IGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCAzNTc2Nzk3NzU0MmIuLjE3ZmMzM2Q0MWUwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTE0MDAsMTEgKzE0MDAsOCBAQCBM
YXlvdXRTaXplIFJlbmRlck9iamVjdDo6b2Zmc2V0RnJvbUFuY2VzdG9yQ29udGFpbmVyKFJlbmRl
ckVsZW1lbnQmIGNvbnRhaW5lcikgYwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUxheW91dFJl
Y3QgUmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CitMYXlvdXRSZWN0IFJl
bmRlck9iamVjdDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgQ2Fy
ZXRSZWN0TW9kZSkgY29uc3QKIHsKLSAgICBpZiAoZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQotICAg
ICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMDsKLQogICAgIHJldHVybiBMYXlvdXRSZWN0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA1YzBi
MTM2OWU0NTAuLjk1MzM3YTRjYTAxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaApAQCAtNjc0LDcgKzY3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkUGFpbnRTZWxlY3Rpb25HYXBzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8v
IFJldHVybnMgdGhlIGxvY2FsIGNvb3JkaW5hdGVzIG9mIHRoZSBjYXJldCB3aXRoaW4gdGhpcyBy
ZW5kZXIgb2JqZWN0LgotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSBudWxscHRyKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3Qo
Y29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgQ2FyZXRSZWN0TW9kZSA9IENhcmV0UmVjdE1vZGU6
Ok5vcm1hbCkgY29uc3Q7CiAKICAgICAvLyBXaGVuIHBlcmZvcm1pbmcgYSBnbG9iYWwgZG9jdW1l
bnQgdGVhci1kb3duLCBvciB3aGVuIGdvaW5nIGludG8gdGhlIGJhY2svZm9yd2FyZCBjYWNoZSwg
dGhlIHJlbmRlcmVyIG9mIHRoZSBkb2N1bWVudCBpcyBjbGVhcmVkLgogICAgIGJvb2wgcmVuZGVy
VHJlZUJlaW5nRGVzdHJveWVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0RW51bXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3RFbnVtcy5oCmluZGV4IDM5OWViZWIxNWQ2My4uMDZlNzczMzIwOGFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0RW51bXMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0RW51bXMuaApAQCAtNjEsNCAr
NjEsMTAgQEAgZW51bSBNYXBDb29yZGluYXRlc01vZGUgewogfTsKIHR5cGVkZWYgdW5zaWduZWQg
TWFwQ29vcmRpbmF0ZXNGbGFnczsKIAorZW51bSBjbGFzcyBDYXJldFJlY3RNb2RlIHsKKyAgICBO
b3JtYWwsCisgICAgRXhwYW5kVG9FbmRPZkxpbmUKK307CisKKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCmluZGV4IGY0ODg4Yzc0NmM4MS4uYWZjZWRhYmFkODBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC03MDksNyArNzA5LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIFJlbmRlclRleHQ6OnBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5
b3V0UG9pbnQmIHBvaW50LCBjb25zdCBSZW4KICAgICByZXR1cm4gY3JlYXRlVmlzaWJsZVBvc2l0
aW9uKDAsIEFmZmluaXR5OjpEb3duc3RyZWFtKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJUZXh0
Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwg
TGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAorTGF5b3V0UmVjdCBSZW5k
ZXJUZXh0Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9m
ZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewogICAgIGlmICghcnVu
QW5kT2Zmc2V0LnJ1bikKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKQEAgLTcxOCw3ICs3
MTgsNyBAQCBMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGlu
ZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYQogICAgIGF1dG8gbGluZSA9IHRleHRSdW4u
bGluZSgpOwogCiAgICAgZmxvYXQgcG9zaXRpb24gPSB0ZXh0UnVuLT5wb3NpdGlvbkZvck9mZnNl
dChydW5BbmRPZmZzZXQub2Zmc2V0KTsKLSAgICByZXR1cm4gbGluZS0+Y29udGFpbmluZ0Jsb2Nr
KCkuY29tcHV0ZUNhcmV0UmVjdChsaW5lLT5zZWxlY3Rpb25SZWN0KCksIHBvc2l0aW9uLCBjYXJl
dFdpZHRoLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIHJldHVybiBsaW5lLT5jb250YWlu
aW5nQmxvY2soKS5jb21wdXRlQ2FyZXRSZWN0KGxpbmUtPnNlbGVjdGlvblJlY3QoKSwgcG9zaXRp
b24sIGNhcmV0V2lkdGgsIGNhcmV0UmVjdE1vZGUpOwogfQogCiBBTFdBWVNfSU5MSU5FIGZsb2F0
IFJlbmRlclRleHQ6OndpZHRoRnJvbUNhY2hlKGNvbnN0IEZvbnRDYXNjYWRlJiBmLCB1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuLCBmbG9hdCB4UG9zLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiog
ZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxvdyogZ2x5cGhPdmVyZmxvdywgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKaW5k
ZXggYWU4NWFkMjQyYTg1Li5hYWQ3OTNmM2NmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaApAQCAtMjA1LDcgKzIwNSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNldFNl
bGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlKSBmaW5hbDsKICAgICBMYXlvdXRSZWN0IHNlbGVj
dGlvblJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBmaW5hbDsKLSAgICBM
YXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91
dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0Jiwg
Q2FyZXRSZWN0TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3Zl
cmZsb3dSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50
Q29udGFpbmVyKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgY29tcHV0ZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoZmxvYXQgbGVhZFdpZHRoLCBIYXNoU2V0PGNvbnN0IEZvbnQqPiYgZmFsbGJhY2tG
b250cywgR2x5cGhPdmVyZmxvdyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKaW5kZXggYmYzZjcxNWIwZjc1Li5mYmNhOGYz
MmM0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbmxp
bmVUZXh0Qm94PiBSZW5kZXJTVkdJbmxpbmVUZXh0OjpjcmVhdGVUZXh0Qm94KCkKICAgICByZXR1
cm4gYm94OyAKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJTVkdJbmxpbmVUZXh0Ojpsb2NhbENhcmV0
UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgTGF5b3V0VW5pdCop
IGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZVRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNv
bnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlKSBjb25z
dAogewogICAgIGF1dG8qIGJveCA9IHJ1bkFuZE9mZnNldC5ydW4gPyBydW5BbmRPZmZzZXQucnVu
LT5sZWdhY3lJbmxpbmVCb3goKSA6IG51bGxwdHI7CiAgICAgYXV0byBjYXJldE9mZnNldCA9IHJ1
bkFuZE9mZnNldC5vZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0lubGluZVRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW5saW5lVGV4dC5oCmluZGV4IGRjMjcyMDk5ZDAzNS4uYmIyZWFmZWNlNWU3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRl
eHQuaApAQCAtNjIsNyArNjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTVkdJbmxpbmVUZXh0
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHBvc2l0aW9uRm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBSZW5kZXJGcmFnbWVu
dENvbnRhaW5lciopIG92ZXJyaWRlOwotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29u
c3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
ID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVj
dChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBvdmVycmlk
ZTsKICAgICBJbnRSZWN0IGxpbmVzQm91bmRpbmdCb3goKSBjb25zdCBvdmVycmlkZTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gY3JlYXRlVGV4dEJveCgpIG92ZXJyaWRlOwog
Cg==
</data>
<flag name="commit-queue"
          id="430461"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413800</attachid>
            <date>2020-11-11 01:54:42 -0800</date>
            <delta_ts>2020-11-11 03:59:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>caret-rect-enum-2.patch</filename>
            <type>text/plain</type>
            <size>24824</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZGE5ZjQ5ZDRiMTcuLjY5Njc1MzViZDFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDIwLTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIGNvbmZ1c2luZyBleHRyYVdpZHRoVG9FbmRPZkxpbmUgcGFy
YW1ldGVyIHdpdGggYW4gZW51bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiBhIGNsaWVudCBvZiBsb2NhbENhcmV0UmVjdCB3YW50cyBhIHJlY3Qg
dGhhdCBleHRlbmRzIGZyb20gY2FyZXQgdG8gdGhlIGVuZCBvZiB0aGUgbGluZSBpdCBnZXRzIHRo
ZSBsZW5ndGgKKyAgICAgICAgb2YgdGhlIHJlbWFpbmluZyBsaW5lIGF3a3dhcmRseSB2aWEgZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lIG91dC1wYXJhbWV0ZXIgYW5kIHRoZW4gdXNlcyBpdCB0byBtdXRh
dGUgdGhlIGNhcmV0IHJlY3QuCisKKyAgICAgICAgSW5zdGVhZCBqdXN0IHBhc3MgYW4gZW51bSB0
ZWxsaW5nIHRoYXQgYW4gZXh0ZW5kZWQgcmVjdCBpcyByZXF1aXJlZCBhbmQgY29tcHV0ZSBpdCBp
biB3aGVuIGNvbnN0cnVjdGluZyB0aGUgcmVjdC4KKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UgY29uc3Qp
OgorICAgICAgICAqIGVkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QgY29uc3QpOgorICAgICAgICAqIGVk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6bG9jYWxDYXJldFJlY3QgY29u
c3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojpjb21wdXRlQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2Nh
bENhcmV0UmVjdEZvckVtcHR5RWxlbWVudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW5saW5lLmg6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxpbmVCcmVhay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMaW5lQnJl
YWs6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGlu
ZUJyZWFrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9i
amVjdEVudW1zLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lubGluZVRleHQ6
OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0lubGluZVRleHQuaDoKKwogMjAyMC0xMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVl
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNjkyNDQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZjI3MDY2MWIxZjA5Li4yMTA2Yjg1YzBkMzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTMzNDYsMTggKzMzNDYsNyBAQCBJbnRS
ZWN0IEVkaXRvcjo6Zmlyc3RSZWN0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlKSBj
b25zdAogICAgIGlmIChpblNhbWVMaW5lKHN0YXJ0LCBlbmQpKQogICAgICAgICByZXR1cm4gZW5j
bG9zaW5nSW50UmVjdCh1bml0ZWRCb3VuZGluZ0JveGVzKFJlbmRlck9iamVjdDo6YWJzb2x1dGVU
ZXh0UXVhZHMocmFuZ2UpKSk7CiAKLSAgICBMYXlvdXRVbml0IGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZTsKLSAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gUmVuZGVyZWRQb3NpdGlvbihzdGFydCku
YWJzb2x1dGVSZWN0KCZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwotICAgIGlmIChzdGFydENhcmV0
UmVjdCA9PSBJbnRSZWN0KCkpCi0gICAgICAgIHJldHVybiBJbnRSZWN0KCk7Ci0KLSAgICAvLyBX
aGVuIHN0YXJ0IGFuZCBlbmQgYXJlbid0IG9uIHRoZSBzYW1lIGxpbmUsIHdlIHdhbnQgdG8gZ28g
ZnJvbSBzdGFydCB0byB0aGUgZW5kIG9mIGl0cyBsaW5lLgotICAgIGF1dG8gcmVzdWx0ID0gc3Rh
cnRDYXJldFJlY3Q7Ci0gICAgaWYgKHN0YXJ0Q2FyZXRSZWN0LndpZHRoKCkgPT0gY2FyZXRXaWR0
aCkKLSAgICAgICAgcmVzdWx0LmV4cGFuZChleHRyYVdpZHRoVG9FbmRPZkxpbmUsIDApOwotICAg
IGVsc2UKLSAgICAgICAgcmVzdWx0LmV4cGFuZCgwLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFJlbmRlcmVkUG9zaXRpb24oc3RhcnQpLmFi
c29sdXRlUmVjdChDYXJldFJlY3RNb2RlOjpFeHBhbmRUb0VuZE9mTGluZSk7CiB9CiAKIGJvb2wg
RWRpdG9yOjpzaG91bGRDaGFuZ2VTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xk
U2VsZWN0aW9uLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEFmZmluaXR5
IGFmZmluaXR5LCBib29sIHN0aWxsU2VsZWN0aW5nKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKaW5kZXggYWYzMjdkNTY0ZjY5Li43YzgyZTZhM2E3
MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmNwcApAQCAt
MjI0LDEyICsyMjQsMTIgQEAgUG9zaXRpb24gUmVuZGVyZWRQb3NpdGlvbjo6cG9zaXRpb25BdFJp
Z2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdAogICAgIHJldHVybiBtYWtlRGVwcmVjYXRlZExl
Z2FjeVBvc2l0aW9uKHByZXZpb3VzTGVhZk9uTGluZSgpLT5yZW5kZXJlcigpLm5vZGUoKSwgcHJl
dmlvdXNMZWFmT25MaW5lKCktPnJpZ2h0bW9zdENhcmV0T2Zmc2V0KCkpOwogfQogCi1JbnRSZWN0
IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9F
bmRPZkxpbmUpIGNvbnN0CitJbnRSZWN0IFJlbmRlcmVkUG9zaXRpb246OmFic29sdXRlUmVjdChD
YXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKGlzTnVsbCgpKQog
ICAgICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgSW50UmVjdCBsb2NhbFJlY3QgPSBzbmFw
cGVkSW50UmVjdChjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KG1fcmVuZGVyZXIpLT5sb2NhbENh
cmV0UmVjdCh7IG1fcnVuLCBtX29mZnNldCB9LCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpKTsKKyAg
ICBJbnRSZWN0IGxvY2FsUmVjdCA9IHNuYXBwZWRJbnRSZWN0KG1fcmVuZGVyZXItPmxvY2FsQ2Fy
ZXRSZWN0KHsgbV9ydW4sIG1fb2Zmc2V0IH0sIGNhcmV0UmVjdE1vZGUpKTsKICAgICByZXR1cm4g
bG9jYWxSZWN0ID09IEludFJlY3QoKSA/IEludFJlY3QoKSA6IG1fcmVuZGVyZXItPmxvY2FsVG9B
YnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGxvY2FsUmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZW5kZXJlZFBvc2l0aW9uLmgKaW5kZXggZDVj
MmE3Y2NhNzg4Li5mMGJmOWRjYWVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVuZGVyZWRQb3NpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVy
ZWRQb3NpdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBQb3NpdGlvbiBwb3Np
dGlvbkF0TGVmdEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAgICAgUG9zaXRpb24gcG9zaXRp
b25BdFJpZ2h0Qm91bmRhcnlPZkJpRGlSdW4oKSBjb25zdDsKIAotICAgIEludFJlY3QgYWJzb2x1
dGVSZWN0KExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNvbnN0
OworICAgIEludFJlY3QgYWJzb2x1dGVSZWN0KENhcmV0UmVjdE1vZGUgPSBDYXJldFJlY3RNb2Rl
OjpOb3JtYWwpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBS
ZW5kZXJlZFBvc2l0aW9uJikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGZhMmQxMTlhODA5MC4uYzhkODFlZjI0ODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKQEAgLTI4NDEsMTkg
KzI4NDEsMTMgQEAgdm9pZCBSZW5kZXJCbG9jazo6dXBkYXRlSGl0VGVzdFJlc3VsdChIaXRUZXN0
UmVzdWx0JiByZXN1bHQsIGNvbnN0IExheW91dFBvaW50JgogICAgIH0KIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJCbG9jazo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBy
dW5BbmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xh
eW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9m
ZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gRG8gdGhlIG5vcm1hbCBjYWxjdWxhdGlvbiBpbiBtb3N0IGNhc2VzLgogICAgIGlm
IChmaXJzdENoaWxkKCkpCi0gICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0
KHJ1bkFuZE9mZnNldCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKKyAgICAgICAgcmV0dXJuIFJl
bmRlckJveDo6bG9jYWxDYXJldFJlY3QocnVuQW5kT2Zmc2V0LCBjYXJldFJlY3RNb2RlKTsKIAot
ICAgIExheW91dFJlY3QgY2FyZXRSZWN0ID0gbG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQo
d2lkdGgoKSwgdGV4dEluZGVudE9mZnNldCgpKTsKLQotICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMg
bmVlZCB0byBhZGp1c3QgZm9yIHZlcnRpY2FsIG9yaWVudGF0aW9uPwotICAgIGlmIChleHRyYVdp
ZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSB3aWR0aCgp
IC0gY2FyZXRSZWN0Lm1heFgoKTsKLQotICAgIHJldHVybiBjYXJldFJlY3Q7CisgICAgcmV0dXJu
IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KHdpZHRoKCksIHRleHRJbmRlbnRPZmZzZXQo
KSwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OmFkZEZvY3VzUmluZ1Jl
Y3RzRm9ySW5saW5lQ2hpbGRyZW4oVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggNWU4MTBhM2IyYzMyLi43ZDM0MTRiNGM1ZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC00ODQsNyArNDg0LDcgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgcGFpbnRDb250aW51YXRpb25PdXRsaW5lcyhQYWludEluZm8mLCBjb25z
dCBMYXlvdXRQb2ludCYpOwogCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJ
bmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBu
dWxscHRyKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0
IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IGZpbmFsOwogICAgIAog
ICAgIC8vIEZJWE1FLUJMT0NLRkxPVzogUmVtb3ZlIHZpcnR1YWxpemFpb24gd2hlbiBhbGwgY2Fs
bGVycyBoYXZlIG1vdmVkIHRvIFJlbmRlckJsb2NrRmxvdwogICAgIHZpcnR1YWwgVmlzaWJsZVBv
c2l0aW9uIHBvc2l0aW9uRm9yUG9pbnRXaXRoSW5saW5lQ2hpbGRyZW4oY29uc3QgTGF5b3V0UG9p
bnQmLCBjb25zdCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCBlODdlNDU3NDQxYWQuLjAyODZhOTY4
NjAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAK
QEAgLTQ0MzgsNyArNDQzOCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlSW5saW5l
UHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAgbWF4TG9n
aWNhbFdpZHRoID0gcHJlZmVycmVkV2lkdGgobWF4TG9naWNhbFdpZHRoLCBpbmxpbmVNYXgpOwog
fQogCi1JbnRSZWN0IFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNhcmV0UmVjdChjb25zdCBMYXlv
dXRSZWN0JiBsaW5lU2VsZWN0aW9uUmVjdCwgZmxvYXQgbG9naWNhbExlZnRQb3NpdGlvbiwgdW5z
aWduZWQgY2FyZXRXaWR0aCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25z
dAorTGF5b3V0UmVjdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5
b3V0UmVjdCYgbGluZVNlbGVjdGlvblJlY3QsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIHVu
c2lnbmVkIGNhcmV0V2lkdGgsIENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkgY29uc3QKIHsK
ICAgICBpbnQgaGVpZ2h0ID0gbGluZVNlbGVjdGlvblJlY3QuaGVpZ2h0KCk7CiAgICAgaW50IHRv
cCA9IGxpbmVTZWxlY3Rpb25SZWN0LnkoKTsKQEAgLTQ0NTMsOSArNDQ1Myw2IEBAIEludFJlY3Qg
UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVT
ZWxlY3Rpb25SZWN0LCBmCiAgICAgZmxvYXQgbGluZUxlZnQgPSBsaW5lU2VsZWN0aW9uUmVjdC54
KCk7CiAgICAgZmxvYXQgbGluZVJpZ2h0ID0gbGluZVNlbGVjdGlvblJlY3QubWF4WCgpOwogCi0g
ICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAgICAgKmV4dHJhV2lkdGhUb0VuZE9m
TGluZSA9IGxpbmVSaWdodCAtIChsZWZ0ICsgY2FyZXRXaWR0aCk7Ci0KICAgICBib29sIHJpZ2h0
QWxpZ25lZCA9IGZhbHNlOwogICAgIHN3aXRjaCAoc3R5bGUoKS50ZXh0QWxpZ24oKSkgewogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6UmlnaHQ6CkBAIC00NDg2LDcgKzQ0ODMsMTMgQEAgSW50UmVj
dCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGlu
ZVNlbGVjdGlvblJlY3QsIGYKICAgICAgICAgbGVmdCA9IHN0ZDo6bWluKGxlZnQsIHJpZ2h0RWRn
ZSAtIGNhcmV0V2lkdGhSaWdodE9mT2Zmc2V0KTsKICAgICAgICAgbGVmdCA9IHN0ZDo6bWF4KGxl
ZnQsIGxpbmVMZWZ0KTsKICAgICB9Ci0gICAgcmV0dXJuIHN0eWxlKCkuaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IEludFJlY3QobGVmdCwgdG9wLCBjYXJldFdpZHRoLCBoZWlnaHQpIDogSW50
UmVjdCh0b3AsIGxlZnQsIGhlaWdodCwgY2FyZXRXaWR0aCk7CisKKyAgICBhdXRvIHJlY3QgPSBM
YXlvdXRSZWN0KGxlZnQsIHRvcCwgY2FyZXRXaWR0aCwgaGVpZ2h0KTsKKworICAgIGlmIChjYXJl
dFJlY3RNb2RlID09IENhcmV0UmVjdE1vZGU6OkV4cGFuZFRvRW5kT2ZMaW5lKQorICAgICAgICBy
ZWN0LnNoaWZ0TWF4WEVkZ2VUbyhsaW5lUmlnaHQpOworCisgICAgcmV0dXJuIHN0eWxlKCkuaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QgOiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zs
b3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAppbmRleCAw
MDYxOGUyNzFkYWQuLmRkNDNiYzFlOGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuaApAQCAtMzk4LDcgKzM5OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFk
ZEZsb2F0c1RvTmV3UGFyZW50KFJlbmRlckJsb2NrRmxvdyYgdG9CbG9ja0Zsb3cpIGNvbnN0Owog
ICAgIAogICAgIExheW91dFVuaXQgZW5kUGFkZGluZ1dpZHRoRm9yQ2FyZXQoKSBjb25zdDsKLSAg
ICBJbnRSZWN0IGNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGluZVNlbGVjdGlv
blJlY3QsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIHVuc2lnbmVkIGNhcmV0V2lkdGgsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3Q7CisgICAgTGF5b3V0UmVjdCBj
b21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmbG9h
dCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNpZ25lZCBjYXJldFdpZHRoLCBDYXJldFJlY3RNb2Rl
ID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25zdDsKIAogcHJvdGVjdGVkOgogICAgIGJvb2wg
c2hvdWxkUmVzZXRMb2dpY2FsSGVpZ2h0QmVmb3JlTGF5b3V0KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA4
NWE0YzU2MmIyMWEuLjQwNjgwOTcwNjdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTQ0MzAsNyArNDQzMCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWxIZWlnaHRSZXBsYWNlZChMb2dpY2FsRXh0ZW50Q29tcHV0ZWRWYWx1CiAg
ICAgY29tcHV0ZWRWYWx1ZXMubV9wb3NpdGlvbiA9IGxvZ2ljYWxUb3BQb3M7CiB9CiAKLUxheW91
dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
IHJ1bkFuZE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAor
TGF5b3V0UmVjdCBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9m
ZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7
CiAgICAgLy8gVmlzaWJsZVBvc2l0aW9ucyBhdCBvZmZzZXRzIGluc2lkZSBjb250YWluZXJzIGVp
dGhlciBhKSByZWZlciB0byB0aGUgcG9zaXRpb25zIGJlZm9yZS9hZnRlcgogICAgIC8vIHRob3Nl
IGNvbnRhaW5lcnMgKHRhYmxlcyBhbmQgc2VsZWN0IGVsZW1lbnRzKSBvciBiKSByZWZlciB0byB0
aGUgcG9zaXRpb24gaW5zaWRlIGFuIGVtcHR5IGJsb2NrLgpAQCAtNDQ2Miw5ICs0NDYyLDYgQEAg
TGF5b3V0UmVjdCBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9m
ZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXkKICAgICBpZiAoZm9udEhlaWdodCA+IHJlY3QuaGVpZ2h0
KCkgfHwgKCFpc1JlcGxhY2VkKCkgJiYgIWlzVGFibGUoKSkpCiAgICAgICAgIHJlY3Quc2V0SGVp
Z2h0KGZvbnRIZWlnaHQpOwogCi0gICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAg
ICAgKmV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IHgoKSArIHdpZHRoKCkgLSByZWN0Lm1heFgoKTsK
LQogICAgIC8vIE1vdmUgdG8gbG9jYWwgY29vcmRzCiAgICAgcmVjdC5tb3ZlQnkoLWxvY2F0aW9u
KCkpOwogCkBAIC00NDc2LDEwICs0NDczLDEwIEBAIExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2Nh
bENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgTGF5CiAg
ICAgICAgIHJlY3Quc2V0WShyZWN0LnkoKSArIHBhZGRpbmdUb3AoKSArIGJvcmRlclRvcCgpKTsK
ICAgICB9CiAKLSAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCi0gICAgICAgIHJl
dHVybiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CisgICAgaWYgKGNhcmV0UmVjdE1vZGUgPT0gQ2Fy
ZXRSZWN0TW9kZTo6RXhwYW5kVG9FbmRPZkxpbmUpCisgICAgICAgIHJlY3Quc2hpZnRNYXhYRWRn
ZVRvKHgoKSArIHdpZHRoKCkpOwogCi0gICAgcmV0dXJuIHJlY3Q7CisgICAgcmV0dXJuIGlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWN0IDogcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQog
CiBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiBwb2ludCwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDc1NTA3NjU0NDMyZC4uM2NkODBi
Y2QwNzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC00OTgsNyArNDk4
LDcgQEAgb3ZlcnJpZGU7CiAKICAgICBib29sIHNob3VsZFRyZWF0Q2hpbGRBc1JlcGxhY2VkSW5U
YWJsZUNlbGxzKCkgY29uc3Q7CiAgICAgCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChj
b25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxp
bmUgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRS
ZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG92ZXJmbG93Q2xpcFJlY3QoY29uc3QgTGF5
b3V0UG9pbnQmIGxvY2F0aW9uLCBSZW5kZXJGcmFnbWVudENvbnRhaW5lciogPSBudWxscHRyLCBP
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSA9IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXpl
LCBQYWludFBoYXNlID0gUGFpbnRQaGFzZTo6QmxvY2tCYWNrZ3JvdW5kKSBjb25zdDsKICAgICB2
aXJ0dWFsIExheW91dFJlY3Qgb3ZlcmZsb3dDbGlwUmVjdEZvckNoaWxkTGF5ZXJzKGNvbnN0IExh
eW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqIGZyYWdtZW50LCBP
dmVybGF5U2Nyb2xsYmFyU2l6ZVJlbGV2YW5jeSByZWxldmFuY3kpIGNvbnN0IHsgcmV0dXJuIG92
ZXJmbG93Q2xpcFJlY3QobG9jYXRpb24sIGZyYWdtZW50LCByZWxldmFuY3kpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBk
OWE3NWM5ZWExOTcuLmI5ODI3YzhhMTRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lk
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpjbGVhckZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dCgpCiAg
ICAgZmlyc3RMZXR0ZXJSZW1haW5pbmdUZXh0TWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCi1MYXlv
dXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVu
dChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQpIGNvbnN0CitM
YXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxl
bWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQsIENhcmV0
UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWZpcnN0Q2hpbGQo
KSk7CiAKQEAgLTI2ODksNyArMjY4OSwxMyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveE1vZGVsT2Jq
ZWN0Ojpsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLAogICAg
IGF1dG8gbGluZUhlaWdodCA9IHRoaXMtPmxpbmVIZWlnaHQodHJ1ZSwgY3VycmVudFN0eWxlLmlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsKICAgICBhdXRvIGhlaWdodCA9IHN0ZDo6bWlu
KGxpbmVIZWlnaHQsIExheW91dFVuaXQgeyBjdXJyZW50U3R5bGUuZm9udE1ldHJpY3MoKS5oZWln
aHQoKSB9KTsKICAgICBhdXRvIHkgPSBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSArIChsaW5l
SGVpZ2h0ID4gaGVpZ2h0ID8gKGxpbmVIZWlnaHQgLSBoZWlnaHQpIC8gMiA6IExheW91dFVuaXQg
eyB9KTsKLSAgICByZXR1cm4gY3VycmVudFN0eWxlLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkg
PyBMYXlvdXRSZWN0KHgsIHksIGNhcmV0V2lkdGgsIGhlaWdodCkgOiBMYXlvdXRSZWN0KHksIHgs
IGhlaWdodCwgY2FyZXRXaWR0aCk7CisKKyAgICBhdXRvIHJlY3QgPSBMYXlvdXRSZWN0KHgsIHks
IGNhcmV0V2lkdGgsIGhlaWdodCk7CisKKyAgICBpZiAoY2FyZXRSZWN0TW9kZSA9PSBDYXJldFJl
Y3RNb2RlOjpFeHBhbmRUb0VuZE9mTGluZSkKKyAgICAgICAgcmVjdC5zaGlmdE1heFhFZGdlVG8o
d2lkdGgpOworCisgICAgcmV0dXJuIGN1cnJlbnRTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gcmVjdCA6IHJlY3QudHJhbnNwb3NlZFJlY3QoKTsKIH0KIAogYm9vbCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c2hvdWxkQW50aWFsaWFzTGluZXMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApp
bmRleCBlY2E2ZDU4Njg1ZjcuLjBkODdiMmFjNWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTI2MCw3ICsyNjAsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBjaG9vc2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShHcmFwaGljc0NvbnRleHQmLCBJbWFnZSYsIGNvbnN0IHZvaWQqLCBjb25zdCBMYXlvdXRT
aXplJik7CiAKLSAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KExh
eW91dFVuaXQgd2lkdGgsIExheW91dFVuaXQgdGV4dEluZGVudE9mZnNldCkgY29uc3Q7CisgICAg
TGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRo
LCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQsIENhcmV0UmVjdE1vZGUgPSBDYXJldFJlY3RN
b2RlOjpOb3JtYWwpIGNvbnN0OwogCiAgICAgc3RhdGljIGJvb2wgc2hvdWxkQW50aWFsaWFzTGlu
ZXMoR3JhcGhpY3NDb250ZXh0Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJJbmxpbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklu
bGluZS5jcHAKaW5kZXggZjc4ZWM3ZGNmODAxLi5iZDUyNWUwMThiZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBS
ZW5kZXJJbmxpbmU6OnVwZGF0ZUFsd2F5c0NyZWF0ZUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQp
CiAgICAgfQogfQogCi1MYXlvdXRSZWN0IFJlbmRlcklubGluZTo6bG9jYWxDYXJldFJlY3QoY29u
c3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElu
bGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKGZpcnN0
Q2hpbGQoKSkgewogICAgICAgICAvLyBUaGlzIGNvbmRpdGlvbiBpcyBwb3NzaWJsZSBpZiB0aGUg
UmVuZGVySW5saW5lIGlzIGF0IGFuIGVkaXRpbmcgYm91bmRhcnksCkBAIC0yMzksOSArMjM5LDYg
QEAgTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1
bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGUKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsK
ICAgICB9CiAKLSAgICBpZiAoZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQotICAgICAgICAqZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lID0gMDsKLQogICAgIExheW91dFJlY3QgY2FyZXRSZWN0ID0gbG9jYWxD
YXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoaG9yaXpvbnRhbEJvcmRlckFuZFBhZGRpbmdFeHRlbnQo
KSwgMCk7CiAKICAgICBpZiAoSW5saW5lQm94KiBmaXJzdEJveCA9IGZpcnN0TGluZUJveCgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCmluZGV4IGVhNTUwYzI5NWI5OS4u
MDc3NDU5OWUxZWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW5saW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGluZS5oCkBA
IC04Niw3ICs4Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFsd2F5c0NyZWF0ZUxpbmVCb3hl
cygpIHsgc2V0UmVuZGVySW5saW5lQWx3YXlzQ3JlYXRlc0xpbmVCb3hlcyh0cnVlKTsgfQogICAg
IHZvaWQgdXBkYXRlQWx3YXlzQ3JlYXRlTGluZUJveGVzKGJvb2wgZnVsbExheW91dCk7CiAKLSAg
ICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExh
eW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QgZmluYWw7CisgICAgTGF5b3V0
UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RN
b2RlKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaGl0VGVzdEN1bGxlZElubGluZShjb25zdCBI
aXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxv
Y2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5jcHAKaW5kZXgg
OTE2NDM3MDJkZjc1Li4wYTg5OTI5Mzc2ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBSZW5kZXJMaW5l
QnJlYWs6OnNldFNlbGVjdGlvblN0YXRlKEhpZ2hsaWdodFN0YXRlIHN0YXRlKQogICAgIG1faW5s
aW5lQm94V3JhcHBlci0+cm9vdCgpLnNldEhhc1NlbGVjdGVkQ2hpbGRyZW4oc3RhdGUgIT0gSGln
aGxpZ2h0U3RhdGU6Ok5vbmUpOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9j
YWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExheW91
dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyTGlu
ZUJyZWFrOjpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9m
ZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewogICAgIEFTU0VSVCgh
cnVuQW5kT2Zmc2V0Lm9mZnNldCk7CiAgICAgQVNTRVJUKHJ1bkFuZE9mZnNldC5ydW4gPT0gTGF5
b3V0SW50ZWdyYXRpb246OnJ1bkZvcigqdGhpcykpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIExheW91
dFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRP
ZmZzZXQmIHJ1bkFuZE9mZnNlCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKICAgICBh
dXRvIGxpbmUgPSBydW5BbmRPZmZzZXQucnVuLmxpbmUoKTsKLSAgICByZXR1cm4gbGluZS0+Y29u
dGFpbmluZ0Jsb2NrKCkuY29tcHV0ZUNhcmV0UmVjdChsaW5lLT5zZWxlY3Rpb25SZWN0KCksIGxp
bmUtPmxvZ2ljYWxMZWZ0KCksIGNhcmV0V2lkdGgsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSk7Cisg
ICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+
c2VsZWN0aW9uUmVjdCgpLCBsaW5lLT5sb2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBjYXJldFJl
Y3RNb2RlKTsKIH0KIAogSW50UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxpbmVzQm91bmRpbmdCb3go
KSBjb25zdApAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgUmVuZGVyTGluZUJyZWFrOjpjb2xsZWN0
U2VsZWN0aW9uUmVjdHMoVmVjdG9yPFNlbGVjdGlvblJlY3Q+JiByZWN0cywgdW5zaWduCiAgICAg
Y29uc3QgUm9vdElubGluZUJveCYgcm9vdEJveCA9IGJveC0+cm9vdCgpOwogCiAgICAgYXV0byBs
aW5lID0gTGF5b3V0SW50ZWdyYXRpb246OkxpbmVJdGVyYXRvcigmcm9vdEJveCk7Ci0gICAgTGF5
b3V0UmVjdCByZWN0ID0gcm9vdEJveC5ibG9ja0Zsb3coKS5jb21wdXRlQ2FyZXRSZWN0KGxpbmUt
PnNlbGVjdGlvblJlY3QoKSwgbGluZS0+bG9naWNhbExlZnQoKSwgMCwgbnVsbHB0cik7CisgICAg
TGF5b3V0UmVjdCByZWN0ID0gcm9vdEJveC5ibG9ja0Zsb3coKS5jb21wdXRlQ2FyZXRSZWN0KGxp
bmUtPnNlbGVjdGlvblJlY3QoKSwgbGluZS0+bG9naWNhbExlZnQoKSwgMCk7CiAKICAgICBpZiAo
cm9vdEJveC5pc0ZpcnN0QWZ0ZXJQYWdlQnJlYWsoKSkgewogICAgICAgICBpZiAoYm94LT5pc0hv
cml6b250YWwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
aW5lQnJlYWsuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaApp
bmRleCA0MDQzMmFjZTdjOTkuLmNkMmEyZWJmMzk0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaW5lQnJlYWsuaApAQCAtNjYsNyArNjYsNyBAQCBwcml2YXRlOgogICAgIGlu
dCBjYXJldE1pbk9mZnNldCgpIGNvbnN0IGZpbmFsOwogICAgIGludCBjYXJldE1heE9mZnNldCgp
IGNvbnN0IGZpbmFsOwogICAgIGJvb2wgY2FuQmVTZWxlY3Rpb25MZWFmKCkgY29uc3QgZmluYWw7
Ci0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0IGZpbmFsOworICAgIExh
eW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgQ2FyZXRS
ZWN0TW9kZSkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGln
aHRTdGF0ZSkgZmluYWw7CiAKICAgICBMYXlvdXRVbml0IGxpbmVIZWlnaHQoYm9vbCBmaXJzdExp
bmUsIExpbmVEaXJlY3Rpb25Nb2RlLCBMaW5lUG9zaXRpb25Nb2RlKSBjb25zdCBmaW5hbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzU3Njc5Nzc1NDJi
Li4xN2ZjMzNkNDFlMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xNDAwLDExICsxNDAwLDggQEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNl
dEZyb21BbmNlc3RvckNvbnRhaW5lcihSZW5kZXJFbGVtZW50JiBjb250YWluZXIpIGMKICAgICBy
ZXR1cm4gb2Zmc2V0OwogfQogCi1MYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6bG9jYWxDYXJldFJl
Y3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KGNv
bnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0CiB7Ci0gICAgaWYg
KGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAgICAgKmV4dHJhV2lkdGhUb0VuZE9mTGluZSA9
IDA7Ci0KICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNWMwYjEzNjllNDUwLi45NTMzN2E0Y2EwMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTY3NCw3ICs2NzQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFBhaW50U2VsZWN0aW9uR2FwcygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBSZXR1cm5zIHRoZSBsb2NhbCBjb29yZGluYXRl
cyBvZiB0aGUgY2FyZXQgd2l0aGluIHRoaXMgcmVuZGVyIG9iamVjdC4KLSAgICB2aXJ0dWFsIExh
eW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0
VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVsbHB0cikgY29uc3Q7CisgICAgdmlydHVh
bCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENh
cmV0UmVjdE1vZGUgPSBDYXJldFJlY3RNb2RlOjpOb3JtYWwpIGNvbnN0OwogCiAgICAgLy8gV2hl
biBwZXJmb3JtaW5nIGEgZ2xvYmFsIGRvY3VtZW50IHRlYXItZG93biwgb3Igd2hlbiBnb2luZyBp
bnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUsIHRoZSByZW5kZXJlciBvZiB0aGUgZG9jdW1lbnQg
aXMgY2xlYXJlZC4KICAgICBib29sIHJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdEVudW1zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0RW51bXMuaAppbmRleCAzOTll
YmViMTVkNjMuLjA2ZTc3MzMyMDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdEVudW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdEVudW1zLmgKQEAgLTYxLDQgKzYxLDEwIEBAIGVudW0gTWFwQ29vcmRpbmF0ZXNN
b2RlIHsKIH07CiB0eXBlZGVmIHVuc2lnbmVkIE1hcENvb3JkaW5hdGVzRmxhZ3M7CiAKK2VudW0g
Y2xhc3MgQ2FyZXRSZWN0TW9kZSB7CisgICAgTm9ybWFsLAorICAgIEV4cGFuZFRvRW5kT2ZMaW5l
Cit9OworCisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCBm
NDg4OGM3NDZjODEuLmFmY2VkYWJhZDgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0LmNwcApAQCAtNzA5LDcgKzcwOSw3IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0
Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91dFBvaW50JiBwb2ludCwgY29uc3QgUmVuCiAg
ICAgcmV0dXJuIGNyZWF0ZVZpc2libGVQb3NpdGlvbigwLCBBZmZpbml0eTo6RG93bnN0cmVhbSk7
CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5l
UnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9m
TGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3Qg
SW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0
TW9kZSkgY29uc3QKIHsKICAgICBpZiAoIXJ1bkFuZE9mZnNldC5ydW4pCiAgICAgICAgIHJldHVy
biBMYXlvdXRSZWN0KCk7CkBAIC03MTgsNyArNzE4LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJUZXh0
Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwg
TGEKICAgICBhdXRvIGxpbmUgPSB0ZXh0UnVuLmxpbmUoKTsKIAogICAgIGZsb2F0IHBvc2l0aW9u
ID0gdGV4dFJ1bi0+cG9zaXRpb25Gb3JPZmZzZXQocnVuQW5kT2Zmc2V0Lm9mZnNldCk7Ci0gICAg
cmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+c2Vs
ZWN0aW9uUmVjdCgpLCBwb3NpdGlvbiwgY2FyZXRXaWR0aCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5l
KTsKKyAgICByZXR1cm4gbGluZS0+Y29udGFpbmluZ0Jsb2NrKCkuY29tcHV0ZUNhcmV0UmVjdChs
aW5lLT5zZWxlY3Rpb25SZWN0KCksIHBvc2l0aW9uLCBjYXJldFdpZHRoLCBjYXJldFJlY3RNb2Rl
KTsKIH0KIAogQUxXQVlTX0lOTElORSBmbG9hdCBSZW5kZXJUZXh0Ojp3aWR0aEZyb21DYWNoZShj
b25zdCBGb250Q2FzY2FkZSYgZiwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbiwgZmxvYXQg
eFBvcywgSGFzaFNldDxjb25zdCBGb250Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cq
IGdseXBoT3ZlcmZsb3csIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCmluZGV4IGFlODVhZDI0MmE4NS4uYWFkNzkzZjNjZjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmgKQEAgLTIwNSw3ICsyMDUsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSkg
ZmluYWw7CiAgICAgTGF5b3V0UmVjdCBzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChjb25zdCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBib29sIGNsaXBUb1Zpc2libGVD
b250ZW50ID0gdHJ1ZSkgZmluYWw7Ci0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0
KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IG92ZXJyaWRl
OwogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoY29uc3QgUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikgY29uc3QgZmluYWw7CiAKICAg
ICB2b2lkIGNvbXB1dGVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKGZsb2F0IGxlYWRXaWR0aCwgSGFz
aFNldDxjb25zdCBGb250Kj4mIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3Bw
CmluZGV4IGJmM2Y3MTViMGY3NS4uZmJjYThmMzJjNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5saW5lVGV4dEJveD4gUmVuZGVyU1ZHSW5saW5lVGV4
dDo6Y3JlYXRlVGV4dEJveCgpCiAgICAgcmV0dXJuIGJveDsgCiB9CiAKLUxheW91dFJlY3QgUmVu
ZGVyU1ZHSW5saW5lVGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0
JiBydW5BbmRPZmZzZXQsIExheW91dFVuaXQqKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJTVkdJ
bmxpbmVUZXh0Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFu
ZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSkgY29uc3QKIHsKICAgICBhdXRvKiBib3ggPSBydW5BbmRP
ZmZzZXQucnVuID8gcnVuQW5kT2Zmc2V0LnJ1bi0+bGVnYWN5SW5saW5lQm94KCkgOiBudWxscHRy
OwogICAgIGF1dG8gY2FyZXRPZmZzZXQgPSBydW5BbmRPZmZzZXQub2Zmc2V0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuaAppbmRleCBk
YzI3MjA5OWQwMzUuLmJiMmVhZmVjZTVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTYyLDcgKzYyLDcgQEAgcHJpdmF0
ZToKICAgICBib29sIGlzU1ZHSW5saW5lVGV4dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50KGNvbnN0IExheW91
dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKSBvdmVycmlkZTsKLSAgICBM
YXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91
dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0Jiwg
Q2FyZXRSZWN0TW9kZSkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBsaW5lc0JvdW5kaW5n
Qm94KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+
IGNyZWF0ZVRleHRCb3goKSBvdmVycmlkZTsKIAo=
</data>
<flag name="commit-queue"
          id="430467"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413808</attachid>
            <date>2020-11-11 03:59:52 -0800</date>
            <delta_ts>2020-11-11 09:38:34 -0800</delta_ts>
            <desc>patch</desc>
            <filename>caret-rect-enum.patch</filename>
            <type>text/plain</type>
            <size>26037</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYzA0YjIxZjZmOTguLjZhYzRhYzIzODEzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBA
CisyMDIwLTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXBsYWNlIGNvbmZ1c2luZyBleHRyYVdpZHRoVG9FbmRPZkxpbmUgcGFyYW1ldGVyIHdpdGgg
YW4gZW51bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvZmFzdC9mb3Jtcy9jdXJzb3ItYXQtZWRpdGFibGUtY29udGVudC1ib3Vu
ZGFyeS1leHBlY3RlZC50eHQ6CisKIDIwMjAtMTEtMTAgIExhdXJvIE1vdXJhICA8bG1vdXJhQGln
YWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIEdhcmRlbmluZyB3ZWJydGMgZmFpbHVyZXMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zvcm1zL2N1cnNvci1hdC1l
ZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5LWV4
cGVjdGVkLnR4dAppbmRleCBhYTRkYmQzNmY3ZmIuLmMzOGQ1NzI0NzhmYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZm9ybXMvY3Vyc29yLWF0LWVkaXRhYmxlLWNv
bnRlbnQtYm91bmRhcnktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L2Zvcm1zL2N1cnNvci1hdC1lZGl0YWJsZS1jb250ZW50LWJvdW5kYXJ5LWV4cGVjdGVk
LnR4dApAQCAtNiw1ICs2LDUgQEAgYXV0b3dyYXAgdGV4dCBhcmVhIHdpdGggZGlyPWx0ci4KIAog
dmVydGljYWwgdGV4dC4KIAotRkFJTCB0ZXN0IGlkOiB0ZXh0YXJlYV9ydGxfbm9fd3JhcCAodGV4
dCB3aWR0aDogMTA3ICE9IGNhcmV0UmFuZ2U6IDEwNiksIHdoaWNoIG1lYW5zIG1vdmluZyBjYXJl
dCBpbiB0aGUgdGV4dCwgY2FyZXQgbWlnaHQgYmUgaW52aXNpYmxlIG9yIG92ZXJsYXAgd2l0aCBl
bGVtZW50LgorUEFTUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRhOWY0OWQ0YjE3Li42OTY3NTM1YmQxYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAyMC0xMS0xMSAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjb25mdXNpbmcgZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lIHBhcmFtZXRlciB3aXRoIGFuIGVudW0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODc5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSBjbGllbnQgb2YgbG9jYWxDYXJldFJl
Y3Qgd2FudHMgYSByZWN0IHRoYXQgZXh0ZW5kcyBmcm9tIGNhcmV0IHRvIHRoZSBlbmQgb2YgdGhl
IGxpbmUgaXQgZ2V0cyB0aGUgbGVuZ3RoCisgICAgICAgIG9mIHRoZSByZW1haW5pbmcgbGluZSBh
d2t3YXJkbHkgdmlhIGV4dHJhV2lkdGhUb0VuZE9mTGluZSBvdXQtcGFyYW1ldGVyIGFuZCB0aGVu
IHVzZXMgaXQgdG8gbXV0YXRlIHRoZSBjYXJldCByZWN0LgorCisgICAgICAgIEluc3RlYWQganVz
dCBwYXNzIGFuIGVudW0gdGVsbGluZyB0aGF0IGFuIGV4dGVuZGVkIHJlY3QgaXMgcmVxdWlyZWQg
YW5kIGNvbXB1dGUgaXQgaW4gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIHJlY3QuCisKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZpcnN0UmVj
dEZvclJhbmdlIGNvbnN0KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0IGNvbnN0
KToKKyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6Omxv
Y2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQgY29uc3QpOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJJbmxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsb2Nh
bENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGluZUJyZWFrOjpsb2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpbmVCcmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdCBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0IGNv
bnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdJbmxpbmVUZXh0Ojpsb2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0Lmg6CisKIDIwMjAtMTEtMTEgIENvbW1pdCBRdWV1
ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVy
dGluZyByMjY5MjQ0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGYyNzA2NjFiMWYw
OS4uMjEwNmI4NWMwZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzQ2LDE4
ICszMzQ2LDcgQEAgSW50UmVjdCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbmdlJiByYW5nZSkgY29uc3QKICAgICBpZiAoaW5TYW1lTGluZShzdGFydCwgZW5kKSkKICAg
ICAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3QodW5pdGVkQm91bmRpbmdCb3hlcyhSZW5kZXJP
YmplY3Q6OmFic29sdXRlVGV4dFF1YWRzKHJhbmdlKSkpOwogCi0gICAgTGF5b3V0VW5pdCBleHRy
YVdpZHRoVG9FbmRPZkxpbmU7Ci0gICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IFJlbmRlcmVk
UG9zaXRpb24oc3RhcnQpLmFic29sdXRlUmVjdCgmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAg
ICBpZiAoc3RhcnRDYXJldFJlY3QgPT0gSW50UmVjdCgpKQotICAgICAgICByZXR1cm4gSW50UmVj
dCgpOwotCi0gICAgLy8gV2hlbiBzdGFydCBhbmQgZW5kIGFyZW4ndCBvbiB0aGUgc2FtZSBsaW5l
LCB3ZSB3YW50IHRvIGdvIGZyb20gc3RhcnQgdG8gdGhlIGVuZCBvZiBpdHMgbGluZS4KLSAgICBh
dXRvIHJlc3VsdCA9IHN0YXJ0Q2FyZXRSZWN0OwotICAgIGlmIChzdGFydENhcmV0UmVjdC53aWR0
aCgpID09IGNhcmV0V2lkdGgpCi0gICAgICAgIHJlc3VsdC5leHBhbmQoZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lLCAwKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdC5leHBhbmQoMCwgZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBSZW5kZXJlZFBv
c2l0aW9uKHN0YXJ0KS5hYnNvbHV0ZVJlY3QoQ2FyZXRSZWN0TW9kZTo6RXhwYW5kVG9FbmRPZkxp
bmUpOwogfQogCiBib29sIEVkaXRvcjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2Vs
ZWN0aW9uLCBBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4IGFmMzI3ZDU2
NGY2OS4uN2M4MmU2YTNhNzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
bmRlcmVkUG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQ
b3NpdGlvbi5jcHAKQEAgLTIyNCwxMiArMjI0LDEyIEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRp
b246OnBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKICAgICByZXR1cm4g
bWFrZURlcHJlY2F0ZWRMZWdhY3lQb3NpdGlvbihwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVy
ZXIoKS5ub2RlKCksIHByZXZpb3VzTGVhZk9uTGluZSgpLT5yaWdodG1vc3RDYXJldE9mZnNldCgp
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoTGF5b3V0VW5p
dCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdAorSW50UmVjdCBSZW5kZXJlZFBvc2l0aW9u
OjphYnNvbHV0ZVJlY3QoQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewogICAg
IGlmIChpc051bGwoKSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIEludFJlY3Qg
bG9jYWxSZWN0ID0gc25hcHBlZEludFJlY3QoY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihtX3Jl
bmRlcmVyKS0+bG9jYWxDYXJldFJlY3QoeyBtX3J1biwgbV9vZmZzZXQgfSwgZXh0cmFXaWR0aFRv
RW5kT2ZMaW5lKSk7CisgICAgSW50UmVjdCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChtX3Jl
bmRlcmVyLT5sb2NhbENhcmV0UmVjdCh7IG1fcnVuLCBtX29mZnNldCB9LCBjYXJldFJlY3RNb2Rl
KSk7CiAgICAgcmV0dXJuIGxvY2FsUmVjdCA9PSBJbnRSZWN0KCkgPyBJbnRSZWN0KCkgOiBtX3Jl
bmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChsb2NhbFJlY3QpKS5lbmNsb3Np
bmdCb3VuZGluZ0JveCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3Np
dGlvbi5oCmluZGV4IGQ1YzJhN2NjYTc4OC4uZjBiZjlkY2FlYTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAg
ICAgUG9zaXRpb24gcG9zaXRpb25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0OwogICAg
IFBvc2l0aW9uIHBvc2l0aW9uQXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAKLSAg
ICBJbnRSZWN0IGFic29sdXRlUmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUg
PSBudWxscHRyKSBjb25zdDsKKyAgICBJbnRSZWN0IGFic29sdXRlUmVjdChDYXJldFJlY3RNb2Rl
ID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVuZGVyZWRQb3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmYTJkMTE5YTgw
OTAuLmM4ZDgxZWYyNDg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwCkBAIC0yODQxLDE5ICsyODQxLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUhpdFRl
c3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9
CiB9CiAKLUxheW91dFJlY3QgUmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGlu
ZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRP
ZkxpbmUpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckJsb2NrOjpsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJl
Y3RNb2RlKSBjb25zdAogewogICAgIC8vIERvIHRoZSBub3JtYWwgY2FsY3VsYXRpb24gaW4gbW9z
dCBjYXNlcy4KICAgICBpZiAoZmlyc3RDaGlsZCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyQm94
Ojpsb2NhbENhcmV0UmVjdChydW5BbmRPZmZzZXQsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSk7Cisg
ICAgICAgIHJldHVybiBSZW5kZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KHJ1bkFuZE9mZnNldCwgY2Fy
ZXRSZWN0TW9kZSk7CiAKLSAgICBMYXlvdXRSZWN0IGNhcmV0UmVjdCA9IGxvY2FsQ2FyZXRSZWN0
Rm9yRW1wdHlFbGVtZW50KHdpZHRoKCksIHRleHRJbmRlbnRPZmZzZXQoKSk7Ci0KLSAgICAvLyBG
SVhNRTogRG9lcyB0aGlzIG5lZWQgdG8gYWRqdXN0IGZvciB2ZXJ0aWNhbCBvcmllbnRhdGlvbj8K
LSAgICBpZiAoZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQotICAgICAgICAqZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lID0gd2lkdGgoKSAtIGNhcmV0UmVjdC5tYXhYKCk7Ci0KLSAgICByZXR1cm4gY2FyZXRS
ZWN0OworICAgIHJldHVybiBsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudCh3aWR0aCgpLCB0
ZXh0SW5kZW50T2Zmc2V0KCksIGNhcmV0UmVjdE1vZGUpOwogfQogCiB2b2lkIFJlbmRlckJsb2Nr
OjphZGRGb2N1c1JpbmdSZWN0c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDVlODEwYTNiMmMzMi4uN2QzNDE0
YjRjNWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNDg0LDcg
KzQ4NCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBhaW50Q29udGludWF0aW9uT3V0bGluZXMo
UGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKIAotICAgIExheW91dFJlY3QgbG9jYWxD
YXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lID0gbnVsbHB0cikgY29uc3QgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2Nh
bENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25z
dCBmaW5hbDsKICAgICAKICAgICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXph
aW9uIHdoZW4gYWxsIGNhbGxlcnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2
aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVu
KGNvbnN0IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZTg3ZTQ1
NzQ0MWFkLi4wMjg2YTk2ODYwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9ja0Zsb3cuY3BwCkBAIC00NDM4LDcgKzQ0MzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxv
dzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9n
aWNhbAogICAgIG1heExvZ2ljYWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0
aCwgaW5saW5lTWF4KTsKIH0KIAotSW50UmVjdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJl
dFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgbGluZVNlbGVjdGlvblJlY3QsIGZsb2F0IGxvZ2ljYWxM
ZWZ0UG9zaXRpb24sIHVuc2lnbmVkIGNhcmV0V2lkdGgsIExheW91dFVuaXQqIGV4dHJhV2lkdGhU
b0VuZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2Fy
ZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmbG9hdCBsb2dpY2Fs
TGVmdFBvc2l0aW9uLCB1bnNpZ25lZCBjYXJldFdpZHRoLCBDYXJldFJlY3RNb2RlIGNhcmV0UmVj
dE1vZGUpIGNvbnN0CiB7CiAgICAgaW50IGhlaWdodCA9IGxpbmVTZWxlY3Rpb25SZWN0LmhlaWdo
dCgpOwogICAgIGludCB0b3AgPSBsaW5lU2VsZWN0aW9uUmVjdC55KCk7CkBAIC00NDUzLDkgKzQ0
NTMsNiBAQCBJbnRSZWN0IFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNhcmV0UmVjdChjb25zdCBM
YXlvdXRSZWN0JiBsaW5lU2VsZWN0aW9uUmVjdCwgZgogICAgIGZsb2F0IGxpbmVMZWZ0ID0gbGlu
ZVNlbGVjdGlvblJlY3QueCgpOwogICAgIGZsb2F0IGxpbmVSaWdodCA9IGxpbmVTZWxlY3Rpb25S
ZWN0Lm1heFgoKTsKIAotICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpl
eHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBsaW5lUmlnaHQgLSAobGVmdCArIGNhcmV0V2lkdGgpOwot
CiAgICAgYm9vbCByaWdodEFsaWduZWQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHN0eWxlKCkudGV4
dEFsaWduKCkpIHsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgpAQCAtNDQ4Niw3ICs0
NDgzLDEzIEBAIEludFJlY3QgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2FyZXRSZWN0KGNvbnN0
IExheW91dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmCiAgICAgICAgIGxlZnQgPSBzdGQ6Om1p
bihsZWZ0LCByaWdodEVkZ2UgLSBjYXJldFdpZHRoUmlnaHRPZk9mZnNldCk7CiAgICAgICAgIGxl
ZnQgPSBzdGQ6Om1heChsZWZ0LCBsaW5lTGVmdCk7CiAgICAgfQotICAgIHJldHVybiBzdHlsZSgp
LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBJbnRSZWN0KGxlZnQsIHRvcCwgY2FyZXRXaWR0
aCwgaGVpZ2h0KSA6IEludFJlY3QodG9wLCBsZWZ0LCBoZWlnaHQsIGNhcmV0V2lkdGgpOworCisg
ICAgYXV0byByZWN0ID0gTGF5b3V0UmVjdChsZWZ0LCB0b3AsIGNhcmV0V2lkdGgsIGhlaWdodCk7
CisKKyAgICBpZiAoY2FyZXRSZWN0TW9kZSA9PSBDYXJldFJlY3RNb2RlOjpFeHBhbmRUb0VuZE9m
TGluZSkKKyAgICAgICAgcmVjdC5zaGlmdE1heFhFZGdlVG8obGluZVJpZ2h0KTsKKworICAgIHJl
dHVybiBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyByZWN0IDogcmVjdC50cmFu
c3Bvc2VkUmVjdCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tGbG93LmgKaW5kZXggMDA2MThlMjcxZGFkLi5kZDQzYmMxZThhZmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKQEAgLTM5OCw3ICszOTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRGbG9hdHNUb05ld1BhcmVudChSZW5kZXJCbG9ja0Zsb3cmIHRvQmxv
Y2tGbG93KSBjb25zdDsKICAgICAKICAgICBMYXlvdXRVbml0IGVuZFBhZGRpbmdXaWR0aEZvckNh
cmV0KCkgY29uc3Q7Ci0gICAgSW50UmVjdCBjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJl
Y3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmbG9hdCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNpZ25l
ZCBjYXJldFdpZHRoLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0Owor
ICAgIExheW91dFJlY3QgY29tcHV0ZUNhcmV0UmVjdChjb25zdCBMYXlvdXRSZWN0JiBsaW5lU2Vs
ZWN0aW9uUmVjdCwgZmxvYXQgbG9naWNhbExlZnRQb3NpdGlvbiwgdW5zaWduZWQgY2FyZXRXaWR0
aCwgQ2FyZXRSZWN0TW9kZSA9IENhcmV0UmVjdE1vZGU6Ok5vcm1hbCkgY29uc3Q7CiAKIHByb3Rl
Y3RlZDoKICAgICBib29sIHNob3VsZFJlc2V0TG9naWNhbEhlaWdodEJlZm9yZUxheW91dCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKaW5kZXggODVhNGM1NjJiMjFhLi40MDY4MDk3MDY3ZjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00NDMwLDcgKzQ0MzAsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVu
dENvbXB1dGVkVmFsdQogICAgIGNvbXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsVG9w
UG9zOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5s
aW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0Vu
ZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJl
Y3RNb2RlKSBjb25zdAogewogICAgIC8vIFZpc2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0cyBpbnNp
ZGUgY29udGFpbmVycyBlaXRoZXIgYSkgcmVmZXIgdG8gdGhlIHBvc2l0aW9ucyBiZWZvcmUvYWZ0
ZXIKICAgICAvLyB0aG9zZSBjb250YWluZXJzICh0YWJsZXMgYW5kIHNlbGVjdCBlbGVtZW50cykg
b3IgYikgcmVmZXIgdG8gdGhlIHBvc2l0aW9uIGluc2lkZSBhbiBlbXB0eSBibG9jay4KQEAgLTQ0
NjIsOSArNDQ2Miw2IEBAIExheW91dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmIHJ1bkFuZE9mZnNldCwgTGF5CiAgICAgaWYgKGZvbnRIZWln
aHQgPiByZWN0LmhlaWdodCgpIHx8ICghaXNSZXBsYWNlZCgpICYmICFpc1RhYmxlKCkpKQogICAg
ICAgICByZWN0LnNldEhlaWdodChmb250SGVpZ2h0KTsKIAotICAgIGlmIChleHRyYVdpZHRoVG9F
bmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSB4KCkgKyB3aWR0aCgp
IC0gcmVjdC5tYXhYKCk7Ci0KICAgICAvLyBNb3ZlIHRvIGxvY2FsIGNvb3JkcwogICAgIHJlY3Qu
bW92ZUJ5KC1sb2NhdGlvbigpKTsKIApAQCAtNDQ3NiwxMCArNDQ3MywxMCBAQCBMYXlvdXRSZWN0
IFJlbmRlckJveDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5B
bmRPZmZzZXQsIExheQogICAgICAgICByZWN0LnNldFkocmVjdC55KCkgKyBwYWRkaW5nVG9wKCkg
KyBib3JkZXJUb3AoKSk7CiAgICAgfQogCi0gICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpKQotICAgICAgICByZXR1cm4gcmVjdC50cmFuc3Bvc2VkUmVjdCgpOworICAgIGlmIChjYXJl
dFJlY3RNb2RlID09IENhcmV0UmVjdE1vZGU6OkV4cGFuZFRvRW5kT2ZMaW5lKQorICAgICAgICBy
ZWN0LnNoaWZ0TWF4WEVkZ2VUbyh4KCkgKyB3aWR0aCgpKTsKIAotICAgIHJldHVybiByZWN0Owor
ICAgIHJldHVybiBpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gcmVjdCA6IHJlY3QudHJhbnNw
b3NlZFJlY3QoKTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBmcmFnbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA3NTUw
NzY1NDQzMmQuLjNjZDgwYmNkMDcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
aApAQCAtNDk4LDcgKzQ5OCw3IEBAIG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRUcmVhdENo
aWxkQXNSZXBsYWNlZEluVGFibGVDZWxscygpIGNvbnN0OwogICAgIAotICAgIExheW91dFJlY3Qg
bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0
UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RN
b2RlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdmVyZmxvd0Ns
aXBSZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIqID0gbnVsbHB0ciwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVy
bGF5U2Nyb2xsYmFyU2l6ZSwgUGFpbnRQaGFzZSA9IFBhaW50UGhhc2U6OkJsb2NrQmFja2dyb3Vu
ZCkgY29uc3Q7CiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG92ZXJmbG93Q2xpcFJlY3RGb3JDaGls
ZExheWVycyhjb25zdCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZW50Q29udGFp
bmVyKiBmcmFnbWVudCwgT3ZlcmxheVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBj
b25zdCB7IHJldHVybiBvdmVyZmxvd0NsaXBSZWN0KGxvY2F0aW9uLCBmcmFnbWVudCwgcmVsZXZh
bmN5KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1v
ZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKaW5kZXggZDlhNzVjOWVhMTk3Li5iOTgyN2M4YTE0ZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYyNiw3
ICsyNjI2LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2xlYXJGaXJzdExldHRlclJl
bWFpbmluZ1RleHQoKQogICAgIGZpcnN0TGV0dGVyUmVtYWluaW5nVGV4dE1hcCgpLnJlbW92ZSh0
aGlzKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYXJldFJl
Y3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50
T2Zmc2V0KSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYXJl
dFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5k
ZW50T2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFmaXJzdENoaWxkKCkpOwogCkBAIC0yNjg5LDcgKzI2ODksMTMgQEAgTGF5b3V0UmVjdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0
VW5pdCB3aWR0aCwKICAgICBhdXRvIGxpbmVIZWlnaHQgPSB0aGlzLT5saW5lSGVpZ2h0KHRydWUs
IGN1cnJlbnRTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUg
OiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiAgICAgYXV0byBo
ZWlnaHQgPSBzdGQ6Om1pbihsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IHsgY3VycmVudFN0eWxlLmZv
bnRNZXRyaWNzKCkuaGVpZ2h0KCkgfSk7CiAgICAgYXV0byB5ID0gcGFkZGluZ1RvcCgpICsgYm9y
ZGVyVG9wKCkgKyAobGluZUhlaWdodCA+IGhlaWdodCA/IChsaW5lSGVpZ2h0IC0gaGVpZ2h0KSAv
IDIgOiBMYXlvdXRVbml0IHsgfSk7Ci0gICAgcmV0dXJuIGN1cnJlbnRTdHlsZS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gTGF5b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQpIDog
TGF5b3V0UmVjdCh5LCB4LCBoZWlnaHQsIGNhcmV0V2lkdGgpOworCisgICAgYXV0byByZWN0ID0g
TGF5b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKGNhcmV0UmVj
dE1vZGUgPT0gQ2FyZXRSZWN0TW9kZTo6RXhwYW5kVG9FbmRPZkxpbmUpCisgICAgICAgIHJlY3Qu
c2hpZnRNYXhYRWRnZVRvKHdpZHRoKTsKKworICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUoKSA/IHJlY3QgOiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CiB9CiAK
IGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmgKaW5kZXggZWNhNmQ1ODY4NWY3Li4wZDg3YjJhYzVlM2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yNjAs
NyArMjYwLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgY2hvb3Nl
SW50ZXJwb2xhdGlvblF1YWxpdHkoR3JhcGhpY3NDb250ZXh0JiwgSW1hZ2UmLCBjb25zdCB2b2lk
KiwgY29uc3QgTGF5b3V0U2l6ZSYpOwogCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEZv
ckVtcHR5RWxlbWVudChMYXlvdXRVbml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZz
ZXQpIGNvbnN0OworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQo
TGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0LCBDYXJldFJlY3RN
b2RlID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHNo
b3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbmxpbmUuY3BwCmluZGV4IGY3OGVjN2RjZjgwMS4uYmQ1MjVlMDE4YmRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjI4LDcg
KzIyOCw3IEBAIHZvaWQgUmVuZGVySW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMo
Ym9vbCBmdWxsTGF5b3V0KQogICAgIH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6Omxv
Y2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpsb2NhbENh
cmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdAog
ewogICAgIGlmIChmaXJzdENoaWxkKCkpIHsKICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMg
cG9zc2libGUgaWYgdGhlIFJlbmRlcklubGluZSBpcyBhdCBhbiBlZGl0aW5nIGJvdW5kYXJ5LApA
QCAtMjM5LDkgKzIzOSw2IEBAIExheW91dFJlY3QgUmVuZGVySW5saW5lOjpsb2NhbENhcmV0UmVj
dChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBlCiAgICAgICAgIHJldHVy
biBMYXlvdXRSZWN0KCk7CiAgICAgfQogCi0gICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkK
LSAgICAgICAgKmV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDA7Ci0KICAgICBMYXlvdXRSZWN0IGNh
cmV0UmVjdCA9IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KGhvcml6b250YWxCb3JkZXJB
bmRQYWRkaW5nRXh0ZW50KCksIDApOwogCiAgICAgaWYgKElubGluZUJveCogZmlyc3RCb3ggPSBm
aXJzdExpbmVCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbmxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRl
eCBlYTU1MGMyOTViOTkuLjA3NzQ1OTllMWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcklubGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJJbmxpbmUuaApAQCAtODYsNyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHdh
eXNDcmVhdGVMaW5lQm94ZXMoKSB7IHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94
ZXModHJ1ZSk7IH0KICAgICB2b2lkIHVwZGF0ZUFsd2F5c0NyZWF0ZUxpbmVCb3hlcyhib29sIGZ1
bGxMYXlvdXQpOwogCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVS
dW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0IGZp
bmFsOworICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zm
c2V0JiwgQ2FyZXRSZWN0TW9kZSkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGhpdFRlc3RDdWxs
ZWRJbmxpbmUoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0
VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bGF0ZWRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5l
QnJlYWsuY3BwCmluZGV4IDkxNjQzNzAyZGY3NS4uMGE4OTkyOTM3NmUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBA
IHZvaWQgUmVuZGVyTGluZUJyZWFrOjpzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSBz
dGF0ZSkKICAgICBtX2lubGluZUJveFdyYXBwZXItPnJvb3QoKS5zZXRIYXNTZWxlY3RlZENoaWxk
cmVuKHN0YXRlICE9IEhpZ2hsaWdodFN0YXRlOjpOb25lKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5k
ZXJMaW5lQnJlYWs6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVu
QW5kT2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5k
T2Zmc2V0JiBydW5BbmRPZmZzZXQsIENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkgY29uc3QK
IHsKICAgICBBU1NFUlQoIXJ1bkFuZE9mZnNldC5vZmZzZXQpOwogICAgIEFTU0VSVChydW5BbmRP
ZmZzZXQucnVuID09IExheW91dEludGVncmF0aW9uOjpydW5Gb3IoKnRoaXMpKTsKQEAgLTE2Nyw3
ICsxNjcsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJldFJlY3QoY29u
c3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZQogICAgICAgICByZXR1cm4gTGF5b3V0
UmVjdCgpOwogCiAgICAgYXV0byBsaW5lID0gcnVuQW5kT2Zmc2V0LnJ1bi5saW5lKCk7Ci0gICAg
cmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+c2Vs
ZWN0aW9uUmVjdCgpLCBsaW5lLT5sb2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBleHRyYVdpZHRo
VG9FbmRPZkxpbmUpOworICAgIHJldHVybiBsaW5lLT5jb250YWluaW5nQmxvY2soKS5jb21wdXRl
Q2FyZXRSZWN0KGxpbmUtPnNlbGVjdGlvblJlY3QoKSwgbGluZS0+bG9naWNhbExlZnQoKSwgY2Fy
ZXRXaWR0aCwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjps
aW5lc0JvdW5kaW5nQm94KCkgY29uc3QKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJlbmRlckxp
bmVCcmVhazo6Y29sbGVjdFNlbGVjdGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVj
dHMsIHVuc2lnbgogICAgIGNvbnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3Qo
KTsKIAogICAgIGF1dG8gbGluZSA9IExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3IoJnJv
b3RCb3gpOwotICAgIExheW91dFJlY3QgcmVjdCA9IHJvb3RCb3guYmxvY2tGbG93KCkuY29tcHV0
ZUNhcmV0UmVjdChsaW5lLT5zZWxlY3Rpb25SZWN0KCksIGxpbmUtPmxvZ2ljYWxMZWZ0KCksIDAs
IG51bGxwdHIpOworICAgIExheW91dFJlY3QgcmVjdCA9IHJvb3RCb3guYmxvY2tGbG93KCkuY29t
cHV0ZUNhcmV0UmVjdChsaW5lLT5zZWxlY3Rpb25SZWN0KCksIGxpbmUtPmxvZ2ljYWxMZWZ0KCks
IDApOwogCiAgICAgaWYgKHJvb3RCb3guaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKICAgICAg
ICAgaWYgKGJveC0+aXNIb3Jpem9udGFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmgKaW5kZXggNDA0MzJhY2U3Yzk5Li5jZDJhMmViZjM5NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHJpdmF0ZToKICAgICBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBpbnQg
Y2FyZXRNYXhPZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVh
ZigpIGNvbnN0IGZpbmFsOwotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5s
aW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25z
dCBmaW5hbDsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFu
ZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0U2VsZWN0
aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBsaW5lSGVp
Z2h0KGJvb2wgZmlyc3RMaW5lLCBMaW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkg
Y29uc3QgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDM1NzY3OTc3NTQyYi4uMTdmYzMzZDQxZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTQwMCwxMSArMTQwMCw4IEBAIExheW91dFNpemUgUmVu
ZGVyT2JqZWN0OjpvZmZzZXRGcm9tQW5jZXN0b3JDb250YWluZXIoUmVuZGVyRWxlbWVudCYgY29u
dGFpbmVyKSBjCiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmpl
Y3Q6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQq
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojps
b2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBj
b25zdAogewotICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdp
ZHRoVG9FbmRPZkxpbmUgPSAwOwotCiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDVjMGIxMzY5ZTQ1MC4uOTUz
MzdhNGNhMDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02
NzQsNyArNjc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludFNlbGVj
dGlvbkdhcHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUg
bG9jYWwgY29vcmRpbmF0ZXMgb2YgdGhlIGNhcmV0IHdpdGhpbiB0aGlzIHJlbmRlciBvYmplY3Qu
Ci0gICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFu
ZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVS
dW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25z
dDsKIAogICAgIC8vIFdoZW4gcGVyZm9ybWluZyBhIGdsb2JhbCBkb2N1bWVudCB0ZWFyLWRvd24s
IG9yIHdoZW4gZ29pbmcgaW50byB0aGUgYmFjay9mb3J3YXJkIGNhY2hlLCB0aGUgcmVuZGVyZXIg
b2YgdGhlIGRvY3VtZW50IGlzIGNsZWFyZWQuCiAgICAgYm9vbCByZW5kZXJUcmVlQmVpbmdEZXN0
cm95ZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3RFbnVtcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdEVu
dW1zLmgKaW5kZXggMzk5ZWJlYjE1ZDYzLi4wNmU3NzMzMjA4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oCkBAIC02MSw0ICs2MSwxMCBAQCBlbnVt
IE1hcENvb3JkaW5hdGVzTW9kZSB7CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBNYXBDb29yZGluYXRl
c0ZsYWdzOwogCitlbnVtIGNsYXNzIENhcmV0UmVjdE1vZGUgeworICAgIE5vcm1hbCwKKyAgICBF
eHBhbmRUb0VuZE9mTGluZQorfTsKKworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dC5jcHAKaW5kZXggZjQ4ODhjNzQ2YzgxLi5hZmNlZGFiYWQ4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBWaXNpYmxlUG9z
aXRpb24gUmVuZGVyVGV4dDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQsIGNvbnN0IFJlbgogICAgIHJldHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5p
dHk6OkRvd25zdHJlYW0pOwogfQogCi1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxvY2FsQ2FyZXRS
ZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXlvdXRVbml0KiBl
eHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxvY2Fs
Q2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJl
Y3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFydW5BbmRPZmZzZXQucnVu
KQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwpAQCAtNzE4LDcgKzcxOCw3IEBAIExheW91
dFJlY3QgUmVuZGVyVGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0
JiBydW5BbmRPZmZzZXQsIExhCiAgICAgYXV0byBsaW5lID0gdGV4dFJ1bi5saW5lKCk7CiAKICAg
ICBmbG9hdCBwb3NpdGlvbiA9IHRleHRSdW4tPnBvc2l0aW9uRm9yT2Zmc2V0KHJ1bkFuZE9mZnNl
dC5vZmZzZXQpOwotICAgIHJldHVybiBsaW5lLT5jb250YWluaW5nQmxvY2soKS5jb21wdXRlQ2Fy
ZXRSZWN0KGxpbmUtPnNlbGVjdGlvblJlY3QoKSwgcG9zaXRpb24sIGNhcmV0V2lkdGgsIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSk7CisgICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmNv
bXB1dGVDYXJldFJlY3QobGluZS0+c2VsZWN0aW9uUmVjdCgpLCBwb3NpdGlvbiwgY2FyZXRXaWR0
aCwgY2FyZXRSZWN0TW9kZSk7CiB9CiAKIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6
d2lkdGhGcm9tQ2FjaGUoY29uc3QgRm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW4sIGZsb2F0IHhQb3MsIEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRz
LCBHbHlwaE92ZXJmbG93KiBnbHlwaE92ZXJmbG93LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBhZTg1YWQyNDJh
ODUuLmFhZDc5M2YzY2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBA
IC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUo
SGlnaGxpZ2h0U3RhdGUpIGZpbmFsOwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJl
cGFpbnQoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCA9IHRydWUpIGZpbmFsOwotICAgIExheW91dFJlY3QgbG9j
YWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lID0gbnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVj
dCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2Rl
KSBjb25zdCBvdmVycmlkZTsKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JS
ZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9h
dCBsZWFkV2lkdGgsIEhhc2hTZXQ8Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92
ZXJmbG93Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0lubGluZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdJbmxpbmVUZXh0LmNwcAppbmRleCBiZjNmNzE1YjBmNzUuLmZiY2E4ZjMyYzRmYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQu
Y3BwCkBAIC0xMTksNyArMTE5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJl
bmRlclNWR0lubGluZVRleHQ6OmNyZWF0ZVRleHRCb3goKQogICAgIHJldHVybiBib3g7IAogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlclNWR0lubGluZVRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElu
bGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXlvdXRVbml0KikgY29uc3QKK0xheW91
dFJlY3QgUmVuZGVyU1ZHSW5saW5lVGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVu
QW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIENhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgYXV0
byogYm94ID0gcnVuQW5kT2Zmc2V0LnJ1biA/IHJ1bkFuZE9mZnNldC5ydW4tPmxlZ2FjeUlubGlu
ZUJveCgpIDogbnVsbHB0cjsKICAgICBhdXRvIGNhcmV0T2Zmc2V0ID0gcnVuQW5kT2Zmc2V0Lm9m
ZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxp
bmVUZXh0LmgKaW5kZXggZGMyNzIwOTlkMDM1Li5iYjJlYWZlY2U1ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCkBAIC02Miw3
ICs2Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBpc1NWR0lubGluZVRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikg
b3ZlcnJpZGU7Ci0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5B
bmRPZmZzZXQmLCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBj
b25zdCBvdmVycmlkZTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGlu
ZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1vZGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJl
Y3QgbGluZXNCb3VuZGluZ0JveCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxJbmxpbmVUZXh0Qm94PiBjcmVhdGVUZXh0Qm94KCkgb3ZlcnJpZGU7CiAK
</data>
<flag name="review"
          id="430472"
          type_id="1"
          status="+"
          setter="zalan"
    />
    <flag name="commit-queue"
          id="430491"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413834</attachid>
            <date>2020-11-11 09:38:34 -0800</date>
            <delta_ts>2020-11-11 11:37:52 -0800</delta_ts>
            <desc>patch</desc>
            <filename>caret-rect-enum-3.patch</filename>
            <type>text/plain</type>
            <size>24819</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZGE5ZjQ5ZDRiMTcuLjRhNGUwNzg2MzQxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ5IEBACisyMDIwLTExLTExICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIGNvbmZ1c2luZyBleHRyYVdpZHRoVG9FbmRPZkxpbmUgcGFy
YW1ldGVyIHdpdGggYW4gZW51bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE4NzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWmFsYW4gQnVqdGFzLgor
CisgICAgICAgIFdoZW4gYSBjbGllbnQgb2YgbG9jYWxDYXJldFJlY3Qgd2FudHMgYSByZWN0IHRo
YXQgZXh0ZW5kcyBmcm9tIGNhcmV0IHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUgaXQgZ2V0cyB0aGUg
bGVuZ3RoCisgICAgICAgIG9mIHRoZSByZW1haW5pbmcgbGluZSBhd2t3YXJkbHkgdmlhIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSBvdXQtcGFyYW1ldGVyIGFuZCB0aGVuIHVzZXMgaXQgdG8gbXV0YXRl
IHRoZSBjYXJldCByZWN0LgorCisgICAgICAgIEluc3RlYWQganVzdCBwYXNzIGFuIGVudW0gdGVs
bGluZyB0aGF0IGFuIGV4dGVuZGVkIHJlY3QgaXMgcmVxdWlyZWQgYW5kIGNvbXB1dGUgaXQgaW4g
d2hlbiBjb25zdHJ1Y3RpbmcgdGhlIHJlY3QuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlIGNvbnN0KToK
KyAgICAgICAgKiBlZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyZWRQb3NpdGlvbjo6YWJzb2x1dGVSZWN0IGNvbnN0KToKKyAgICAgICAgKiBlZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxv
dzo6Y29tcHV0ZUNhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxD
YXJldFJlY3RGb3JFbXB0eUVsZW1lbnQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbmxpbmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVySW5saW5lOjpsb2NhbENhcmV0UmVjdCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklubGluZS5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMaW5lQnJlYWsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGluZUJyZWFr
Ojpsb2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpbmVC
cmVhay5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3RFbnVtcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW5saW5lVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbmxpbmVUZXh0Ojps
b2NhbENhcmV0UmVjdCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bmxpbmVUZXh0Lmg6CisKIDIwMjAtMTEtMTEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjY5MjQ0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGYyNzA2NjFiMWYwOS4uMjEwNmI4NWMwZDMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0zMzQ2LDE4ICszMzQ2LDcgQEAgSW50UmVj
dCBFZGl0b3I6OmZpcnN0UmVjdEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSkgY29u
c3QKICAgICBpZiAoaW5TYW1lTGluZShzdGFydCwgZW5kKSkKICAgICAgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QodW5pdGVkQm91bmRpbmdCb3hlcyhSZW5kZXJPYmplY3Q6OmFic29sdXRlVGV4
dFF1YWRzKHJhbmdlKSkpOwogCi0gICAgTGF5b3V0VW5pdCBleHRyYVdpZHRoVG9FbmRPZkxpbmU7
Ci0gICAgSW50UmVjdCBzdGFydENhcmV0UmVjdCA9IFJlbmRlcmVkUG9zaXRpb24oc3RhcnQpLmFi
c29sdXRlUmVjdCgmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAgICBpZiAoc3RhcnRDYXJldFJl
Y3QgPT0gSW50UmVjdCgpKQotICAgICAgICByZXR1cm4gSW50UmVjdCgpOwotCi0gICAgLy8gV2hl
biBzdGFydCBhbmQgZW5kIGFyZW4ndCBvbiB0aGUgc2FtZSBsaW5lLCB3ZSB3YW50IHRvIGdvIGZy
b20gc3RhcnQgdG8gdGhlIGVuZCBvZiBpdHMgbGluZS4KLSAgICBhdXRvIHJlc3VsdCA9IHN0YXJ0
Q2FyZXRSZWN0OwotICAgIGlmIChzdGFydENhcmV0UmVjdC53aWR0aCgpID09IGNhcmV0V2lkdGgp
Ci0gICAgICAgIHJlc3VsdC5leHBhbmQoZXh0cmFXaWR0aFRvRW5kT2ZMaW5lLCAwKTsKLSAgICBl
bHNlCi0gICAgICAgIHJlc3VsdC5leHBhbmQoMCwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAg
ICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBSZW5kZXJlZFBvc2l0aW9uKHN0YXJ0KS5hYnNv
bHV0ZVJlY3QoQ2FyZXRSZWN0TW9kZTo6RXhwYW5kVG9FbmRPZkxpbmUpOwogfQogCiBib29sIEVk
aXRvcjo6c2hvdWxkQ2hhbmdlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNl
bGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBBZmZpbml0eSBh
ZmZpbml0eSwgYm9vbCBzdGlsbFNlbGVjdGluZykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCmluZGV4IGFmMzI3ZDU2NGY2OS4uN2M4MmU2YTNhNzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5jcHAKQEAgLTIy
NCwxMiArMjI0LDEyIEBAIFBvc2l0aW9uIFJlbmRlcmVkUG9zaXRpb246OnBvc2l0aW9uQXRSaWdo
dEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3QKICAgICByZXR1cm4gbWFrZURlcHJlY2F0ZWRMZWdh
Y3lQb3NpdGlvbihwcmV2aW91c0xlYWZPbkxpbmUoKS0+cmVuZGVyZXIoKS5ub2RlKCksIHByZXZp
b3VzTGVhZk9uTGluZSgpLT5yaWdodG1vc3RDYXJldE9mZnNldCgpKTsKIH0KIAotSW50UmVjdCBS
ZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5k
T2ZMaW5lKSBjb25zdAorSW50UmVjdCBSZW5kZXJlZFBvc2l0aW9uOjphYnNvbHV0ZVJlY3QoQ2Fy
ZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewogICAgIGlmIChpc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIEludFJlY3QgbG9jYWxSZWN0ID0gc25hcHBl
ZEludFJlY3QoY29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihtX3JlbmRlcmVyKS0+bG9jYWxDYXJl
dFJlY3QoeyBtX3J1biwgbV9vZmZzZXQgfSwgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSk7CisgICAg
SW50UmVjdCBsb2NhbFJlY3QgPSBzbmFwcGVkSW50UmVjdChtX3JlbmRlcmVyLT5sb2NhbENhcmV0
UmVjdCh7IG1fcnVuLCBtX29mZnNldCB9LCBjYXJldFJlY3RNb2RlKSk7CiAgICAgcmV0dXJuIGxv
Y2FsUmVjdCA9PSBJbnRSZWN0KCkgPyBJbnRSZWN0KCkgOiBtX3JlbmRlcmVyLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChsb2NhbFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVuZGVyZWRQb3NpdGlvbi5oCmluZGV4IGQ1YzJh
N2NjYTc4OC4uZjBiZjlkY2FlYTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1JlbmRlcmVkUG9zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbmRlcmVk
UG9zaXRpb24uaApAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAgICAgUG9zaXRpb24gcG9zaXRp
b25BdExlZnRCb3VuZGFyeU9mQmlEaVJ1bigpIGNvbnN0OwogICAgIFBvc2l0aW9uIHBvc2l0aW9u
QXRSaWdodEJvdW5kYXJ5T2ZCaURpUnVuKCkgY29uc3Q7CiAKLSAgICBJbnRSZWN0IGFic29sdXRl
UmVjdChMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBjb25zdDsK
KyAgICBJbnRSZWN0IGFic29sdXRlUmVjdChDYXJldFJlY3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6
Tm9ybWFsKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVu
ZGVyZWRQb3NpdGlvbiYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCBmYTJkMTE5YTgwOTAuLmM4ZDgxZWYyNDg2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yODQxLDE5ICsy
ODQxLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJl
c3VsdCYgcmVzdWx0LCBjb25zdCBMYXlvdXRQb2ludCYKICAgICB9CiB9CiAKLUxheW91dFJlY3Qg
UmVuZGVyQmxvY2s6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVu
QW5kT2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CitMYXlv
dXRSZWN0IFJlbmRlckJsb2NrOjpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZz
ZXQmIHJ1bkFuZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewog
ICAgIC8vIERvIHRoZSBub3JtYWwgY2FsY3VsYXRpb24gaW4gbW9zdCBjYXNlcy4KICAgICBpZiAo
Zmlyc3RDaGlsZCgpKQotICAgICAgICByZXR1cm4gUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChy
dW5BbmRPZmZzZXQsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSk7CisgICAgICAgIHJldHVybiBSZW5k
ZXJCb3g6OmxvY2FsQ2FyZXRSZWN0KHJ1bkFuZE9mZnNldCwgY2FyZXRSZWN0TW9kZSk7CiAKLSAg
ICBMYXlvdXRSZWN0IGNhcmV0UmVjdCA9IGxvY2FsQ2FyZXRSZWN0Rm9yRW1wdHlFbGVtZW50KHdp
ZHRoKCksIHRleHRJbmRlbnRPZmZzZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogRG9lcyB0aGlzIG5l
ZWQgdG8gYWRqdXN0IGZvciB2ZXJ0aWNhbCBvcmllbnRhdGlvbj8KLSAgICBpZiAoZXh0cmFXaWR0
aFRvRW5kT2ZMaW5lKQotICAgICAgICAqZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gd2lkdGgoKSAt
IGNhcmV0UmVjdC5tYXhYKCk7Ci0KLSAgICByZXR1cm4gY2FyZXRSZWN0OworICAgIHJldHVybiBs
b2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudCh3aWR0aCgpLCB0ZXh0SW5kZW50T2Zmc2V0KCks
IGNhcmV0UmVjdE1vZGUpOwogfQogCiB2b2lkIFJlbmRlckJsb2NrOjphZGRGb2N1c1JpbmdSZWN0
c0ZvcklubGluZUNoaWxkcmVuKFZlY3RvcjxMYXlvdXRSZWN0PiYsIGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5oCmluZGV4IDVlODEwYTNiMmMzMi4uN2QzNDE0YjRjNWYwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtNDg0LDcgKzQ4NCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHBhaW50Q29udGludWF0aW9uT3V0bGluZXMoUGFpbnRJbmZvJiwgY29uc3Qg
TGF5b3V0UG9pbnQmKTsKIAotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5s
aW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVs
bHB0cikgY29uc3QgZmluYWw7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJ
bmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBmaW5hbDsKICAgICAKICAg
ICAvLyBGSVhNRS1CTE9DS0ZMT1c6IFJlbW92ZSB2aXJ0dWFsaXphaW9uIHdoZW4gYWxsIGNhbGxl
cnMgaGF2ZSBtb3ZlZCB0byBSZW5kZXJCbG9ja0Zsb3cKICAgICB2aXJ0dWFsIFZpc2libGVQb3Np
dGlvbiBwb3NpdGlvbkZvclBvaW50V2l0aElubGluZUNoaWxkcmVuKGNvbnN0IExheW91dFBvaW50
JiwgY29uc3QgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAKaW5kZXggZTg3ZTQ1NzQ0MWFkLi43Zjg3Zjk2ZmEz
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCkBA
IC00NDM4LDcgKzQ0MzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVBy
ZWZlcnJlZExvZ2ljYWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgIG1heExvZ2lj
YWxXaWR0aCA9IHByZWZlcnJlZFdpZHRoKG1heExvZ2ljYWxXaWR0aCwgaW5saW5lTWF4KTsKIH0K
IAotSW50UmVjdCBSZW5kZXJCbG9ja0Zsb3c6OmNvbXB1dGVDYXJldFJlY3QoY29uc3QgTGF5b3V0
UmVjdCYgbGluZVNlbGVjdGlvblJlY3QsIGZsb2F0IGxvZ2ljYWxMZWZ0UG9zaXRpb24sIHVuc2ln
bmVkIGNhcmV0V2lkdGgsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QK
K0xheW91dFJlY3QgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91
dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0LCBmbG9hdCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNp
Z25lZCBjYXJldFdpZHRoLCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAg
ICAgaW50IGhlaWdodCA9IGxpbmVTZWxlY3Rpb25SZWN0LmhlaWdodCgpOwogICAgIGludCB0b3Ag
PSBsaW5lU2VsZWN0aW9uUmVjdC55KCk7CkBAIC00NDUzLDkgKzQ0NTMsNiBAQCBJbnRSZWN0IFJl
bmRlckJsb2NrRmxvdzo6Y29tcHV0ZUNhcmV0UmVjdChjb25zdCBMYXlvdXRSZWN0JiBsaW5lU2Vs
ZWN0aW9uUmVjdCwgZgogICAgIGZsb2F0IGxpbmVMZWZ0ID0gbGluZVNlbGVjdGlvblJlY3QueCgp
OwogICAgIGZsb2F0IGxpbmVSaWdodCA9IGxpbmVTZWxlY3Rpb25SZWN0Lm1heFgoKTsKIAotICAg
IGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxp
bmUgPSBsaW5lUmlnaHQgLSAobGVmdCArIGNhcmV0V2lkdGgpOwotCiAgICAgYm9vbCByaWdodEFs
aWduZWQgPSBmYWxzZTsKICAgICBzd2l0Y2ggKHN0eWxlKCkudGV4dEFsaWduKCkpIHsKICAgICBj
YXNlIFRleHRBbGlnbk1vZGU6OlJpZ2h0OgpAQCAtNDQ4Niw3ICs0NDgzLDEzIEBAIEludFJlY3Qg
UmVuZGVyQmxvY2tGbG93Ojpjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVT
ZWxlY3Rpb25SZWN0LCBmCiAgICAgICAgIGxlZnQgPSBzdGQ6Om1pbihsZWZ0LCByaWdodEVkZ2Ug
LSBjYXJldFdpZHRoUmlnaHRPZk9mZnNldCk7CiAgICAgICAgIGxlZnQgPSBzdGQ6Om1heChsZWZ0
LCBsaW5lTGVmdCk7CiAgICAgfQotICAgIHJldHVybiBzdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkgPyBJbnRSZWN0KGxlZnQsIHRvcCwgY2FyZXRXaWR0aCwgaGVpZ2h0KSA6IEludFJl
Y3QodG9wLCBsZWZ0LCBoZWlnaHQsIGNhcmV0V2lkdGgpOworCisgICAgYXV0byByZWN0ID0gSW50
UmVjdChsZWZ0LCB0b3AsIGNhcmV0V2lkdGgsIGhlaWdodCk7CisKKyAgICBpZiAoY2FyZXRSZWN0
TW9kZSA9PSBDYXJldFJlY3RNb2RlOjpFeHBhbmRUb0VuZE9mTGluZSkKKyAgICAgICAgcmVjdC5z
aGlmdE1heFhFZGdlVG8obGluZVJpZ2h0KTsKKworICAgIHJldHVybiBzdHlsZSgpLmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyByZWN0IDogcmVjdC50cmFuc3Bvc2VkUmVjdCgpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmgKaW5kZXggMDA2MThl
MjcxZGFkLi5kZDQzYmMxZThhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tGbG93LmgKQEAgLTM5OCw3ICszOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRGbG9h
dHNUb05ld1BhcmVudChSZW5kZXJCbG9ja0Zsb3cmIHRvQmxvY2tGbG93KSBjb25zdDsKICAgICAK
ICAgICBMYXlvdXRVbml0IGVuZFBhZGRpbmdXaWR0aEZvckNhcmV0KCkgY29uc3Q7Ci0gICAgSW50
UmVjdCBjb21wdXRlQ2FyZXRSZWN0KGNvbnN0IExheW91dFJlY3QmIGxpbmVTZWxlY3Rpb25SZWN0
LCBmbG9hdCBsb2dpY2FsTGVmdFBvc2l0aW9uLCB1bnNpZ25lZCBjYXJldFdpZHRoLCBMYXlvdXRV
bml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0OworICAgIExheW91dFJlY3QgY29tcHV0
ZUNhcmV0UmVjdChjb25zdCBMYXlvdXRSZWN0JiBsaW5lU2VsZWN0aW9uUmVjdCwgZmxvYXQgbG9n
aWNhbExlZnRQb3NpdGlvbiwgdW5zaWduZWQgY2FyZXRXaWR0aCwgQ2FyZXRSZWN0TW9kZSA9IENh
cmV0UmVjdE1vZGU6Ok5vcm1hbCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBib29sIHNob3Vs
ZFJlc2V0TG9naWNhbEhlaWdodEJlZm9yZUxheW91dCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggODVhNGM1
NjJiMjFhLi40MDY4MDk3MDY3ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCkBAIC00NDMwLDcgKzQ0MzAsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9u
ZWRMb2dpY2FsSGVpZ2h0UmVwbGFjZWQoTG9naWNhbEV4dGVudENvbXB1dGVkVmFsdQogICAgIGNv
bXB1dGVkVmFsdWVzLm1fcG9zaXRpb24gPSBsb2dpY2FsVG9wUG9zOwogfQogCi1MYXlvdXRSZWN0
IFJlbmRlckJveDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5B
bmRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29uc3QKK0xheW91
dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
IHJ1bkFuZE9mZnNldCwgQ2FyZXRSZWN0TW9kZSBjYXJldFJlY3RNb2RlKSBjb25zdAogewogICAg
IC8vIFZpc2libGVQb3NpdGlvbnMgYXQgb2Zmc2V0cyBpbnNpZGUgY29udGFpbmVycyBlaXRoZXIg
YSkgcmVmZXIgdG8gdGhlIHBvc2l0aW9ucyBiZWZvcmUvYWZ0ZXIKICAgICAvLyB0aG9zZSBjb250
YWluZXJzICh0YWJsZXMgYW5kIHNlbGVjdCBlbGVtZW50cykgb3IgYikgcmVmZXIgdG8gdGhlIHBv
c2l0aW9uIGluc2lkZSBhbiBlbXB0eSBibG9jay4KQEAgLTQ0NjIsOSArNDQ2Miw2IEBAIExheW91
dFJlY3QgUmVuZGVyQm94Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQm
IHJ1bkFuZE9mZnNldCwgTGF5CiAgICAgaWYgKGZvbnRIZWlnaHQgPiByZWN0LmhlaWdodCgpIHx8
ICghaXNSZXBsYWNlZCgpICYmICFpc1RhYmxlKCkpKQogICAgICAgICByZWN0LnNldEhlaWdodChm
b250SGVpZ2h0KTsKIAotICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpl
eHRyYVdpZHRoVG9FbmRPZkxpbmUgPSB4KCkgKyB3aWR0aCgpIC0gcmVjdC5tYXhYKCk7Ci0KICAg
ICAvLyBNb3ZlIHRvIGxvY2FsIGNvb3JkcwogICAgIHJlY3QubW92ZUJ5KC1sb2NhdGlvbigpKTsK
IApAQCAtNDQ3NiwxMCArNDQ3MywxMCBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6bG9jYWxDYXJl
dFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExheQogICAgICAg
ICByZWN0LnNldFkocmVjdC55KCkgKyBwYWRkaW5nVG9wKCkgKyBib3JkZXJUb3AoKSk7CiAgICAg
fQogCi0gICAgaWYgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQotICAgICAgICByZXR1cm4g
cmVjdC50cmFuc3Bvc2VkUmVjdCgpOworICAgIGlmIChjYXJldFJlY3RNb2RlID09IENhcmV0UmVj
dE1vZGU6OkV4cGFuZFRvRW5kT2ZMaW5lKQorICAgICAgICByZWN0LnNoaWZ0TWF4WEVkZ2VUbyh4
KCkgKyB3aWR0aCgpKTsKIAotICAgIHJldHVybiByZWN0OworICAgIHJldHVybiBpc0hvcml6b250
YWxXcml0aW5nTW9kZSgpID8gcmVjdCA6IHJlY3QudHJhbnNwb3NlZFJlY3QoKTsKIH0KIAogVmlz
aWJsZVBvc2l0aW9uIFJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCA3NTUwNzY1NDQzMmQuLjNjZDgwYmNkMDcy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNDk4LDcgKzQ5OCw3IEBA
IG92ZXJyaWRlOwogCiAgICAgYm9vbCBzaG91bGRUcmVhdENoaWxkQXNSZXBsYWNlZEluVGFibGVD
ZWxscygpIGNvbnN0OwogICAgIAotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3Qg
SW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0g
bnVsbHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChj
b25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdmVyZmxvd0NsaXBSZWN0KGNvbnN0IExheW91dFBv
aW50JiBsb2NhdGlvbiwgUmVuZGVyRnJhZ21lbnRDb250YWluZXIqID0gbnVsbHB0ciwgT3Zlcmxh
eVNjcm9sbGJhclNpemVSZWxldmFuY3kgPSBJZ25vcmVPdmVybGF5U2Nyb2xsYmFyU2l6ZSwgUGFp
bnRQaGFzZSA9IFBhaW50UGhhc2U6OkJsb2NrQmFja2dyb3VuZCkgY29uc3Q7CiAgICAgdmlydHVh
bCBMYXlvdXRSZWN0IG92ZXJmbG93Q2xpcFJlY3RGb3JDaGlsZExheWVycyhjb25zdCBMYXlvdXRQ
b2ludCYgbG9jYXRpb24sIFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiBmcmFnbWVudCwgT3Zlcmxh
eVNjcm9sbGJhclNpemVSZWxldmFuY3kgcmVsZXZhbmN5KSBjb25zdCB7IHJldHVybiBvdmVyZmxv
d0NsaXBSZWN0KGxvY2F0aW9uLCBmcmFnbWVudCwgcmVsZXZhbmN5KTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZDlhNzVj
OWVhMTk3Li5iOTgyN2M4YTE0ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYyNiw3ICsyNjI2LDcgQEAgdm9pZCBSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6Y2xlYXJGaXJzdExldHRlclJlbWFpbmluZ1RleHQoKQogICAgIGZp
cnN0TGV0dGVyUmVtYWluaW5nVGV4dE1hcCgpLnJlbW92ZSh0aGlzKTsKIH0KIAotTGF5b3V0UmVj
dCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5
b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0KSBjb25zdAorTGF5b3V0
UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQo
TGF5b3V0VW5pdCB3aWR0aCwgTGF5b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0LCBDYXJldFJlY3RN
b2RlIGNhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFmaXJzdENoaWxkKCkpOwog
CkBAIC0yNjg5LDcgKzI2ODksMTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
bG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwKICAgICBhdXRv
IGxpbmVIZWlnaHQgPSB0aGlzLT5saW5lSGVpZ2h0KHRydWUsIGN1cnJlbnRTdHlsZS5pc0hvcml6
b250YWxXcml0aW5nTW9kZSgpID8gSG9yaXpvbnRhbExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0
aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7CiAgICAgYXV0byBoZWlnaHQgPSBzdGQ6Om1pbihsaW5l
SGVpZ2h0LCBMYXlvdXRVbml0IHsgY3VycmVudFN0eWxlLmZvbnRNZXRyaWNzKCkuaGVpZ2h0KCkg
fSk7CiAgICAgYXV0byB5ID0gcGFkZGluZ1RvcCgpICsgYm9yZGVyVG9wKCkgKyAobGluZUhlaWdo
dCA+IGhlaWdodCA/IChsaW5lSGVpZ2h0IC0gaGVpZ2h0KSAvIDIgOiBMYXlvdXRVbml0IHsgfSk7
Ci0gICAgcmV0dXJuIGN1cnJlbnRTdHlsZS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gTGF5
b3V0UmVjdCh4LCB5LCBjYXJldFdpZHRoLCBoZWlnaHQpIDogTGF5b3V0UmVjdCh5LCB4LCBoZWln
aHQsIGNhcmV0V2lkdGgpOworCisgICAgYXV0byByZWN0ID0gTGF5b3V0UmVjdCh4LCB5LCBjYXJl
dFdpZHRoLCBoZWlnaHQpOworCisgICAgaWYgKGNhcmV0UmVjdE1vZGUgPT0gQ2FyZXRSZWN0TW9k
ZTo6RXhwYW5kVG9FbmRPZkxpbmUpCisgICAgICAgIHJlY3Quc2hpZnRNYXhYRWRnZVRvKHdpZHRo
KTsKKworICAgIHJldHVybiBjdXJyZW50U3R5bGUuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHJlY3QgOiByZWN0LnRyYW5zcG9zZWRSZWN0KCk7CiB9CiAKIGJvb2wgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnNob3VsZEFudGlhbGlhc0xpbmVzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKaW5kZXgg
ZWNhNmQ1ODY4NWY3Li4wZDg3YjJhYzVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0yNjAsNyArMjYwLDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgY2hvb3NlSW50ZXJwb2xhdGlvblF1YWxpdHko
R3JhcGhpY3NDb250ZXh0JiwgSW1hZ2UmLCBjb25zdCB2b2lkKiwgY29uc3QgTGF5b3V0U2l6ZSYp
OwogCi0gICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdEZvckVtcHR5RWxlbWVudChMYXlvdXRV
bml0IHdpZHRoLCBMYXlvdXRVbml0IHRleHRJbmRlbnRPZmZzZXQpIGNvbnN0OworICAgIExheW91
dFJlY3QgbG9jYWxDYXJldFJlY3RGb3JFbXB0eUVsZW1lbnQoTGF5b3V0VW5pdCB3aWR0aCwgTGF5
b3V0VW5pdCB0ZXh0SW5kZW50T2Zmc2V0LCBDYXJldFJlY3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6
Tm9ybWFsKSBjb25zdDsKIAogICAgIHN0YXRpYyBib29sIHNob3VsZEFudGlhbGlhc0xpbmVzKEdy
YXBoaWNzQ29udGV4dCYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW5saW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUu
Y3BwCmluZGV4IGY3OGVjN2RjZjgwMS4uYmQ1MjVlMDE4YmRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVySW5saW5lLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUmVuZGVy
SW5saW5lOjp1cGRhdGVBbHdheXNDcmVhdGVMaW5lQm94ZXMoYm9vbCBmdWxsTGF5b3V0KQogICAg
IH0KIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJJbmxpbmU6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElu
bGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSkgY29u
c3QKK0xheW91dFJlY3QgUmVuZGVySW5saW5lOjpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVS
dW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdAogewogICAgIGlmIChmaXJzdENoaWxk
KCkpIHsKICAgICAgICAgLy8gVGhpcyBjb25kaXRpb24gaXMgcG9zc2libGUgaWYgdGhlIFJlbmRl
cklubGluZSBpcyBhdCBhbiBlZGl0aW5nIGJvdW5kYXJ5LApAQCAtMjM5LDkgKzIzOSw2IEBAIExh
eW91dFJlY3QgUmVuZGVySW5saW5lOjpsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRP
ZmZzZXQmLCBMYXlvdXRVbml0KiBlCiAgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAgICAg
fQogCi0gICAgaWYgKGV4dHJhV2lkdGhUb0VuZE9mTGluZSkKLSAgICAgICAgKmV4dHJhV2lkdGhU
b0VuZE9mTGluZSA9IDA7Ci0KICAgICBMYXlvdXRSZWN0IGNhcmV0UmVjdCA9IGxvY2FsQ2FyZXRS
ZWN0Rm9yRW1wdHlFbGVtZW50KGhvcml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCksIDAp
OwogCiAgICAgaWYgKElubGluZUJveCogZmlyc3RCb3ggPSBmaXJzdExpbmVCb3goKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaAppbmRleCBlYTU1MGMyOTViOTkuLjA3NzQ1
OTllMWVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcklubGlu
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbmxpbmUuaApAQCAtODYs
NyArODYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHdheXNDcmVhdGVMaW5lQm94ZXMoKSB7
IHNldFJlbmRlcklubGluZUFsd2F5c0NyZWF0ZXNMaW5lQm94ZXModHJ1ZSk7IH0KICAgICB2b2lk
IHVwZGF0ZUFsd2F5c0NyZWF0ZUxpbmVCb3hlcyhib29sIGZ1bGxMYXlvdXQpOwogCi0gICAgTGF5
b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRV
bml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0IGZpbmFsOworICAgIExheW91dFJlY3Qg
bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgQ2FyZXRSZWN0TW9kZSkg
Y29uc3QgZmluYWw7CiAKICAgICBib29sIGhpdFRlc3RDdWxsZWRJbmxpbmUoY29uc3QgSGl0VGVz
dFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlv
bkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuY3BwCmluZGV4IDkxNjQz
NzAyZGY3NS4uMGE4OTkyOTM3NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGluZUJyZWFrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGluZUJyZWFrLmNwcApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgUmVuZGVyTGluZUJyZWFr
OjpzZXRTZWxlY3Rpb25TdGF0ZShIaWdobGlnaHRTdGF0ZSBzdGF0ZSkKICAgICBtX2lubGluZUJv
eFdyYXBwZXItPnJvb3QoKS5zZXRIYXNTZWxlY3RlZENoaWxkcmVuKHN0YXRlICE9IEhpZ2hsaWdo
dFN0YXRlOjpOb25lKTsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJMaW5lQnJlYWs6OmxvY2FsQ2Fy
ZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXlvdXRVbml0
KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlckxpbmVCcmVh
azo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQs
IENhcmV0UmVjdE1vZGUgY2FyZXRSZWN0TW9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIXJ1bkFu
ZE9mZnNldC5vZmZzZXQpOwogICAgIEFTU0VSVChydW5BbmRPZmZzZXQucnVuID09IExheW91dElu
dGVncmF0aW9uOjpydW5Gb3IoKnRoaXMpKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCBMYXlvdXRSZWN0
IFJlbmRlckxpbmVCcmVhazo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0
JiBydW5BbmRPZmZzZQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCiAgICAgYXV0byBs
aW5lID0gcnVuQW5kT2Zmc2V0LnJ1bi5saW5lKCk7Ci0gICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5p
bmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+c2VsZWN0aW9uUmVjdCgpLCBsaW5lLT5s
b2dpY2FsTGVmdCgpLCBjYXJldFdpZHRoLCBleHRyYVdpZHRoVG9FbmRPZkxpbmUpOworICAgIHJl
dHVybiBsaW5lLT5jb250YWluaW5nQmxvY2soKS5jb21wdXRlQ2FyZXRSZWN0KGxpbmUtPnNlbGVj
dGlvblJlY3QoKSwgbGluZS0+bG9naWNhbExlZnQoKSwgY2FyZXRXaWR0aCwgY2FyZXRSZWN0TW9k
ZSk7CiB9CiAKIEludFJlY3QgUmVuZGVyTGluZUJyZWFrOjpsaW5lc0JvdW5kaW5nQm94KCkgY29u
c3QKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFJlbmRlckxpbmVCcmVhazo6Y29sbGVjdFNlbGVj
dGlvblJlY3RzKFZlY3RvcjxTZWxlY3Rpb25SZWN0PiYgcmVjdHMsIHVuc2lnbgogICAgIGNvbnN0
IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBib3gtPnJvb3QoKTsKIAogICAgIGF1dG8gbGluZSA9
IExheW91dEludGVncmF0aW9uOjpMaW5lSXRlcmF0b3IoJnJvb3RCb3gpOwotICAgIExheW91dFJl
Y3QgcmVjdCA9IHJvb3RCb3guYmxvY2tGbG93KCkuY29tcHV0ZUNhcmV0UmVjdChsaW5lLT5zZWxl
Y3Rpb25SZWN0KCksIGxpbmUtPmxvZ2ljYWxMZWZ0KCksIDAsIG51bGxwdHIpOworICAgIExheW91
dFJlY3QgcmVjdCA9IHJvb3RCb3guYmxvY2tGbG93KCkuY29tcHV0ZUNhcmV0UmVjdChsaW5lLT5z
ZWxlY3Rpb25SZWN0KCksIGxpbmUtPmxvZ2ljYWxMZWZ0KCksIDApOwogCiAgICAgaWYgKHJvb3RC
b3guaXNGaXJzdEFmdGVyUGFnZUJyZWFrKCkpIHsKICAgICAgICAgaWYgKGJveC0+aXNIb3Jpem9u
dGFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJy
ZWFrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJyZWFrLmgKaW5kZXgg
NDA0MzJhY2U3Yzk5Li5jZDJhMmViZjM5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMaW5lQnJlYWsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGluZUJyZWFrLmgKQEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgY2Fy
ZXRNaW5PZmZzZXQoKSBjb25zdCBmaW5hbDsKICAgICBpbnQgY2FyZXRNYXhPZmZzZXQoKSBjb25z
dCBmaW5hbDsKICAgICBib29sIGNhbkJlU2VsZWN0aW9uTGVhZigpIGNvbnN0IGZpbmFsOwotICAg
IExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiwgTGF5
b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKSBjb25zdCBmaW5hbDsKKyAgICBMYXlvdXRS
ZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0UmVjdE1v
ZGUpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3Rh
dGUpIGZpbmFsOwogCiAgICAgTGF5b3V0VW5pdCBsaW5lSGVpZ2h0KGJvb2wgZmlyc3RMaW5lLCBM
aW5lRGlyZWN0aW9uTW9kZSwgTGluZVBvc2l0aW9uTW9kZSkgY29uc3QgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDM1NzY3OTc3NTQyYi4uMTdm
YzMzZDQxZTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTQwMCwxMSArMTQwMCw4IEBAIExheW91dFNpemUgUmVuZGVyT2JqZWN0OjpvZmZzZXRGcm9t
QW5jZXN0b3JDb250YWluZXIoUmVuZGVyRWxlbWVudCYgY29udGFpbmVyKSBjCiAgICAgcmV0dXJu
IG9mZnNldDsKIH0KIAotTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KGNv
bnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGlu
ZSkgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdChjb25zdCBJ
bmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdAogewotICAgIGlmIChleHRy
YVdpZHRoVG9FbmRPZkxpbmUpCi0gICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwOwot
CiAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCmluZGV4IDVjMGIxMzY5ZTQ1MC4uOTUzMzdhNGNhMDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludFNlbGVjdGlvbkdhcHMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogCiAgICAgLy8gUmV0dXJucyB0aGUgbG9jYWwgY29vcmRpbmF0ZXMgb2Yg
dGhlIGNhcmV0IHdpdGhpbiB0aGlzIHJlbmRlciBvYmplY3QuCi0gICAgdmlydHVhbCBMYXlvdXRS
ZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIExheW91dFVuaXQq
IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IG51bGxwdHIpIGNvbnN0OworICAgIHZpcnR1YWwgTGF5
b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJl
Y3RNb2RlID0gQ2FyZXRSZWN0TW9kZTo6Tm9ybWFsKSBjb25zdDsKIAogICAgIC8vIFdoZW4gcGVy
Zm9ybWluZyBhIGdsb2JhbCBkb2N1bWVudCB0ZWFyLWRvd24sIG9yIHdoZW4gZ29pbmcgaW50byB0
aGUgYmFjay9mb3J3YXJkIGNhY2hlLCB0aGUgcmVuZGVyZXIgb2YgdGhlIGRvY3VtZW50IGlzIGNs
ZWFyZWQuCiAgICAgYm9vbCByZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RFbnVtcy5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdEVudW1zLmgKaW5kZXggMzk5ZWJlYjE1
ZDYzLi4wNmU3NzMzMjA4YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3RFbnVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3RFbnVtcy5oCkBAIC02MSw0ICs2MSwxMCBAQCBlbnVtIE1hcENvb3JkaW5hdGVzTW9kZSB7
CiB9OwogdHlwZWRlZiB1bnNpZ25lZCBNYXBDb29yZGluYXRlc0ZsYWdzOwogCitlbnVtIGNsYXNz
IENhcmV0UmVjdE1vZGUgeworICAgIE5vcm1hbCwKKyAgICBFeHBhbmRUb0VuZE9mTGluZQorfTsK
KworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggZjQ4ODhj
NzQ2YzgxLi5hZmNlZGFiYWQ4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dC5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dDo6cG9z
aXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9pbnQsIGNvbnN0IFJlbgogICAgIHJl
dHVybiBjcmVhdGVWaXNpYmxlUG9zaXRpb24oMCwgQWZmaW5pdHk6OkRvd25zdHJlYW0pOwogfQog
Ci1MYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFu
ZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBMYXlvdXRVbml0KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUp
IGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlclRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGlu
ZVJ1bkFuZE9mZnNldCYgcnVuQW5kT2Zmc2V0LCBDYXJldFJlY3RNb2RlIGNhcmV0UmVjdE1vZGUp
IGNvbnN0CiB7CiAgICAgaWYgKCFydW5BbmRPZmZzZXQucnVuKQogICAgICAgICByZXR1cm4gTGF5
b3V0UmVjdCgpOwpAQCAtNzE4LDcgKzcxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyVGV4dDo6bG9j
YWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZzZXQsIExhCiAg
ICAgYXV0byBsaW5lID0gdGV4dFJ1bi5saW5lKCk7CiAKICAgICBmbG9hdCBwb3NpdGlvbiA9IHRl
eHRSdW4tPnBvc2l0aW9uRm9yT2Zmc2V0KHJ1bkFuZE9mZnNldC5vZmZzZXQpOwotICAgIHJldHVy
biBsaW5lLT5jb250YWluaW5nQmxvY2soKS5jb21wdXRlQ2FyZXRSZWN0KGxpbmUtPnNlbGVjdGlv
blJlY3QoKSwgcG9zaXRpb24sIGNhcmV0V2lkdGgsIGV4dHJhV2lkdGhUb0VuZE9mTGluZSk7Cisg
ICAgcmV0dXJuIGxpbmUtPmNvbnRhaW5pbmdCbG9jaygpLmNvbXB1dGVDYXJldFJlY3QobGluZS0+
c2VsZWN0aW9uUmVjdCgpLCBwb3NpdGlvbiwgY2FyZXRXaWR0aCwgY2FyZXRSZWN0TW9kZSk7CiB9
CiAKIEFMV0FZU19JTkxJTkUgZmxvYXQgUmVuZGVyVGV4dDo6d2lkdGhGcm9tQ2FjaGUoY29uc3Qg
Rm9udENhc2NhZGUmIGYsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW4sIGZsb2F0IHhQb3Ms
IEhhc2hTZXQ8Y29uc3QgRm9udCo+KiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93KiBnbHlw
aE92ZXJmbG93LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHQuaAppbmRleCBhZTg1YWQyNDJhODUuLmFhZDc5M2YzY2YyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoSGlnaGxpZ2h0U3RhdGUpIGZpbmFs
OwogICAgIExheW91dFJlY3Qgc2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoY29uc3QgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVu
dCA9IHRydWUpIGZpbmFsOwotICAgIExheW91dFJlY3QgbG9jYWxDYXJldFJlY3QoY29uc3QgSW5s
aW5lUnVuQW5kT2Zmc2V0JiwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gbnVs
bHB0cikgY29uc3Qgb3ZlcnJpZGU7CisgICAgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChjb25z
dCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBDYXJldFJlY3RNb2RlKSBjb25zdCBvdmVycmlkZTsKICAg
ICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9p
ZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocyhmbG9hdCBsZWFkV2lkdGgsIEhhc2hTZXQ8
Y29uc3QgRm9udCo+JiBmYWxsYmFja0ZvbnRzLCBHbHlwaE92ZXJmbG93Jik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAppbmRl
eCBiZjNmNzE1YjBmNzUuLmZiY2E4ZjMyYzRmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lubGluZVRleHQuY3BwCkBAIC0xMTksNyArMTE5LDcg
QEAgc3RkOjp1bmlxdWVfcHRyPElubGluZVRleHRCb3g+IFJlbmRlclNWR0lubGluZVRleHQ6OmNy
ZWF0ZVRleHRCb3goKQogICAgIHJldHVybiBib3g7IAogfQogCi1MYXlvdXRSZWN0IFJlbmRlclNW
R0lubGluZVRleHQ6OmxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYgcnVu
QW5kT2Zmc2V0LCBMYXlvdXRVbml0KikgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyU1ZHSW5saW5l
VGV4dDo6bG9jYWxDYXJldFJlY3QoY29uc3QgSW5saW5lUnVuQW5kT2Zmc2V0JiBydW5BbmRPZmZz
ZXQsIENhcmV0UmVjdE1vZGUpIGNvbnN0CiB7CiAgICAgYXV0byogYm94ID0gcnVuQW5kT2Zmc2V0
LnJ1biA/IHJ1bkFuZE9mZnNldC5ydW4tPmxlZ2FjeUlubGluZUJveCgpIDogbnVsbHB0cjsKICAg
ICBhdXRvIGNhcmV0T2Zmc2V0ID0gcnVuQW5kT2Zmc2V0Lm9mZnNldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKaW5kZXggZGMyNzIw
OTlkMDM1Li5iYjJlYWZlY2U1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5oCkBAIC02Miw3ICs2Miw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1NWR0lubGluZVRleHQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb25Gb3JQb2ludChjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFJlbmRlckZyYWdtZW50Q29udGFpbmVyKikgb3ZlcnJpZGU7Ci0gICAgTGF5b3V0
UmVjdCBsb2NhbENhcmV0UmVjdChjb25zdCBJbmxpbmVSdW5BbmRPZmZzZXQmLCBMYXlvdXRVbml0
KiBleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSBudWxscHRyKSBjb25zdCBvdmVycmlkZTsKKyAgICBM
YXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KGNvbnN0IElubGluZVJ1bkFuZE9mZnNldCYsIENhcmV0
UmVjdE1vZGUpIGNvbnN0IG92ZXJyaWRlOwogICAgIEludFJlY3QgbGluZXNCb3VuZGluZ0JveCgp
IGNvbnN0IG92ZXJyaWRlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbmxpbmVUZXh0Qm94PiBjcmVh
dGVUZXh0Qm94KCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>