<?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>154717</bug_id>
          
          <creation_ts>2016-02-25 21:45:46 -0800</creation_ts>
          <short_desc>[EFL] Remove WebUIPopupMenuClient</short_desc>
          <delta_ts>2016-02-25 22:45:42 -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>WebKit EFL</component>
          <version>Other</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>152037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryuan Choi">ryuan.choi</reporter>
          <assigned_to name="Ryuan Choi">ryuan.choi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>lucas.de.marchi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168403</commentid>
    <comment_count>0</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2016-02-25 21:45:46 -0800</bug_when>
    <thetext>WebUIPopupMenuClient is EFL specific object to expose popupmenu APIs as WK C API.

Since EFL stopped to use WK C API internally, we can remove unnecessary platform guard with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168405</commentid>
    <comment_count>1</comment_count>
      <attachid>272297</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2016-02-25 21:55:24 -0800</bug_when>
    <thetext>Created attachment 272297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168412</commentid>
    <comment_count>2</comment_count>
      <attachid>272297</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2016-02-25 22:33:02 -0800</bug_when>
    <thetext>Comment on attachment 272297
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168415</commentid>
    <comment_count>3</comment_count>
      <attachid>272297</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 22:45:36 -0800</bug_when>
    <thetext>Comment on attachment 272297
Patch

Clearing flags on attachment: 272297

Committed r197161: &lt;http://trac.webkit.org/changeset/197161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168416</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-25 22:45:42 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272297</attachid>
            <date>2016-02-25 21:55:24 -0800</date>
            <delta_ts>2016-02-25 22:45:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154717-20160226145505.patch</filename>
            <type>text/plain</type>
            <size>57055</size>
            <attacher name="Ryuan Choi">ryuan.choi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYWY4ZTdlODYxYzA0Y2Nl
