<?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>195022</bug_id>
          
          <creation_ts>2019-02-25 16:05:11 -0800</creation_ts>
          <short_desc>[JSC] Make Intl fields lazily-allocated</short_desc>
          <delta_ts>2020-04-15 10:55:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1509817</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-25 16:05:11 -0800</bug_when>
    <thetext>[JSC] Make Intl fields lazily-allocated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509819</commentid>
    <comment_count>1</comment_count>
      <attachid>362938</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-25 16:08:55 -0800</bug_when>
    <thetext>Created attachment 362938
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509827</commentid>
    <comment_count>2</comment_count>
      <attachid>362941</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-25 16:12:08 -0800</bug_when>
    <thetext>Created attachment 362941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509846</commentid>
    <comment_count>3</comment_count>
      <attachid>362941</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-02-25 16:47:10 -0800</bug_when>
    <thetext>Comment on attachment 362941
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        1. Make IntlObject fields including Intl.Collator lazily-alllocated because we already removed direct references from JS builtins to these constructors (@Collator etc.).

/alllocated/allocated/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509852</commentid>
    <comment_count>4</comment_count>
      <attachid>362941</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-25 17:05:35 -0800</bug_when>
    <thetext>Comment on attachment 362941
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        1. Make IntlObject fields including Intl.Collator lazily-alllocated because we already removed direct references from JS builtins to these constructors (@Collator etc.).
&gt; 
&gt; /alllocated/allocated/.

Oops, thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509884</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-02-25 18:13:25 -0800</bug_when>
    <thetext>Committed r242064: &lt;https://trac.webkit.org/changeset/242064&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1509887</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-25 18:33:58 -0800</bug_when>
    <thetext>&lt;rdar://problem/48387136&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1641869</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-04-15 10:55:53 -0700</bug_when>
    <thetext>*** Bug 193549 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362938</attachid>
            <date>2019-02-25 16:08:55 -0800</date>
            <delta_ts>2019-02-25 16:12:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195022-20190225160854.patch</filename>
            <type>text/plain</type>
            <size>25825</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDlhYjA4ZDhhNjhiMGQ1MWViNzU4Mzg3ZDNlNDA4MmFkYWUzODUwLi43OGU2Y2U5MzU5YmI4ZmQ5
