<?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>72785</bug_id>
          
          <creation_ts>2011-11-18 18:34:10 -0800</creation_ts>
          <short_desc>Move gamepad to Modules/ (+ some cleanup)</short_desc>
          <delta_ts>2011-11-21 09:28:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Scott Graham">scottmg</reporter>
          <assigned_to name="Scott Graham">scottmg</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>506277</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 18:34:10 -0800</bug_when>
    <thetext>Based on discussion here: https://bugs.webkit.org/show_bug.cgi?id=71753

Some gamepad cleanup:
- use fast/js/ test harness
- add #if ENABLE around headers in Navigator to avoid including them for ports that aren&apos;t using them
- move from page/ to new Modules/ location</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506294</commentid>
    <comment_count>1</comment_count>
      <attachid>115924</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 19:09:57 -0800</bug_when>
    <thetext>Created attachment 115924
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506301</commentid>
    <comment_count>2</comment_count>
      <attachid>115924</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 19:23:17 -0800</bug_when>
    <thetext>Comment on attachment 115924
Patch

Looks great.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506433</commentid>
    <comment_count>3</comment_count>
      <attachid>115924</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-19 12:51:59 -0800</bug_when>
    <thetext>Comment on attachment 115924
Patch

Clearing flags on attachment: 115924

Committed r100860: &lt;http://trac.webkit.org/changeset/100860&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506435</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-19 12:52:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506485</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-11-19 19:48:18 -0800</bug_when>
    <thetext>This patch added (or rather moved I guess) a bunch of files with license headers that use C++ style comments rather than C-style, which is out of the norm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506491</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-19 21:51:51 -0800</bug_when>
    <thetext>Thanks Sam.

Scott, would you be willing to update the license headers to match the common style in WebKit?  I presume you copied the license headers from somewhere.  Do you remember where so we can align them with the norm as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507029</commentid>
    <comment_count>7</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-21 09:28:40 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=72894 (sorry, not a committer so I&apos;ll have to get you to do it)

I believe I copied the license from mail from mal@ so the comment style was probably my own &quot;innovation&quot; (i.e. other places may be fine).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115924</attachid>
            <date>2011-11-18 19:09:57 -0800</date>
            <delta_ts>2011-11-19 12:51:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72785-20111118190956.patch</filename>
            <type>text/plain</type>
            <size>37290</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVjNjVjZDI0YmE2YmQw