NTQ3YTE1ZGM3MzVlYmE0ZWI4NDJlMmYwNS4uNGExNTA2ZjQ0ZDJmODEwMDk0YWZkMmI2Y2ZmMTE0
MGY1MzFiNTg1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDE2LTAyLTI1ICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tPgorCisgICAgICAgIFtFRkxdIFJlbW92
ZSBXZWJVSVBvcHVwTWVudUNsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU0NzE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgV2ViVUlQb3B1cE1lbnVDbGllbnQgaXMgb25seSBmb3IgRUZMIHRvIGV4
cG9zZSBXZWJQb3B1cE1lbnVQcm94eSBhbmQgV2ViUG9wdXBJdGVtIHRvIFdLIEMgQVBJcy4KKyAg
ICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGl0IGFuZCByZWxhdGVkIGNvZGUuCisKKyAgICAgICAg
KiBQbGF0Zm9ybUVmbC5jbWFrZTogUmVtb3ZlZCBXS1BvcHVwSXRlbSByZWxhdGVkIGZpbGVzIGZy
b20gc291cmNlIGxpc3QuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RF
ZmwuaDogUmVtb3ZlZCBXS1BvcHVwTWVudSByZWxhdGVkIGNvZGUuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tQYWdlRWZsLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1BvcHVwSXRlbS5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1BvcHVwSXRlbS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmg6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6CisgICAgICAgIChFd2tWaWV3OjpyZXF1ZXN0
UG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnUuY3BwOgorICAgICAgICAoRXdr
UG9wdXBNZW51OjpFd2tQb3B1cE1lbnUpOgorICAgICAgICAoRXdrUG9wdXBNZW51OjpjbG9zZSk6
CisgICAgICAgIChFd2tQb3B1cE1lbnU6OnNldFNlbGVjdGVkSW5kZXgpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW0uY3BwOiBVc2VkIFdlYlBvcHVwSXRl
bSBhbmQgb3RoZXJzIGluc3RlYWQgb2YgV0sgQyBBUElzLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19wb3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9wcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y2xvc2UpOiBSZW1vdmVkIHVubmVjZXNzYXJ5IEVGTCBndWFyZHMuCisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmhpZGVQb3B1cE1lbnUpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwOiBSZW1vdmVkIFdL
UG9wdXBNZW51TGlzdGVuZXIgcmVsYXRlZCBjb2RlLgorICAgICAgICAoV2ViS2l0OjpQYWdlVUlD
bGllbnRFZmw6OlBhZ2VVSUNsaWVudEVmbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBh
Z2VVSUNsaWVudEVmbDo6c2hvd1BvcHVwTWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlBhZ2VVSUNsaWVudEVmbDo6aGlkZVBvcHVwTWVudSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dl
YlBhZ2VQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5pdGlh
bGl6ZVVJUG9wdXBNZW51Q2xpZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZs
L1dlYlBvcHVwTWVudUxpc3RlbmVyRWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBN
ZW51TGlzdGVuZXJFZmw6OldlYlBvcHVwTWVudUxpc3RlbmVyRWZsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6OnZhbHVlQ2hhbmdlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5oOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbDo6Y3JlYXRlKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcDogVXNl
ZCBXZWJQb3B1cEl0ZW0gYW5kIG90aGVycyBpbnN0ZWFkIG9mIFdLIEMgQVBJcy4KKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmg6IERpdHRvLgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkpOiBVc2VkIFdlYlBvcHVwSXRlbSBhbmQgb3RoZXJzIGluc3RlYWQgb2Yg
V0sgQyBBUElzLgorCiAyMDE2LTAyLTIyICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBuYXZlcmNv
cnAuY29tPgogCiAgICAgICAgIFtFRkxdIE1lcmdlIFdlYlZpZXcgYW5kIFdlYlZpZXdFZmwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktp
dDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggODFjNmEwMjMxZDlkODI0NDJhYzdjOGY0NmFkMTZi
ZGM0MTRhN2VlNi4uOTkxZWNlN2U0MWFhMzE0OGFlOWE5NmE2MjU2MzJkYjJmOWQ2MDM5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTczLDkgKzczLDYgQEAgbGlzdChBUFBFTkQgV2Vi
S2l0Ml9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLQ29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLRXZlbnRFZmwuY3BwCi0g
ICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9D
L2VmbC9XS1BvcHVwSXRlbS5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51
TGlzdGVuZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXdFZmwuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQVBJL0Mvc291cC9XS0Nvb2tpZU1hbmFnZXJTb3VwLmNwcApAQCAtMTc3LDEx
ICsxNzQsMTAgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJJbnNwZWN0b3JQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBvcHVwSXRlbUVmbC5jcHAKLSAgICBVSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxpc3RlbmVyRWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwv
V2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNl
c0VmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByb2Nlc3NQb29sRWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAotICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
VUlQb3B1cE1lbnVDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAogICAg
IFVJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS0FQSUNhc3RFZmwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tBUElDYXN0RWZsLmgKaW5kZXggM2Y3YTk4ZmU3YTY2NGZh
ZTViZThkYmFjYWFjNWNlOTkyNTY1YjA3NC4uMDc5MDgyZGUwZWRmMzQ3Y2JjM2ExYzg3NzViNzE1
ODFhNDg4OGJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS0FQSUNhc3RFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLQVBJQ2FzdEVmbC5oCkBAIC0yNSw3ICsyNSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPFdl
YkNvcmUvV3JpdGluZ01vZGUuaD4KLSNpbmNsdWRlIDxXZWJLaXQvV0tQb3B1cEl0ZW0uaD4KIAog
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKQEAgLTM1LDEy
ICszNCw4IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlldzsKLWNsYXNzIFdl
YlBvcHVwSXRlbUVmbDsKLWNsYXNzIFdlYlBvcHVwTWVudUxpc3RlbmVyRWZsOwogCiBXS19BRERf
QVBJX01BUFBJTkcoV0tWaWV3UmVmLCBXZWJWaWV3KQotV0tfQUREX0FQSV9NQVBQSU5HKFdLUG9w
dXBJdGVtUmVmLCBXZWJQb3B1cEl0ZW1FZmwpCi1XS19BRERfQVBJX01BUFBJTkcoV0tQb3B1cE1l
bnVMaXN0ZW5lclJlZiwgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwpCiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQogY2xhc3MgRXdrVG91Y2hFdmVudDsKQEAgLTUxLDIyICs0Niw2IEBAIFdLX0FE
RF9BUElfTUFQUElORyhXS1RvdWNoUG9pbnRSZWYsIEV3a1RvdWNoUG9pbnQpCiAjZW5kaWYKIAog
Ly8gRW51bSBjb252ZXJzaW9ucy4KLWlubGluZSBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24gdG9B
UEkoV2ViQ29yZTo6VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgV0tQb3B1cEl0ZW1U
ZXh0RGlyZWN0aW9uIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjsK
LQotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpSVEw6Ci0gICAg
ICAgIHdrRGlyZWN0aW9uID0ga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvblJUTDsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpMVFI6Ci0gICAgICAgIHdrRGlyZWN0aW9uID0ga1dL
UG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
cmV0dXJuIHdrRGlyZWN0aW9uOwotfQotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIGlubGlu
ZSBXS0V2ZW50VHlwZSB0b0FQSShXZWJFdmVudDo6VHlwZSB0eXBlKQogewpAQCAtMTA0LDE4ICs4
Myw2IEBAIGlubGluZSBXS1RvdWNoUG9pbnRTdGF0ZSB0b0FQSShXZWJQbGF0Zm9ybVRvdWNoUG9p
bnQ6OlRvdWNoUG9pbnRTdGF0ZSBzdGF0ZSkKIH0KICNlbmRpZgogCi10ZW1wbGF0ZTw+Ci1pbmxp
bmUgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiB0b0FQSShXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCog
cG9wdXApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLUG9wdXBNZW51TGlzdGVuZXJSZWY+
KHN0YXRpY19jYXN0PHZvaWQqPihwb3B1cCkpOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgV2Vi
UG9wdXBNZW51TGlzdGVuZXJFZmwqIHRvSW1wbChXS1BvcHVwTWVudUxpc3RlbmVyUmVmIHBvcHVw
UmVmKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbCo+
KHN0YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PE9wYXF1ZVdLUG9wdXBNZW51TGlzdGVuZXIq
Pihwb3B1cFJlZikpKTsKLX0KLQogfQogCiAjZW5kaWYgLy8gV0tBUElDYXN0RWZsX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQYWdlRWZsLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQxMDkzYTIxZjFmODVhOGM0OGViZmFmMWI1NDIxYTk5
OGEwMTVjZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcg
RWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV0tQYWdlRWZsLmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotdm9pZCBXS1BhZ2VTZXRVSVBvcHVwTWVudUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29u
c3QgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRCYXNlKiB3a0NsaWVudCkKLXsKLSAgICB0b0ltcGwo
cGFnZVJlZiktPmluaXRpYWxpemVVSVBvcHVwTWVudUNsaWVudCh3a0NsaWVudCk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BhZ2VFZmwuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q0YmI4YTllOWY1MTBjZmVlNjM3NDhiMDkxOWJiYjJmYjNj
N2Y0NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUGFnZUVmbC5oCisrKyAvZGV2L251bGwK
QEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0
cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1BhZ2VF
ZmxfaAotI2RlZmluZSBXS1BhZ2VFZmxfaAotCi0jaW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgot
I2luY2x1ZGUgPFdlYktpdC9XS0dlb21ldHJ5Lmg+Ci0jaW5jbHVkZSA8V2ViS2l0L1dLUG9wdXBJ
dGVtLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotdHlw
ZWRlZiB2b2lkICgqV0tQYWdlU2hvd1BvcHVwTWVudUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwg
V0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBtZW51TGlzdGVuZXJSZWYsIFdLUmVjdCByZWN0LCBXS1Bv
cHVwSXRlbVRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3Rv
ciwgV0tBcnJheVJlZiBpdGVtc1JlZiwgaW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKLXR5cGVkZWYgdm9pZCAoKldLUGFnZUhpZGVQb3B1cE1lbnVDYWxsYmFj
aykoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCi10eXBlZGVmIHN0
cnVjdCBXS1BhZ2VVSVBvcHVwTWVudUNsaWVudEJhc2UgewotICAgIGludCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKLSAgICBjb25zdCB2b2lkKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudEluZm87Ci19IFdLUGFnZVVJ
UG9wdXBNZW51Q2xpZW50QmFzZTsKLQotdHlwZWRlZiBzdHJ1Y3QgV0tQYWdlVUlQb3B1cE1lbnVD
bGllbnRWMCB7Ci0gICAgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRCYXNlICAgICAgICAgICAgICAg
ICAgICBiYXNlOwotCi0gICAgV0tQYWdlU2hvd1BvcHVwTWVudUNhbGxiYWNrICAgICAgICAgICAg
ICAgICAgICBzaG93UG9wdXBNZW51OwotICAgIFdLUGFnZUhpZGVQb3B1cE1lbnVDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICAgaGlkZVBvcHVwTWVudTsKLX0gV0tQYWdlVUlQb3B1cE1lbnVDbGll
bnRWMDsKLQotV0tfRVhQT1JUIHZvaWQgV0tQYWdlU2V0VUlQb3B1cE1lbnVDbGllbnQoV0tQYWdl
UmVmIHBhZ2UsIGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50QmFzZSogY2xpZW50KTsKLQot
I2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmIC8qIFdLUGFnZUVmbF9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJ
dGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjBlYTQ1ZWM4NDc2NmEyZTEyMDcz
NjI5MzgwNTNiNTU4MjU3ZDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cEl0ZW0u
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldLUG9wdXBJdGVtLmgiCi0KLSNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJQb3B1cEl0ZW1FZmwuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1XS1BvcHVwSXRl
bVR5cGUgV0tQb3B1cEl0ZW1HZXRUeXBlKFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCi17Ci0gICAg
c3dpdGNoICh0b0ltcGwoaXRlbVJlZiktPml0ZW1UeXBlKCkpIHsKLSAgICBjYXNlIFdlYlBvcHVw
SXRlbTo6U2VwYXJhdG9yOgotICAgICAgICByZXR1cm4ga1dLUG9wdXBJdGVtVHlwZVNlcGFyYXRv
cjsKLSAgICBjYXNlIFdlYlBvcHVwSXRlbTo6SXRlbToKLSAgICAgICAgcmV0dXJuIGtXS1BvcHVw
SXRlbVR5cGVJdGVtOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4ga1dLUG9wdXBJdGVtVHlwZUl0ZW07Ci0gICAgfQotfQotCi1XS1Bv
cHVwSXRlbVRleHREaXJlY3Rpb24gV0tQb3B1cEl0ZW1HZXRUZXh0RGlyZWN0aW9uKFdLUG9wdXBJ
dGVtUmVmIGl0ZW1SZWYpCi17Ci0gICAgc3dpdGNoICh0b0ltcGwoaXRlbVJlZiktPnRleHREaXJl
Y3Rpb24oKSkgewotICAgIGNhc2UgUlRMOgotICAgICAgICByZXR1cm4ga1dLUG9wdXBJdGVtVGV4
dERpcmVjdGlvblJUTDsKLSAgICBjYXNlIExUUjoKLSAgICAgICAgcmV0dXJuIGtXS1BvcHVwSXRl
bVRleHREaXJlY3Rpb25MVFI7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uTFRSOwotICAg
IH0KLX0KLQotYm9vbCBXS1BvcHVwSXRlbUhhc1RleHREaXJlY3Rpb25PdmVycmlkZShXS1BvcHVw
SXRlbVJlZiBpdGVtUmVmKQotewotICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZiktPmhhc1RleHRE
aXJlY3Rpb25PdmVycmlkZSgpOwotfQotCi1XS1N0cmluZ1JlZiBXS1BvcHVwSXRlbUNvcHlUZXh0
KFdLUG9wdXBJdGVtUmVmIGl0ZW1SZWYpCi17Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChpdGVtUmVmKS0+dGV4dCgpKTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5VG9v
bFRpcFRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKLXsKLSAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKGl0ZW1SZWYpLT50b29sVGlwVGV4dCgpKTsKLX0KLQotV0tTdHJpbmdSZWYgV0tQ
b3B1cEl0ZW1Db3B5QWNjZXNzaWJpbGl0eVRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKLXsK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1SZWYpLT5hY2Nlc3NpYmlsaXR5VGV4
dCgpKTsKLX0KLQotYm9vbCBXS1BvcHVwSXRlbUlzRW5hYmxlZChXS1BvcHVwSXRlbVJlZiBpdGVt
UmVmKQotewotICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZiktPmlzRW5hYmxlZCgpOwotfQotCi1i
b29sIFdLUG9wdXBJdGVtSXNMYWJlbChXS1BvcHVwSXRlbVJlZiBpdGVtUmVmKQotewotICAgIHJl
dHVybiB0b0ltcGwoaXRlbVJlZiktPmlzTGFiZWwoKTsKLX0KLQotYm9vbCBXS1BvcHVwSXRlbUlz
U2VsZWN0ZWQoV0tQb3B1cEl0ZW1SZWYgaXRlbVJlZikKLXsKLSAgICByZXR1cm4gdG9JbXBsKGl0
ZW1SZWYpLT5pc1NlbGVjdGVkKCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLUG9wdXBJdGVtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3
MmJhMzFmYzAzNGQzYzg2N2VjNDRhYTA3NjNkNWRhZmJmMzg1ZjcuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1BvcHVwSXRlbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXS1BvcHVwSXRlbV9oCi0jZGVmaW5lIFdLUG9w
dXBJdGVtX2gKLQotI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KLQotI2lmZGVmIF9fY3BsdXNw
bHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi1lbnVtIHsKLSAgICBrV0tQb3B1cEl0ZW1UeXBl
U2VwYXJhdG9yLAotICAgIGtXS1BvcHVwSXRlbVR5cGVJdGVtCi19OwotdHlwZWRlZiB1aW50MzJf
dCBXS1BvcHVwSXRlbVR5cGU7Ci0KLWVudW0gewotICAgIGtXS1BvcHVwSXRlbVRleHREaXJlY3Rp
b25SVEwsCi0gICAga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUgotfTsKLXR5cGVkZWYgdWlu
dDMyX3QgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uOwotCi1XS19FWFBPUlQgV0tQb3B1cEl0ZW1U
eXBlIFdLUG9wdXBJdGVtR2V0VHlwZShXS1BvcHVwSXRlbVJlZiBpdGVtKTsKLQotV0tfRVhQT1JU
IFdLUG9wdXBJdGVtVGV4dERpcmVjdGlvbiBXS1BvcHVwSXRlbUdldFRleHREaXJlY3Rpb24oV0tQ
b3B1cEl0ZW1SZWYgaXRlbSk7Ci1XS19FWFBPUlQgYm9vbCBXS1BvcHVwSXRlbUhhc1RleHREaXJl
Y3Rpb25PdmVycmlkZShXS1BvcHVwSXRlbVJlZiBpdGVtKTsKLQotV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLUG9wdXBJdGVtQ29weVRleHQoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7Ci1XS19FWFBPUlQg
V0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5VG9vbFRpcFRleHQoV0tQb3B1cEl0ZW1SZWYgaXRl
bSk7Ci1XS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQb3B1cEl0ZW1Db3B5QWNjZXNzaWJpbGl0eVRl
eHQoV0tQb3B1cEl0ZW1SZWYgaXRlbSk7Ci0KLVdLX0VYUE9SVCBib29sIFdLUG9wdXBJdGVtSXNF
bmFibGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOwotV0tfRVhQT1JUIGJvb2wgV0tQb3B1cEl0ZW1J
c0xhYmVsKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOwotV0tfRVhQT1JUIGJvb2wgV0tQb3B1cEl0ZW1J
c1NlbGVjdGVkKFdLUG9wdXBJdGVtUmVmIGl0ZW0pOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0K
LSNlbmRpZgotCi0jZW5kaWYgLyogV0tQb3B1cEl0ZW1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tQb3B1cE1lbnVMaXN0ZW5lci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZjgyYjQ1NTkwOTk5ZmI0OTRhODFhOTZl
NTFkOGNlOTAzODJiYTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3Rl
bmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXS1BvcHVwTWVudUxpc3RlbmVy
LmgiCi0KLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJQb3B1cE1lbnVMaXN0
ZW5lckVmbC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi12b2lkIFdLUG9wdXBNZW51
TGlzdGVuZXJTZXRTZWxlY3Rpb24oV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBsaXN0ZW5lclJlZiwg
aW50IHNlbGVjdGVkSW5kZXgpCi17Ci0gICAgdG9JbXBsKGxpc3RlbmVyUmVmKS0+dmFsdWVDaGFu
Z2VkKHNlbGVjdGVkSW5kZXgpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1BvcHVwTWVudUxpc3RlbmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNmI4ZjcwMGYyYWI1NDA4OGI0ZWNiZjE5NzI5NzQ1YmE4NGY5MzAzOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLUG9wdXBNZW51TGlzdGVuZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV0tQb3B1
cE1lbnVMaXN0ZW5lcl9oCi0jZGVmaW5lIFdLUG9wdXBNZW51TGlzdGVuZXJfaAotCi0jaW5jbHVk
ZSA8V2ViS2l0L1dLQmFzZS5oPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewot
I2VuZGlmCi0KLVdLX0VYUE9SVCB2b2lkIFdLUG9wdXBNZW51TGlzdGVuZXJTZXRTZWxlY3Rpb24o
V0tQb3B1cE1lbnVMaXN0ZW5lclJlZiBsaXN0ZW5lciwgaW50IHNlbGVjdGVkSW5kZXgpOwotCi0j
aWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLyogV0tQb3B1cE1lbnVMaXN0
ZW5lcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9F
d2tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3Bw
CmluZGV4IGUzMGQyMGJiYzc1MDIyYWY4YTdiMjMyNGY1ZmE1NTM1YWRhNzVlMGMuLmNhZmRkOTgw
YWI4MThmOWFmNWE5NjJlMGYxNTVkOWY0N2MwY2YyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAi
V0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tQYWdlR3Jv
dXAuaCIKLSNpbmNsdWRlICJXS1BvcHVwSXRlbS5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAj
aW5jbHVkZSAiV0tWaWV3LmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKQEAgLTk2NywxMiArOTY2
LDEyIEBAIHZvaWQgRXdrVmlldzo6aGlkZUNvbnRleHRNZW51KCkKICAgICBtX2NvbnRleHRNZW51
ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBFd2tWaWV3OjpyZXF1ZXN0UG9wdXBNZW51KFdLUG9wdXBN
ZW51TGlzdGVuZXJSZWYgcG9wdXBNZW51TGlzdGVuZXIsIGNvbnN0IFdLUmVjdCYgcmVjdCwgV0tQ
b3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0
b3IsIFdLQXJyYXlSZWYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgRXdrVmll
dzo6cmVxdWVzdFBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9wdXBNZW51UHJveHks
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24gdGV4
dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVw
SXRlbT4mIGl0ZW1zLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgRXdrX1ZpZXdfU21h
cnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsKICAgICBBU1NFUlQoc2QtPmFwaSk7CiAKLSAgICBB
U1NFUlQocG9wdXBNZW51TGlzdGVuZXIpOworICAgIEFTU0VSVChwb3B1cE1lbnVQcm94eSk7CiAK
ICAgICBpZiAoIXNkLT5hcGktPnBvcHVwX21lbnVfc2hvdykKICAgICAgICAgcmV0dXJuOwpAQCAt
OTgwLDE4ICs5NzksMTggQEAgdm9pZCBFd2tWaWV3OjpyZXF1ZXN0UG9wdXBNZW51KFdLUG9wdXBN
ZW51TGlzdGVuZXJSZWYgcG9wdXBNZW51TGlzdGVuZXIsIGNvbnN0IFcKICAgICBpZiAobV9wb3B1
cE1lbnUpCiAgICAgICAgIGNsb3NlUG9wdXBNZW51KCk7CiAKLSAgICBtX3BvcHVwTWVudSA9IHN0
ZDo6bWFrZV91bmlxdWU8RXdrUG9wdXBNZW51Pih0aGlzLCBwb3B1cE1lbnVMaXN0ZW5lciwgaXRl
bXMsIHNlbGVjdGVkSW5kZXgpOworICAgIG1fcG9wdXBNZW51ID0gc3RkOjptYWtlX3VuaXF1ZTxF
d2tQb3B1cE1lbnU+KHBvcHVwTWVudVByb3h5LCBpdGVtcywgc2VsZWN0ZWRJbmRleCk7CiAKLSAg
ICBJbnRQb2ludCBwb3B1cE1lbnVQb3NpdGlvbiA9IG1fd2ViVmlldy0+Y29udGVudHNUb1VzZXJW
aWV3cG9ydCh0b0ludFBvaW50KHJlY3Qub3JpZ2luKSk7CisgICAgSW50UG9pbnQgcG9wdXBNZW51
UG9zaXRpb24gPSBtX3dlYlZpZXctPmNvbnRlbnRzVG9Vc2VyVmlld3BvcnQocmVjdC5sb2NhdGlv
bigpKTsKIAogICAgIEVpbmFfUmVjdGFuZ2xlIGVpbmFSZWN0OwotICAgIEVJTkFfUkVDVEFOR0xF
X1NFVCgmZWluYVJlY3QsIHBvcHVwTWVudVBvc2l0aW9uLngoKSwgcG9wdXBNZW51UG9zaXRpb24u
eSgpLCByZWN0LnNpemUud2lkdGgsIHJlY3Quc2l6ZS5oZWlnaHQpOworICAgIEVJTkFfUkVDVEFO
R0xFX1NFVCgmZWluYVJlY3QsIHBvcHVwTWVudVBvc2l0aW9uLngoKSwgcG9wdXBNZW51UG9zaXRp
b24ueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogCiAgICAgc3dpdGNoICh0ZXh0
RGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uUlRMOgorICAg
IGNhc2UgV2ViQ29yZTo6VGV4dERpcmVjdGlvbjo6UlRMOgogICAgICAgICBzZC0+YXBpLT5wb3B1
cF9tZW51X3Nob3coc2QsIGVpbmFSZWN0LCBFV0tfVEVYVF9ESVJFQ1RJT05fUklHSFRfVE9fTEVG
VCwgcGFnZVNjYWxlRmFjdG9yLCBtX3BvcHVwTWVudS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2Uga1dLUG9wdXBJdGVtVGV4dERpcmVjdGlvbkxUUjoKKyAgICBjYXNlIFdlYkNvcmU6
OlRleHREaXJlY3Rpb246OkxUUjoKICAgICAgICAgc2QtPmFwaS0+cG9wdXBfbWVudV9zaG93KHNk
LCBlaW5hUmVjdCwgRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQsIHBhZ2VTY2FsZUZh
Y3RvciwgbV9wb3B1cE1lbnUuZ2V0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmgKaW5kZXggYjMwYTUyYjg5OTM2ODQz
YjViM2I0NTI4ZDI5OWU4ZjgyZDE0NmI5ZC4uMGUwMjk2ZjYxNWVkNDFhM2EwMjY5MTBjNjFmNTZi
Mzk2NTFmOTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcu
aApAQCAtNTYsNiArNTYsOCBAQCBjbGFzcyBQYWdlVUlDbGllbnRFZmw7CiBjbGFzcyBWaWV3Q2xp
ZW50RWZsOwogY2xhc3MgV2ViUGFnZUdyb3VwOwogY2xhc3MgV2ViUGFnZVByb3h5OworY2xhc3Mg
V2ViUG9wdXBJdGVtOworY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CiAKICNpZiBFTkFCTEUo
VklCUkFUSU9OKQogY2xhc3MgVmlicmF0aW9uQ2xpZW50RWZsOwpAQCAtMTcxLDcgKzE3Myw3IEBA
IHB1YmxpYzoKICAgICBXS1BhZ2VSZWYgY3JlYXRlTmV3UGFnZShQYXNzUmVmUHRyPEV3a1VybFJl
cXVlc3Q+LCBXS0RpY3Rpb25hcnlSZWYgd2luZG93RmVhdHVyZXMpOwogICAgIHZvaWQgY2xvc2Uo
KTsKIAotICAgIHZvaWQgcmVxdWVzdFBvcHVwTWVudShXS1BvcHVwTWVudUxpc3RlbmVyUmVmLCBj
b25zdCBXS1JlY3QmLCBXS1BvcHVwSXRlbVRleHREaXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVG
YWN0b3IsIFdLQXJyYXlSZWYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCk7CisgICAgdm9p
ZCByZXF1ZXN0UG9wdXBNZW51KFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2Fs
ZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUG9wdXBJdGVtPiYsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCk7CiAgICAgdm9pZCBjbG9zZVBvcHVwTWVudSgpOwogCiAgICAgdm9pZCBjdXN0
b21Db250ZXh0TWVudUl0ZW1TZWxlY3RlZChXS0NvbnRleHRNZW51SXRlbVJlZiBjb250ZXh0TWVu
dUl0ZW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Bv
cHVwX21lbnUuY3BwCmluZGV4IGIyZjViNmE5NmY1NDY2ODMzZDY3NzljMDlkN2Q2MTc3M2IzYjZi
OWMuLjI1NDZhYjkyMmFlNDBkNDEyNzIxZDJmMzAwYWQ3ZWU5ZTc1YTEwYmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudS5jcHAKQEAg
LTI4LDIyICsyOCwyMCBAQAogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51LmgiCiAKICNpbmNsdWRl
ICJFd2tWaWV3LmgiCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVkZSAiV0tBcnJheS5o
IgotI2luY2x1ZGUgIldLUG9wdXBNZW51TGlzdGVuZXIuaCIKKyNpbmNsdWRlICJXZWJQb3B1cEl0
ZW0uaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUgImV3a19w
b3B1cF9tZW51X2l0ZW1fcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51X3ByaXZh
dGUuaCIKIAotRXdrUG9wdXBNZW51OjpFd2tQb3B1cE1lbnUoRXdrVmlldyosIFdLUG9wdXBNZW51
TGlzdGVuZXJSZWYgcG9wdXBNZW51TGlzdGVuZXIsIFdLQXJyYXlSZWYgaXRlbXMsIHVuc2lnbmVk
IHNlbGVjdGVkSW5kZXgpCi0gICAgOiBtX3BvcHVwTWVudUxpc3RlbmVyKHBvcHVwTWVudUxpc3Rl
bmVyKQordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworRXdrUG9wdXBNZW51OjpFd2tQb3B1cE1l
bnUoV2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5LCBjb25zdCBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiYgaXRlbXMsIHVuc2lnbmVkIHNlbGVjdGVkSW5kZXgpCisgICAgOiBtX3BvcHVw
TWVudVByb3h5KHBvcHVwTWVudVByb3h5KQogICAgICwgbV9wb3B1cE1lbnVJdGVtcygwKQogICAg
ICwgbV9zZWxlY3RlZEluZGV4KHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgc2l6ZV90IHNpemUgPSBX
S0FycmF5R2V0U2l6ZShpdGVtcyk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKLSAgICAgICAgV0tQb3B1cEl0ZW1SZWYgd2tJdGVtID0gc3RhdGljX2Nhc3Q8V0tQb3B1
cEl0ZW1SZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleChpdGVtcywgaSkpOwotICAgICAgICBtX3Bv
cHVwTWVudUl0ZW1zID0gZWluYV9saXN0X2FwcGVuZChtX3BvcHVwTWVudUl0ZW1zLCBzdGQ6Om1h
a2VfdW5pcXVlPEV3a1BvcHVwTWVudUl0ZW0+KHdrSXRlbSkucmVsZWFzZSgpKTsKLSAgICB9Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBpdGVtIDogaXRlbXMpCisgICAgICAgIG1fcG9wdXBNZW51SXRl
bXMgPSBlaW5hX2xpc3RfYXBwZW5kKG1fcG9wdXBNZW51SXRlbXMsIHN0ZDo6bWFrZV91bmlxdWU8
RXdrUG9wdXBNZW51SXRlbT4oaXRlbSkucmVsZWFzZSgpKTsKIH0KIAogRXdrUG9wdXBNZW51Ojp+
RXdrUG9wdXBNZW51KCkKQEAgLTU2LDcgKzU0LDcgQEAgRXdrUG9wdXBNZW51Ojp+RXdrUG9wdXBN
ZW51KCkKIHZvaWQgRXdrUG9wdXBNZW51OjpjbG9zZSgpCiB7CiAgICAgLy8gU2V0dGluZyBzZWxl
Y3RlZCBpdGVtIHdpbGwgY2F1c2UgdGhlIHBvcHVwIG1lbnUgdG8gY2xvc2UuCi0gICAgV0tQb3B1
cE1lbnVMaXN0ZW5lclNldFNlbGVjdGlvbihtX3BvcHVwTWVudUxpc3RlbmVyLmdldCgpLCBtX3Nl
bGVjdGVkSW5kZXgpOworICAgIG1fcG9wdXBNZW51UHJveHktPnZhbHVlQ2hhbmdlZChtX3NlbGVj
dGVkSW5kZXgpOwogfQogCiBjb25zdCBFaW5hX0xpc3QqIEV3a1BvcHVwTWVudTo6aXRlbXMoKSBj
b25zdApAQCAtNzEsNyArNjksNyBAQCB1bnNpZ25lZCBFd2tQb3B1cE1lbnU6OnNlbGVjdGVkSW5k
ZXgoKSBjb25zdAogCiBib29sIEV3a1BvcHVwTWVudTo6c2V0U2VsZWN0ZWRJbmRleCh1bnNpZ25l
ZCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmICghbV9wb3B1cE1lbnVMaXN0ZW5lcikKKyAgICBp
ZiAoIW1fcG9wdXBNZW51UHJveHkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChz
ZWxlY3RlZEluZGV4ID49IGVpbmFfbGlzdF9jb3VudChtX3BvcHVwTWVudUl0ZW1zKSkKQEAgLTgx
LDcgKzc5LDcgQEAgYm9vbCBFd2tQb3B1cE1lbnU6OnNldFNlbGVjdGVkSW5kZXgodW5zaWduZWQg
c2VsZWN0ZWRJbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBtX3NlbGVjdGVkSW5k
ZXggPSBzZWxlY3RlZEluZGV4OwotICAgIFdLUG9wdXBNZW51TGlzdGVuZXJTZXRTZWxlY3Rpb24o
bV9wb3B1cE1lbnVMaXN0ZW5lci5nZXQoKSwgc2VsZWN0ZWRJbmRleCk7CisgICAgbV9wb3B1cE1l
bnVQcm94eS0+dmFsdWVDaGFuZ2VkKG1fc2VsZWN0ZWRJbmRleCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19w
b3B1cF9tZW51X2l0ZW0uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3BvcHVwX21lbnVfaXRlbS5jcHAKaW5kZXggMzNjMzJiY2E5M2YzNDQwNTk1MTY0MzAxNjg3OTRj
MjI5ODYxMGVhYy4uYzU4MjM3MTRkYTU5MmE5NzMyNWQwMDk5ODY2Zjg4ODk0NmM2NTUzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVf
aXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVw
X21lbnVfaXRlbS5jcHAKQEAgLTI2LDE5ICsyNiwyMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgImV3a19wb3B1cF9tZW51X2l0ZW0uaCIKIAotI2luY2x1ZGUgIldLUG9wdXBJdGVt
LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBJdGVtLmgiCiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVf
aXRlbV9wcml2YXRlLmgiCiAKLUV3a1BvcHVwTWVudUl0ZW06OkV3a1BvcHVwTWVudUl0ZW0oV0tQ
b3B1cEl0ZW1SZWYgaXRlbSkKLSAgICA6IG1fd2tJdGVtKGl0ZW0pCi17IH0KK3VzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisKK0V3a1BvcHVwTWVudUl0ZW06OkV3a1BvcHVwTWVudUl0ZW0oY29uc3Qg
V2ViUG9wdXBJdGVtJiBpdGVtKQorICAgIDogbV9pdGVtKGl0ZW0pCit7Cit9CiAKIEV3a19Qb3B1
cF9NZW51X0l0ZW1fVHlwZSBFd2tQb3B1cE1lbnVJdGVtOjp0eXBlKCkgY29uc3QKIHsKLSAgICBz
d2l0Y2ggKFdLUG9wdXBJdGVtR2V0VHlwZShtX3drSXRlbS5nZXQoKSkpIHsKLSAgICBjYXNlIGtX
S1BvcHVwSXRlbVR5cGVTZXBhcmF0b3I6CisgICAgc3dpdGNoIChtX2l0ZW0ubV90eXBlKSB7Cisg
ICAgY2FzZSBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcjoKICAgICAgICAgcmV0dXJuIEVXS19QT1BV
UF9NRU5VX1NFUEFSQVRPUjsKLSAgICBjYXNlIGtXS1BvcHVwSXRlbVR5cGVJdGVtOgorICAgIGNh
c2UgV2ViUG9wdXBJdGVtOjpJdGVtOgogICAgICAgICByZXR1cm4gRVdLX1BPUFVQX01FTlVfSVRF
TTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC00OCwxMSArNTEsMTEgQEAg
RXdrX1BvcHVwX01lbnVfSXRlbV9UeXBlIEV3a1BvcHVwTWVudUl0ZW06OnR5cGUoKSBjb25zdAog
CiBFd2tfVGV4dF9EaXJlY3Rpb24gRXdrUG9wdXBNZW51SXRlbTo6dGV4dERpcmVjdGlvbigpIGNv
bnN0CiB7Ci0gICAgc3dpdGNoIChXS1BvcHVwSXRlbUdldFRleHREaXJlY3Rpb24obV93a0l0ZW0u
Z2V0KCkpKSB7Ci0gICAgY2FzZSBrV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uUlRMOgotICAgICAg
ICByZXR1cm4gRVdLX1RFWFRfRElSRUNUSU9OX1JJR0hUX1RPX0xFRlQ7Ci0gICAgY2FzZSBrV0tQ
b3B1cEl0ZW1UZXh0RGlyZWN0aW9uTFRSOgorICAgIHN3aXRjaCAobV9pdGVtLm1fdGV4dERpcmVj
dGlvbikgeworICAgIGNhc2UgV2ViQ29yZTo6VGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAgICBy
ZXR1cm4gRVdLX1RFWFRfRElSRUNUSU9OX0xFRlRfVE9fUklHSFQ7CisgICAgY2FzZSBXZWJDb3Jl
OjpUZXh0RGlyZWN0aW9uOjpSVEw6CisgICAgICAgIHJldHVybiBFV0tfVEVYVF9ESVJFQ1RJT05f
UklHSFRfVE9fTEVGVDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKQEAgLTYy
LDcgKzY1LDcgQEAgRXdrX1RleHRfRGlyZWN0aW9uIEV3a1BvcHVwTWVudUl0ZW06OnRleHREaXJl
Y3Rpb24oKSBjb25zdAogY29uc3QgY2hhciogRXdrUG9wdXBNZW51SXRlbTo6dGV4dCgpIGNvbnN0
CiB7CiAgICAgaWYgKCFtX3RleHQpCi0gICAgICAgIG1fdGV4dCA9IFdLRWluYVNoYXJlZFN0cmlu
ZyhBZG9wdFdLLCBXS1BvcHVwSXRlbUNvcHlUZXh0KG1fd2tJdGVtLmdldCgpKSk7CisgICAgICAg
IG1fdGV4dCA9IFdLRWluYVNoYXJlZFN0cmluZyhtX2l0ZW0ubV90ZXh0LnV0ZjgoKS5kYXRhKCkp
OwogCiAgICAgcmV0dXJuIG1fdGV4dDsKIH0KQEAgLTcwLDcgKzczLDcgQEAgY29uc3QgY2hhciog
RXdrUG9wdXBNZW51SXRlbTo6dGV4dCgpIGNvbnN0CiBjb25zdCBjaGFyKiBFd2tQb3B1cE1lbnVJ
dGVtOjp0b29sdGlwVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Rvb2x0aXBUZXh0KQotICAg
ICAgICBtX3Rvb2x0aXBUZXh0ID0gV0tFaW5hU2hhcmVkU3RyaW5nKEFkb3B0V0ssIFdLUG9wdXBJ
dGVtQ29weVRvb2xUaXBUZXh0KG1fd2tJdGVtLmdldCgpKSk7CisgICAgICAgIG1fdG9vbHRpcFRl
eHQgPSBXS0VpbmFTaGFyZWRTdHJpbmcobV9pdGVtLm1fdG9vbFRpcC51dGY4KCkuZGF0YSgpKTsK
IAogICAgIHJldHVybiBtX3Rvb2x0aXBUZXh0OwogfQpAQCAtNzgsMjkgKzgxLDI5IEBAIGNvbnN0
IGNoYXIqIEV3a1BvcHVwTWVudUl0ZW06OnRvb2x0aXBUZXh0KCkgY29uc3QKIGNvbnN0IGNoYXIq
IEV3a1BvcHVwTWVudUl0ZW06OmFjY2Vzc2liaWxpdHlUZXh0KCkgY29uc3QKIHsKICAgICBpZiAo
IW1fYWNjZXNzaWJpbGl0eVRleHQpCi0gICAgICAgIG1fYWNjZXNzaWJpbGl0eVRleHQgPSBXS0Vp
bmFTaGFyZWRTdHJpbmcoQWRvcHRXSywgV0tQb3B1cEl0ZW1Db3B5QWNjZXNzaWJpbGl0eVRleHQo
bV93a0l0ZW0uZ2V0KCkpKTsKKyAgICAgICAgbV9hY2Nlc3NpYmlsaXR5VGV4dCA9IFdLRWluYVNo
YXJlZFN0cmluZyhtX2l0ZW0ubV9hY2Nlc3NpYmlsaXR5VGV4dC51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIHJldHVybiBtX2FjY2Vzc2liaWxpdHlUZXh0OwogfQogCiBib29sIEV3a1BvcHVwTWVudUl0
ZW06Omhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdLUG9w
dXBJdGVtSGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKG1fd2tJdGVtLmdldCgpKTsKKyAgICByZXR1
cm4gbV9pdGVtLm1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlOwogfQogCiBib29sIEV3a1BvcHVw
TWVudUl0ZW06OmlzRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdLUG9wdXBJdGVtSXNF
bmFibGVkKG1fd2tJdGVtLmdldCgpKTsKKyAgICByZXR1cm4gbV9pdGVtLm1faXNFbmFibGVkOwog
fQogCiBib29sIEV3a1BvcHVwTWVudUl0ZW06OmlzTGFiZWwoKSBjb25zdAogewotICAgIHJldHVy
biBXS1BvcHVwSXRlbUlzTGFiZWwobV93a0l0ZW0uZ2V0KCkpOworICAgIHJldHVybiBtX2l0ZW0u
bV9pc0xhYmVsOwogfQogCiBib29sIEV3a1BvcHVwTWVudUl0ZW06OmlzU2VsZWN0ZWQoKSBjb25z
dAogewotICAgIHJldHVybiBXS1BvcHVwSXRlbUlzU2VsZWN0ZWQobV93a0l0ZW0uZ2V0KCkpOwor
ICAgIHJldHVybiBtX2l0ZW0ubV9pc1NlbGVjdGVkOwogfQogCiBFd2tfUG9wdXBfTWVudV9JdGVt
X1R5cGUgZXdrX3BvcHVwX21lbnVfaXRlbV90eXBlX2dldChjb25zdCBFd2tfUG9wdXBfTWVudV9J
dGVtKiBpdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3BvcHVwX21lbnVfaXRlbV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaAppbmRleCAwYzY0MWIzMWZkZTMw
YmIxYTkyNGQ0MzE0ZDkyMDY0OTZhODE4OTg3Li5kNjgyYTMxY2JlZTg3Y2JlMzAyNGJiNDNlZjRh
MjJkMzQzZjU1Mjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9pdGVtX3ByaXZhdGUuaApAQCAtMzEsMTMgKzMx
LDE3IEBACiAjaW5jbHVkZSAiZXdrX3BvcHVwX21lbnVfaXRlbS5oIgogI2luY2x1ZGUgPFdlYktp
dC9XS0Jhc2UuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJQb3B1cEl0ZW07Cit9
CisKIC8qKgogICogXHN0cnVjdCAgRXdrX1BvcHVwX01lbnVfSXRlbQogICogQGJyaWVmICAgQ29u
dGFpbnMgdGhlIHBvcHVwIG1lbnUgZGF0YS4KICAqLwogY2xhc3MgRXdrUG9wdXBNZW51SXRlbSB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRXdrUG9wdXBNZW51SXRlbShXS1BvcHVwSXRlbVJlZiBp
dGVtKTsKKyAgICBleHBsaWNpdCBFd2tQb3B1cE1lbnVJdGVtKGNvbnN0IFdlYktpdDo6V2ViUG9w
dXBJdGVtJiBpdGVtKTsKIAogICAgIEV3a19Qb3B1cF9NZW51X0l0ZW1fVHlwZSB0eXBlKCkgY29u
c3Q7CiAgICAgRXdrX1RleHRfRGlyZWN0aW9uIHRleHREaXJlY3Rpb24oKSBjb25zdDsKQEAgLTUy
LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGNvbnN0IGNoYXIqIGFjY2Vzc2liaWxpdHlUZXh0KCkg
Y29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgV0tSZXRhaW5QdHI8V0tQb3B1cEl0ZW1SZWY+IG1fd2tJ
dGVtOworICAgIFdlYktpdDo6V2ViUG9wdXBJdGVtIG1faXRlbTsKIAogICAgIC8vIExhemlseSBp
bml0aWFsaXplZC4KICAgICBtdXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX3RleHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVudV9w
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfcG9wdXBfbWVu
dV9wcml2YXRlLmgKaW5kZXggNDUzNzZmYTdmNWRlYjgzYTdjYzkwYmJkMGYxYzAyZWUyODg5YTFm
ZC4uMDJkMDFlOTkzZmQxZjkzMzY4MjQxYTExMjY1YjdlOTJkNzVkZGJkZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3BvcHVwX21lbnVfcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19wb3B1cF9tZW51X3By
aXZhdGUuaApAQCAtMjgsMTMgKzI4LDE3IEBACiAjZGVmaW5lIGV3a19wb3B1cF9tZW51X3ByaXZh
dGVfaAogCiAjaW5jbHVkZSAiRWZsVHlwZWRlZnMuaCIKLSNpbmNsdWRlIDxXZWJLaXQvV0tCYXNl
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViUG9wdXBJdGVtOworY2xhc3MgV2Vi
UG9wdXBNZW51UHJveHlFZmw7Cit9CiAKIGNsYXNzIEV3a1ZpZXc7CiAKIGNsYXNzIEV3a1BvcHVw
TWVudSB7CiBwdWJsaWM6Ci0gICAgRXdrUG9wdXBNZW51KEV3a1ZpZXcqIHZpZXdJbXBsLCBXS1Bv
cHVwTWVudUxpc3RlbmVyUmVmLCBXS0FycmF5UmVmIGl0ZW1zLCB1bnNpZ25lZCBzZWxlY3RlZElu
ZGV4KTsKKyAgICBFd2tQb3B1cE1lbnUoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCosIGNv
bnN0IFZlY3RvcjxXZWJLaXQ6OldlYlBvcHVwSXRlbT4mIGl0ZW1zLCB1bnNpZ25lZCBzZWxlY3Rl
ZEluZGV4KTsKICAgICB+RXdrUG9wdXBNZW51KCk7CiAKICAgICB2b2lkIGNsb3NlKCk7CkBAIC00
NSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBzZWxlY3RlZEluZGV4KCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgV0tSZXRhaW5QdHI8V0tQb3B1cE1lbnVMaXN0ZW5lclJlZj4gbV9w
b3B1cE1lbnVMaXN0ZW5lcjsKKyAgICBSZWZQdHI8V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVm
bD4gbV9wb3B1cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIG1fcG9wdXBNZW51SXRlbXM7CiAg
ICAgdW5zaWduZWQgbV9zZWxlY3RlZEluZGV4OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOTc0NjdkNzdiMjYyZDY1MjNhNWZiZDY4MWZlYWRmZTM5
Njk5ZWQ2MS4uNjkyMTM3ZjlhZDYzNGU2OGUzYWM2NDg3NGU1ZDA1NWJmZGIyNzZjNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTg0OCw5ICs4NDgsNiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIG1fcG9saWN5Q2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OlBvbGljeUNsaWVudD4oKTsKICAgICBtX2Zvcm1DbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEFQSTo6Rm9ybUNsaWVudD4oKTsKICAgICBtX3VpQ2xpZW50ID0gc3RkOjpt
YWtlX3VuaXF1ZTxBUEk6OlVJQ2xpZW50PigpOwotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBtX3Vp
UG9wdXBNZW51Q2xpZW50LmluaXRpYWxpemUobnVsbHB0cik7Ci0jZW5kaWYKICAgICBtX2ZpbmRD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6RmluZENsaWVudD4oKTsKICAgICBtX2ZpbmRN
YXRjaGVzQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkZpbmRNYXRjaGVzQ2xpZW50Pigp
OwogICAgIG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEFQSTo6
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CkBAIC00MTgzLDExICs0MTgwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRfdCB0ZXh0RGlyZWN0aW9u
LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRl
eCwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewogICAgIGlmIChtX2FjdGl2
ZVBvcHVwTWVudSkgewotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICAgICAgbV91aVBvcHVwTWVudUNs
aWVudC5oaWRlUG9wdXBNZW51KHRoaXMpOwotI2Vsc2UKICAgICAgICAgbV9hY3RpdmVQb3B1cE1l
bnUtPmhpZGVQb3B1cE1lbnUoKTsKLSNlbmRpZgogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+
aW52YWxpZGF0ZSgpOwogICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IG51bGxwdHI7CiAgICAg
fQpAQCAtNDIwMCwxNSArNDE5Myw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51
KGNvbnN0IEludFJlY3QmIHJlY3QsIHVpbnQ2NF90IHRleHREaXJlY3Rpb24sIGNvCiAgICAgLy8g
U2luY2Ugc2hvd1BvcHVwTWVudSgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQg
dG8gdHVybiBvZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVz
cG9uc2l2ZW5lc3NUaW1lcigpLnN0b3AoKTsKIAotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICBVTlVT
RURfUEFSQU0oZGF0YSk7Ci0gICAgbV91aVBvcHVwTWVudUNsaWVudC5zaG93UG9wdXBNZW51KHRo
aXMsIG1fYWN0aXZlUG9wdXBNZW51LmdldCgpLCByZWN0LCBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0
aW9uPih0ZXh0RGlyZWN0aW9uKSwgbV9wYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBzZWxlY3RlZElu
ZGV4KTsKLSNlbHNlCi0KICAgICAvLyBTaG93aW5nIGEgcG9wdXAgbWVudSBydW5zIGEgbmVzdGVk
IHJ1bmxvb3AsIHdoaWNoIGNhbiBoYW5kbGUgbWVzc2FnZXMgdGhhdCBjYXVzZSB8dGhpc3wgdG8g
Z2V0IGNsb3NlZC4KICAgICBSZWY8V2ViUGFnZVByb3h5PiBwcm90ZWN0KCp0aGlzKTsKICAgICBt
X2FjdGl2ZVBvcHVwTWVudS0+c2hvd1BvcHVwTWVudShyZWN0LCBzdGF0aWNfY2FzdDxUZXh0RGly
ZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgbV9wYWdlU2NhbGVGYWN0b3IsIGl0ZW1zLCBkYXRhLCBz
ZWxlY3RlZEluZGV4KTsKLSNlbmRpZgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVBvcHVw
TWVudSgpCkBAIC00MjE2LDExICs0MjAzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVQb3B1
cE1lbnUoKQogICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUpCiAgICAgICAgIHJldHVybjsKIAot
I2lmIFBMQVRGT1JNKEVGTCkKLSAgICBtX3VpUG9wdXBNZW51Q2xpZW50LmhpZGVQb3B1cE1lbnUo
dGhpcyk7Ci0jZWxzZQogICAgIG1fYWN0aXZlUG9wdXBNZW51LT5oaWRlUG9wdXBNZW51KCk7Ci0j
ZW5kaWYKICAgICBtX2FjdGl2ZVBvcHVwTWVudS0+aW52YWxpZGF0ZSgpOwogICAgIG1fYWN0aXZl
UG9wdXBNZW51ID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAppbmRleCBmMjMxOTRlZDI5MjQwMTMxMWJmN2Y0NTFjYTY5ZGFkMTE0MjgzNmQ3Li5iNjIw
MmMwZWViZDkwNzVjMDhkYjU5YzlmYjg0Yzc2NTI0OGY3NWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC05NCwxMiArOTQsNiBAQCBPQkpDX0NMQVNTIF9XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5OwogI2luY2x1ZGUgIk5hdGl2ZVdlYlRvdWNoRXZlbnQuaCIKICNl
bmRpZgogCi0jaWYgUExBVEZPUk0oRUZMKQotI2luY2x1ZGUgIldLUGFnZUVmbC5oIgotI2luY2x1
ZGUgIldlYlVJUG9wdXBNZW51Q2xpZW50LmgiCi0jaW5jbHVkZSA8RXZhcy5oPgotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNsdWRlICJMYXllclJlcHJlc2VudGF0aW9uLmgiCiAj
ZW5kaWYKQEAgLTM1Nyw5ICszNTEsNiBAQCBwdWJsaWM6CiAKICAgICBBUEk6OlVJQ2xpZW50JiB1
aUNsaWVudCgpIHsgcmV0dXJuICptX3VpQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRVSUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4pOwotI2lmIFBMQVRGT1JNKEVGTCkKLSAgICB2
b2lkIGluaXRpYWxpemVVSVBvcHVwTWVudUNsaWVudChjb25zdCBXS1BhZ2VVSVBvcHVwTWVudUNs
aWVudEJhc2UqKTsKLSNlbmRpZgogCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZSgpOwogCkBA
IC0xNDk1LDkgKzE0ODYsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okhp
c3RvcnlDbGllbnQ+IG1faGlzdG9yeUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpG
b3JtQ2xpZW50PiBtX2Zvcm1DbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGll
bnQ+IG1fdWlDbGllbnQ7Ci0jaWYgUExBVEZPUk0oRUZMKQotICAgIFdlYlVJUG9wdXBNZW51Q2xp
ZW50IG1fdWlQb3B1cE1lbnVDbGllbnQ7Ci0jZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpGaW5kQ2xpZW50PiBtX2ZpbmRDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Rmlu
ZE1hdGNoZXNDbGllbnQ+IG1fZmluZE1hdGNoZXNDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PEFQSTo6RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCmluZGV4IGY5
MzRhY2M0YjRmMjdkZTNjODQyZDc5Mjk1OTc2ODIxYjBlZjk5ODUuLmZmNGFhMDdjM2QwOWMwYzNm
ZmM1ZmVjYzk4Nzg0ODUzZmU3MjNmOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQb3B1cE1lbnVQcm94eS5oCkBAIC02MiwxMCArNjIsOCBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotI2lmICFQTEFURk9STShFRkwpCiAgICAgdmlydHVhbCB2b2lkIHNob3dQb3B1cE1lbnUo
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91
YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBj
b25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgaGlkZVBvcHVwTWVudSgpID0gMDsKLSNlbmRpZgogICAgIHZpcnR1
YWwgdm9pZCBjYW5jZWxUcmFja2luZygpIHsgfQogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBt
X2NsaWVudCA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVVJQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZVVJ
Q2xpZW50RWZsLmNwcAppbmRleCA0NGNlNDRjMmM0MmEyYmVjNTJlY2RkMjVmMjA3OGIxZmFmNTYz
YjliLi4wNjE3ZTIyNjM0ODM1ZmU2MTE1ZWExNzc4N2MxNDk3YjVjOWM2ODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuY3BwCkBAIC0zMCw3
ICszMCw2IEBACiAjaW5jbHVkZSAiRXdrVmlldy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgog
I2luY2x1ZGUgIldLRXZlbnQuaCIKLSNpbmNsdWRlICJXS1BhZ2VFZmwuaCIKICNpbmNsdWRlICJX
S1N0cmluZy5oIgogI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfcmVxdWVzdF9wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3VybF9yZXF1ZXN0X3ByaXZhdGUuaCIKQEAgLTc5LDE1ICs3OCw2IEBA
IFBhZ2VVSUNsaWVudEVmbDo6UGFnZVVJQ2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCiAgICAgdWlD
bGllbnQuY3JlYXRlTmV3UGFnZSA9IGNyZWF0ZU5ld1BhZ2U7CiAKICAgICBXS1BhZ2VTZXRQYWdl
VUlDbGllbnQocGFnZVJlZiwgJnVpQ2xpZW50LmJhc2UpOwotCi0gICAgLy8gUG9wdXAgTWVudSBV
SSBjbGllbnQuCi0gICAgV0tQYWdlVUlQb3B1cE1lbnVDbGllbnRWMCB1aVBvcHVwTWVudUNsaWVu
dDsKLSAgICBtZW1zZXQoJnVpUG9wdXBNZW51Q2xpZW50LCAwLCBzaXplb2YoV0tQYWdlVUlQb3B1
cE1lbnVDbGllbnRWMCkpOwotICAgIHVpUG9wdXBNZW51Q2xpZW50LmJhc2UudmVyc2lvbiA9IDA7
Ci0gICAgdWlQb3B1cE1lbnVDbGllbnQuYmFzZS5jbGllbnRJbmZvID0gdGhpczsKLSAgICB1aVBv
cHVwTWVudUNsaWVudC5zaG93UG9wdXBNZW51ID0gc2hvd1BvcHVwTWVudTsKLSAgICB1aVBvcHVw
TWVudUNsaWVudC5oaWRlUG9wdXBNZW51ID0gaGlkZVBvcHVwTWVudTsKLSAgICBXS1BhZ2VTZXRV
SVBvcHVwTWVudUNsaWVudChwYWdlUmVmLCAmdWlQb3B1cE1lbnVDbGllbnQuYmFzZSk7CiB9CiAK
IApAQCAtMjE3LDE0ICsyMDcsNCBAQCBXS1BhZ2VSZWYgUGFnZVVJQ2xpZW50RWZsOjpjcmVhdGVO
ZXdQYWdlKFdLUGFnZVJlZiwgV0tVUkxSZXF1ZXN0UmVmIHdrUmVxdWVzdCwgVwogICAgIHJldHVy
biB0b1BhZ2VVSUNsaWVudEVmbChjbGllbnRJbmZvKS0+bV92aWV3LT5jcmVhdGVOZXdQYWdlKHJl
cXVlc3QsIHdrV2luZG93RmVhdHVyZXMpOwogfQogCi12b2lkIFBhZ2VVSUNsaWVudEVmbDo6c2hv
d1BvcHVwTWVudShXS1BhZ2VSZWYsIFdLUG9wdXBNZW51TGlzdGVuZXJSZWYgbWVudUxpc3RlbmVy
UmVmLCBXS1JlY3QgcmVjdCwgV0tQb3B1cEl0ZW1UZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24s
IGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYsIGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICByZXR1cm4gdG9QYWdl
VUlDbGllbnRFZmwoY2xpZW50SW5mbyktPm1fdmlldy0+cmVxdWVzdFBvcHVwTWVudShtZW51TGlz
dGVuZXJSZWYsIHJlY3QsIHRleHREaXJlY3Rpb24sIHBhZ2VTY2FsZUZhY3RvciwgaXRlbXNSZWYs
IHNlbGVjdGVkSW5kZXgpOwotfQotCi12b2lkIFBhZ2VVSUNsaWVudEVmbDo6aGlkZVBvcHVwTWVu
dShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHRvUGFn
ZVVJQ2xpZW50RWZsKGNsaWVudEluZm8pLT5tX3ZpZXctPmNsb3NlUG9wdXBNZW51KCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZVVJQ2xpZW50RWZsLmgKaW5kZXggMzU4NDg5MjJhNGIyM2MzNTg5MjNjMTUyOWYzMTE4ZDgx
NDcxZDNhYS4uYTAzYTU2YjBmMTFiMmExNzM3NGYwYjRjZWVlNzllMDBmNmUwMGY3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlVUlDbGllbnRFZmwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5oCkBAIC0yOCw3
ICsyOCw2IEBACiAjZGVmaW5lIFBhZ2VVSUNsaWVudEVmbF9oCiAKICNpbmNsdWRlICJXS1BhZ2Uu
aCIKLSNpbmNsdWRlICJXS1BvcHVwSXRlbS5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4K
IAogY2xhc3MgRXdrVmlldzsKQEAgLTYyLDkgKzYxLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
dm9pZCBydW5PcGVuUGFuZWwoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS09wZW5QYW5lbFBhcmFt
ZXRlcnNSZWYsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYsIGNvbnN0IHZvaWQqKTsKICAg
ICBzdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmLCBXS1VSTFJlcXVlc3RS
ZWYsIFdLRGljdGlvbmFyeVJlZiwgV0tFdmVudE1vZGlmaWVycywgV0tFdmVudE1vdXNlQnV0dG9u
LCBjb25zdCB2b2lkKik7CiAKLSAgICBzdGF0aWMgdm9pZCBzaG93UG9wdXBNZW51KFdLUGFnZVJl
ZiwgV0tQb3B1cE1lbnVMaXN0ZW5lclJlZiwgV0tSZWN0LCBXS1BvcHVwSXRlbVRleHREaXJlY3Rp
b24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIFdLQXJyYXlSZWYgaXRlbXNSZWYsIGludDMyX3Qg
c2VsZWN0ZWRJbmRleCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQg
aGlkZVBvcHVwTWVudShXS1BhZ2VSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotCiAgICAg
RXdrVmlldyogbV92aWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCmluZGV4IGY5ODk3MjRmOTNlN2Y4YjkxYjFiYjBmZWVlZDIw
NGJkNDZkZjFhYmUuLjgxMjgyMmYwNjhlYjI2ZjdlOTQ2NGMzNzEzZTY4Y2MwZjhlN2ExOGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAK
QEAgLTEyNywxMSArMTI3LDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9u
KCkKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRp
b24oKSwgbV9wYWdlSUQsIDApOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZVVJ
UG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50QmFzZSogY2xpZW50
KQotewotICAgIG1fdWlQb3B1cE1lbnVDbGllbnQuaW5pdGlhbGl6ZShjbGllbnQpOwotfQotCiAj
aWYgSEFWRShBQ0NFU1NJQklMSVRZKSAmJiBkZWZpbmVkKEhBVkVfRUNPUkVfWCkKIAogYm9vbCBX
ZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlPYmplY3RSZWFkQnlQb2ludChjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBvcHVwTWVudUxpc3RlbmVyRWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxYmQ3ZmJjMjk1YjdiN2E1ZmQ1ODQxMTNiMDAwMDMyMmNkY2EyODA0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9u
aWNzCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi0g
KiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKLSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
UG9wdXBNZW51TGlzdGVuZXJFZmw6OldlYlBvcHVwTWVudUxpc3RlbmVyRWZsKFdlYlBvcHVwTWVu
dVByb3h5OjpDbGllbnQqIGNsaWVudCkKLSAgICA6IFdlYlBvcHVwTWVudVByb3h5KCpjbGllbnQp
Ci17Ci19Ci0KLXZvaWQgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmw6OnZhbHVlQ2hhbmdlZChpbnQg
bmV3U2VsZWN0ZWRJbmRleCkKLXsKLSAgICBpZiAoIW1fY2xpZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG5ld1NlbGVj
dGVkSW5kZXgpOwotICAgIGludmFsaWRhdGUoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxp
c3RlbmVyRWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudUxp
c3RlbmVyRWZsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhY2NkMmQ3ZGY1NjI4
MjU2M2I1OGM2MzNiMzY4YTRiZWMyOGRlNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQb3B1cE1l
bnVMaXN0ZW5lckVmbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhP
TERFUiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCi0gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpZm5kZWYgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmxfaAotI2RlZmluZSBXZWJQb3B1cE1l
bnVMaXN0ZW5lckVmbF9oCi0KLSNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwgOiBwdWJsaWMg
V2ViUG9wdXBNZW51UHJveHkgewotcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUG9wdXBNZW51
TGlzdGVuZXJFZmw+IGNyZWF0ZShXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQb3B1cE1lbnVMaXN0ZW5lckVm
bChjbGllbnQpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZhbHVlQ2hhbmdlZChpbnQgbmV3U2VsZWN0
ZWRJbmRleCk7Ci0KLXByaXZhdGU6Ci0gICAgV2ViUG9wdXBNZW51TGlzdGVuZXJFZmwoV2ViUG9w
dXBNZW51UHJveHk6OkNsaWVudCopOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNl
bmRpZiAvLyBXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUG9wdXBNZW51UHJveHlFZmwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJj
OWYyMzcwZmZiZTUxOTJmNWE2NzRlZDQ1ZGJhZDgzZTcyMjliZTIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmNwcApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ry
b25pY3MKKyAqIENvcHlyaWdodCAoQykgMjAxNiBOYXZlciBDb3JwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORwor
ICogTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1dlYlBvcHVwTWVudVByb3h5RWZsOjpXZWJQb3B1cE1lbnVQcm94
eUVmbChFd2tWaWV3JiBld2tWaWV3LCBXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50JiBjbGllbnQp
CisgICAgOiBXZWJQb3B1cE1lbnVQcm94eShjbGllbnQpCisgICAgLCBtX2V3a1ZpZXcoZXdrVmll
dykKK3sKK30KKwordm9pZCBXZWJQb3B1cE1lbnVQcm94eUVmbDo6dmFsdWVDaGFuZ2VkKGludCBu
ZXdTZWxlY3RlZEluZGV4KQoreworICAgIGlmICghbV9jbGllbnQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbmV3U2VsZWN0
ZWRJbmRleCk7CisgICAgaW52YWxpZGF0ZSgpOworfQorCit2b2lkIFdlYlBvcHVwTWVudVByb3h5
RWZsOjpzaG93UG9wdXBNZW51KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIFdlYkNvcmU6
OlRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgbV9ld2tWaWV3LnJlcXVlc3RQb3B1
cE1lbnUodGhpcywgcmVjdCwgdGV4dERpcmVjdGlvbiwgcGFnZVNjYWxlRmFjdG9yLCBpdGVtcywg
c2VsZWN0ZWRJbmRleCk7Cit9CisKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlFZmw6OmhpZGVQb3B1
cE1lbnUoKQoreworICAgIG1fZXdrVmlldy5jbG9zZVBvcHVwTWVudSgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQb3B1cE1lbnVQcm94eUVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJQb3B1cE1lbnVQcm94eUVmbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjMjE3NjRmYzAwNTc4MjlmYmE3Mzky
ZTc0ODk0MjhiOTEwZWE5NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlBvcHVwTWVudVByb3h5RWZsLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgTmF2ZXIgQ29ycC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBXZWJQb3B1cE1lbnVQcm94eUVmbF9oCisjZGVmaW5lIFdlYlBvcHVwTWVu
dVByb3h5RWZsX2gKKworI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCisKK2NsYXNzIEV3
a1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQb3B1cE1lbnVQcm94eUVm
bCA6IHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxX
ZWJQb3B1cE1lbnVQcm94eUVmbD4gY3JlYXRlKEV3a1ZpZXcmIGV3a1ZpZXcsIFdlYlBvcHVwTWVu
dVByb3h5OjpDbGllbnQmIGNsaWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlBvcHVwTWVudVByb3h5RWZsKGV3a1ZpZXcsIGNsaWVudCkpOworICAgIH0KKworICAg
IHZvaWQgdmFsdWVDaGFuZ2VkKGludCBuZXdTZWxlY3RlZEluZGV4KTsKKworICAgIHZvaWQgc2hv
d1BvcHVwTWVudShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgV2ViQ29yZTo6VGV4dERpcmVjdGlv
biwgZG91YmxlIHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0
ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgp
IG92ZXJyaWRlOworICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpIG92ZXJyaWRlOworCitwcml2YXRl
OgorICAgIGV4cGxpY2l0IFdlYlBvcHVwTWVudVByb3h5RWZsKEV3a1ZpZXcmLCBXZWJQb3B1cE1l
bnVQcm94eTo6Q2xpZW50Jik7CisKKyAgICBFd2tWaWV3JiBtX2V3a1ZpZXc7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlBvcHVwTWVudVByb3h5RWZsX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJVSVBvcHVwTWVudUNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xp
ZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzllZWI5MzA2ZmM0OTMyMGZk
MDc4ZDJmM2ZmMDU0OWYxZGQwY2RmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51
Q2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJVSVBvcHVwTWVudUNs
aWVudC5oIgotCi0jaW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
LSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQb3B1cEl0ZW1FZmwuaCIK
LSNpbmNsdWRlICJXZWJQb3B1cE1lbnVMaXN0ZW5lckVmbC5oIgotCi11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KLXZvaWQgV2ViVUlQb3B1cE1lbnVD
bGllbnQ6OnNob3dQb3B1cE1lbnUoV2ViUGFnZVByb3h5KiBwYWdlUHJveHksIFdlYlBvcHVwTWVu
dVByb3h5KiBwb3B1cE1lbnVQcm94eSwgY29uc3QgSW50UmVjdCYgcmVjdCwgVGV4dERpcmVjdGlv
biB0ZXh0RGlyZWN0aW9uLCBkb3VibGUgcGFnZVNjYWxlRmFjdG9yLCBjb25zdCBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiYgaXRlbXMsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKLXsKLSAgICBpZiAoIW1f
Y2xpZW50LnNob3dQb3B1cE1lbnUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFZlY3RvcjxSZWZQ
dHI8QVBJOjpPYmplY3Q+ID4gd2ViUG9wdXBJdGVtczsKLSAgICBzaXplX3Qgc2l6ZSA9IGl0ZW1z
LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
d2ViUG9wdXBJdGVtcy5hcHBlbmQoV2ViUG9wdXBJdGVtRWZsOjpjcmVhdGUoaXRlbXNbaV0pKTsK
LQotICAgIFJlZlB0cjxBUEk6OkFycmF5PiBJdGVtc0FycmF5OwotICAgIGlmICghd2ViUG9wdXBJ
dGVtcy5pc0VtcHR5KCkpCi0gICAgICAgIEl0ZW1zQXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZSh3ZWJQb3B1cEl0ZW1zKSk7Ci0KLSAgICBtX2NsaWVudC5zaG93UG9wdXBNZW51KHRv
QVBJKHBhZ2VQcm94eSksIHRvQVBJKHN0YXRpY19jYXN0PFdlYlBvcHVwTWVudUxpc3RlbmVyRWZs
Kj4ocG9wdXBNZW51UHJveHkpKSwgdG9BUEkocmVjdCksIHRvQVBJKHRleHREaXJlY3Rpb24pLCBw
YWdlU2NhbGVGYWN0b3IsIHRvQVBJKEl0ZW1zQXJyYXkuZ2V0KCkpLCBzZWxlY3RlZEluZGV4LCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJUG9wdXBNZW51Q2xpZW50
OjpoaWRlUG9wdXBNZW51KFdlYlBhZ2VQcm94eSogcGFnZVByb3h5KQotewotICAgIGlmIChtX2Ns
aWVudC5oaWRlUG9wdXBNZW51KQotICAgICAgICBtX2NsaWVudC5oaWRlUG9wdXBNZW51KHRvQVBJ
KHBhZ2VQcm94eSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlVJUG9wdXBNZW51Q2xpZW50LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MDAyNWE2NTM1NTQ4Y2ZmYmJmODRkMWI4MzRiNDE5Mzkw
MjRhY2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJVSVBvcHVwTWVudUNsaWVudC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEF3QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBX
ZWJVSVBvcHVwTWVudUNsaWVudF9oCi0jZGVmaW5lIFdlYlVJUG9wdXBNZW51Q2xpZW50X2gKLQot
I2luY2x1ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIkFQSU9iamVjdC5oIgotI2luY2x1ZGUg
IldLUGFnZUVmbC5oIgotI2luY2x1ZGUgIldlYlBvcHVwSXRlbS5oIgotI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVGV4dEZsYWdzLmg+Ci0KLW5hbWVzcGFj
ZSBBUEkgewotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJUG9wdXBNZW51
Q2xpZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSVBvcHVwTWVudUNs
aWVudFYwPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBX
ZWJQYWdlUHJveHk7Ci1jbGFzcyBXZWJQb3B1cE1lbnVQcm94eTsKLQotY2xhc3MgV2ViVUlQb3B1
cE1lbnVDbGllbnQgOiBwdWJsaWMgQVBJOjpDbGllbnQ8V0tQYWdlVUlQb3B1cE1lbnVDbGllbnRC
YXNlPiB7Ci1wdWJsaWM6Ci0gICAgdm9pZCBzaG93UG9wdXBNZW51KFdlYlBhZ2VQcm94eSosIFdl
YlBvcHVwTWVudVByb3h5KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFdlYkNvcmU6OlRleHRE
aXJlY3Rpb24sIGRvdWJsZSBwYWdlU2NhbGVGYWN0b3IsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiBpdGVtcywgaW50MzJfdCBzZWxlY3RlZEluZGV4KTsKLSAgICB2b2lkIGhpZGVQb3B1cE1l
bnUoV2ViUGFnZVByb3h5Kik7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNlbmRpZiAv
LyBXZWJVSVBvcHVwTWVudUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcAppbmRleCBkMWQyZTFlMjE2NTVhZGQzZjg0MDk5OTM2YzRkZGNjODBkYTE3YzY1Li4w
NTc5ZjQ0MDU5ZjI0ZmViMDU3N2QyNmQ0YjcyM2ZmMzRjOTlhNDYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eUVm
bC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgotI2luY2x1ZGUgIldlYlBvcHVwTWVudUxp
c3RlbmVyRWZsLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRl
ICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5oPgogCkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBXZWJWaWV3Ojpkb25lV2l0aFRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQsIGJvb2wgd2FzRXZlbnQK
IAogUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1cE1lbnVQcm94
eShXZWJQYWdlUHJveHkmIHBhZ2UpCiB7Ci0gICAgcmV0dXJuIFdlYlBvcHVwTWVudUxpc3RlbmVy
RWZsOjpjcmVhdGUoJnBhZ2UpOworICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94eUVmbDo6Y3Jl
YXRlKCptX2V3a1ZpZXcsIHBhZ2UpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>