ZDljZTlkNDgyN2Q5YWY3YjQ5NzBhZGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOS0wMi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1ha2UgSW50bCBmaWVsZHMgbGF6aWx5LWFsbG9jYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MDIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyB0aGUgZm9sbG93aW5nIG1lbW9yeSBmb290cHJpbnQgb3B0aW1pemF0aW9uIGluIEludGxP
YmplY3QuCisKKyAgICAgICAgMS4gTWFrZSBJbnRsT2JqZWN0IGZpZWxkcyBpbmNsdWRpbmcgSW50
bC5Db2xsYXRvciBsYXppbHktYWxsbG9jYXRlZCBiZWNhdXNlIHdlIGFscmVhZHkgcmVtb3ZlZCBk
aXJlY3QgcmVmZXJlbmNlcyBmcm9tIEpTIGJ1aWx0aW5zIHRvIHRoZXNlIGNvbnN0cnVjdG9ycyAo
QENvbGxhdG9yIGV0Yy4pLgorCisgICAgICAgIDIuIE1vdmUgTGF6eVByb3BlcnR5PEludGxPYmpl
Y3QsIFN0cnVjdHVyZT4gc3RydWN0dXJlcyBmcm9tIEludGxPYmplY3QgdG8gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgbWFrZXMgc2l6ZW9mKEludGxPYmplY3QpIHRoZSBzYW1lIHRvIHRoZSBvdGhlciBv
bmVzIG9mIHVzdWFsIHJ1bnRpbWUgT2JqZWN0cywKKyAgICAgICAgICAgYW5kIGRyb3Agb25lIE1h
cmtlZEJsb2NrLgorCisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6SGVh
cDo6bGFzdENoYW5jZVRvRmluYWxpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxhdG9y
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmg6CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iu
aDoKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVh
dGVDb2xsYXRvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTnVtYmVyRm9ybWF0
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcik6CisgICAg
ICAgIChKU0M6OkludGxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6dmlzaXRDaGlsZHJlbik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9JbnRs
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmRlZmF1bHRDb2xsYXRv
cik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6Y29sbGF0b3JTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6bnVtYmVyRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxP
YmplY3Q6OnBsdXJhbFJ1bGVzU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OmludGxPYmplY3QgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRGF0ZVRpbWVG
b3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6bnVtYmVyUHJvdG9GdW5jVG9Mb2NhbGVTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTG9jYWxl
Q29tcGFyZSk6CisKIDIwMTktMDItMjUgIFRhZGV1IFphZ2FsbG8gIDx0emFnYWxsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgQXZvaWQgaGFzaGluZyBDb21wYWN0VmFyaWFibGVFbnZpcm9ubWVudCB3
aGVuIGRlY29kaW5nIENvbXBhY3RWYXJpYWJsZU1hcDo6SGFuZGxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCmluZGV4IDJhZDBlMGE0NzYwZGI0ZTdkNGQzZDk0MzI3NTdkNDdhNGVjNWU0
MmMuLjM2OGZhYWM1ODM3M2QwNGVhMGFlZWFkZDVhYmY4MWY5YjQ3NmU1OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCkBAIC0zNjAsNiArMzYwLDI5IEBAIHZvaWQgSGVhcDo6bGFz
dENoYW5jZVRvRmluYWxpemUoKQogICAgICAgICBiZWZvcmUgPSBNb25vdG9uaWNUaW1lOjpub3co
KTsKICAgICAgICAgZGF0YUxvZygiW0dDPCIsIFJhd1BvaW50ZXIodGhpcyksICI+OiBzaHV0ZG93
biAiKTsKICAgICB9CisKKyAgICB1bnNpZ25lZCBjb3VudGVyID0gMDsKKyAgICBtX29iamVjdFNw
YWNlLmZvckVhY2hCbG9jayhbJl0gKE1hcmtlZEJsb2NrOjpIYW5kbGUqIGJsb2NrKSB7CisgICAg
ICAgIHVuc2lnbmVkIGxpdmUgPSAwOworICAgICAgICBibG9jay0+Zm9yRWFjaENlbGwoWyZdIChI
ZWFwQ2VsbCogY2VsbCwgSGVhcENlbGw6OktpbmQpIHsKKyAgICAgICAgICAgIGlmIChjZWxsLT5p
c0xpdmUoKSkKKyAgICAgICAgICAgICAgICBsaXZlKys7CisgICAgICAgICAgICByZXR1cm4gSXRl
cmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisgICAgICAgIGRhdGFMb2dMbigi
WyIsIGNvdW50ZXIrKywgIl0gIiwgYmxvY2stPmNlbGxTaXplKCksICIsICIsIGxpdmUsICIgLyAi
LCBibG9jay0+Y2VsbHNQZXJCbG9jaygpLCAiICIsIHN0YXRpY19jYXN0PGRvdWJsZT4obGl2ZSkg
LyBibG9jay0+Y2VsbHNQZXJCbG9jaygpICogMTAwLCAiJSAiLCBibG9jay0+YXR0cmlidXRlcygp
LCAiICIsIGJsb2NrLT5zdWJzcGFjZSgpLT5uYW1lKCkpOworI2lmIDEKKyAgICAgICAgYmxvY2st
PmZvckVhY2hDZWxsKFsmXSAoSGVhcENlbGwqIGhlYXBDZWxsLCBIZWFwQ2VsbDo6S2luZCBraW5k
KSB7CisgICAgICAgICAgICBpZiAoaGVhcENlbGwtPmlzTGl2ZSgpICYmIGtpbmQgPT0gSGVhcENl
bGw6OktpbmQ6OkpTQ2VsbCkgeworICAgICAgICAgICAgICAgIGF1dG8qIGNlbGwgPSBzdGF0aWNf
Y2FzdDxKU0NlbGwqPihoZWFwQ2VsbCk7CisgICAgICAgICAgICAgICAgaWYgKGNlbGwtPmlzT2Jq
ZWN0KCkpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiICAgICIsIEpTVmFsdWUoKEpT
T2JqZWN0KiljZWxsKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBkYXRhTG9nTG4oIiAgICAiLCAqY2VsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXR1cm4gSXRlcmF0aW9uU3RhdHVzOjpDb250aW51ZTsKKyAgICAgICAgfSk7CisjZW5kaWYKKyAg
ICB9KTsKICAgICAKICAgICBtX2lzU2h1dHRpbmdEb3duID0gdHJ1ZTsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9y
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rv
ci5oCmluZGV4IGMzOGVlMjI3ZTJlYmMzMWYwNTlkZmNiMDU4YThjMjk4ZjI4MDBlZmYuLjllOGQ0
MzY3ZjM5YzNkN2EzMWU5Y2FlMmUyN2U3M2M4ODJjODIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAt
NDYsNyArNDYsNyBAQCBjbGFzcyBJbnRsQ29sbGF0b3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1Ymxp
YyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVy
ZSogY29sbGF0b3JTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qo
dm0pLT5pbnRsT2JqZWN0KCktPmNvbGxhdG9yU3RydWN0dXJlKCk7IH0KKyAgICBTdHJ1Y3R1cmUq
IGNvbGxhdG9yU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZt
KS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hD
cmVhdGlvbihWTSYsIEludGxDb2xsYXRvclByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVj
dG9yLmgKaW5kZXggZDk3MThlZjU3MjliNjAxOTgzYmE3ZDY2ZWNhNGFiYzA0NjhhYzAyYi4uOTdj
MzQ5NGI3YTdlOTMzZGU1N2RhOWI5YjVjMDM0ZjU0ZmYzMWM3MiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFSRV9J
TkZPOwogCi0gICAgU3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZShWTSYgdm0pIGNv
bnN0IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPmludGxPYmplY3QoKS0+ZGF0ZVRpbWVGb3Jt
YXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUo
Vk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5kYXRlVGltZUZvcm1hdFN0
cnVjdHVyZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
SW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCmluZGV4
IDI2ZTIyOWYzMzUzODRiYjMxMjUyOGVkMjYyMTU5ZDE5YWM4YjRmZmIuLmRjYzVkYThiYThmMDI1
MzlkNTA2M2Q1MzUwMGZkMmY3Mjc1MTFhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC00
Niw3ICs0Niw3IEBAIGNsYXNzIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1
YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVj
dHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFs
T2JqZWN0KHZtKS0+aW50bE9iamVjdCgpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAg
IFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4g
Z2xvYmFsT2JqZWN0KHZtKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IGUxNzQ5M2FiZjMwN2VjMjFmOTQ4MzcwZDBlNDUxNDI5MmU1N2EwZDguLmY4OWU1MjNmZWI3NzI3
M2RlOGYzMjdhNDU0ZjlkZTlkNDg2MzhhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0zMywyMSArMzMsMTYgQEAKICNpbmNsdWRlICJFcnJv
ci5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bENhbm9u
aWNhbGl6ZUxhbmd1YWdlLmgiCi0jaW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCiAjaW5jbHVkZSAi
SW50bENvbGxhdG9yQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5
cGUuaCIKLSNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZS5oIgotI2luY2x1ZGUgIkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJv
dG90eXBlLmgiCi0jaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBs
dXJhbFJ1bGVzQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKLSNpbmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAjaW5jbHVkZSAiT2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpA
QCAtNjgsMjggKzYzLDI4IEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0
b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEludGxPYmplY3QqIGludGxPYmpl
Y3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIElu
dGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KGludGxPYmplY3Qt
PmNvbGxhdG9yU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgcmV0
dXJuIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5m
dW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KGdsb2Jh
bE9iamVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsK
IH0KIAogc3RhdGljIEpTVmFsdWUgY3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZt
LCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nh
c3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxOdW1iZXJG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9u
UHJvdG90eXBlKCkpLCBqc0Nhc3Q8SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSo+KGludGxPYmpl
Y3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOwor
ICAgIHJldHVybiBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51
bWJlckZvcm1hdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxOdW1iZXJGb3Jt
YXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpLT5zdG9y
ZWRQcm90b3R5cGVPYmplY3QoKSkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEYXRlVGlt
ZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRs
T2JqZWN0KiBpbnRsT2JqZWN0ID0ganNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0p
OwotICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJ
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihpbnRsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworICAgIHJldHVybiBJbnRsRGF0ZVRpbWVG
b3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
cjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rp
b25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9i
YWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsdXJhbFJ1bGVzQ29uc3RydWN0b3Io
Vk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIEludGxPYmplY3QqIGludGxPYmplY3Qg
PSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IGludGxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxQbHVyYWxSdWxlc0NvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSo+KGludGxP
YmplY3QtPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7
CisgICAgcmV0dXJuIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxQ
bHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PEludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAogfQpAQCAtMTAxLDYgKzk2LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAvKiBTb3VyY2UgZm9yIEludGxPYmplY3QubHV0LmgKIEBiZWdpbiBpbnRsT2JqZWN0
VGFibGUKICAgZ2V0Q2Fub25pY2FsTG9jYWxlcyAgIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2Fs
TG9jYWxlcyAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgQ29sbGF0b3IgICAgICAg
ICAgICAgIGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgRGF0ZVRpbWVGb3JtYXQgICAgICAgIGNyZWF0ZURhdGVU
aW1lRm9ybWF0Q29uc3RydWN0b3IgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJh
Y2sKKyAgTnVtYmVyRm9ybWF0ICAgICAgICAgIGNyZWF0ZU51bWJlckZvcm1hdENvbnN0cnVjdG9y
ICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCiAKQEAg
LTEyOSwzNSArMTI3LDYgQEAgdm9pZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwg
aW5mbygpKSk7CiAKLSAgICBtX2NvbGxhdG9yU3RydWN0dXJlLmluaXRMYXRlcigKLSAgICAgICAg
W10gKGNvbnN0IExhenlQcm9wZXJ0eTxJbnRsT2JqZWN0LCBTdHJ1Y3R1cmU+OjpJbml0aWFsaXpl
ciYgaW5pdCkgewotICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpz
Q2FzdDxJbnRsT2JqZWN0Kj4oaW5pdC5vd25lciktPmdsb2JhbE9iamVjdChpbml0LnZtKTsKLSAg
ICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRs
Q29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xs
YXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50
bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRv
clByb3RvdHlwZSkpOwotICAgICAgICB9KTsKLSAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5p
bml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBMYXp5UHJvcGVydHk8SW50bE9iamVjdCwgU3Ry
dWN0dXJlPjo6SW5pdGlhbGl6ZXImIGluaXQpIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KGluaXQub3duZXIpLT5nbG9iYWxP
YmplY3QoaW5pdC52bSk7Ci0gICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBu
dW1iZXJGb3JtYXRQcm90b3R5cGUgPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUo
aW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3Rv
dHlwZSgpKSk7Ci0gICAgICAgICAgICBpbml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVT
dHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpKTsK
LSAgICAgICAgfSk7Ci0gICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCi0g
ICAgICAgIFtdIChjb25zdCBMYXp5UHJvcGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPjo6SW5p
dGlhbGl6ZXImIGluaXQpIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KGluaXQub3duZXIpLT5nbG9iYWxPYmplY3QoaW5pdC52
bSk7Ci0gICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9y
bWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52
bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBl
KCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3Ry
dWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsK
LSAgICAgICAgfSk7Ci0gICAgbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5pbml0TGF0ZXIoCi0gICAg
ICAgIFtdIChjb25zdCBMYXp5UHJvcGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPjo6SW5pdGlh
bGl6ZXImIGluaXQpIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBqc0Nhc3Q8SW50bE9iamVjdCo+KGluaXQub3duZXIpLT5nbG9iYWxPYmplY3QoaW5pdC52bSk7
Ci0gICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90
eXBlID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAg
ICAgIGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGds
b2JhbE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3Is
IGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3Iodm0sIHRoaXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPk51bWJlckZvcm1hdCwgY3JlYXRlTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3Iodm0sIHRoaXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPkRhdGVUaW1lRm9ybWF0LCBjcmVhdGVEYXRlVGltZUZvcm1h
dENvbnN0cnVjdG9yKHZtLCB0aGlzKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwotCiAgICAgLy8gQ29uc3RydWN0b3IgUHJvcGVydGllcyBvZiB0
aGUgSW50bCBPYmplY3QKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3Nl
Yy1jb25zdHJ1Y3Rvci1wcm9wZXJ0aWVzLW9mLXRoZS1pbnRsLW9iamVjdAogICAgIGlmIChPcHRp
b25zOjp1c2VJbnRsUGx1cmFsUnVsZXMoKSkKQEAgLTk4MSwxOSArOTUwLDYgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBpbnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoRXhl
Y1N0YXRlKiBzdGF0ZSkKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZUFycmF5KTsK
IH0KIAotdm9pZCBJbnRsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCi17Ci0gICAgSW50bE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxJ
bnRsT2JqZWN0Kj4oY2VsbCk7Ci0gICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBpbmZvKCkpOwotCi0gICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKLQotICAgIHRoaXNPYmplY3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7Ci0gICAgdGhpc09iamVjdC0+bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRv
cik7Ci0gICAgdGhpc09iamVjdC0+bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNp
dG9yKTsKLSAgICB0aGlzT2JqZWN0LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGQxNzAwNTlm
ZGE2ZGI0NmU4Y2FjNTFmMTI4MjEyNDJiNjA2ZThhOGUuLjliZmQwODEzMGE4NzYwN2I5ZWY4YjZi
ZWY2YmUxY2U5MGE3OGU4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmgKQEAgLTQ0LDI5ICs0NCwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5
cGU7CiBjbGFzcyBJbnRsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
cHVibGljOgogICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFz
U3RhdGljUHJvcGVydHlUYWJsZSB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CiAKICAgICBzdGF0aWMgSW50bE9iamVjdCogY3Jl
YXRlKFZNJiwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsK
IAotICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NvbGxhdG9y
U3RydWN0dXJlLmdldCh0aGlzKTsgfQotICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0
dXJlKCkgeyByZXR1cm4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAg
U3RydWN0dXJlKiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVG
b3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0
cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0K
IHByb3RlY3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6Ci0g
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotCiAg
ICAgSW50bE9iamVjdChWTSYsIFN0cnVjdHVyZSopOwotICAgIExhenlQcm9wZXJ0eTxJbnRsT2Jq
ZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PElu
dGxPYmplY3QsIFN0cnVjdHVyZT4gbV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7Ci0gICAgTGF6eVBy
b3BlcnR5PEludGxPYmplY3QsIFN0cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsK
LSAgICBMYXp5UHJvcGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3Ry
dWN0dXJlOwogfTsKIAogU3RyaW5nIGRlZmF1bHRMb2NhbGUoRXhlY1N0YXRlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1
Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29u
c3RydWN0b3IuaAppbmRleCAxNmNiNDY5NzkwYTFjYWQzMzU2NWJhMjVlMzhjZDI2OWFmMTcwZTdl
Li40NTY1MGMyYmE4N2RhMTg2ZTRlNTBhODRmMjExZGEyYmJmMGRlNjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0
cnVjdG9yLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0
b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87
CiAKLSAgICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyBy
ZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+aW50bE9iamVjdCgpLT5wbHVyYWxSdWxlc1N0cnVjdHVy
ZSgpOyB9CisgICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZShWTSYgdm0pIGNvbnN0
IHsgcmV0dXJuIGdsb2JhbE9iamVjdCh2bSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7IH0KIAog
cHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCA2Mzg2NjA0ZWJlNDhlZjM3YjZiYTI2ZDEwZmVhZGEzOWM1MTQ5YWI2
Li40OTBkOGNkMGJjZDZkMmQ1Mzc1NGUxMGFmMDRlMGFhNTVhYzRlMDM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNzksNyAr
MTc5LDE0IEBACiAKICNpZiBFTkFCTEUoSU5UTCkKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIK
KyNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRp
bWVGb3JtYXQuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNp
bmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFs
UnVsZXMuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCIKICNpbmNsdWRl
IDx1bmljb2RlL3Vjb2wuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNpbmNsdWRlIDx1
bmljb2RlL3VudW0uaD4KQEAgLTc5OSw2ICs4MDYsMzEgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1
Y3QKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
ZXZhbCwgbV9ldmFsRnVuY3Rpb24uZ2V0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICAKICNpZiBFTkFCTEUoSU5UTCkKKyAgICBtX2Nv
bGxhdG9yU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVy
PFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAg
IEludGxDb2xsYXRvclByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQ
cm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xsYXRvclByb3Rv
dHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgaW5pdC5zZXQoSW50bENvbGxhdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3RvdHlw
ZSkpOworICAgICAgICB9KTsKKyAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIo
CisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBl
KiBudW1iZXJGb3JtYXRQcm90b3R5cGUgPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFBy
b3RvdHlwZSgpKSk7CisgICAgICAgICAgICBpbml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUp
KTsKKyAgICAgICAgfSk7CisgICAgbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIo
CisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZv
cm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3Jt
YXRQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAgbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5p
bml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0
KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBlID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBl
OjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2Jq
ZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5
cGUpKTsKKyAgICAgICAgfSk7CisKICAgICBJbnRsT2JqZWN0KiBpbnRsID0gSW50bE9iamVjdDo6
Y3JlYXRlKHZtLCBJbnRsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0
UHJvdG90eXBlLmdldCgpKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPkludGwsIGludGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBtX2ludGxPYmplY3Quc2V0KHZtLCB0aGlzLCBp
bnRsKTsKQEAgLTE1NjgsNiArMTYwMCwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAjaWYgRU5BQkxFKElO
VEwpCiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9pbnRsT2JqZWN0KTsKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX2RlZmF1bHRDb2xsYXRvcik7CisgICAgdGhpc09i
amVjdC0+bV9jb2xsYXRvclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0
LT5tX251bWJlckZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0
LT5tX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmpl
Y3QtPm1fcGx1cmFsUnVsZXNTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAjZW5kaWYKICAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwpAQCAtMTg3NCw3
ICsxOTEwLDcgQEAgSW50bENvbGxhdG9yKiBKU0dsb2JhbE9iamVjdDo6ZGVmYXVsdENvbGxhdG9y
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAobV9kZWZhdWx0Q29sbGF0b3IpCiAgICAgICAgIHJl
dHVybiBtX2RlZmF1bHRDb2xsYXRvci5nZXQoKTsKIAotICAgIEludGxDb2xsYXRvciogY29sbGF0
b3IgPSBJbnRsQ29sbGF0b3I6OmNyZWF0ZSh2bSwgaW50bE9iamVjdCgpLT5jb2xsYXRvclN0cnVj
dHVyZSgpKTsKKyAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVh
dGUodm0sIGNvbGxhdG9yU3RydWN0dXJlKCkpOwogICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29s
bGF0b3IoKmV4ZWMsIGpzVW5kZWZpbmVkKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgIG1fZGVmYXVsdENvbGxhdG9yLnNldCh2
bSwgdGhpcywgY29sbGF0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggNTYxMjcyMzk2YmJhNGJlYTk5YWEyOWY1ZWQ3YTIwZmRlMTE2
ZmI0ZC4uN2RkMmY4MjgwNzIwYmY0ZGY4NzIwYmQxZWUxZDY4MGM0Zjg3NTQ5YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzgsNiAr
Mjc4LDEwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogI2lmIEVOQUJMRShJTlRMKQogICAgIFdyaXRlQmFycmllcjxJbnRsT2JqZWN0
PiBtX2ludGxPYmplY3Q7CiAgICAgV3JpdGVCYXJyaWVyPEludGxDb2xsYXRvcj4gbV9kZWZhdWx0
Q29sbGF0b3I7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
Y29sbGF0b3JTdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fbnVtYmVyRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJl
OwogI2VuZGlmCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0
dGVyRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxs
U2V0dGVyRnVuY3Rpb247CkBAIC01ODgsNyArNTkyLDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNJbnRlcm5hbFByb21p
c2VDb25zdHJ1Y3RvciogaW50ZXJuYWxQcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX2ludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoSU5U
TCkKLSAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnRsT2Jq
ZWN0LmdldCgpOyB9CiAgICAgSW50bENvbGxhdG9yKiBkZWZhdWx0Q29sbGF0b3IoRXhlY1N0YXRl
Kik7CiAjZW5kaWYKIApAQCAtNzY2LDYgKzc2OSwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdlYkFz
c2VtYmx5V3JhcHBlckZ1bmN0aW9uU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJBc3Nl
bWJseVdyYXBwZXJGdW5jdGlvblN0cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2Vi
QXNzZW1ibHlUb0pTQ2FsbGVlU3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJBc3NlbWJs
eVRvSlNDYWxsZWVTdHJ1Y3R1cmUuZ2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1C
TFkpCisjaWYgRU5BQkxFKElOVEwpCisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgp
IHsgcmV0dXJuIG1fY29sbGF0b3JTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJl
KiBudW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVy
ZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkg
eyByZXR1cm4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1
Y3R1cmUqIHBsdXJhbFJ1bGVzU3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxlc1N0cnVj
dHVyZS5nZXQodGhpcyk7IH0KKyNlbmRpZiAvLyBFTkFCTEUoSU5UTCkKIAogICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIHJlbW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcAppbmRleCA0YTZkODE5MzJjZGM4MzI5ODYzZDU3YzAyYjNiYTIxYjZhMWQ4NmJk
Li4xY2I5MGRhNTg4OTdjM2NkYmI2NThiNTkzNjVjZDc1NGU1ZWIxNWRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuY3BwCkBAIC04MzksNyArODM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
bG9iYWxGdW5jRGF0ZVRpbWVGb3JtYXQoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSW50bERhdGVUaW1lRm9y
bWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QtPmludGxPYmplY3QoKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAg
SW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwogICAg
IGRhdGVUaW1lRm9ybWF0LT5pbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmV4ZWMsIGV4ZWMtPmFy
Z3VtZW50KDApLCBleGVjLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZG91YmxlIHZhbHVlID0gZXhlYy0+YXJndW1l
bnQoMikudG9OdW1iZXIoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA0M2M2ZTVjMDg1ZWYxMjcxZjY5ZTgzZDg4MWFl
MWY5NWJmODQ1Y2Y2Li43NGY5YzM2ZGQ5YjY3YmVlMTRlNzMwYmQzMzlhODZkMzA4YjdjYzM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5j
cHAKQEAgLTYwMiw3ICs2MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJl
clByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogI2lmIEVOQUJMRShJ
TlRMKQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCk7Ci0gICAgSW50bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51
bWJlckZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGxPYmplY3QoKS0+bnVtYmVy
Rm9ybWF0U3RydWN0dXJlKCkpOworICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9
IEludGxOdW1iZXJGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRT
dHJ1Y3R1cmUoKSk7CiAgICAgbnVtYmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpl
eGVjLCBleGVjLT5hcmd1bWVudCgwKSwgZXhlYy0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpl
eGVjLCB4KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKaW5kZXggMTYxZjg5YzE3YjgyOTNhMDgzODNhZWI4MGI2ODU3OTg0YTU3MWIx
NS4uNTcxMjEyYTVlY2JiZTAzMDAyZmE1MmQxOWM0NWQ1MmIxODFlNWZjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNTE3
LDcgKzE1MTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0xvY2FsZUNvbXBhcmUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBjb2xsYXRvciA9IGdsb2Jh
bE9iamVjdC0+ZGVmYXVsdENvbGxhdG9yKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb2xs
YXRvciA9IEludGxDb2xsYXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGxPYmplY3Qo
KS0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CisgICAgICAgIGNvbGxhdG9yID0gSW50bENvbGxhdG9y
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CiAgICAgICAg
IGNvbGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKmV4ZWMsIGxvY2FsZXMsIG9wdGlvbnMpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362941</attachid>
            <date>2019-02-25 16:12:08 -0800</date>
            <delta_ts>2019-02-25 16:47:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195022-20190225161207.patch</filename>
            <type>text/plain</type>
            <size>24265</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMDU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