MmYyNjA4MmRmMjk0ZTM0NTE3NjBlY2E4ZC4uY2NhYjI5NTAyODllNGEzMzEwYmJkNTkyNGMzY2Ni
MDUyMWE4NTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM2IEBACiAyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KIAorICAgICAgICBNb3ZlIGdhbWVwYWQg
dG8gTW9kdWxlcy8gKCsgc29tZSBjbGVhbnVwKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzI3ODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNb3ZlIG1haW4gZmlsZXMgZnJvbSBwYWdlLyB0byBNb2R1bGVz
L2dhbWVwYWQvLiAjaW5jbHVkZSBndWFyZCB0aGUKKyAgICAgICAgZ2FtZXBhZCBoZWFkZXIgaW5j
bHVzaW9ucyBpbiBOYXZpZ2F0b3IuY3BwIHRvIGF2b2lkIGluY2x1ZGluZyBmb3IKKyAgICAgICAg
cG9ydHMgdGhhdCBkbyBub3QgZW5hYmxlIEdBTUVQQUQuCisKKyAgICAgICAgKiBNb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVw
YWQuY3BwLgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6R2FtZXBhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkOjpheGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmJ1dHRv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIE1v
ZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0dhbWVwYWQuaC4KKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5pZGw6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsLgorICAgICAgICAqIE1vZHVs
ZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0dhbWVwYWRMaXN0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojp+R2Ft
ZXBhZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6CisgICAgICAg
IChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWRMaXN0OjppdGVtKToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBh
ZExpc3Q6OkdhbWVwYWRMaXN0KToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExp
c3QuaWRsOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwu
CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKworMjAxMS0xMS0xOCAgU2NvdHQg
R3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgSURMIGNoYW5nZXMgZm9y
IGdhbWVwYWQgc3VwcG9ydAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzE3NTMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjA1ZWQxOGRkZGUxYzdhNmFiMDNhYTIyOGRlZTFjNzJkNDhiNTYyZDQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZDo6R2FtZXBh
ZCgpCit7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRh
dGEpCit7CisgICAgbV9heGVzLnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRh
dGEgKyBjb3VudCwgbV9heGVzLmJlZ2luKCkpOworfQorCit2b2lkIEdhbWVwYWQ6OmJ1dHRvbnMo
dW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKQoreworICAgIG1fYnV0dG9ucy5yZXNpemUoY291
bnQpOworICAgIHN0ZDo6Y29weShkYXRhLCBkYXRhICsgY291bnQsIG1fYnV0dG9ucy5iZWdpbigp
KTsKK30KKworR2FtZXBhZDo6fkdhbWVwYWQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmM2IwNzcwZDJkNmRjZmNkNmYzMGFlN2JjMDdj
YWZiYmQyMzZjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dh
bWVwYWQvR2FtZXBhZC5oCkBAIC0wLDAgKzEsNzMgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZF9o
CisjZGVmaW5lIEdhbWVwYWRfaAorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFk
OiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgR2FtZXBhZCk7CisgICAgfQorICAgIH5HYW1lcGFkKCk7CisKKyAgICB0eXBlZGVmIFZlY3Rv
cjxmbG9hdD4gRmxvYXRWZWN0b3I7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgaWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7
IH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAg
IHZvaWQgaW5kZXgodW5zaWduZWQgdmFsKSB7IG1faW5kZXggPSB2YWw7IH0KKworICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQor
ICAgIHZvaWQgdGltZXN0YW1wKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwpIHsgbV90aW1lc3RhbXAg
PSB2YWw7IH0KKworICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBheGVzKCkgY29uc3QgeyByZXR1cm4g
bV9heGVzOyB9CisgICAgdm9pZCBheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSk7CisK
KyAgICBjb25zdCBGbG9hdFZlY3RvciYgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9u
czsgfQorICAgIHZvaWQgYnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCitw
cml2YXRlOgorICAgIEdhbWVwYWQoKTsKKyAgICBTdHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBt
X2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZl
Y3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3IgbV9idXR0b25zOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCisKKyNlbmRpZiAvLyBH
YW1lcGFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1l
cGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yMTQ5YjA1ZjVlNTJiOWRlYTVkNTQ5YWFmNzFmMzQ2ZjUzNzNkMDdlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsCkBA
IC0wLDAgKzEsMzYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
Ly8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8v
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAg
ICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRAorICAgIF0gR2FtZXBhZCB7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGluZGV4OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0W10g
YXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0W10gYnV0dG9uczsKKyAgICB9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEzNzkwZjg5NjM2MDEyMjRkNTQxMWMwZGEwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRM
aXN0LmNwcApAQCAtMCwwICsxLDU2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJM
RShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dhbWVwYWRMaXN0Ojp+R2FtZXBh
ZExpc3QoKQoreworfQorCit2b2lkIEdhbWVwYWRMaXN0OjpzZXQodW5zaWduZWQgaW5kZXgsIFBh
c3NSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCkKK3sKKyAgICBpZiAoaW5kZXggPj0ga01heGltdW1H
YW1lcGFkcykKKyAgICAgICAgcmV0dXJuOworICAgIG1faXRlbXNbaW5kZXhdID0gZ2FtZXBhZDsK
K30KKwordW5zaWduZWQgR2FtZXBhZExpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGtNYXhpbXVtR2FtZXBhZHM7Cit9CisKK0dhbWVwYWQqIEdhbWVwYWRMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGV4KQoreworICAgIHJldHVybiBpbmRleCA8IGxlbmd0aCgpID8gbV9pdGVtc1tpbmRl
eF0uZ2V0KCkgOiAwOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBh
ZC9HYW1lcGFkTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRM
aXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjMzZjhmZWQwYWQzNjcyZjE0NTJiYjg3NTQ1Y2UyODRjY2JjMjY5
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1l
cGFkTGlzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8g
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8g
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZExpc3RfaAor
I2RlZmluZSBHYW1lcGFkTGlzdF9oCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IkdhbWVwYWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxHYW1lcGFkPiA+IEdhbWVwYWRWZWN0b3I7CisK
K2NsYXNzIEdhbWVwYWRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8R2FtZXBhZExpc3Q+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkTGlzdD4gY3JlYXRlKCkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEdhbWVwYWRMaXN0KTsgfQorICAgIH5HYW1lcGFkTGlzdCgpOworCisg
ICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4pOworICAgIEdh
bWVwYWQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OworCitwcml2YXRlOgorICAgIGVudW0geyBrTWF4aW11bUdhbWVwYWRzID0gNCB9OworICAgIEdh
bWVwYWRMaXN0KCkgeyB9CisgICAgUmVmUHRyPEdhbWVwYWQ+IG1faXRlbXNba01heGltdW1HYW1l
cGFkc107Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
R0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MmI4MTVkZmFmNDI3
ODY1NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0Uu
CisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBH
YW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCmluZGV4IGRlZTkxMTQ1ZjY3NjU1NzZhMTgzNDY2ZDA5MTYxNTE5NmViZmZiZGMuLjZkOTM1
OWFkZDViMTY4MjYzODg2ZjZhYTk4YTBiYjMwMzc5Y2M2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC00OCw2ICs0OCw3IEBACiAgICAgJ3dlYmNvcmVfaW5jbHVk
ZV9kaXJzJzogWwogICAgICAgJy4uLycsCiAgICAgICAnLi4vLi4nLAorICAgICAgJy4uL01vZHVs
ZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vYWNjZXNzaWJpbGl0eScsCiAgICAgICAnLi4vYWNjZXNz
aWJpbGl0eS9jaHJvbWl1bScsCiAgICAgICAnLi4vYmluZGluZ3MnLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDFmNTI2OGUyODRjNjhmZmVjN2M5MjIzMDM2OGU2YzQzNDE5NjE0YzQuLmNkNWYyNTY1MTUz
N2VhODNkMWZjMzA2NTljODg1ZjA3MWM4NzkxYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTExMjks
NiArMTEyOSw4IEBACiAgICAgICAgICAgICAnc3ZnL3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlz
dFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAgXSwKICAgICAgICAgJ3dlYmNvcmVfYmluZGlu
Z3NfaWRsX2ZpbGVzJzogWworICAgICAgICAgICAgJ01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlk
bCcsCisgICAgICAgICAgICAnTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmlkbCcsCiAgICAg
ICAgICAgICAnY3NzL0NTU0NoYXJzZXRSdWxlLmlkbCcsCiAgICAgICAgICAgICAnY3NzL0NTU0Zv
bnRGYWNlUnVsZS5pZGwnLAogICAgICAgICAgICAgJ2Nzcy9DU1NJbXBvcnRSdWxlLmlkbCcsCkBA
IC0xNDAyLDggKzE0MDQsNiBAQAogICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlkbCcs
CiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKICAgICAgICAgICAgICdwYWdlL0V2
ZW50U291cmNlLmlkbCcsCi0gICAgICAgICAgICAncGFnZS9HYW1lcGFkLmlkbCcsCi0gICAgICAg
ICAgICAncGFnZS9HYW1lcGFkTGlzdC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRp
b24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb3Bvc2l0aW9uLmlkbCcsCiAgICAgICAgICAg
ICAncGFnZS9IaXN0b3J5LmlkbCcsCkBAIC0xNjY3LDYgKzE2NjcsMTAgQEAKICAgICAgICAgICAg
ICdzdmcvU1ZHWm9vbUV2ZW50LmlkbCcsCiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJjb3JlX2Zp
bGVzJzogWworICAgICAgICAgICAgJ01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNwcCcsCisgICAg
ICAgICAgICAnTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCcsCisgICAgICAgICAgICAnTW9kdWxl
cy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9nYW1lcGFk
L0dhbWVwYWRMaXN0LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aCcsCkBAIC0yOTUxLDEwICsyOTU1LDYgQEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9u
U2NoZWR1bGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAg
ICAgICAncGFnZS9GcmFtZVZpZXcuY3BwJywKLSAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3Bw
JywKLSAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuaCcsCi0gICAgICAgICAgICAncGFnZS9HYW1l
cGFkTGlzdC5jcHAnLAotICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAg
ICAgICAncGFnZS9HZW9sb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRp
b25Db250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVl
ZDE4ZGRkZTFjN2E2YWIwM2FhMjI4ZGVlMWM3MmQ0OGI1NjJkNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDEx
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6Ci0vLwotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECi0vLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0vLyBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQotLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLS8vIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0vLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0vLyBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZCi0vLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLS8vIERBTUFHRS4KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdhbWVwYWQuaCIKLQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi0jaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR2Ft
ZXBhZDo6R2FtZXBhZCgpCi17Ci19Ci0KLXZvaWQgR2FtZXBhZDo6YXhlcyh1bnNpZ25lZCBjb3Vu
dCwgZmxvYXQqIGRhdGEpCi17Ci0gICAgbV9heGVzLnJlc2l6ZShjb3VudCk7Ci0gICAgc3RkOjpj
b3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9heGVzLmJlZ2luKCkpOwotfQotCi12b2lkIEdhbWVw
YWQ6OmJ1dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKQotewotICAgIG1fYnV0dG9u
cy5yZXNpemUoY291bnQpOwotICAgIHN0ZDo6Y29weShkYXRhLCBkYXRhICsgY291bnQsIG1fYnV0
dG9ucy5iZWdpbigpKTsKLX0KLQotR2FtZXBhZDo6fkdhbWVwYWQoKQotewotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmM2IwNzcwZDJkNmRjZmNkNmYz
MGFlN2JjMDdjYWZiYmQyMzZjNDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw3MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
LS8vCi0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS8vIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS8vIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0v
LyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAotLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLS8vIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0vLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QKLS8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS8vIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSAotLy8gREFNQUdFLgotCi0jaWZuZGVmIEdhbWVwYWRfaAotI2RlZmluZSBHYW1lcGFk
X2gKLQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
LSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR2FtZXBhZDogcHVibGljIFJlZkNvdW50
ZWQ8R2FtZXBhZD4gewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWQ+IGNy
ZWF0ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWQpOwotICAg
IH0KLSAgICB+R2FtZXBhZCgpOwotCi0gICAgdHlwZWRlZiBWZWN0b3I8ZmxvYXQ+IEZsb2F0VmVj
dG9yOwotCi0gICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KLSAg
ICB2b2lkIGlkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9Ci0KLSAgICB1bnNpZ25l
ZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KLSAgICB2b2lkIGluZGV4KHVuc2ln
bmVkIHZhbCkgeyBtX2luZGV4ID0gdmFsOyB9Ci0KLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGlt
ZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KLSAgICB2b2lkIHRpbWVzdGFt
cCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsKSB7IG1fdGltZXN0YW1wID0gdmFsOyB9Ci0KLSAgICBj
b25zdCBGbG9hdFZlY3RvciYgYXhlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXhlczsgfQotICAgIHZv
aWQgYXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOwotCi0gICAgY29uc3QgRmxvYXRW
ZWN0b3ImIGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KLSAgICB2b2lkIGJ1
dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKLQotcHJpdmF0ZToKLSAgICBHYW1l
cGFkKCk7Ci0gICAgU3RyaW5nIG1faWQ7Ci0gICAgdW5zaWduZWQgbV9pbmRleDsKLSAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbV90aW1lc3RhbXA7Ci0gICAgRmxvYXRWZWN0b3IgbV9heGVzOwotICAg
IEZsb2F0VmVjdG9yIG1fYnV0dG9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQotCi0jZW5kaWYgLy8gR2FtZXBhZF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HYW1lcGFkLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE0OWIwNWY1ZTUy
YjlkZWE1ZDU0OWFhZjcxZjM0NmY1MzczZDA3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsCisrKyAv
ZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6Ci0vLwotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0v
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0vLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0vLyBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQotLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLS8vIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0vLyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0vLyBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0vLyBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0gKLS8vIERBTUFHRS4KLQotbW9kdWxlIGRvbSB7Ci0KLSAgICBpbnRl
cmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFECi0gICAgXSBHYW1lcGFkIHsKLSAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKLSAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaW5kZXg7Ci0gICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgZmxvYXRbXSBheGVzOwotICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXRbXSBidXR0
b25zOwotICAgIH07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBh
ZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2OTM0ZWRkMjU0NDg2MTM3OTBmODk2MzYwMTIyNGQ1NDEx
YzBkYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLS8vCi0vLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLS8vIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0vLyBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLS8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0v
LyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKLS8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLS8vIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAot
Ly8gREFNQUdFLgotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR2FtZXBhZExpc3Qu
aCIKLQotI2luY2x1ZGUgIkdhbWVwYWQuaCIKLQotI2lmIEVOQUJMRShHQU1FUEFEKQotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLUdhbWVwYWRMaXN0Ojp+R2FtZXBhZExpc3QoKQotewotfQotCi12
b2lkIEdhbWVwYWRMaXN0OjpzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4g
Z2FtZXBhZCkKLXsKLSAgICBpZiAoaW5kZXggPj0ga01heGltdW1HYW1lcGFkcykKLSAgICAgICAg
cmV0dXJuOwotICAgIG1faXRlbXNbaW5kZXhdID0gZ2FtZXBhZDsKLX0KLQotdW5zaWduZWQgR2Ft
ZXBhZExpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGtNYXhpbXVtR2FtZXBhZHM7
Ci19Ci0KLUdhbWVwYWQqIEdhbWVwYWRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQotewotICAg
IHJldHVybiBpbmRleCA8IGxlbmd0aCgpID8gbV9pdGVtc1tpbmRleF0uZ2V0KCkgOiAwOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZExpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjMz
ZjhmZWQwYWQzNjcyZjE0NTJiYjg3NTQ1Y2UyODRjY2JjMjY5Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRM
aXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0v
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKLS8vCi0vLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLS8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0vLwotLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKLS8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLS8v
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFCi0vLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotLy8gREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLS8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0vLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLS8vIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkKLS8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAotLy8gREFNQUdFLgotCi0jaWZuZGVmIEdhbWVw
YWRMaXN0X2gKLSNkZWZpbmUgR2FtZXBhZExpc3RfaAotCi0jaWYgRU5BQkxFKEdBTUVQQUQpCi0K
LSNpbmNsdWRlICJHYW1lcGFkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8R2FtZXBhZD4gPiBHYW1lcGFk
VmVjdG9yOwotCi1jbGFzcyBHYW1lcGFkTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEdhbWVwYWRM
aXN0PiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZExpc3Q+IGNyZWF0
ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFkTGlzdCk7IH0KLSAgICB+R2FtZXBhZExp
c3QoKTsKLQotICAgIHZvaWQgc2V0KHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmUHRyPEdhbWVwYWQ+
KTsKLSAgICBHYW1lcGFkKiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKLSAgICB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBlbnVtIHsga01heGltdW1HYW1lcGFkcyA9IDQg
fTsKLSAgICBHYW1lcGFkTGlzdCgpIHsgfQotICAgIFJlZlB0cjxHYW1lcGFkPiBtX2l0ZW1zW2tN
YXhpbXVtR2FtZXBhZHNdOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYg
Ly8gRU5BQkxFKEdBTUVQQUQpCi0KLSNlbmRpZiAvLyBHYW1lcGFkTGlzdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2FtZXBhZExpc3QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDJiODE1
ZGZhZjQyNzg2NTczYmY1MWFiNTM4ZWY0ZmEzZGY1NDI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3Qu
aWRsCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDEx
LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZSBtZXQ6Ci0vLwotLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLS8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLS8vIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0vLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8KLS8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5ECi0vLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLS8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0vLyBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRQotLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLS8vIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0vLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0vLyBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZCi0vLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKLS8vIERBTUFHRS4KLQotbW9kdWxlIGRvbSB7Ci0K
LSAgICBpbnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFELAotICAgICAgICBI
YXNJbmRleEdldHRlcgotICAgIF0gR2FtZXBhZExpc3QgewotICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgICAgIEdhbWVwYWQgaXRlbShpbiBbT3B0
aW9uYWw9Q2FsbFdpdGhEZWZhdWx0VmFsdWVdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwotICAgIH07
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBmM2JlMGNjNDhmYTQ4Njc0MTIz
NjdlNzRkZDc1MTczYjdhOGY4YWM1Li5kZTU0ZGM1MWUxZWJkMTYxNjNmM2YzYzY5NGVmNWNiNTdl
NjkwYTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKICNpbmNsdWRlICJH
ZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAjaW5jbHVkZSAiS1VSTC5o
IgpAQCAtNDYsNiArNDUsMTAgQEAKICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShHQU1FUEFEKQorI2luY2x1ZGUgIkdh
bWVwYWRMaXN0LmgiCisjZW5kaWYKKwogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5oIgogI2luY2x1ZGUgIk5hdmlnYXRv
clVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjay5oIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1OGJkYTJiNWU1Yzk0OTAwMzk2
YzgwNDM3MjYyNjJkMjBhYjk2YjAuLjFiMDY1NzU4YjdjNDA5NjE4ZmM2NzgyNjI2ZWViYzQ5YjMy
YWY0YzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxOCBAQAogMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8
c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgTW92ZSBnYW1lcGFkIHRvIE1vZHVsZXMv
ICgrIHNvbWUgY2xlYW51cCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcyNzg1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXNlIHN0YW5kYXJkIHByZS9wb3N0IGpzIHRlc3QgaGFybmVzcyByYXRoZXIgdGhh
biBjdXN0b20gb25lLgorCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sOgorICAgICAgICAqIGdhbWVw
YWQvZ2FtZXBhZC10ZXN0LmpzOiBSZW1vdmVkLgorCisyMDExLTExLTE4ICBTY290dCBHcmFoYW0g
IDxzY290dG1nQGNocm9taXVtLm9yZz4KKwogICAgICAgICBJREwgY2hhbmdlcyBmb3IgZ2FtZXBh
ZCBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTc1MwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQudHh0
CmluZGV4IGQ5MDBlYmYzYWVkN2QwNTBiZWQ4MzJlYWZjYzA0ZjBhNTRkMDVjNGYuLjYxOTRhMmJh
YWQxNzcyYzkwZDFjZjhkMDI1NTM0NDMyYjZlZjZjYWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2dhbWVw
YWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNSBAQAotRVhQRUNURUQgKG5h
dmlnYXRvci53ZWJraXRHYW1lcGFkcyAhPT0gJ3VuZGVmaW5lZCcpIE9LCi1FTkQgT0YgVEVTVAor
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMgaXMgZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQogTWFrZSBzdXJlIHRoZSBtYWluIHBv
bGxpbmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dh
bWVwYWQtYXBpLmh0bWwKaW5kZXggYjVmMGUzNDY0NGI2YzFjZGVkNjk5MDJkMDVkMzdmM2M1MDdh
OWZhZS4uZWFiNWQyMDljZjBlZDYyODQyZDEzMzhjNTlhZTQ2YjI2NDk0MGJkZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbApAQCAtMSw5ICsxLDkgQEAKIDwhRE9DVFlQRSBodG1s
PgogPGJvZHk+Ci08c2NyaXB0IHNyYz0iZ2FtZXBhZC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0PgotICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzIiwgdW5k
ZWZpbmVkLCAiIT09Iik7Ci0gICAgZW5kVGVzdCgpOworICAgIHNob3VsZEJlRGVmaW5lZCgibmF2
aWdhdG9yLndlYmtpdEdhbWVwYWRzIik7CiA8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPHA+TWFrZSBzdXJlIHRo
ZSBtYWluIHBvbGxpbmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgogPC9i
b2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMgYi9M
YXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjYxYjRmM2MzMGU5OWNmMzQ2ZTdkN2Q0Y2Y0YWNmNjllNDYyZWQyNC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9nYW1l
cGFkL2dhbWVwYWQtdGVzdC5qcworKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi12YXIg
Y29uc29sZSA9IG51bGw7Ci12YXIgcHJpbnRGdWxsVGVzdERldGFpbHMgPSB0cnVlOyAvLyBUaGlz
IGlzIG9wdGlvbmFseSBzd2l0Y2hlZCBvZiBieSB0ZXN0IHdob3NlIHRlc3RlZCB2YWx1ZXMgY2Fu
IGRpZmZlci4gKHNlZSBkaXNhYmxlRnVsbFRlc3REZXRhaWxzUHJpbnRpbmcoKSkKLQotbG9nQ29u
c29sZSgpOwotCi1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgIGxheW91dFRlc3RDb250cm9sbGVyLndh
aXRVbnRpbERvbmUoKTsKLX0KLQotZnVuY3Rpb24gbG9nQ29uc29sZSgpCi17Ci0gICAgaWYgKCFj
b25zb2xlICYmIGRvY3VtZW50LmJvZHkpIHsKLSAgICAgICAgY29uc29sZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNv
bnNvbGUpOwotICAgIH0KLSAgICByZXR1cm4gY29uc29sZTsKLX0KLQotZnVuY3Rpb24gdGVzdEV4
cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCwgY29tcGFyaXNvbikKLXsKLSAgICB0cnkg
ewotICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBldmFsKHRlc3RGdW5jU3RyaW5nKTsKLSAgICB9IGNh
dGNoIChleCkgewotICAgICAgICBjb25zb2xlV3JpdGUoZXgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGNvbXBhcmlzb24gPT09IHVuZGVmaW5lZCkKLSAgICAgICAgY29tcGFy
aXNvbiA9ICc9PSc7Ci0KLSAgICB2YXIgc3VjY2VzcyA9IGZhbHNlOwotICAgIHN3aXRjaCAoY29t
cGFyaXNvbikKLSAgICB7Ci0gICAgICAgIGNhc2UgJzwnOiAgc3VjY2VzcyA9IG9ic2VydmVkIDwg
IGV4cGVjdGVkOyBicmVhazsKLSAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQg
PD0gZXhwZWN0ZWQ7IGJyZWFrOwotICAgICAgICBjYXNlICc+JzogIHN1Y2Nlc3MgPSBvYnNlcnZl
ZCA+ICBleHBlY3RlZDsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9ic2Vy
dmVkID49IGV4cGVjdGVkOyBicmVhazsKLSAgICAgICAgY2FzZSAnIT0nOiBzdWNjZXNzID0gb2Jz
ZXJ2ZWQgIT0gZXhwZWN0ZWQ7IGJyZWFrOwotICAgICAgICBjYXNlICchPT0nOiBzdWNjZXNzID0g
b2JzZXJ2ZWQgIT09IGV4cGVjdGVkOyBicmVhazsKLSAgICAgICAgY2FzZSAnPT0nOiBzdWNjZXNz
ID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOwotICAgICAgICBjYXNlICc9PT0nOiBzdWNj
ZXNzID0gb2JzZXJ2ZWQgPT09IGV4cGVjdGVkOyBicmVhazsKLSAgICB9Ci0KLSAgICByZXBvcnRF
eHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQsIG9i
c2VydmVkKQotfQotCi12YXIgdGVzdE51bWJlciA9IDA7Ci0KLWZ1bmN0aW9uIHJlcG9ydEV4cGVj
dGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2
ZWQpCi17Ci0gICAgdGVzdE51bWJlcisrOwotCi0gICAgdmFyIG1zZyA9ICJUZXN0ICIgKyB0ZXN0
TnVtYmVyOwotCi0gICAgaWYgKHByaW50RnVsbFRlc3REZXRhaWxzIHx8ICFzdWNjZXNzKQotICAg
ICAgICBtc2cgPSAiRVhQRUNURUQgKDxlbT4iICsgdGVzdEZ1bmNTdHJpbmcgKyAiIDwvZW0+IiAr
IGNvbXBhcmlzb24gKyAiICc8ZW0+IiArIGV4cGVjdGVkICsgIjwvZW0+JykiOwotCi0gICAgaWYg
KCFzdWNjZXNzKQotICAgICAgICBtc2cgKz0gICIsIE9CU0VSVkVEICc8ZW0+IiArIG9ic2VydmVk
ICsgIjwvZW0+JyI7Ci0KLSAgICBsb2dSZXN1bHQoc3VjY2VzcywgbXNnKTsKLX0KLQotZnVuY3Rp
b24gd2FpdEZvckV2ZW50QW5kRW5kKGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZykKLXsK
LSAgICB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nLCB0cnVlKQot
fQotCi1mdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jLCBlbmRp
dCkKLXsKLSAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKLSAgICB7Ci0gICAgICAg
IGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIik7Ci0KLSAgICAgICAgaWYg
KGZ1bmMpCi0gICAgICAgICAgICBmdW5jKGV2ZW50KTsKLQotICAgICAgICBpZiAoZW5kaXQpCi0g
ICAgICAgICAgICBlbmRUZXN0KCk7Ci0gICAgfQotCi0gICAgZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOwotfQotCi1mdW5jdGlvbiB3YWl0Rm9yRXZl
bnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQotewot
ICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQotICAgIHsKLSAgICAgICAgbG9nUmVz
dWx0KGV2YWwodGVzdEZ1bmNTdHJpbmcpLCAiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1Qo
IiArIHRlc3RGdW5jU3RyaW5nICsgIikiKTsKLSAgICAgICAgaWYgKGVuZGl0KQotICAgICAgICAg
ICAgZW5kVGVzdCgpOwotICAgIH0KLQotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWUsIF9ldmVudENhbGxiYWNrKTsKLX0KLQotZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFu
ZEVuZChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQotewotICAgIHdhaXRGb3JF
dmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Ci19
Ci0KLXZhciB0ZXN0RW5kZWQgPSBmYWxzZTsKLQotZnVuY3Rpb24gZW5kVGVzdCgpCi17Ci0gICAg
Y29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOwotICAgIHRlc3RFbmRlZCA9IHRydWU7Ci0gICAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBsb2dSZXN1bHQoc3VjY2VzcywgdGV4
dCkKLXsKLSAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxz
cGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7Ci0gICAgZWxzZQotICAgICAgICBj
b25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4i
KTsKLX0KLQotZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQpCi17Ci0gICAgaWYgKHRlc3RFbmRl
ZCkKLSAgICAgICAgcmV0dXJuOwotICAgIGxvZ0NvbnNvbGUoKS5pbm5lckhUTUwgKz0gdGV4dCAr
ICI8YnI+IjsKLX0K
</data>

          </attachment>
      

    </bug>

</bugzilla>