ZDlhYjA4ZDhhNjhiMGQ1MWViNzU4Mzg3ZDNlNDA4MmFkYWUzODUwLi45NDIyYjk3NDdiOWVhZDNm
OGRiN2U3MWMwODBmYTQwN2EzMGZmNmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0wMi0yNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE1ha2UgSW50bCBmaWVsZHMgbGF6aWx5LWFsbG9jYXRlZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1MDIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBt
YWtlcyB0aGUgZm9sbG93aW5nIG1lbW9yeSBmb290cHJpbnQgb3B0aW1pemF0aW9uIGluIEludGxP
YmplY3QuCisKKyAgICAgICAgMS4gTWFrZSBJbnRsT2JqZWN0IGZpZWxkcyBpbmNsdWRpbmcgSW50
bC5Db2xsYXRvciBsYXppbHktYWxsbG9jYXRlZCBiZWNhdXNlIHdlIGFscmVhZHkgcmVtb3ZlZCBk
aXJlY3QgcmVmZXJlbmNlcyBmcm9tIEpTIGJ1aWx0aW5zIHRvIHRoZXNlIGNvbnN0cnVjdG9ycyAo
QENvbGxhdG9yIGV0Yy4pLgorCisgICAgICAgIDIuIE1vdmUgTGF6eVByb3BlcnR5PEludGxPYmpl
Y3QsIFN0cnVjdHVyZT4gc3RydWN0dXJlcyBmcm9tIEludGxPYmplY3QgdG8gSlNHbG9iYWxPYmpl
Y3QuIFRoaXMgbWFrZXMgc2l6ZW9mKEludGxPYmplY3QpIHRoZSBzYW1lIHRvIHRoZSBvdGhlciBv
bmVzIG9mIHVzdWFsIHJ1bnRpbWUgT2JqZWN0cywKKyAgICAgICAgICAgYW5kIGRyb3Agb25lIE1h
cmtlZEJsb2NrLgorCisgICAgICAgICogcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5o
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0ZUNvbGxhdG9yQ29u
c3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChKU0M6OmNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6SW50
bE9iamVjdDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpJbnRsT2JqZWN0Ojp2aXNp
dENoaWxkcmVuKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGVmYXVsdENvbGxhdG9yKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojpjb2xsYXRvclN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6ZGF0ZVRp
bWVGb3JtYXRTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGx1cmFs
UnVsZXNTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW50bE9iamVj
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk6CisgICAg
ICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQ
cm90b0Z1bmNUb0xvY2FsZVN0cmluZyk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKToKKwog
MjAxOS0wMi0yNSAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxvQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBdm9pZCBoYXNoaW5nIENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50IHdoZW4gZGVjb2Rpbmcg
Q29tcGFjdFZhcmlhYmxlTWFwOjpIYW5kbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5oCmluZGV4IGMzOGVlMjI3ZTJl
YmMzMWYwNTlkZmNiMDU4YThjMjk4ZjI4MDBlZmYuLjllOGQ0MzY3ZjM5YzNkN2EzMWU5Y2FlMmUy
N2U3M2M4ODJjODIyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
IAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogY29sbGF0b3JTdHJ1Y3R1cmUo
Vk0mIHZtKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3Qodm0pLT5pbnRsT2JqZWN0KCktPmNv
bGxhdG9yU3RydWN0dXJlKCk7IH0KKyAgICBTdHJ1Y3R1cmUqIGNvbGxhdG9yU3RydWN0dXJlKFZN
JiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+Y29sbGF0b3JTdHJ1Y3R1cmUo
KTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEludGxDb2xs
YXRvclByb3RvdHlwZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmgKaW5kZXggZDk3MThlZjU3
MjliNjAxOTgzYmE3ZDY2ZWNhNGFiYzA0NjhhYzAyYi4uOTdjMzQ5NGI3YTdlOTMzZGU1N2RhOWI5
YjVjMDM0ZjU0ZmYzMWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0
Niw3IEBAIGNsYXNzIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yIGZpbmFsIDogcHVibGlj
IEludGVybmFsRnVuY3Rpb24gewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgU3RydWN0dXJl
KiBkYXRlVGltZUZvcm1hdFN0cnVjdHVyZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9i
amVjdCh2bSktPmludGxPYmplY3QoKS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAg
IFN0cnVjdHVyZSogZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoVk0mIHZtKSBjb25zdCB7IHJldHVy
biBnbG9iYWxPYmplY3Qodm0pLT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSW50bERhdGVUaW1lRm9ybWF0UHJv
dG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCmluZGV4IDI2ZTIyOWYzMzUzODRiYjMxMjUy
OGVkMjYyMTU5ZDE5YWM4YjRmZmIuLmRjYzVkYThiYThmMDI1MzlkNTA2M2Q1MzUwMGZkMmY3Mjc1
MTFhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNzIElu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9u
IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3Ry
dWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+aW50bE9iamVj
dCgpLT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKTsgfQorICAgIFN0cnVjdHVyZSogbnVtYmVyRm9y
bWF0U3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZtKS0+bnVt
YmVyRm9ybWF0U3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGUxNzQ5M2FiZjMwN2VjMjFmOTQ4
MzcwZDBlNDUxNDI5MmU1N2EwZDguLmY4OWU1MjNmZWI3NzI3M2RlOGYzMjdhNDU0ZjlkZTlkNDg2
MzhhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3Bw
CkBAIC0zMywyMSArMzMsMTYgQEAKICNpbmNsdWRlICJFcnJvci5oIgogI2luY2x1ZGUgIkZ1bmN0
aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSW50bENhbm9uaWNhbGl6ZUxhbmd1YWdlLmgiCi0j
aW5jbHVkZSAiSW50bENvbGxhdG9yLmgiCiAjaW5jbHVkZSAiSW50bENvbGxhdG9yQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJJbnRsQ29sbGF0b3JQcm90b3R5cGUuaCIKLSNpbmNsdWRlICJJbnRs
RGF0ZVRpbWVGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5oIgotI2luY2x1ZGUg
IkludGxOdW1iZXJGb3JtYXQuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmgiCi0jaW5jbHVkZSAi
SW50bFBsdXJhbFJ1bGVzLmgiCiAjaW5jbHVkZSAiSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3Iu
aCIKICNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKLSNpbmNsdWRlICJMYXp5
UHJvcGVydHlJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAiT2JqZWN0
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgpAQCAtNjgsMjggKzYzLDI4IEBAIHN0
YXRpYyBKU1ZhbHVlIGNyZWF0ZUNvbGxhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCog
b2JqZWN0KQogewogICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVj
dCo+KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxDb2xsYXRvckNvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0
PEludGxDb2xsYXRvclByb3RvdHlwZSo+KGludGxPYmplY3QtPmNvbGxhdG9yU3RydWN0dXJlKCkt
PnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgcmV0dXJuIEludGxDb2xsYXRvckNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIEludGxDb2xsYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwg
anNDYXN0PEludGxDb2xsYXRvclByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+Y29sbGF0b3JTdHJ1
Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUg
Y3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQog
ewogICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+KG9iamVj
dCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3QtPmdsb2Jh
bE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBJbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8
SW50bE51bWJlckZvcm1hdFByb3RvdHlwZSo+KGludGxPYmplY3QtPm51bWJlckZvcm1hdFN0cnVj
dHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworICAgIHJldHVybiBJbnRsTnVtYmVy
Rm9ybWF0Q29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxP
YmplY3QtPm51bWJlckZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkp
OwogfQogCiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZN
JiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBJbnRsT2JqZWN0KiBpbnRsT2JqZWN0ID0g
anNDYXN0PEludGxPYmplY3QqPihvYmplY3QpOwogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBpbnRsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOwotICAgIHJldHVybiBJbnRsRGF0
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUq
PihpbnRsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVP
YmplY3QoKSkpOworICAgIHJldHVybiBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKHZtLCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2Fz
dDxJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmRhdGVUaW1lRm9y
bWF0U3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKIHN0YXRpYyBK
U1ZhbHVlIGNyZWF0ZVBsdXJhbFJ1bGVzQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2Jq
ZWN0KQogewogICAgIEludGxPYmplY3QqIGludGxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+
KG9iamVjdCk7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGludGxPYmplY3Qt
Pmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgcmV0dXJuIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
OjpjcmVhdGUodm0sIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganND
YXN0PEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSo+KGludGxPYmplY3QtPnBsdXJhbFJ1bGVzU3Ry
dWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CisgICAgcmV0dXJuIEludGxQbHVy
YWxSdWxlc0NvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blByb3RvdHlwZSgpKSwganNDYXN0PEludGxQbHVyYWxSdWxlc1Byb3RvdHlwZSo+KGdsb2JhbE9i
amVjdC0+cGx1cmFsUnVsZXNTdHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsK
IH0KIAogfQpAQCAtMTAxLDYgKzk2LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAvKiBTb3VyY2UgZm9y
IEludGxPYmplY3QubHV0LmgKIEBiZWdpbiBpbnRsT2JqZWN0VGFibGUKICAgZ2V0Q2Fub25pY2Fs
TG9jYWxlcyAgIGludGxPYmplY3RGdW5jR2V0Q2Fub25pY2FsTG9jYWxlcyAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDEKKyAgQ29sbGF0b3IgICAgICAgICAgICAgIGNyZWF0ZUNvbGxhdG9y
Q29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sK
KyAgRGF0ZVRpbWVGb3JtYXQgICAgICAgIGNyZWF0ZURhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3Ig
ICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgTnVtYmVyRm9ybWF0ICAg
ICAgICAgIGNyZWF0ZU51bWJlckZvcm1hdENvbnN0cnVjdG9yICAgICAgICAgICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCiAKQEAgLTEyOSwzNSArMTI3LDYgQEAgdm9p
ZCBJbnRsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBtX2Nv
bGxhdG9yU3RydWN0dXJlLmluaXRMYXRlcigKLSAgICAgICAgW10gKGNvbnN0IExhenlQcm9wZXJ0
eTxJbnRsT2JqZWN0LCBTdHJ1Y3R1cmU+OjpJbml0aWFsaXplciYgaW5pdCkgewotICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4oaW5p
dC5vd25lciktPmdsb2JhbE9iamVjdChpbml0LnZtKTsKLSAgICAgICAgICAgIEludGxDb2xsYXRv
clByb3RvdHlwZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNy
ZWF0ZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90
b3R5cGUoKSkpOwotICAgICAgICAgICAgaW5pdC5zZXQoSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1
Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3RvdHlwZSkpOwotICAgICAg
ICB9KTsKLSAgICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCi0gICAgICAgIFtd
IChjb25zdCBMYXp5UHJvcGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPjo6SW5pdGlhbGl6ZXIm
IGluaXQpIHsKLSAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nh
c3Q8SW50bE9iamVjdCo+KGluaXQub3duZXIpLT5nbG9iYWxPYmplY3QoaW5pdC52bSk7Ci0gICAg
ICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5cGUg
PSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0
LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7Ci0gICAgICAgICAg
ICBpbml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7Ci0gICAgbV9k
YXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBMYXp5
UHJvcGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPjo6SW5pdGlhbGl6ZXImIGluaXQpIHsKLSAg
ICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVj
dCo+KGluaXQub3duZXIpLT5nbG9iYWxPYmplY3QoaW5pdC52bSk7Ci0gICAgICAgICAgICBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJvdG90eXBlID0gSW50bERh
dGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRs
RGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxP
YmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGlu
aXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2Jh
bE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7Ci0gICAgbV9w
bHVyYWxSdWxlc1N0cnVjdHVyZS5pbml0TGF0ZXIoCi0gICAgICAgIFtdIChjb25zdCBMYXp5UHJv
cGVydHk8SW50bE9iamVjdCwgU3RydWN0dXJlPjo6SW5pdGlhbGl6ZXImIGluaXQpIHsKLSAgICAg
ICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SW50bE9iamVjdCo+
KGluaXQub3duZXIpLT5nbG9iYWxPYmplY3QoaW5pdC52bSk7Ci0gICAgICAgICAgICBJbnRsUGx1
cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBlID0gSW50bFBsdXJhbFJ1bGVz
UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBJbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9i
amVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKLSAgICAgICAgICAgIGluaXQuc2V0KEludGxQbHVy
YWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcGx1cmFsUnVs
ZXNQcm90b3R5cGUpKTsKLSAgICAgICAgfSk7Ci0KLSAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Q29sbGF0b3IsIGNyZWF0ZUNvbGxhdG9yQ29uc3Ry
dWN0b3Iodm0sIHRoaXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPk51bWJlckZvcm1hdCwgY3JlYXRlTnVtYmVyRm9ybWF0Q29uc3RydWN0b3Iodm0s
IHRoaXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PkRhdGVUaW1lRm9ybWF0LCBjcmVhdGVEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKHZtLCB0aGlz
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwot
CiAgICAgLy8gQ29uc3RydWN0b3IgUHJvcGVydGllcyBvZiB0aGUgSW50bCBPYmplY3QKICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy1jb25zdHJ1Y3Rvci1wcm9wZXJ0
aWVzLW9mLXRoZS1pbnRsLW9iamVjdAogICAgIGlmIChPcHRpb25zOjp1c2VJbnRsUGx1cmFsUnVs
ZXMoKSkKQEAgLTk4MSwxOSArOTUwLDYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBp
bnRsT2JqZWN0RnVuY0dldENhbm9uaWNhbExvY2FsZXMoRXhlY1N0YXRlKiBzdGF0ZSkKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZUFycmF5KTsKIH0KIAotdm9pZCBJbnRsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCi17Ci0g
ICAgSW50bE9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxJbnRsT2JqZWN0Kj4oY2VsbCk7Ci0g
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZvKCkpOwotCi0gICAg
QmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKLQotICAgIHRoaXNPYmpl
Y3QtPm1fY29sbGF0b3JTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7Ci0gICAgdGhpc09iamVjdC0+
bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKLSAgICB0aGlzT2JqZWN0
LT5tX3BsdXJhbFJ1bGVzU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGQxNzAwNTlmZGE2ZGI0NmU4Y2FjNTFmMTI4MjEy
NDJiNjA2ZThhOGUuLjliZmQwODEzMGE4NzYwN2I5ZWY4YjZiZWY2YmUxY2U5MGE3OGU4ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTQ0LDI5ICs0
NCwxOCBAQCBjbGFzcyBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU7CiBjbGFzcyBJbnRsT2JqZWN0
IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1
cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZSB8
IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdDsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3BlcnR5
VGFibGU7CiAKICAgICBzdGF0aWMgSW50bE9iamVjdCogY3JlYXRlKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIFN0cnVjdHVyZSogY29s
bGF0b3JTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NvbGxhdG9yU3RydWN0dXJlLmdldCh0aGlzKTsg
fQotICAgIFN0cnVjdHVyZSogbnVtYmVyRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9udW1i
ZXJGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0gICAgU3RydWN0dXJlKiBkYXRlVGltZUZv
cm1hdFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9Ci0gICAgU3RydWN0dXJlKiBwbHVyYWxSdWxlc1N0cnVjdHVyZSgpIHsgcmV0dXJuIG1f
cGx1cmFsUnVsZXNTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9Ci0KIHByb3RlY3RlZDoKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJik7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwotCiAgICAgSW50bE9iamVjdChWTSYsIFN0
cnVjdHVyZSopOwotICAgIExhenlQcm9wZXJ0eTxJbnRsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29s
bGF0b3JTdHJ1Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEludGxPYmplY3QsIFN0cnVjdHVyZT4g
bV9udW1iZXJGb3JtYXRTdHJ1Y3R1cmU7Ci0gICAgTGF6eVByb3BlcnR5PEludGxPYmplY3QsIFN0
cnVjdHVyZT4gbV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZTsKLSAgICBMYXp5UHJvcGVydHk8SW50
bE9iamVjdCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlOwogfTsKIAogU3RyaW5n
IGRlZmF1bHRMb2NhbGUoRXhlY1N0YXRlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuaAppbmRleCAxNmNi
NDY5NzkwYTFjYWQzMzU2NWJhMjVlMzhjZDI2OWFmMTcwZTdlLi40NTY1MGMyYmE4N2RhMTg2ZTRl
NTBhODRmMjExZGEyYmJmMGRlNjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmgKQEAgLTQ1LDcgKzQ1
LDcgQEAgY2xhc3MgSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50
ZXJuYWxGdW5jdGlvbiB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAgICBTdHJ1Y3R1cmUqIHBs
dXJhbFJ1bGVzU3RydWN0dXJlKFZNJiB2bSkgY29uc3QgeyByZXR1cm4gZ2xvYmFsT2JqZWN0KHZt
KS0+aW50bE9iamVjdCgpLT5wbHVyYWxSdWxlc1N0cnVjdHVyZSgpOyB9CisgICAgU3RydWN0dXJl
KiBwbHVyYWxSdWxlc1N0cnVjdHVyZShWTSYgdm0pIGNvbnN0IHsgcmV0dXJuIGdsb2JhbE9iamVj
dCh2bSktPnBsdXJhbFJ1bGVzU3RydWN0dXJlKCk7IH0KIAogcHJvdGVjdGVkOgogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2Mzg2
NjA0ZWJlNDhlZjM3YjZiYTI2ZDEwZmVhZGEzOWM1MTQ5YWI2Li40OTBkOGNkMGJjZDZkMmQ1Mzc1
NGUxMGFmMDRlMGFhNTVhYzRlMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xNzksNyArMTc5LDE0IEBACiAKICNpZiBFTkFC
TEUoSU5UTCkKICNpbmNsdWRlICJJbnRsQ29sbGF0b3IuaCIKKyNpbmNsdWRlICJJbnRsQ29sbGF0
b3JQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsRGF0ZVRpbWVGb3JtYXQuaCIKKyNpbmNsdWRl
ICJJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuaCIKKyNpbmNsdWRlICJJbnRsTnVtYmVyRm9y
bWF0LmgiCisjaW5jbHVkZSAiSW50bE51bWJlckZvcm1hdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkludGxPYmplY3QuaCIKKyNpbmNsdWRlICJJbnRsUGx1cmFsUnVsZXMuaCIKKyNpbmNsdWRlICJJ
bnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuaCIKICNpbmNsdWRlIDx1bmljb2RlL3Vjb2wuaD4KICNp
bmNsdWRlIDx1bmljb2RlL3VkYXQuaD4KICNpbmNsdWRlIDx1bmljb2RlL3VudW0uaD4KQEAgLTc5
OSw2ICs4MDYsMzEgQEAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPiBqc05hbWUsIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+ZXZhbCwgbV9ldmFsRnVuY3Rpb24u
Z2V0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICAKICNpZiBFTkFCTEUoSU5UTCkKKyAgICBtX2NvbGxhdG9yU3RydWN0dXJlLmluaXRM
YXRlcigKKyAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
KyAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIEludGxDb2xsYXRvclByb3RvdHlw
ZSogY29sbGF0b3JQcm90b3R5cGUgPSBJbnRsQ29sbGF0b3JQcm90b3R5cGU6OmNyZWF0ZShpbml0
LnZtLCBnbG9iYWxPYmplY3QsIEludGxDb2xsYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkp
OworICAgICAgICAgICAgaW5pdC5zZXQoSW50bENvbGxhdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgZ2xvYmFsT2JqZWN0LCBjb2xsYXRvclByb3RvdHlwZSkpOworICAgICAgICB9KTsKKyAg
ICBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7Cisg
ICAgICAgICAgICBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlKiBudW1iZXJGb3JtYXRQcm90b3R5
cGUgPSBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBJbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICBpbml0LnNldChJbnRsTnVtYmVyRm9ybWF0OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBudW1iZXJGb3JtYXRQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisgICAg
bV9kYXRlVGltZUZvcm1hdFN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBJ
bml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7Cisg
ICAgICAgICAgICBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUqIGRhdGVUaW1lRm9ybWF0UHJv
dG90eXBlID0gSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBJbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShp
bml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsK
KyAgICAgICAgICAgIGluaXQuc2V0KEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIGdsb2JhbE9iamVjdCwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUpKTsKKyAgICAg
ICAgfSk7CisgICAgbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lcik7CisgICAgICAgICAgICBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVz
UHJvdG90eXBlID0gSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAg
ICAgICAgICAgIGluaXQuc2V0KEludGxQbHVyYWxSdWxlczo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgcGx1cmFsUnVsZXNQcm90b3R5cGUpKTsKKyAgICAgICAgfSk7CisK
ICAgICBJbnRsT2JqZWN0KiBpbnRsID0gSW50bE9iamVjdDo6Y3JlYXRlKHZtLCBJbnRsT2JqZWN0
OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPkludGws
IGludGwsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKICAgICBtX2ludGxPYmplY3Quc2V0KHZtLCB0aGlzLCBpbnRsKTsKQEAgLTE1NjgsNiArMTYw
MCwxMCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAjaWYgRU5BQkxFKElOVEwpCiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9pbnRsT2JqZWN0KTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX2RlZmF1bHRDb2xsYXRvcik7CisgICAgdGhpc09iamVjdC0+bV9jb2xsYXRvclN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX251bWJlckZvcm1hdFN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX2RhdGVUaW1lRm9ybWF0U3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3QtPm1fcGx1cmFsUnVsZXNTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAjZW5kaWYKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2Jq
ZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVj
dC0+bV9udWxsU2V0dGVyRnVuY3Rpb24pOwpAQCAtMTg3NCw3ICsxOTEwLDcgQEAgSW50bENvbGxh
dG9yKiBKU0dsb2JhbE9iamVjdDo6ZGVmYXVsdENvbGxhdG9yKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAobV9kZWZhdWx0Q29sbGF0b3IpCiAgICAgICAgIHJldHVybiBtX2RlZmF1bHRDb2xsYXRv
ci5nZXQoKTsKIAotICAgIEludGxDb2xsYXRvciogY29sbGF0b3IgPSBJbnRsQ29sbGF0b3I6OmNy
ZWF0ZSh2bSwgaW50bE9iamVjdCgpLT5jb2xsYXRvclN0cnVjdHVyZSgpKTsKKyAgICBJbnRsQ29s
bGF0b3IqIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGNvbGxhdG9yU3RydWN0
dXJlKCkpOwogICAgIGNvbGxhdG9yLT5pbml0aWFsaXplQ29sbGF0b3IoKmV4ZWMsIGpzVW5kZWZp
bmVkKCksIGpzVW5kZWZpbmVkKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogICAgIG1fZGVmYXVsdENvbGxhdG9yLnNldCh2bSwgdGhpcywgY29sbGF0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXgg
NTYxMjcyMzk2YmJhNGJlYTk5YWEyOWY1ZWQ3YTIwZmRlMTE2ZmI0ZC4uN2RkMmY4MjgwNzIwYmY0
ZGY4NzIwYmQxZWUxZDY4MGM0Zjg3NTQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzgsNiArMjc4LDEwIEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogI2lmIEVOQUJM
RShJTlRMKQogICAgIFdyaXRlQmFycmllcjxJbnRsT2JqZWN0PiBtX2ludGxPYmplY3Q7CiAgICAg
V3JpdGVCYXJyaWVyPEludGxDb2xsYXRvcj4gbV9kZWZhdWx0Q29sbGF0b3I7CisgICAgTGF6eVBy
b3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY29sbGF0b3JTdHJ1Y3R1cmU7Cisg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fbnVtYmVyRm9ybWF0
U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X2RhdGVUaW1lRm9ybWF0U3RydWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX3BsdXJhbFJ1bGVzU3RydWN0dXJlOwogI2VuZGlmCiAgICAgV3JpdGVC
YXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CiAgICAgV3Jp
dGVCYXJyaWVyPE51bGxTZXR0ZXJGdW5jdGlvbj4gbV9udWxsU2V0dGVyRnVuY3Rpb247CkBAIC01
ODgsNyArNTkyLDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRW
YXJpYWJsZU9iamVjdCB7CiAgICAgSlNJbnRlcm5hbFByb21pc2VDb25zdHJ1Y3RvciogaW50ZXJu
YWxQcm9taXNlQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2ludGVybmFsUHJvbWlzZUNv
bnN0cnVjdG9yLmdldCgpOyB9CiAKICNpZiBFTkFCTEUoSU5UTCkKLSAgICBJbnRsT2JqZWN0KiBp
bnRsT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pbnRsT2JqZWN0LmdldCgpOyB9CiAgICAgSW50
bENvbGxhdG9yKiBkZWZhdWx0Q29sbGF0b3IoRXhlY1N0YXRlKik7CiAjZW5kaWYKIApAQCAtNzY2
LDYgKzc2OSwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZh
cmlhYmxlT2JqZWN0IHsKICAgICBTdHJ1Y3R1cmUqIHdlYkFzc2VtYmx5V3JhcHBlckZ1bmN0aW9u
U3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJBc3NlbWJseVdyYXBwZXJGdW5jdGlvblN0
cnVjdHVyZS5nZXQoKTsgfQogICAgIFN0cnVjdHVyZSogd2ViQXNzZW1ibHlUb0pTQ2FsbGVlU3Ry
dWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV93ZWJBc3NlbWJseVRvSlNDYWxsZWVTdHJ1Y3R1cmUu
Z2V0KCk7IH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCisjaWYgRU5BQkxFKElOVEwp
CisgICAgU3RydWN0dXJlKiBjb2xsYXRvclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY29sbGF0b3JT
dHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBudW1iZXJGb3JtYXRTdHJ1Y3R1
cmUoKSB7IHJldHVybiBtX251bWJlckZvcm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBT
dHJ1Y3R1cmUqIGRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkgeyByZXR1cm4gbV9kYXRlVGltZUZv
cm1hdFN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHBsdXJhbFJ1bGVzU3Ry
dWN0dXJlKCkgeyByZXR1cm4gbV9wbHVyYWxSdWxlc1N0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyNl
bmRpZiAvLyBFTkFCTEUoSU5UTCkKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVt
b3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIHJl
bW90ZURlYnVnZ2luZ0VuYWJsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA0YTZk
ODE5MzJjZGM4MzI5ODYzZDU3YzAyYjNiYTIxYjZhMWQ4NmJkLi4xY2I5MGRhNTg4OTdjM2NkYmI2
NThiNTkzNjVjZDc1NGU1ZWIxNWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC04MzksNyArODM5
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jRGF0ZVRpbWVGb3Jt
YXQoRXhlY1N0YXRlKiBleGVjKQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCk7Ci0gICAgSW50bERhdGVUaW1lRm9ybWF0KiBkYXRlVGltZUZvcm1hdCA9
IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGxPYmplY3Qo
KS0+ZGF0ZVRpbWVGb3JtYXRTdHJ1Y3R1cmUoKSk7CisgICAgSW50bERhdGVUaW1lRm9ybWF0KiBk
YXRlVGltZUZvcm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmRhdGVUaW1lRm9ybWF0U3RydWN0dXJlKCkpOwogICAgIGRhdGVUaW1lRm9ybWF0LT5pbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoKmV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBleGVjLT5hcmd1
bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CiAgICAgZG91YmxlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQoMikudG9OdW1iZXIoZXhlYyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAppbmRleCA0M2M2ZTVjMDg1ZWYxMjcxZjY5ZTgzZDg4MWFlMWY5NWJmODQ1Y2Y2Li43NGY5YzM2
ZGQ5YjY3YmVlMTRlNzMwYmQzMzlhODZkMzA4YjdjYzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTYwMiw3ICs2MDIsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKIAogI2lmIEVOQUJMRShJTlRMKQogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSW50
bE51bWJlckZvcm1hdCogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmludGxPYmplY3QoKS0+bnVtYmVyRm9ybWF0U3RydWN0dXJlKCkpOwor
ICAgIEludGxOdW1iZXJGb3JtYXQqIG51bWJlckZvcm1hdCA9IEludGxOdW1iZXJGb3JtYXQ6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5udW1iZXJGb3JtYXRTdHJ1Y3R1cmUoKSk7CiAgICAgbnVt
YmVyRm9ybWF0LT5pbml0aWFsaXplTnVtYmVyRm9ybWF0KCpleGVjLCBleGVjLT5hcmd1bWVudCgw
KSwgZXhlYy0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlckZvcm1hdC0+Zm9ybWF0TnVtYmVyKCpleGVjLCB4KSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMTYx
Zjg5YzE3YjgyOTNhMDgzODNhZWI4MGI2ODU3OTg0YTU3MWIxNS4uNTcxMjEyYTVlY2JiZTAzMDAy
ZmE1MmQxOWM0NWQ1MmIxODFlNWZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNTE3LDcgKzE1MTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBjb2xsYXRvciA9IGdsb2JhbE9iamVjdC0+ZGVmYXVsdENvbGxh
dG9yKGV4ZWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb2xsYXRvciA9IEludGxDb2xsYXRvcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmludGxPYmplY3QoKS0+Y29sbGF0b3JTdHJ1Y3R1cmUo
KSk7CisgICAgICAgIGNvbGxhdG9yID0gSW50bENvbGxhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+Y29sbGF0b3JTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGNvbGxhdG9yLT5pbml0aWFsaXpl
Q29sbGF0b3IoKmV4ZWMsIGxvY2FsZXMsIG9wdGlvbnMpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="379546"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>