<?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>234310</bug_id>
          
          <creation_ts>2021-12-14 13:45:27 -0800</creation_ts>
          <short_desc>Split ATK specific code in WPEViewBackends</short_desc>
          <delta_ts>2021-12-15 13:33:35 -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>WPE WebKit</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1824101</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 13:45:27 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824105</commentid>
    <comment_count>1</comment_count>
      <attachid>447155</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 13:52:21 -0800</bug_when>
    <thetext>Created attachment 447155
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824110</commentid>
    <comment_count>2</comment_count>
      <attachid>447158</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 13:58:01 -0800</bug_when>
    <thetext>Created attachment 447158
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824143</commentid>
    <comment_count>3</comment_count>
      <attachid>447167</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 14:58:50 -0800</bug_when>
    <thetext>Created attachment 447167
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824170</commentid>
    <comment_count>4</comment_count>
      <attachid>447173</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 16:19:28 -0800</bug_when>
    <thetext>Created attachment 447173
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824254</commentid>
    <comment_count>5</comment_count>
      <attachid>447204</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 22:27:23 -0800</bug_when>
    <thetext>Created attachment 447204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824256</commentid>
    <comment_count>6</comment_count>
      <attachid>447205</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2021-12-14 22:31:30 -0800</bug_when>
    <thetext>Created attachment 447205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824355</commentid>
    <comment_count>7</comment_count>
      <attachid>447205</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-12-15 08:13:26 -0800</bug_when>
    <thetext>Comment on attachment 447205
Patch

This looks fine to me, but I&apos;ll let a WPE port maintainer give the final r+.

The other way to do it would be to create Tools/wpe/backends/wpe/ViewBackendWPE.cpp as the &quot;WPE port version of the WPE ViewBackend&quot; so that it can contain WPE port-specific stuff separate from the generic libwpe stuff, which might be more typical for us and could include more than just ATK dependencies. But maybe that&apos;s just too confusing. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824527</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-15 13:33:29 -0800</bug_when>
    <thetext>Committed r287105 (245294@main): &lt;https://commits.webkit.org/245294@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447205.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447155</attachid>
            <date>2021-12-14 13:52:21 -0800</date>
            <delta_ts>2021-12-14 13:58:01 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>14148</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCAzYjlhZTQ4ODZiZDEuLjZlNmMwNDEwMDQ3
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtOSw4ICs5LDkgQEAgc2V0KFdQRVRv
b2xpbmdCYWNrZW5kc19TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV1BFVE9PTElOR0JB
Q0tFTkRTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMKICAgICAke1RPT0xT
X0RJUn0vd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCiAgICAgJHtUT09MU19E
SVJ9L3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKLSAgICAke1RPT0xTX0RJUn0vd3BlL2Jh
Y2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKICAgICAke1RPT0xTX0RJUn0v
d3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcAorICAgICR7VE9PTFNfRElSfS93cGUv
YmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcAorICAgICR7VE9PTFNfRElSfS93cGUvYmFj
a2VuZHMvYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKICkKIAogc2V0KFdQRVRv
b2xpbmdCYWNrZW5kc19JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Ub29scy93cGUv
YmFja2VuZHMvVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5k
LmNwcAppbmRleCA0NmU1OGE0N2E1ZWMuLmE1NGYxZjliNTI5NiAxMDA2NDQKLS0tIGEvVG9vbHMv
d3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmll
d0JhY2tlbmQuY3BwCkBAIC0yNSwxMTAgKzI1LDggQEAKIAogI2luY2x1ZGUgIlZpZXdCYWNrZW5k
LmgiCiAKLSNpbmNsdWRlIDxlcG94eS9lZ2wuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8d3BlL2Zkby1lZ2wuaD4KLQotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBI
QVZFX0FDQ0VTU0lCSUxJVFkKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24u
aCIKLSNpbmNsdWRlIDxhdGstYnJpZGdlLmg+Ci0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCi0jaWYgZGVmaW5lZChIQVZFX0FD
Q0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotc3RhdGljIEdIYXNoVGFibGUqIGtl
eUV2ZW50TGlzdGVuZXJzOwotCi1zdHJ1Y3QgS2V5RXZlbnRMaXN0ZW5lciB7Ci0gICAgQXRrS2V5
U25vb3BGdW5jIGZ1bmN0aW9uOwotICAgIGdwb2ludGVyIHVzZXJEYXRhOwotfTsKLQotc3RhdGlj
IHVuc2lnbmVkIGFkZEtleUV2ZW50TGlzdGVuZXIoQXRrS2V5U25vb3BGdW5jIGZ1bmN0aW9uLCBn
cG9pbnRlciB1c2VyRGF0YSkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKSB7Ci0gICAg
ICAgIGtleUV2ZW50TGlzdGVuZXJzID0gZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfZGlyZWN0X2hh
c2gsIGdfZGlyZWN0X2VxdWFsLCBudWxscHRyLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAg
ICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8S2V5RXZlbnRMaXN0ZW5lcio+KGRhdGEpOwotICAgICAg
ICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQga2V5ID0gMDsKLSAgICBrZXkrKzsK
LSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtleUV2ZW50TGlzdGVuZXJzLCBHVUlOVF9UT19QT0lO
VEVSKGtleSksIG5ldyBLZXlFdmVudExpc3RlbmVyIHsgZnVuY3Rpb24sIHVzZXJEYXRhIH0pOwot
Ci0gICAgcmV0dXJuIGtleTsKLX0KLQotc3RhdGljIHZvaWQgcmVtb3ZlS2V5RXZlbnRMaXN0ZW5l
cih1bnNpZ25lZCBrZXkpCi17Ci0gICAgaWYgKCFrZXlFdmVudExpc3RlbmVycykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ19oYXNoX3RhYmxlX3JlbW92ZShrZXlFdmVudExpc3RlbmVycywgR1VJ
TlRfVE9fUE9JTlRFUihrZXkpKTsKLX0KLQotc3RhdGljIHZvaWQgbm90aWZ5QWNjZXNzaWJpbGl0
eUtleUV2ZW50TGlzdGVuZXJzKHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRfZXZlbnQqIGV2ZW50
KQotewotICAgIGlmICgha2V5RXZlbnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEF0a0tleUV2ZW50U3RydWN0IGF0a0V2ZW50OwotICAgIGF0a0V2ZW50LnR5cGUgPSBldmVudC0+
cHJlc3NlZCA/IEFUS19LRVlfRVZFTlRfUFJFU1MgOiBBVEtfS0VZX0VWRU5UX1JFTEVBU0U7Ci0g
ICAgYXRrRXZlbnQuc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzOwotICAgIGF0a0V2ZW50LmtleXZh
bCA9IGV2ZW50LT5rZXlfY29kZTsKLSAgICBhdGtFdmVudC5rZXljb2RlID0gZXZlbnQtPmhhcmR3
YXJlX2tleV9jb2RlOwotICAgIGF0a0V2ZW50LnRpbWVzdGFtcCA9IGV2ZW50LT50aW1lOwotCi0g
ICAgYXRrRXZlbnQuc3RyaW5nID0gbnVsbHB0cjsKLSAgICBzd2l0Y2ggKGF0a0V2ZW50LmtleXZh
bCkgewotICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6Ci0gICAgY2FzZSBXUEVfS0VZX0tQX0Vu
dGVyOgotICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIGF0a0V2ZW50LnN0cmluZyA9
IGdfc3RyZHVwKCJcciIpOwotICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAxOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBhdGtFdmVudC5zdHJp
bmcgPSBnX3N0cmR1cCgiXHg4Iik7Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDE7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIGF0a0V2ZW50LnN0cmlu
ZyA9IGdfc3RyZHVwKCJcdCIpOwotICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAxOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAo
IWF0a0V2ZW50LnN0cmluZykgewotICAgICAgICBhdXRvIHVuaWNvZGVDaGFyYWN0ZXIgPSB3cGVf
a2V5X2NvZGVfdG9fdW5pY29kZShhdGtFdmVudC5rZXl2YWwpOwotICAgICAgICBpZiAodW5pY29k
ZUNoYXJhY3RlcikgewotICAgICAgICAgICAgY2hhciBidWZmZXJbN107Ci0gICAgICAgICAgICBp
bnQgbGVuZ3RoID0gZ191bmljaGFyX3RvX3V0ZjgodW5pY29kZUNoYXJhY3RlciwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKLSAgICAgICAgICAgIHNpemVfdCBi
eXRlc1dyaXR0ZW47Ci0gICAgICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX2xvY2FsZV9mcm9t
X3V0ZjgoYnVmZmVyLCBsZW5ndGgsIG51bGxwdHIsICZieXRlc1dyaXR0ZW4sIG51bGxwdHIpOwot
ICAgICAgICAgICAgYXRrRXZlbnQubGVuZ3RoID0gYnl0ZXNXcml0dGVuOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAgYXRrRXZlbnQubGVu
Z3RoID0gMDsKLSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIiIpOwotICAgIH0K
LQotICAgIEdIYXNoVGFibGVJdGVyIGl0ZXI7Ci0gICAgZ3BvaW50ZXIgdmFsdWU7Ci0gICAgZ19o
YXNoX3RhYmxlX2l0ZXJfaW5pdCgmaXRlciwga2V5RXZlbnRMaXN0ZW5lcnMpOwotICAgIHdoaWxl
IChnX2hhc2hfdGFibGVfaXRlcl9uZXh0KCZpdGVyLCBudWxscHRyLCAmdmFsdWUpKSB7Ci0gICAg
ICAgIGF1dG8qIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8S2V5RXZlbnRMaXN0ZW5lcio+KHZhbHVl
KTsKLSAgICAgICAgbGlzdGVuZXItPmZ1bmN0aW9uKCZhdGtFdmVudCwgbGlzdGVuZXItPnVzZXJE
YXRhKTsKLSAgICB9Ci0KLSAgICBnX2ZyZWUoYXRrRXZlbnQuc3RyaW5nKTsKLX0KLSNlbmRpZgot
CiBWaWV3QmFja2VuZDo6Vmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCkKICAgICA6IG1fd2lkdGgod2lkdGgpCiAgICAgLCBtX2hlaWdodChoZWlnaHQpCkBAIC0xMzgs
NzcgKzM2LDIxIEBAIFZpZXdCYWNrZW5kOjpWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0KQogCiBWaWV3QmFja2VuZDo6flZpZXdCYWNrZW5kKCkgPSBkZWZhdWx0Owog
Ci0KKyNpZiAhKGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJ
VFkpCiB2b2lkIFZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiB7Ci0jaWYg
ZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotICAgIGF1
dG8qIGF0a1V0aWxDbGFzcyA9IEFUS19VVElMX0NMQVNTKGdfdHlwZV9jbGFzc19yZWYoQVRLX1RZ
UEVfVVRJTCkpOwotICAgIGF0a1V0aWxDbGFzcy0+YWRkX2tleV9ldmVudF9saXN0ZW5lciA9IFtd
KEF0a0tleVNub29wRnVuYyBsaXN0ZW5lciwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGd1aW50IHsK
LSAgICAgICAgcmV0dXJuIGFkZEtleUV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIHVzZXJEYXRhKTsK
LSAgICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5yZW1vdmVfa2V5X2V2ZW50X2xpc3RlbmVyID0g
W10oZ3VpbnQga2V5KSB7Ci0gICAgICAgIHJlbW92ZUtleUV2ZW50TGlzdGVuZXIoa2V5KTsKLSAg
ICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5nZXRfcm9vdCA9IFtdKCkgLT4gQXRrT2JqZWN0KiB7
Ci0gICAgICAgIHN0YXRpYyBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSBudWxscHRyOwotICAgICAg
ICBpZiAoIWFjY2Vzc2libGUpCi0gICAgICAgICAgICBhY2Nlc3NpYmxlID0gQVRLX09CSkVDVCh3
ZWJraXRBY2Nlc3NpYmxlQXBwbGljYXRpb25OZXcoKSk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3Np
YmxlOwotICAgIH07Ci0KLSAgICBhdGtVdGlsQ2xhc3MtPmdldF90b29sa2l0X25hbWUgPSBbXSgp
IC0+IGNvbnN0IGdjaGFyKiB7Ci0gICAgICAgIHJldHVybiAiV1BFV2ViS2l0IjsKLSAgICB9Owot
Ci0gICAgYXRrVXRpbENsYXNzLT5nZXRfdG9vbGtpdF92ZXJzaW9uID0gW10oKSAtPiBjb25zdCBn
Y2hhciogewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfTsKLQotICAgIGF0a19icmlkZ2VfYWRh
cHRvcl9pbml0KG51bGxwdHIsIG51bGxwdHIpOwotI2VuZGlmCiB9CiAKIHZvaWQgVmlld0JhY2tl
bmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSh1aW50MzJfdCBwcmV2aW91c0ZsYWdzKQogewot
I2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKLSAg
ICBhdXRvKiBhY2Nlc3NpYmxlID0gYXRrX2dldF9yb290KCk7Ci0gICAgaWYgKCFXRUJLSVRfSVNf
QUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgdWludDMyX3QgZmxhZ3MgPSB3cGVfdmlld19iYWNrZW5kX2dldF9hY3Rpdml0eV9zdGF0ZShi
YWNrZW5kKCkpOwotICAgIHVpbnQzMl90IGNoYW5nZWRGbGFncyA9IHByZXZpb3VzRmxhZ3MgXiBm
bGFnczsKLSAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5f
d2luZG93KQotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNjZXNzaWJs
ZSwgQVRLX1NUQVRFX0FDVElWRSwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9pbl93
aW5kb3cpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV92
aXNpYmxlKQotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNjZXNzaWJs
ZSwgQVRLX1NUQVRFX1ZJU0lCTEUsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlz
aWJsZSk7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQpIHsKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2li
bGUsIEFUS19TVEFURV9GT0NVU0VELCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQpOwotICAgICAgICBpZiAoKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5f
d2luZG93KSAmJiAoZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSkKLSAg
ICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiYWN0aXZhdGUiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2li
bGUsICJkZWFjdGl2YXRlIik7Ci0gICAgfQotI2VuZGlmCiB9CisjZW5kaWYgLy8gIUhBVkUoQUND
RVNTSUJJTElUWSkKIAogdm9pZCBWaWV3QmFja2VuZDo6c2V0SW5wdXRDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPElucHV0Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBtX2lucHV0Q2xpZW50ID0gc3Rk
Ojptb3ZlKGNsaWVudCk7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYg
SEFWRV9BQ0NFU1NJQklMSVRZCi12b2lkIFZpZXdCYWNrZW5kOjpzZXRBY2Nlc3NpYmxlQ2hpbGQo
QXRrT2JqZWN0KiBjaGlsZCkKLXsKLSAgICBhdXRvKiBhY2Nlc3NpYmxlID0gYXRrX2dldF9yb290
KCk7Ci0gICAgaWYgKCFXRUJLSVRfSVNfQUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nlc3NpYmxl
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uU2V0
Q2hpbGQoV0VCS0lUX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSksIGNoaWxkKTsK
LX0KLSNlbmRpZgotCiB2b2lkIFZpZXdCYWNrZW5kOjphZGRBY3Rpdml0eVN0YXRlKHVpbnQzMl90
IGZsYWdzKQogewogICAgIHVpbnQzMl90IHByZXZpb3VzRmxhZ3MgPSB3cGVfdmlld19iYWNrZW5k
X2dldF9hY3Rpdml0eV9zdGF0ZShiYWNrZW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMvYXRrL1Zp
ZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjM3MDJiMGMwMjNjMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGsv
Vmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgor
CisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQor
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCisjaW5jbHVkZSA8YXRr
LWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK3N0
YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKKworc3RydWN0IEtleUV2ZW50TGlz
dGVuZXIgeworICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKKyAgICBncG9pbnRlciB1c2Vy
RGF0YTsKK307CisKK3N0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVyKEF0a0tleVNu
b29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKCFrZXlFdmVu
dExpc3RlbmVycykgeworICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFzaF90YWJsZV9u
ZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwgW10oZ3BvaW50
ZXIgZGF0YSkgeworICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2ZW50TGlzdGVu
ZXIqPihkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIGtl
eSA9IDA7CisgICAga2V5Kys7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlFdmVudExpc3Rl
bmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5lciB7IGZ1bmN0
aW9uLCB1c2VyRGF0YSB9KTsKKworICAgIHJldHVybiBrZXk7Cit9CisKK3N0YXRpYyB2b2lkIHJl
bW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQoreworICAgIGlmICgha2V5RXZlbnRM
aXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaGFzaF90YWJsZV9yZW1vdmUoa2V5
RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Cit9CisKK3N0YXRpYyB2b2lk
IG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3BlX2lucHV0X2tl
eWJvYXJkX2V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsKKyAgICBhdGtF
dmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNTIDogQVRLX0tF
WV9FVkVOVF9SRUxFQVNFOworICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1vZGlmaWVyczsK
KyAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7CisgICAgYXRrRXZlbnQua2V5
Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKKyAgICBhdGtFdmVudC50aW1lc3RhbXAg
PSBldmVudC0+dGltZTsKKworICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7CisgICAgc3dp
dGNoIChhdGtFdmVudC5rZXl2YWwpIHsKKyAgICBjYXNlIFdQRV9LRVlfSVNPX0VudGVyOgorICAg
IGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKKyAgICBjYXNlIFdQRV9LRVlfUmV0dXJuOgorICAgICAg
ICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKKyAgICAgICAgYXRrRXZlbnQubGVu
Z3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToKKyAg
ICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOworICAgICAgICBhdGtFdmVu
dC5sZW5ndGggPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdQRV9LRVlfVGFiOgorICAg
ICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKKyAgICAgICAgYXRrRXZlbnQu
bGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKKyAgICAgICAgYXV0byB1bmlj
b2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQua2V5dmFsKTsK
KyAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGNoYXIgYnVmZmVy
WzddOworICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4KHVuaWNvZGVD
aGFyYWN0ZXIsIGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7Cisg
ICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgICAgICAgICAgYXRrRXZlbnQuc3Ry
aW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRyLCAmYnl0ZXNX
cml0dGVuLCBudWxscHRyKTsKKyAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IGJ5dGVzV3Jp
dHRlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7Cisg
ICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7CisgICAgICAgIGF0a0V2ZW50LnN0cmluZyA9IGdf
c3RyZHVwKCIiKTsKKyAgICB9CisKKyAgICBHSGFzaFRhYmxlSXRlciBpdGVyOworICAgIGdwb2lu
dGVyIHZhbHVlOworICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtleUV2ZW50TGlz
dGVuZXJzKTsKKyAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRlciwgbnVsbHB0
ciwgJnZhbHVlKSkgeworICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEtleUV2
ZW50TGlzdGVuZXIqPih2YWx1ZSk7CisgICAgICAgIGxpc3RlbmVyLT5mdW5jdGlvbigmYXRrRXZl
bnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7CisgICAgfQorCisgICAgZ19mcmVlKGF0a0V2ZW50LnN0
cmluZyk7Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6OmluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkK
K3sKKyAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9DTEFTUyhnX3R5cGVfY2xhc3Nf
cmVmKEFUS19UWVBFX1VUSUwpKTsKKyAgICBhdGtVdGlsQ2xhc3MtPmFkZF9rZXlfZXZlbnRfbGlz
dGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBndWludCB7CisgICAgICAgIHJldHVybiBhZGRLZXlFdmVudExpc3RlbmVyKGxpc3RlbmVyLCB1
c2VyRGF0YSk7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+cmVtb3ZlX2tleV9ldmVudF9s
aXN0ZW5lciA9IFtdKGd1aW50IGtleSkgeworICAgICAgICByZW1vdmVLZXlFdmVudExpc3RlbmVy
KGtleSk7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Jvb3QgPSBbXSgpIC0+IEF0
a09iamVjdCogeworICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQorICAgICAgICAgICAgYWNjZXNzaWJsZSA9IEFU
S19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3KCkpOworICAgICAgICByZXR1
cm4gYWNjZXNzaWJsZTsKKyAgICB9OworCisgICAgYXRrVXRpbENsYXNzLT5nZXRfdG9vbGtpdF9u
YW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogeworICAgICAgICByZXR1cm4gIldQRVdlYktpdCI7
CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRfdmVyc2lvbiA9IFtdKCkg
LT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH07CisKKyAgICBhdGtf
YnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBWaWV3QmFj
a2VuZDo6dXBkYXRlQWNjZXNzaWJpbGl0eVN0YXRlKHVpbnQzMl90IHByZXZpb3VzRmxhZ3MpCit7
CisgICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOworICAgIGlmICghV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3Rh
dGUoYmFja2VuZCgpKTsKKyAgICB1aW50MzJfdCBjaGFuZ2VkRmxhZ3MgPSBwcmV2aW91c0ZsYWdz
IF4gZmxhZ3M7CisgICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdykKKyAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vz
c2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVf
aW5fd2luZG93KTsKKyAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfdmlzaWJsZSkKKyAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vz
c2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X3Zpc2libGUpOworICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9mb2N1c2VkKSB7CisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9mb2N1c2VkKTsKKyAgICAgICAgaWYgKChmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfZm9jdXNlZCkp
CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNjZXNzaWJsZSwgImFjdGl2YXRl
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nl
c3NpYmxlLCAiZGVhY3RpdmF0ZSIpOworICAgIH0KK30KKwordm9pZCBWaWV3QmFja2VuZDo6c2V0
QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCit7CisgICAgYXV0byogYWNjZXNzaWJs
ZSA9IGF0a19nZXRfcm9vdCgpOworICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElD
QVRJT04oYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdEFjY2Vzc2li
bGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vz
c2libGUpLCBjaGlsZCk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYg
LS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNw
cCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGtXZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3Bw
CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2Vi
S2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRz
L2F0a1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uaCBiL1Rvb2xzL3dwZS9iYWNr
ZW5kcy9hdGtXZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uaApzaW1pbGFyaXR5IGluZGV4IDEw
MCUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNh
dGlvbi5oCnJlbmFtZSB0byBUb29scy93cGUvYmFja2VuZHMvYXRrV2ViS2l0QWNjZXNzaWJsZUFw
cGxpY2F0aW9uLmgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447158</attachid>
            <date>2021-12-14 13:58:01 -0800</date>
            <delta_ts>2021-12-14 15:39:03 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>14152</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCAzYjlhZTQ4ODZiZDEuLjZlNmMwNDEwMDQ3
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtOSw4ICs5LDkgQEAgc2V0KFdQRVRv
b2xpbmdCYWNrZW5kc19TT1VSQ0VTCiAgICAgJHtERVJJVkVEX1NPVVJDRVNfV1BFVE9PTElOR0JB
Q0tFTkRTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMKICAgICAke1RPT0xT
X0RJUn0vd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCiAgICAgJHtUT09MU19E
SVJ9L3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKLSAgICAke1RPT0xTX0RJUn0vd3BlL2Jh
Y2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKICAgICAke1RPT0xTX0RJUn0v
d3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcAorICAgICR7VE9PTFNfRElSfS93cGUv
YmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcAorICAgICR7VE9PTFNfRElSfS93cGUvYmFj
a2VuZHMvYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKICkKIAogc2V0KFdQRVRv
b2xpbmdCYWNrZW5kc19JTkNMVURFX0RJUkVDVE9SSUVTCmRpZmYgLS1naXQgYS9Ub29scy93cGUv
YmFja2VuZHMvVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5k
LmNwcAppbmRleCA0NmU1OGE0N2E1ZWMuLmE1NGYxZjliNTI5NiAxMDA2NDQKLS0tIGEvVG9vbHMv
d3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmll
d0JhY2tlbmQuY3BwCkBAIC0yNSwxMTAgKzI1LDggQEAKIAogI2luY2x1ZGUgIlZpZXdCYWNrZW5k
LmgiCiAKLSNpbmNsdWRlIDxlcG94eS9lZ2wuaD4KLSNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8d3BlL2Zkby1lZ2wuaD4KLQotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBI
QVZFX0FDQ0VTU0lCSUxJVFkKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24u
aCIKLSNpbmNsdWRlIDxhdGstYnJpZGdlLmg+Ci0jaW5jbHVkZSA8YXRrL2F0ay5oPgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCi0jaWYgZGVmaW5lZChIQVZFX0FD
Q0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotc3RhdGljIEdIYXNoVGFibGUqIGtl
eUV2ZW50TGlzdGVuZXJzOwotCi1zdHJ1Y3QgS2V5RXZlbnRMaXN0ZW5lciB7Ci0gICAgQXRrS2V5
U25vb3BGdW5jIGZ1bmN0aW9uOwotICAgIGdwb2ludGVyIHVzZXJEYXRhOwotfTsKLQotc3RhdGlj
IHVuc2lnbmVkIGFkZEtleUV2ZW50TGlzdGVuZXIoQXRrS2V5U25vb3BGdW5jIGZ1bmN0aW9uLCBn
cG9pbnRlciB1c2VyRGF0YSkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKSB7Ci0gICAg
ICAgIGtleUV2ZW50TGlzdGVuZXJzID0gZ19oYXNoX3RhYmxlX25ld19mdWxsKGdfZGlyZWN0X2hh
c2gsIGdfZGlyZWN0X2VxdWFsLCBudWxscHRyLCBbXShncG9pbnRlciBkYXRhKSB7Ci0gICAgICAg
ICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8S2V5RXZlbnRMaXN0ZW5lcio+KGRhdGEpOwotICAgICAg
ICB9KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQga2V5ID0gMDsKLSAgICBrZXkrKzsK
LSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KGtleUV2ZW50TGlzdGVuZXJzLCBHVUlOVF9UT19QT0lO
VEVSKGtleSksIG5ldyBLZXlFdmVudExpc3RlbmVyIHsgZnVuY3Rpb24sIHVzZXJEYXRhIH0pOwot
Ci0gICAgcmV0dXJuIGtleTsKLX0KLQotc3RhdGljIHZvaWQgcmVtb3ZlS2V5RXZlbnRMaXN0ZW5l
cih1bnNpZ25lZCBrZXkpCi17Ci0gICAgaWYgKCFrZXlFdmVudExpc3RlbmVycykKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZ19oYXNoX3RhYmxlX3JlbW92ZShrZXlFdmVudExpc3RlbmVycywgR1VJ
TlRfVE9fUE9JTlRFUihrZXkpKTsKLX0KLQotc3RhdGljIHZvaWQgbm90aWZ5QWNjZXNzaWJpbGl0
eUtleUV2ZW50TGlzdGVuZXJzKHN0cnVjdCB3cGVfaW5wdXRfa2V5Ym9hcmRfZXZlbnQqIGV2ZW50
KQotewotICAgIGlmICgha2V5RXZlbnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEF0a0tleUV2ZW50U3RydWN0IGF0a0V2ZW50OwotICAgIGF0a0V2ZW50LnR5cGUgPSBldmVudC0+
cHJlc3NlZCA/IEFUS19LRVlfRVZFTlRfUFJFU1MgOiBBVEtfS0VZX0VWRU5UX1JFTEVBU0U7Ci0g
ICAgYXRrRXZlbnQuc3RhdGUgPSBldmVudC0+bW9kaWZpZXJzOwotICAgIGF0a0V2ZW50LmtleXZh
bCA9IGV2ZW50LT5rZXlfY29kZTsKLSAgICBhdGtFdmVudC5rZXljb2RlID0gZXZlbnQtPmhhcmR3
YXJlX2tleV9jb2RlOwotICAgIGF0a0V2ZW50LnRpbWVzdGFtcCA9IGV2ZW50LT50aW1lOwotCi0g
ICAgYXRrRXZlbnQuc3RyaW5nID0gbnVsbHB0cjsKLSAgICBzd2l0Y2ggKGF0a0V2ZW50LmtleXZh
bCkgewotICAgIGNhc2UgV1BFX0tFWV9JU09fRW50ZXI6Ci0gICAgY2FzZSBXUEVfS0VZX0tQX0Vu
dGVyOgotICAgIGNhc2UgV1BFX0tFWV9SZXR1cm46Ci0gICAgICAgIGF0a0V2ZW50LnN0cmluZyA9
IGdfc3RyZHVwKCJcciIpOwotICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAxOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFdQRV9LRVlfQmFja1NwYWNlOgotICAgICAgICBhdGtFdmVudC5zdHJp
bmcgPSBnX3N0cmR1cCgiXHg4Iik7Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDE7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV1BFX0tFWV9UYWI6Ci0gICAgICAgIGF0a0V2ZW50LnN0cmlu
ZyA9IGdfc3RyZHVwKCJcdCIpOwotICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAxOwotICAgICAg
ICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpZiAo
IWF0a0V2ZW50LnN0cmluZykgewotICAgICAgICBhdXRvIHVuaWNvZGVDaGFyYWN0ZXIgPSB3cGVf
a2V5X2NvZGVfdG9fdW5pY29kZShhdGtFdmVudC5rZXl2YWwpOwotICAgICAgICBpZiAodW5pY29k
ZUNoYXJhY3RlcikgewotICAgICAgICAgICAgY2hhciBidWZmZXJbN107Ci0gICAgICAgICAgICBp
bnQgbGVuZ3RoID0gZ191bmljaGFyX3RvX3V0ZjgodW5pY29kZUNoYXJhY3RlciwgYnVmZmVyKTsK
LSAgICAgICAgICAgIGJ1ZmZlcltsZW5ndGhdID0gJ1wwJzsKLSAgICAgICAgICAgIHNpemVfdCBi
eXRlc1dyaXR0ZW47Ci0gICAgICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX2xvY2FsZV9mcm9t
X3V0ZjgoYnVmZmVyLCBsZW5ndGgsIG51bGxwdHIsICZieXRlc1dyaXR0ZW4sIG51bGxwdHIpOwot
ICAgICAgICAgICAgYXRrRXZlbnQubGVuZ3RoID0gYnl0ZXNXcml0dGVuOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAgYXRrRXZlbnQubGVu
Z3RoID0gMDsKLSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIiIpOwotICAgIH0K
LQotICAgIEdIYXNoVGFibGVJdGVyIGl0ZXI7Ci0gICAgZ3BvaW50ZXIgdmFsdWU7Ci0gICAgZ19o
YXNoX3RhYmxlX2l0ZXJfaW5pdCgmaXRlciwga2V5RXZlbnRMaXN0ZW5lcnMpOwotICAgIHdoaWxl
IChnX2hhc2hfdGFibGVfaXRlcl9uZXh0KCZpdGVyLCBudWxscHRyLCAmdmFsdWUpKSB7Ci0gICAg
ICAgIGF1dG8qIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8S2V5RXZlbnRMaXN0ZW5lcio+KHZhbHVl
KTsKLSAgICAgICAgbGlzdGVuZXItPmZ1bmN0aW9uKCZhdGtFdmVudCwgbGlzdGVuZXItPnVzZXJE
YXRhKTsKLSAgICB9Ci0KLSAgICBnX2ZyZWUoYXRrRXZlbnQuc3RyaW5nKTsKLX0KLSNlbmRpZgot
CiBWaWV3QmFja2VuZDo6Vmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdo
dCkKICAgICA6IG1fd2lkdGgod2lkdGgpCiAgICAgLCBtX2hlaWdodChoZWlnaHQpCkBAIC0xMzgs
NzcgKzM2LDIxIEBAIFZpZXdCYWNrZW5kOjpWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWlu
dDMyX3QgaGVpZ2h0KQogCiBWaWV3QmFja2VuZDo6flZpZXdCYWNrZW5kKCkgPSBkZWZhdWx0Owog
Ci0KKyNpZiAhKGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJ
VFkpCiB2b2lkIFZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNjZXNzaWJpbGl0eSgpCiB7Ci0jaWYg
ZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotICAgIGF1
dG8qIGF0a1V0aWxDbGFzcyA9IEFUS19VVElMX0NMQVNTKGdfdHlwZV9jbGFzc19yZWYoQVRLX1RZ
UEVfVVRJTCkpOwotICAgIGF0a1V0aWxDbGFzcy0+YWRkX2tleV9ldmVudF9saXN0ZW5lciA9IFtd
KEF0a0tleVNub29wRnVuYyBsaXN0ZW5lciwgZ3BvaW50ZXIgdXNlckRhdGEpIC0+IGd1aW50IHsK
LSAgICAgICAgcmV0dXJuIGFkZEtleUV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIHVzZXJEYXRhKTsK
LSAgICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5yZW1vdmVfa2V5X2V2ZW50X2xpc3RlbmVyID0g
W10oZ3VpbnQga2V5KSB7Ci0gICAgICAgIHJlbW92ZUtleUV2ZW50TGlzdGVuZXIoa2V5KTsKLSAg
ICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5nZXRfcm9vdCA9IFtdKCkgLT4gQXRrT2JqZWN0KiB7
Ci0gICAgICAgIHN0YXRpYyBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSBudWxscHRyOwotICAgICAg
ICBpZiAoIWFjY2Vzc2libGUpCi0gICAgICAgICAgICBhY2Nlc3NpYmxlID0gQVRLX09CSkVDVCh3
ZWJraXRBY2Nlc3NpYmxlQXBwbGljYXRpb25OZXcoKSk7Ci0gICAgICAgIHJldHVybiBhY2Nlc3Np
YmxlOwotICAgIH07Ci0KLSAgICBhdGtVdGlsQ2xhc3MtPmdldF90b29sa2l0X25hbWUgPSBbXSgp
IC0+IGNvbnN0IGdjaGFyKiB7Ci0gICAgICAgIHJldHVybiAiV1BFV2ViS2l0IjsKLSAgICB9Owot
Ci0gICAgYXRrVXRpbENsYXNzLT5nZXRfdG9vbGtpdF92ZXJzaW9uID0gW10oKSAtPiBjb25zdCBn
Y2hhciogewotICAgICAgICByZXR1cm4gIiI7Ci0gICAgfTsKLQotICAgIGF0a19icmlkZ2VfYWRh
cHRvcl9pbml0KG51bGxwdHIsIG51bGxwdHIpOwotI2VuZGlmCiB9CiAKIHZvaWQgVmlld0JhY2tl
bmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSh1aW50MzJfdCBwcmV2aW91c0ZsYWdzKQogewot
I2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKLSAg
ICBhdXRvKiBhY2Nlc3NpYmxlID0gYXRrX2dldF9yb290KCk7Ci0gICAgaWYgKCFXRUJLSVRfSVNf
QUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgdWludDMyX3QgZmxhZ3MgPSB3cGVfdmlld19iYWNrZW5kX2dldF9hY3Rpdml0eV9zdGF0ZShi
YWNrZW5kKCkpOwotICAgIHVpbnQzMl90IGNoYW5nZWRGbGFncyA9IHByZXZpb3VzRmxhZ3MgXiBm
bGFnczsKLSAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5f
d2luZG93KQotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNjZXNzaWJs
ZSwgQVRLX1NUQVRFX0FDVElWRSwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9pbl93
aW5kb3cpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV92
aXNpYmxlKQotICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNjZXNzaWJs
ZSwgQVRLX1NUQVRFX1ZJU0lCTEUsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlz
aWJsZSk7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQpIHsKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2li
bGUsIEFUS19TVEFURV9GT0NVU0VELCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQpOwotICAgICAgICBpZiAoKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5f
d2luZG93KSAmJiAoZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSkKLSAg
ICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiYWN0aXZhdGUiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2li
bGUsICJkZWFjdGl2YXRlIik7Ci0gICAgfQotI2VuZGlmCiB9CisjZW5kaWYgLy8gIUhBVkUoQUND
RVNTSUJJTElUWSkKIAogdm9pZCBWaWV3QmFja2VuZDo6c2V0SW5wdXRDbGllbnQoc3RkOjp1bmlx
dWVfcHRyPElucHV0Q2xpZW50PiYmIGNsaWVudCkKIHsKICAgICBtX2lucHV0Q2xpZW50ID0gc3Rk
Ojptb3ZlKGNsaWVudCk7CiB9CiAKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYg
SEFWRV9BQ0NFU1NJQklMSVRZCi12b2lkIFZpZXdCYWNrZW5kOjpzZXRBY2Nlc3NpYmxlQ2hpbGQo
QXRrT2JqZWN0KiBjaGlsZCkKLXsKLSAgICBhdXRvKiBhY2Nlc3NpYmxlID0gYXRrX2dldF9yb290
KCk7Ci0gICAgaWYgKCFXRUJLSVRfSVNfQUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nlc3NpYmxl
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgd2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uU2V0
Q2hpbGQoV0VCS0lUX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSksIGNoaWxkKTsK
LX0KLSNlbmRpZgotCiB2b2lkIFZpZXdCYWNrZW5kOjphZGRBY3Rpdml0eVN0YXRlKHVpbnQzMl90
IGZsYWdzKQogewogICAgIHVpbnQzMl90IHByZXZpb3VzRmxhZ3MgPSB3cGVfdmlld19iYWNrZW5k
X2dldF9hY3Rpdml0eV9zdGF0ZShiYWNrZW5kKCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMvYXRrL1Zp
ZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu
LjM3MDJiMGMwMjNjMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGsv
Vmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgor
CisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQor
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCisjaW5jbHVkZSA8YXRr
LWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKK3N0
YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKKworc3RydWN0IEtleUV2ZW50TGlz
dGVuZXIgeworICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKKyAgICBncG9pbnRlciB1c2Vy
RGF0YTsKK307CisKK3N0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVyKEF0a0tleVNu
b29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKCFrZXlFdmVu
dExpc3RlbmVycykgeworICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFzaF90YWJsZV9u
ZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwgW10oZ3BvaW50
ZXIgZGF0YSkgeworICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2ZW50TGlzdGVu
ZXIqPihkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIGtl
eSA9IDA7CisgICAga2V5Kys7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlFdmVudExpc3Rl
bmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5lciB7IGZ1bmN0
aW9uLCB1c2VyRGF0YSB9KTsKKworICAgIHJldHVybiBrZXk7Cit9CisKK3N0YXRpYyB2b2lkIHJl
bW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQoreworICAgIGlmICgha2V5RXZlbnRM
aXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaGFzaF90YWJsZV9yZW1vdmUoa2V5
RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Cit9CisKK3N0YXRpYyB2b2lk
IG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3BlX2lucHV0X2tl
eWJvYXJkX2V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsKKyAgICBhdGtF
dmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNTIDogQVRLX0tF
WV9FVkVOVF9SRUxFQVNFOworICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1vZGlmaWVyczsK
KyAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7CisgICAgYXRrRXZlbnQua2V5
Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKKyAgICBhdGtFdmVudC50aW1lc3RhbXAg
PSBldmVudC0+dGltZTsKKworICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7CisgICAgc3dp
dGNoIChhdGtFdmVudC5rZXl2YWwpIHsKKyAgICBjYXNlIFdQRV9LRVlfSVNPX0VudGVyOgorICAg
IGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKKyAgICBjYXNlIFdQRV9LRVlfUmV0dXJuOgorICAgICAg
ICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKKyAgICAgICAgYXRrRXZlbnQubGVu
Z3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToKKyAg
ICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOworICAgICAgICBhdGtFdmVu
dC5sZW5ndGggPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdQRV9LRVlfVGFiOgorICAg
ICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKKyAgICAgICAgYXRrRXZlbnQu
bGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKKyAgICAgICAgYXV0byB1bmlj
b2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQua2V5dmFsKTsK
KyAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGNoYXIgYnVmZmVy
WzddOworICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4KHVuaWNvZGVD
aGFyYWN0ZXIsIGJ1ZmZlcik7CisgICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7Cisg
ICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOworICAgICAgICAgICAgYXRrRXZlbnQuc3Ry
aW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRyLCAmYnl0ZXNX
cml0dGVuLCBudWxscHRyKTsKKyAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IGJ5dGVzV3Jp
dHRlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7Cisg
ICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7CisgICAgICAgIGF0a0V2ZW50LnN0cmluZyA9IGdf
c3RyZHVwKCIiKTsKKyAgICB9CisKKyAgICBHSGFzaFRhYmxlSXRlciBpdGVyOworICAgIGdwb2lu
dGVyIHZhbHVlOworICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtleUV2ZW50TGlz
dGVuZXJzKTsKKyAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRlciwgbnVsbHB0
ciwgJnZhbHVlKSkgeworICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEtleUV2
ZW50TGlzdGVuZXIqPih2YWx1ZSk7CisgICAgICAgIGxpc3RlbmVyLT5mdW5jdGlvbigmYXRrRXZl
bnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7CisgICAgfQorCisgICAgZ19mcmVlKGF0a0V2ZW50LnN0
cmluZyk7Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6OmluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkK
K3sKKyAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9DTEFTUyhnX3R5cGVfY2xhc3Nf
cmVmKEFUS19UWVBFX1VUSUwpKTsKKyAgICBhdGtVdGlsQ2xhc3MtPmFkZF9rZXlfZXZlbnRfbGlz
dGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdwb2ludGVyIHVzZXJEYXRhKSAt
PiBndWludCB7CisgICAgICAgIHJldHVybiBhZGRLZXlFdmVudExpc3RlbmVyKGxpc3RlbmVyLCB1
c2VyRGF0YSk7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+cmVtb3ZlX2tleV9ldmVudF9s
aXN0ZW5lciA9IFtdKGd1aW50IGtleSkgeworICAgICAgICByZW1vdmVLZXlFdmVudExpc3RlbmVy
KGtleSk7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Jvb3QgPSBbXSgpIC0+IEF0
a09iamVjdCogeworICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQorICAgICAgICAgICAgYWNjZXNzaWJsZSA9IEFU
S19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3KCkpOworICAgICAgICByZXR1
cm4gYWNjZXNzaWJsZTsKKyAgICB9OworCisgICAgYXRrVXRpbENsYXNzLT5nZXRfdG9vbGtpdF9u
YW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogeworICAgICAgICByZXR1cm4gIldQRVdlYktpdCI7
CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRfdmVyc2lvbiA9IFtdKCkg
LT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJuICIiOworICAgIH07CisKKyAgICBhdGtf
YnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsKK30KKwordm9pZCBWaWV3QmFj
a2VuZDo6dXBkYXRlQWNjZXNzaWJpbGl0eVN0YXRlKHVpbnQzMl90IHByZXZpb3VzRmxhZ3MpCit7
CisgICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOworICAgIGlmICghV0VCS0lU
X0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsK
KworICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3Rh
dGUoYmFja2VuZCgpKTsKKyAgICB1aW50MzJfdCBjaGFuZ2VkRmxhZ3MgPSBwcmV2aW91c0ZsYWdz
IF4gZmxhZ3M7CisgICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdykKKyAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vz
c2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVf
aW5fd2luZG93KTsKKyAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfdmlzaWJsZSkKKyAgICAgICAgYXRrX29iamVjdF9ub3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vz
c2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X3Zpc2libGUpOworICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9mb2N1c2VkKSB7CisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9mb2N1c2VkKTsKKyAgICAgICAgaWYgKChmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfZm9jdXNlZCkp
CisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNjZXNzaWJsZSwgImFjdGl2YXRl
Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nl
c3NpYmxlLCAiZGVhY3RpdmF0ZSIpOworICAgIH0KK30KKwordm9pZCBWaWV3QmFja2VuZDo6c2V0
QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCit7CisgICAgYXV0byogYWNjZXNzaWJs
ZSA9IGF0a19nZXRfcm9vdCgpOworICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElD
QVRJT04oYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdEFjY2Vzc2li
bGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vz
c2libGUpLCBjaGlsZCk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYg
LS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNw
cCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNw
cApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dl
YktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKcmVuYW1lIHRvIFRvb2xzL3dwZS9iYWNrZW5k
cy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMv
d3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2F0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uaApzaW1pbGFyaXR5IGluZGV4
IDEwMCUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBs
aWNhdGlvbi5oCnJlbmFtZSB0byBUb29scy93cGUvYmFja2VuZHMvYXRrL1dlYktpdEFjY2Vzc2li
bGVBcHBsaWNhdGlvbi5oCg==
</data>
<flag name="commit-queue"
          id="472727"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447167</attachid>
            <date>2021-12-14 14:58:50 -0800</date>
            <delta_ts>2021-12-14 16:48:04 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>15259</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCAzYjlhZTQ4ODZiZDEuLjhkMDBlMWY5ZWYw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtOSwxMiArOSwxNCBAQCBzZXQoV1BF
VG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19XUEVUT09MSU5H
QkFDS0VORFNfRElSfS94ZGctc2hlbGwtdW5zdGFibGUtdjYtcHJvdG9jb2wuYwogICAgICR7VE9P
TFNfRElSfS93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKICAgICAke1RPT0xT
X0RJUn0vd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcAotICAgICR7VE9PTFNfRElSfS93cGUv
YmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcAogICAgICR7VE9PTFNfRElS
fS93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuY3BwCisgICAgJHtUT09MU19ESVJ9L3dw
ZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCisgICAgJHtUT09MU19ESVJ9L3dwZS9i
YWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcAogKQogCiBzZXQoV1BF
VG9vbGluZ0JhY2tlbmRzX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0RFUklWRURfU09VUkNF
U19XUEVUT09MSU5HQkFDS0VORFNfRElSfQorICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMK
ICkKIAogc2V0KFdQRVRvb2xpbmdCYWNrZW5kc19TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKaW5kZXggNDZlNThhNDdhNWVjLi5hNTRmMWY5YjUy
OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKKysrIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcApAQCAtMjUsMTEwICsyNSw4IEBACiAK
ICNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8ZXBveHkvZWdsLmg+Ci0jaW5j
bHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdwZS9mZG8tZWdsLmg+Ci0KLSNpZiBkZWZpbmVkKEhB
VkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCi0jaW5jbHVkZSAiV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgotI2luY2x1
ZGUgPGF0ay9hdGsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsK
IAotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkK
LXN0YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKLQotc3RydWN0IEtleUV2ZW50
TGlzdGVuZXIgewotICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKLSAgICBncG9pbnRlciB1
c2VyRGF0YTsKLX07Ci0KLXN0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVyKEF0a0tl
eVNub29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKCFrZXlF
dmVudExpc3RlbmVycykgewotICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFzaF90YWJs
ZV9uZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwgW10oZ3Bv
aW50ZXIgZGF0YSkgewotICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2ZW50TGlz
dGVuZXIqPihkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVk
IGtleSA9IDA7Ci0gICAga2V5Kys7Ci0gICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlFdmVudExp
c3RlbmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5lciB7IGZ1
bmN0aW9uLCB1c2VyRGF0YSB9KTsKLQotICAgIHJldHVybiBrZXk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHJlbW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQotewotICAgIGlmICgha2V5RXZl
bnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaGFzaF90YWJsZV9yZW1vdmUo
a2V5RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3BlX2lucHV0
X2tleWJvYXJkX2V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsKLSAgICBh
dGtFdmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNTIDogQVRL
X0tFWV9FVkVOVF9SRUxFQVNFOwotICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1vZGlmaWVy
czsKLSAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7Ci0gICAgYXRrRXZlbnQu
a2V5Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKLSAgICBhdGtFdmVudC50aW1lc3Rh
bXAgPSBldmVudC0+dGltZTsKLQotICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7Ci0gICAg
c3dpdGNoIChhdGtFdmVudC5rZXl2YWwpIHsKLSAgICBjYXNlIFdQRV9LRVlfSVNPX0VudGVyOgot
ICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKLSAgICBjYXNlIFdQRV9LRVlfUmV0dXJuOgotICAg
ICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKLSAgICAgICAgYXRrRXZlbnQu
bGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToK
LSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOwotICAgICAgICBhdGtF
dmVudC5sZW5ndGggPSAxOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdQRV9LRVlfVGFiOgot
ICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKLSAgICAgICAgYXRrRXZl
bnQubGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAgYXV0byB1
bmljb2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQua2V5dmFs
KTsKLSAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGNoYXIgYnVm
ZmVyWzddOwotICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4KHVuaWNv
ZGVDaGFyYWN0ZXIsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgICAgICAgICAgYXRrRXZlbnQu
c3RyaW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRyLCAmYnl0
ZXNXcml0dGVuLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IGJ5dGVz
V3JpdHRlbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7
Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7Ci0gICAgICAgIGF0a0V2ZW50LnN0cmluZyA9
IGdfc3RyZHVwKCIiKTsKLSAgICB9Ci0KLSAgICBHSGFzaFRhYmxlSXRlciBpdGVyOwotICAgIGdw
b2ludGVyIHZhbHVlOwotICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtleUV2ZW50
TGlzdGVuZXJzKTsKLSAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRlciwgbnVs
bHB0ciwgJnZhbHVlKSkgewotICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEtl
eUV2ZW50TGlzdGVuZXIqPih2YWx1ZSk7Ci0gICAgICAgIGxpc3RlbmVyLT5mdW5jdGlvbigmYXRr
RXZlbnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7Ci0gICAgfQotCi0gICAgZ19mcmVlKGF0a0V2ZW50
LnN0cmluZyk7Ci19Ci0jZW5kaWYKLQogVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9o
ZWlnaHQoaGVpZ2h0KQpAQCAtMTM4LDc3ICszNiwyMSBAQCBWaWV3QmFja2VuZDo6Vmlld0JhY2tl
bmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIAogVmlld0JhY2tlbmQ6On5WaWV3
QmFja2VuZCgpID0gZGVmYXVsdDsKIAotCisjaWYgIShkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElU
WSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZKQogdm9pZCBWaWV3QmFja2VuZDo6aW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKQogewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZF
X0FDQ0VTU0lCSUxJVFkKLSAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9DTEFTUyhn
X3R5cGVfY2xhc3NfcmVmKEFUS19UWVBFX1VUSUwpKTsKLSAgICBhdGtVdGlsQ2xhc3MtPmFkZF9r
ZXlfZXZlbnRfbGlzdGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBndWludCB7Ci0gICAgICAgIHJldHVybiBhZGRLZXlFdmVudExpc3RlbmVy
KGxpc3RlbmVyLCB1c2VyRGF0YSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+cmVtb3Zl
X2tleV9ldmVudF9saXN0ZW5lciA9IFtdKGd1aW50IGtleSkgewotICAgICAgICByZW1vdmVLZXlF
dmVudExpc3RlbmVyKGtleSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Jvb3Qg
PSBbXSgpIC0+IEF0a09iamVjdCogewotICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBhY2Nlc3Np
YmxlID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQotICAgICAgICAgICAgYWNj
ZXNzaWJsZSA9IEFUS19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3KCkpOwot
ICAgICAgICByZXR1cm4gYWNjZXNzaWJsZTsKLSAgICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5n
ZXRfdG9vbGtpdF9uYW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogewotICAgICAgICByZXR1cm4g
IldQRVdlYktpdCI7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRfdmVy
c2lvbiA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKLSAgICAgICAgcmV0dXJuICIiOwotICAgIH07
Ci0KLSAgICBhdGtfYnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFZpZXdCYWNrZW5kOjp1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMy
X3QgcHJldmlvdXNGbGFncykKIHsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYg
SEFWRV9BQ0NFU1NJQklMSVRZCi0gICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgp
OwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdfYmFja2Vu
ZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKLSAgICB1aW50MzJfdCBjaGFuZ2VkRmxh
Z3MgPSBwcmV2aW91c0ZsYWdzIF4gZmxhZ3M7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYgd3BlX3Zp
ZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKLSAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3Bl
X3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSkKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSB7Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5
X3N0YXRlX2NoYW5nZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKTsKLSAgICAgICAgaWYgKChmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZp
dHlfc3RhdGVfZm9jdXNlZCkpCi0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNj
ZXNzaWJsZSwgImFjdGl2YXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiZGVhY3RpdmF0ZSIpOwotICAgIH0KLSNlbmRpZgog
fQorI2VuZGlmIC8vICFIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKIHZvaWQgVmlld0JhY2tlbmQ6OnNl
dElucHV0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnB1dENsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgbV9pbnB1dENsaWVudCA9IHN0ZDo6bW92ZShjbGllbnQpOwogfQogCi0jaWYgZGVmaW5lZChI
QVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotdm9pZCBWaWV3QmFja2Vu
ZDo6c2V0QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCi17Ci0gICAgYXV0byogYWNj
ZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVf
QVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYmtpdEFj
Y2Vzc2libGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJQ0FUSU9O
KGFjY2Vzc2libGUpLCBjaGlsZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBWaWV3QmFja2VuZDo6YWRk
QWN0aXZpdHlTdGF0ZSh1aW50MzJfdCBmbGFncykKIHsKICAgICB1aW50MzJfdCBwcmV2aW91c0Zs
YWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggOTkzODhmYzVkNzNlLi5jMmYzNTUwNzE3M2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3BlL2Zkby5oPgogCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lC
SUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQordHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBB
dGtPYmplY3Q7CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7CiB0eXBlZGVmIHZv
aWQqIEVHTENvbnRleHQ7CiB0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci10eXBlZGVmIHN0cnVj
dCBfQXRrT2JqZWN0IEF0a09iamVjdDsKIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFn
ZTsKIAogI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQpAQCAtNzMsNiArNzYsOSBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMyX3QpOworI2lmIGRlZmluZWQoSEFW
RV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKKyAgICBzdGF0aWMgdm9pZCBu
b3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1dF9rZXli
b2FyZF9ldmVudCogZXZlbnQpOworI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoSW5wdXRQb2lu
dGVyRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50Kik7CiAgICAgdm9pZCBkaXNw
YXRjaElucHV0QXhpc0V2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCopOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9Ub29scy93
cGUvYmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjIyNDU3OWIwNTM5OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L3dwZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJWaWV3QmFja2VuZC5oIgorCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhB
VkVfQUNDRVNTSUJJTElUWQorCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmgiCisjaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNs
dWRlIDxnbGliLmg+CisKK3N0YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKKwor
c3RydWN0IEtleUV2ZW50TGlzdGVuZXIgeworICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsK
KyAgICBncG9pbnRlciB1c2VyRGF0YTsKK307CisKK3N0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVu
dExpc3RlbmVyKEF0a0tleVNub29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7
CisgICAgaWYgKCFrZXlFdmVudExpc3RlbmVycykgeworICAgICAgICBrZXlFdmVudExpc3RlbmVy
cyA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwg
bnVsbHB0ciwgW10oZ3BvaW50ZXIgZGF0YSkgeworICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19j
YXN0PEtleUV2ZW50TGlzdGVuZXIqPihkYXRhKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAg
c3RhdGljIHVuc2lnbmVkIGtleSA9IDA7CisgICAga2V5Kys7CisgICAgZ19oYXNoX3RhYmxlX2lu
c2VydChrZXlFdmVudExpc3RlbmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZl
bnRMaXN0ZW5lciB7IGZ1bmN0aW9uLCB1c2VyRGF0YSB9KTsKKworICAgIHJldHVybiBrZXk7Cit9
CisKK3N0YXRpYyB2b2lkIHJlbW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQorewor
ICAgIGlmICgha2V5RXZlbnRMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKKworICAgIGdfaGFz
aF90YWJsZV9yZW1vdmUoa2V5RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7
Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6Om5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3Rl
bmVycyhzdHJ1Y3Qgd3BlX2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCkKK3sKKyAgICBpZiAo
IWtleUV2ZW50TGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBBdGtLZXlFdmVudFN0
cnVjdCBhdGtFdmVudDsKKyAgICBhdGtFdmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtf
S0VZX0VWRU5UX1BSRVNTIDogQVRLX0tFWV9FVkVOVF9SRUxFQVNFOworICAgIGF0a0V2ZW50LnN0
YXRlID0gZXZlbnQtPm1vZGlmaWVyczsKKyAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5
X2NvZGU7CisgICAgYXRrRXZlbnQua2V5Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsK
KyAgICBhdGtFdmVudC50aW1lc3RhbXAgPSBldmVudC0+dGltZTsKKworICAgIGF0a0V2ZW50LnN0
cmluZyA9IG51bGxwdHI7CisgICAgc3dpdGNoIChhdGtFdmVudC5rZXl2YWwpIHsKKyAgICBjYXNl
IFdQRV9LRVlfSVNPX0VudGVyOgorICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKKyAgICBjYXNl
IFdQRV9LRVlfUmV0dXJuOgorICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIi
KTsKKyAgICAgICAgYXRrRXZlbnQubGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBXUEVfS0VZX0JhY2tTcGFjZToKKyAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAo
Ilx4OCIpOworICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAxOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdQRV9LRVlfVGFiOgorICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgi
XHQiKTsKKyAgICAgICAgYXRrRXZlbnQubGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKCFhdGtFdmVudC5zdHJp
bmcpIHsKKyAgICAgICAgYXV0byB1bmljb2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3Vu
aWNvZGUoYXRrRXZlbnQua2V5dmFsKTsKKyAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsK
KyAgICAgICAgICAgIGNoYXIgYnVmZmVyWzddOworICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdf
dW5pY2hhcl90b191dGY4KHVuaWNvZGVDaGFyYWN0ZXIsIGJ1ZmZlcik7CisgICAgICAgICAgICBi
dWZmZXJbbGVuZ3RoXSA9ICdcMCc7CisgICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwor
ICAgICAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwg
bGVuZ3RoLCBudWxscHRyLCAmYnl0ZXNXcml0dGVuLCBudWxscHRyKTsKKyAgICAgICAgICAgIGF0
a0V2ZW50Lmxlbmd0aCA9IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
ICghYXRrRXZlbnQuc3RyaW5nKSB7CisgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7CisgICAg
ICAgIGF0a0V2ZW50LnN0cmluZyA9IGdfc3RyZHVwKCIiKTsKKyAgICB9CisKKyAgICBHSGFzaFRh
YmxlSXRlciBpdGVyOworICAgIGdwb2ludGVyIHZhbHVlOworICAgIGdfaGFzaF90YWJsZV9pdGVy
X2luaXQoJml0ZXIsIGtleUV2ZW50TGlzdGVuZXJzKTsKKyAgICB3aGlsZSAoZ19oYXNoX3RhYmxl
X2l0ZXJfbmV4dCgmaXRlciwgbnVsbHB0ciwgJnZhbHVlKSkgeworICAgICAgICBhdXRvKiBsaXN0
ZW5lciA9IHN0YXRpY19jYXN0PEtleUV2ZW50TGlzdGVuZXIqPih2YWx1ZSk7CisgICAgICAgIGxp
c3RlbmVyLT5mdW5jdGlvbigmYXRrRXZlbnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7CisgICAgfQor
CisgICAgZ19mcmVlKGF0a0V2ZW50LnN0cmluZyk7Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6Omlu
aXRpYWxpemVBY2Nlc3NpYmlsaXR5KCkKK3sKKyAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtf
VVRJTF9DTEFTUyhnX3R5cGVfY2xhc3NfcmVmKEFUS19UWVBFX1VUSUwpKTsKKyAgICBhdGtVdGls
Q2xhc3MtPmFkZF9rZXlfZXZlbnRfbGlzdGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVu
ZXIsIGdwb2ludGVyIHVzZXJEYXRhKSAtPiBndWludCB7CisgICAgICAgIHJldHVybiBhZGRLZXlF
dmVudExpc3RlbmVyKGxpc3RlbmVyLCB1c2VyRGF0YSk7CisgICAgfTsKKworICAgIGF0a1V0aWxD
bGFzcy0+cmVtb3ZlX2tleV9ldmVudF9saXN0ZW5lciA9IFtdKGd1aW50IGtleSkgeworICAgICAg
ICByZW1vdmVLZXlFdmVudExpc3RlbmVyKGtleSk7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFz
cy0+Z2V0X3Jvb3QgPSBbXSgpIC0+IEF0a09iamVjdCogeworICAgICAgICBzdGF0aWMgQXRrT2Jq
ZWN0KiBhY2Nlc3NpYmxlID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQorICAg
ICAgICAgICAgYWNjZXNzaWJsZSA9IEFUS19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0
aW9uTmV3KCkpOworICAgICAgICByZXR1cm4gYWNjZXNzaWJsZTsKKyAgICB9OworCisgICAgYXRr
VXRpbENsYXNzLT5nZXRfdG9vbGtpdF9uYW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogeworICAg
ICAgICByZXR1cm4gIldQRVdlYktpdCI7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0
X3Rvb2xraXRfdmVyc2lvbiA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJu
ICIiOworICAgIH07CisKKyAgICBhdGtfYnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxs
cHRyKTsKK30KKwordm9pZCBWaWV3QmFja2VuZDo6dXBkYXRlQWNjZXNzaWJpbGl0eVN0YXRlKHVp
bnQzMl90IHByZXZpb3VzRmxhZ3MpCit7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRf
cm9vdCgpOworICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNz
aWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdf
YmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKKyAgICB1aW50MzJfdCBjaGFu
Z2VkRmxhZ3MgPSBwcmV2aW91c0ZsYWdzIF4gZmxhZ3M7CisgICAgaWYgKGNoYW5nZWRGbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykKKyAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYg
d3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKKyAgICBpZiAoY2hhbmdlZEZsYWdz
ICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSkKKyAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUpOworICAgIGlmIChjaGFuZ2VkRmxhZ3Mg
JiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSB7CisgICAgICAgIGF0a19vYmplY3Rf
bm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3Mg
JiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKTsKKyAgICAgICAgaWYgKChmbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdf
YWN0aXZpdHlfc3RhdGVfZm9jdXNlZCkpCisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUoYWNjZXNzaWJsZSwgImFjdGl2YXRlIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiZGVhY3RpdmF0ZSIpOworICAgIH0KK30K
Kwordm9pZCBWaWV3QmFja2VuZDo6c2V0QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQp
Cit7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOworICAgIGlmICghV0VC
S0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIHdlYmtpdEFjY2Vzc2libGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NF
U1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vzc2libGUpLCBjaGlsZCk7Cit9CisKKyNlbmRpZiAvLyBI
QVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZy
b20gVG9vbHMvd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKcmVu
YW1lIHRvIFRvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBs
aWNhdGlvbi5oIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGlj
YXRpb24uaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tl
bmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oCnJlbmFtZSB0byBUb29scy93cGUvYmFj
a2VuZHMvYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oCg==
</data>
<flag name="commit-queue"
          id="472740"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447173</attachid>
            <date>2021-12-14 16:19:28 -0800</date>
            <delta_ts>2021-12-14 22:27:23 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>15330</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCAzYjlhZTQ4ODZiZDEuLjhkMDBlMWY5ZWYw
ZiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtOSwxMiArOSwxNCBAQCBzZXQoV1BF
VG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICAke0RFUklWRURfU09VUkNFU19XUEVUT09MSU5H
QkFDS0VORFNfRElSfS94ZGctc2hlbGwtdW5zdGFibGUtdjYtcHJvdG9jb2wuYwogICAgICR7VE9P
TFNfRElSfS93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKICAgICAke1RPT0xT
X0RJUn0vd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcAotICAgICR7VE9PTFNfRElSfS93cGUv
YmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcAogICAgICR7VE9PTFNfRElS
fS93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuY3BwCisgICAgJHtUT09MU19ESVJ9L3dw
ZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCisgICAgJHtUT09MU19ESVJ9L3dwZS9i
YWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcAogKQogCiBzZXQoV1BF
VG9vbGluZ0JhY2tlbmRzX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0RFUklWRURfU09VUkNF
U19XUEVUT09MSU5HQkFDS0VORFNfRElSfQorICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMK
ICkKIAogc2V0KFdQRVRvb2xpbmdCYWNrZW5kc19TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKaW5kZXggNDZlNThhNDdhNWVjLi5hNTRmMWY5YjUy
OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKKysrIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcApAQCAtMjUsMTEwICsyNSw4IEBACiAK
ICNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8ZXBveHkvZWdsLmg+Ci0jaW5j
bHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdwZS9mZG8tZWdsLmg+Ci0KLSNpZiBkZWZpbmVkKEhB
VkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCi0jaW5jbHVkZSAiV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgotI2luY2x1
ZGUgPGF0ay9hdGsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsK
IAotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkK
LXN0YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKLQotc3RydWN0IEtleUV2ZW50
TGlzdGVuZXIgewotICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKLSAgICBncG9pbnRlciB1
c2VyRGF0YTsKLX07Ci0KLXN0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVyKEF0a0tl
eVNub29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKCFrZXlF
dmVudExpc3RlbmVycykgewotICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFzaF90YWJs
ZV9uZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwgW10oZ3Bv
aW50ZXIgZGF0YSkgewotICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2ZW50TGlz
dGVuZXIqPihkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVk
IGtleSA9IDA7Ci0gICAga2V5Kys7Ci0gICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlFdmVudExp
c3RlbmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5lciB7IGZ1
bmN0aW9uLCB1c2VyRGF0YSB9KTsKLQotICAgIHJldHVybiBrZXk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHJlbW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQotewotICAgIGlmICgha2V5RXZl
bnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaGFzaF90YWJsZV9yZW1vdmUo
a2V5RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3BlX2lucHV0
X2tleWJvYXJkX2V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsKLSAgICBh
dGtFdmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNTIDogQVRL
X0tFWV9FVkVOVF9SRUxFQVNFOwotICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1vZGlmaWVy
czsKLSAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7Ci0gICAgYXRrRXZlbnQu
a2V5Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKLSAgICBhdGtFdmVudC50aW1lc3Rh
bXAgPSBldmVudC0+dGltZTsKLQotICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7Ci0gICAg
c3dpdGNoIChhdGtFdmVudC5rZXl2YWwpIHsKLSAgICBjYXNlIFdQRV9LRVlfSVNPX0VudGVyOgot
ICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKLSAgICBjYXNlIFdQRV9LRVlfUmV0dXJuOgotICAg
ICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKLSAgICAgICAgYXRrRXZlbnQu
bGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToK
LSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOwotICAgICAgICBhdGtF
dmVudC5sZW5ndGggPSAxOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdQRV9LRVlfVGFiOgot
ICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKLSAgICAgICAgYXRrRXZl
bnQubGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAgYXV0byB1
bmljb2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQua2V5dmFs
KTsKLSAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGNoYXIgYnVm
ZmVyWzddOwotICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4KHVuaWNv
ZGVDaGFyYWN0ZXIsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgICAgICAgICAgYXRrRXZlbnQu
c3RyaW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRyLCAmYnl0
ZXNXcml0dGVuLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IGJ5dGVz
V3JpdHRlbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7
Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7Ci0gICAgICAgIGF0a0V2ZW50LnN0cmluZyA9
IGdfc3RyZHVwKCIiKTsKLSAgICB9Ci0KLSAgICBHSGFzaFRhYmxlSXRlciBpdGVyOwotICAgIGdw
b2ludGVyIHZhbHVlOwotICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtleUV2ZW50
TGlzdGVuZXJzKTsKLSAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRlciwgbnVs
bHB0ciwgJnZhbHVlKSkgewotICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEtl
eUV2ZW50TGlzdGVuZXIqPih2YWx1ZSk7Ci0gICAgICAgIGxpc3RlbmVyLT5mdW5jdGlvbigmYXRr
RXZlbnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7Ci0gICAgfQotCi0gICAgZ19mcmVlKGF0a0V2ZW50
LnN0cmluZyk7Ci19Ci0jZW5kaWYKLQogVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9o
ZWlnaHQoaGVpZ2h0KQpAQCAtMTM4LDc3ICszNiwyMSBAQCBWaWV3QmFja2VuZDo6Vmlld0JhY2tl
bmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIAogVmlld0JhY2tlbmQ6On5WaWV3
QmFja2VuZCgpID0gZGVmYXVsdDsKIAotCisjaWYgIShkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElU
WSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZKQogdm9pZCBWaWV3QmFja2VuZDo6aW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKQogewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZF
X0FDQ0VTU0lCSUxJVFkKLSAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9DTEFTUyhn
X3R5cGVfY2xhc3NfcmVmKEFUS19UWVBFX1VUSUwpKTsKLSAgICBhdGtVdGlsQ2xhc3MtPmFkZF9r
ZXlfZXZlbnRfbGlzdGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBndWludCB7Ci0gICAgICAgIHJldHVybiBhZGRLZXlFdmVudExpc3RlbmVy
KGxpc3RlbmVyLCB1c2VyRGF0YSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+cmVtb3Zl
X2tleV9ldmVudF9saXN0ZW5lciA9IFtdKGd1aW50IGtleSkgewotICAgICAgICByZW1vdmVLZXlF
dmVudExpc3RlbmVyKGtleSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Jvb3Qg
PSBbXSgpIC0+IEF0a09iamVjdCogewotICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBhY2Nlc3Np
YmxlID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQotICAgICAgICAgICAgYWNj
ZXNzaWJsZSA9IEFUS19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3KCkpOwot
ICAgICAgICByZXR1cm4gYWNjZXNzaWJsZTsKLSAgICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5n
ZXRfdG9vbGtpdF9uYW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogewotICAgICAgICByZXR1cm4g
IldQRVdlYktpdCI7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRfdmVy
c2lvbiA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKLSAgICAgICAgcmV0dXJuICIiOwotICAgIH07
Ci0KLSAgICBhdGtfYnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFZpZXdCYWNrZW5kOjp1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMy
X3QgcHJldmlvdXNGbGFncykKIHsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYg
SEFWRV9BQ0NFU1NJQklMSVRZCi0gICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgp
OwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdfYmFja2Vu
ZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKLSAgICB1aW50MzJfdCBjaGFuZ2VkRmxh
Z3MgPSBwcmV2aW91c0ZsYWdzIF4gZmxhZ3M7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYgd3BlX3Zp
ZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKLSAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3Bl
X3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSkKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSB7Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5
X3N0YXRlX2NoYW5nZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKTsKLSAgICAgICAgaWYgKChmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZp
dHlfc3RhdGVfZm9jdXNlZCkpCi0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNj
ZXNzaWJsZSwgImFjdGl2YXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiZGVhY3RpdmF0ZSIpOwotICAgIH0KLSNlbmRpZgog
fQorI2VuZGlmIC8vICFIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKIHZvaWQgVmlld0JhY2tlbmQ6OnNl
dElucHV0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnB1dENsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgbV9pbnB1dENsaWVudCA9IHN0ZDo6bW92ZShjbGllbnQpOwogfQogCi0jaWYgZGVmaW5lZChI
QVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotdm9pZCBWaWV3QmFja2Vu
ZDo6c2V0QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCi17Ci0gICAgYXV0byogYWNj
ZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVf
QVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYmtpdEFj
Y2Vzc2libGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJQ0FUSU9O
KGFjY2Vzc2libGUpLCBjaGlsZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBWaWV3QmFja2VuZDo6YWRk
QWN0aXZpdHlTdGF0ZSh1aW50MzJfdCBmbGFncykKIHsKICAgICB1aW50MzJfdCBwcmV2aW91c0Zs
YWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggOTkzODhmYzVkNzNlLi5jMmYzNTUwNzE3M2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3BlL2Zkby5oPgogCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lC
SUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQordHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBB
dGtPYmplY3Q7CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7CiB0eXBlZGVmIHZv
aWQqIEVHTENvbnRleHQ7CiB0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci10eXBlZGVmIHN0cnVj
dCBfQXRrT2JqZWN0IEF0a09iamVjdDsKIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFn
ZTsKIAogI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQpAQCAtNzMsNiArNzYsOSBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMyX3QpOworI2lmIGRlZmluZWQoSEFW
RV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKKyAgICBzdGF0aWMgdm9pZCBu
b3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1dF9rZXli
b2FyZF9ldmVudCogZXZlbnQpOworI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoSW5wdXRQb2lu
dGVyRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50Kik7CiAgICAgdm9pZCBkaXNw
YXRjaElucHV0QXhpc0V2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCopOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9Ub29scy93
cGUvYmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjdkNjdiZjkyMmRjYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L3dwZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJWaWV3QmFja2VuZC5oIgorCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhB
VkVfQUNDRVNTSUJJTElUWQorCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmgiCisjaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNs
dWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgeworCitzdGF0aWMg
R0hhc2hUYWJsZSoga2V5RXZlbnRMaXN0ZW5lcnM7CisKK3N0cnVjdCBLZXlFdmVudExpc3RlbmVy
IHsKKyAgICBBdGtLZXlTbm9vcEZ1bmMgZnVuY3Rpb247CisgICAgZ3BvaW50ZXIgdXNlckRhdGE7
Cit9OworCitzdGF0aWMgdW5zaWduZWQgYWRkS2V5RXZlbnRMaXN0ZW5lcihBdGtLZXlTbm9vcEZ1
bmMgZnVuY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGlmICgha2V5RXZlbnRMaXN0
ZW5lcnMpIHsKKyAgICAgICAga2V5RXZlbnRMaXN0ZW5lcnMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1
bGwoZ19kaXJlY3RfaGFzaCwgZ19kaXJlY3RfZXF1YWwsIG51bGxwdHIsIFtdKGdwb2ludGVyIGRh
dGEpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxLZXlFdmVudExpc3RlbmVyKj4o
ZGF0YSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBrZXkgPSAw
OworICAgIGtleSsrOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5RXZlbnRMaXN0ZW5lcnMs
IEdVSU5UX1RPX1BPSU5URVIoa2V5KSwgbmV3IEtleUV2ZW50TGlzdGVuZXIgeyBmdW5jdGlvbiwg
dXNlckRhdGEgfSk7CisKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgdm9pZCByZW1vdmVL
ZXlFdmVudExpc3RlbmVyKHVuc2lnbmVkIGtleSkKK3sKKyAgICBpZiAoIWtleUV2ZW50TGlzdGVu
ZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2hhc2hfdGFibGVfcmVtb3ZlKGtleUV2ZW50
TGlzdGVuZXJzLCBHVUlOVF9UT19QT0lOVEVSKGtleSkpOworfQorCit2b2lkIFZpZXdCYWNrZW5k
Ojpub3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1dF9r
ZXlib2FyZF9ldmVudCogZXZlbnQpCit7CisgICAgaWYgKCFrZXlFdmVudExpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQXRrS2V5RXZlbnRTdHJ1Y3QgYXRrRXZlbnQ7CisgICAgYXRr
RXZlbnQudHlwZSA9IGV2ZW50LT5wcmVzc2VkID8gQVRLX0tFWV9FVkVOVF9QUkVTUyA6IEFUS19L
RVlfRVZFTlRfUkVMRUFTRTsKKyAgICBhdGtFdmVudC5zdGF0ZSA9IGV2ZW50LT5tb2RpZmllcnM7
CisgICAgYXRrRXZlbnQua2V5dmFsID0gZXZlbnQtPmtleV9jb2RlOworICAgIGF0a0V2ZW50Lmtl
eWNvZGUgPSBldmVudC0+aGFyZHdhcmVfa2V5X2NvZGU7CisgICAgYXRrRXZlbnQudGltZXN0YW1w
ID0gZXZlbnQtPnRpbWU7CisKKyAgICBhdGtFdmVudC5zdHJpbmcgPSBudWxscHRyOworICAgIHN3
aXRjaCAoYXRrRXZlbnQua2V5dmFsKSB7CisgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKKyAg
ICBjYXNlIFdQRV9LRVlfS1BfRW50ZXI6CisgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKKyAgICAg
ICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlxyIik7CisgICAgICAgIGF0a0V2ZW50Lmxl
bmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Cisg
ICAgICAgIGF0a0V2ZW50LnN0cmluZyA9IGdfc3RyZHVwKCJceDgiKTsKKyAgICAgICAgYXRrRXZl
bnQubGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXUEVfS0VZX1RhYjoKKyAg
ICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx0Iik7CisgICAgICAgIGF0a0V2ZW50
Lmxlbmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7CisgICAgICAgIGF1dG8gdW5p
Y29kZUNoYXJhY3RlciA9IHdwZV9rZXlfY29kZV90b191bmljb2RlKGF0a0V2ZW50LmtleXZhbCk7
CisgICAgICAgIGlmICh1bmljb2RlQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBjaGFyIGJ1ZmZl
cls3XTsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBnX3VuaWNoYXJfdG9fdXRmOCh1bmljb2Rl
Q2hhcmFjdGVyLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOwor
ICAgICAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgICAgIGF0a0V2ZW50LnN0
cmluZyA9IGdfbG9jYWxlX2Zyb21fdXRmOChidWZmZXIsIGxlbmd0aCwgbnVsbHB0ciwgJmJ5dGVz
V3JpdHRlbiwgbnVsbHB0cik7CisgICAgICAgICAgICBhdGtFdmVudC5sZW5ndGggPSBieXRlc1dy
aXR0ZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWF0a0V2ZW50LnN0cmluZykgewor
ICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAwOworICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBn
X3N0cmR1cCgiIik7CisgICAgfQorCisgICAgR0hhc2hUYWJsZUl0ZXIgaXRlcjsKKyAgICBncG9p
bnRlciB2YWx1ZTsKKyAgICBnX2hhc2hfdGFibGVfaXRlcl9pbml0KCZpdGVyLCBrZXlFdmVudExp
c3RlbmVycyk7CisgICAgd2hpbGUgKGdfaGFzaF90YWJsZV9pdGVyX25leHQoJml0ZXIsIG51bGxw
dHIsICZ2YWx1ZSkpIHsKKyAgICAgICAgYXV0byogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxLZXlF
dmVudExpc3RlbmVyKj4odmFsdWUpOworICAgICAgICBsaXN0ZW5lci0+ZnVuY3Rpb24oJmF0a0V2
ZW50LCBsaXN0ZW5lci0+dXNlckRhdGEpOworICAgIH0KKworICAgIGdfZnJlZShhdGtFdmVudC5z
dHJpbmcpOworfQorCit2b2lkIFZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNjZXNzaWJpbGl0eSgp
Cit7CisgICAgYXV0byogYXRrVXRpbENsYXNzID0gQVRLX1VUSUxfQ0xBU1MoZ190eXBlX2NsYXNz
X3JlZihBVEtfVFlQRV9VVElMKSk7CisgICAgYXRrVXRpbENsYXNzLT5hZGRfa2V5X2V2ZW50X2xp
c3RlbmVyID0gW10oQXRrS2V5U25vb3BGdW5jIGxpc3RlbmVyLCBncG9pbnRlciB1c2VyRGF0YSkg
LT4gZ3VpbnQgeworICAgICAgICByZXR1cm4gYWRkS2V5RXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlckRhdGEpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPnJlbW92ZV9rZXlfZXZlbnRf
bGlzdGVuZXIgPSBbXShndWludCBrZXkpIHsKKyAgICAgICAgcmVtb3ZlS2V5RXZlbnRMaXN0ZW5l
cihrZXkpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF9yb290ID0gW10oKSAtPiBB
dGtPYmplY3QqIHsKKyAgICAgICAgc3RhdGljIEF0a09iamVjdCogYWNjZXNzaWJsZSA9IG51bGxw
dHI7CisgICAgICAgIGlmICghYWNjZXNzaWJsZSkKKyAgICAgICAgICAgIGFjY2Vzc2libGUgPSBB
VEtfT0JKRUNUKHdlYmtpdEFjY2Vzc2libGVBcHBsaWNhdGlvbk5ldygpKTsKKyAgICAgICAgcmV0
dXJuIGFjY2Vzc2libGU7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRf
bmFtZSA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJuICJXUEVXZWJLaXQi
OworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF90b29sa2l0X3ZlcnNpb24gPSBbXSgp
IC0+IGNvbnN0IGdjaGFyKiB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9OworCisgICAgYXRr
X2JyaWRnZV9hZGFwdG9yX2luaXQobnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVmlld0Jh
Y2tlbmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSh1aW50MzJfdCBwcmV2aW91c0ZsYWdzKQor
eworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAoIVdFQktJ
VF9JU19BQ0NFU1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICByZXR1cm47
CisKKyAgICB1aW50MzJfdCBmbGFncyA9IHdwZV92aWV3X2JhY2tlbmRfZ2V0X2FjdGl2aXR5X3N0
YXRlKGJhY2tlbmQoKSk7CisgICAgdWludDMyX3QgY2hhbmdlZEZsYWdzID0gcHJldmlvdXNGbGFn
cyBeIGZsYWdzOworICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9pbl93aW5kb3cpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfQUNUSVZFLCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdyk7CisgICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0
YXRlX3Zpc2libGUpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfVklTSUJMRSwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV92aXNpYmxlKTsKKyAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfZm9jdXNlZCkgeworICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNj
ZXNzaWJsZSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfZm9jdXNlZCk7CisgICAgICAgIGlmICgoZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9pbl93aW5kb3cpICYmIChmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQp
KQorICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2libGUsICJhY3RpdmF0
ZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNj
ZXNzaWJsZSwgImRlYWN0aXZhdGUiKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6OnNl
dEFjY2Vzc2libGVDaGlsZChBdGtPYmplY3QqIGNoaWxkKQoreworICAgIGF1dG8qIGFjY2Vzc2li
bGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAoIVdFQktJVF9JU19BQ0NFU1NJQkxFX0FQUExJ
Q0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRBY2Nlc3Np
YmxlQXBwbGljYXRpb25TZXRDaGlsZChXRUJLSVRfQUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nl
c3NpYmxlKSwgY2hpbGQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMK
KworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9i
YWNrZW5kcy9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvd3BlL2JhY2tl
bmRzL2F0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwCnNpbWlsYXJpdHkgaW5kZXgg
MTAwJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmNwcApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9XZWJLaXRBY2Nlc3Np
YmxlQXBwbGljYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmggYi9Ub29scy93cGUvYmFja2VuZHMvYXRrL1dlYktpdEFj
Y2Vzc2libGVBcHBsaWNhdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBU
b29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgKcmVuYW1lIHRv
IFRvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447204</attachid>
            <date>2021-12-14 22:27:23 -0800</date>
            <delta_ts>2021-12-14 22:52:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>17160</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMGZk
OWM1Y2Q5MzYuLjIyNjFiYTVlM2YxMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDIxLTEyLTE0ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgU3BsaXQgQVRLIHNwZWNpZmlj
IGNvZGUgaW4gV1BFVmlld0JhY2tlbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIEFUSyBzcGVjaWZpYyBjb2RlIGluIFdQRVZpZXdCYWNrZW5k
cyBpbnRvIHRoZSBhdGsgZGlyZWN0b3J5LiBUaGlzIHNwbGl0cworICAgICAgICBWaWV3QmFja2Vu
ZCdzIGltcGxlbWVudGF0aW9uIGludG8gdHdvIGZpbGVzIHdpdGggQVRLIHNwZWNpZmljIGNvZGUg
bWlncmF0ZWQgdG8KKyAgICAgICAgYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcC4gVGhlIGNvZGUgaW4g
V2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uIGlzIGFsbCBBVEsgc3BlY2lmaWMgc28KKyAgICAg
ICAgaXRzIGNvbXBsZXRlbHkgbW92ZWQgaW50byB0aGUgYXRrIGRpcmVjdG9yeS4KKworICAgICAg
ICAqIHdwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiB3cGUvYmFja2Vu
ZHMvVmlld0JhY2tlbmQuY3BwOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpWaWV3QmFj
a2VuZDo6aW5pdGlhbGl6ZUFjY2Vzc2liaWxpdHkpOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tl
bmRzOjpWaWV3QmFja2VuZDo6dXBkYXRlQWNjZXNzaWJpbGl0eVN0YXRlKToKKyAgICAgICAgKFdQ
RVRvb2xpbmdCYWNrZW5kczo6YWRkS2V5RXZlbnRMaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAg
IChXUEVUb29saW5nQmFja2VuZHM6OnJlbW92ZUtleUV2ZW50TGlzdGVuZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpub3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRM
aXN0ZW5lcnMpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpWaWV3QmFj
a2VuZDo6c2V0QWNjZXNzaWJsZUNoaWxkKTogRGVsZXRlZC4KKyAgICAgICAgKiB3cGUvYmFja2Vu
ZHMvVmlld0JhY2tlbmQuaDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5k
QXRrLmNwcDogQ29waWVkIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcC4K
KyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6YWRkS2V5RXZlbnRMaXN0ZW5lcik6CisgICAg
ICAgIChXUEVUb29saW5nQmFja2VuZHM6OnJlbW92ZUtleUV2ZW50TGlzdGVuZXIpOgorICAgICAg
ICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpWaWV3QmFja2VuZDo6bm90aWZ5QWNjZXNzaWJpbGl0eUtl
eUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tl
bmQ6OmluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5k
czo6Vmlld0JhY2tlbmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChXUEVU
b29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kOjpzZXRBY2Nlc3NpYmxlQ2hpbGQpOgorICAgICAg
ICAqIHdwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcDogUmVu
YW1lZCBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24u
Y3BwLgorICAgICAgICAqIHdwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0
aW9uLmg6IFJlbmFtZWQgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFw
cGxpY2F0aW9uLmguCisKIDIwMjEtMTItMTQgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KIAogICAgICAgICBbQ01ha2VdIE1vZGVybml6ZSBXUEVUb29saW5nQmFja2VuZApk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMv
d3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDJjODAzNzViM2RlMy4uOTc3NjZh
ZjgzODVjIDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUuY21ha2UK
KysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05LDYgKzksMTIg
QEAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BVQkxJQ19IRUFERVJTCiAKIGxpc3Qo
QVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19TT1VSQ0VTCiAgICAgJHtXUEVUb29saW5nQmFja2Vu
ZHNfREVSSVZFRF9TT1VSQ0VTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMK
KyAgICBhdGsvVmlld0JhY2tlbmRBdGsuY3BwCisgICAgYXRrL1dlYktpdEFjY2Vzc2libGVBcHBs
aWNhdGlvbi5jcHAKKykKKworbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVf
SU5DTFVERV9ESVJFQ1RPUklFUworICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCiAp
CiAKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19TWVNURU1fSU5DTFVERV9ESVJFQ1RP
UklFUwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcCBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKaW5kZXggNDZlNThhNDdhNWVjLi5hNTRm
MWY5YjUyOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAK
KysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcApAQCAtMjUsMTEwICsyNSw4
IEBACiAKICNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8ZXBveHkvZWdsLmg+
Ci0jaW5jbHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdwZS9mZG8tZWdsLmg+Ci0KLSNpZiBkZWZp
bmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCi0jaW5jbHVkZSAi
V2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgot
I2luY2x1ZGUgPGF0ay9hdGsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tl
bmRzIHsKIAotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lC
SUxJVFkKLXN0YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKLQotc3RydWN0IEtl
eUV2ZW50TGlzdGVuZXIgewotICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKLSAgICBncG9p
bnRlciB1c2VyRGF0YTsKLX07Ci0KLXN0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVy
KEF0a0tleVNub29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYg
KCFrZXlFdmVudExpc3RlbmVycykgewotICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFz
aF90YWJsZV9uZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwg
W10oZ3BvaW50ZXIgZGF0YSkgewotICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2
ZW50TGlzdGVuZXIqPihkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVu
c2lnbmVkIGtleSA9IDA7Ci0gICAga2V5Kys7Ci0gICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlF
dmVudExpc3RlbmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5l
ciB7IGZ1bmN0aW9uLCB1c2VyRGF0YSB9KTsKLQotICAgIHJldHVybiBrZXk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHJlbW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQotewotICAgIGlmICgh
a2V5RXZlbnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaGFzaF90YWJsZV9y
ZW1vdmUoa2V5RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Ci19Ci0KLXN0
YXRpYyB2b2lkIG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3Bl
X2lucHV0X2tleWJvYXJkX2V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVu
ZXJzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsK
LSAgICBhdGtFdmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNT
IDogQVRLX0tFWV9FVkVOVF9SRUxFQVNFOwotICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1v
ZGlmaWVyczsKLSAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7Ci0gICAgYXRr
RXZlbnQua2V5Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKLSAgICBhdGtFdmVudC50
aW1lc3RhbXAgPSBldmVudC0+dGltZTsKLQotICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7
Ci0gICAgc3dpdGNoIChhdGtFdmVudC5rZXl2YWwpIHsKLSAgICBjYXNlIFdQRV9LRVlfSVNPX0Vu
dGVyOgotICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKLSAgICBjYXNlIFdQRV9LRVlfUmV0dXJu
OgotICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKLSAgICAgICAgYXRr
RXZlbnQubGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXUEVfS0VZX0JhY2tT
cGFjZToKLSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOwotICAgICAg
ICBhdGtFdmVudC5sZW5ndGggPSAxOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdQRV9LRVlf
VGFiOgotICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKLSAgICAgICAg
YXRrRXZlbnQubGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAg
YXV0byB1bmljb2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQu
a2V5dmFsKTsKLSAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGNo
YXIgYnVmZmVyWzddOwotICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4
KHVuaWNvZGVDaGFyYWN0ZXIsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9
ICdcMCc7Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgICAgICAgICAgYXRr
RXZlbnQuc3RyaW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRy
LCAmYnl0ZXNXcml0dGVuLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9
IGJ5dGVzV3JpdHRlbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghYXRrRXZlbnQuc3Ry
aW5nKSB7Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7Ci0gICAgICAgIGF0a0V2ZW50LnN0
cmluZyA9IGdfc3RyZHVwKCIiKTsKLSAgICB9Ci0KLSAgICBHSGFzaFRhYmxlSXRlciBpdGVyOwot
ICAgIGdwb2ludGVyIHZhbHVlOwotICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtl
eUV2ZW50TGlzdGVuZXJzKTsKLSAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRl
ciwgbnVsbHB0ciwgJnZhbHVlKSkgewotICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEtleUV2ZW50TGlzdGVuZXIqPih2YWx1ZSk7Ci0gICAgICAgIGxpc3RlbmVyLT5mdW5jdGlv
bigmYXRrRXZlbnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7Ci0gICAgfQotCi0gICAgZ19mcmVlKGF0
a0V2ZW50LnN0cmluZyk7Ci19Ci0jZW5kaWYKLQogVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVp
bnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAg
ICwgbV9oZWlnaHQoaGVpZ2h0KQpAQCAtMTM4LDc3ICszNiwyMSBAQCBWaWV3QmFja2VuZDo6Vmll
d0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIAogVmlld0JhY2tlbmQ6
On5WaWV3QmFja2VuZCgpID0gZGVmYXVsdDsKIAotCisjaWYgIShkZWZpbmVkKEhBVkVfQUNDRVNT
SUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZKQogdm9pZCBWaWV3QmFja2VuZDo6aW5pdGlh
bGl6ZUFjY2Vzc2liaWxpdHkoKQogewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAm
JiBIQVZFX0FDQ0VTU0lCSUxJVFkKLSAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9D
TEFTUyhnX3R5cGVfY2xhc3NfcmVmKEFUS19UWVBFX1VUSUwpKTsKLSAgICBhdGtVdGlsQ2xhc3Mt
PmFkZF9rZXlfZXZlbnRfbGlzdGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdw
b2ludGVyIHVzZXJEYXRhKSAtPiBndWludCB7Ci0gICAgICAgIHJldHVybiBhZGRLZXlFdmVudExp
c3RlbmVyKGxpc3RlbmVyLCB1c2VyRGF0YSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+
cmVtb3ZlX2tleV9ldmVudF9saXN0ZW5lciA9IFtdKGd1aW50IGtleSkgewotICAgICAgICByZW1v
dmVLZXlFdmVudExpc3RlbmVyKGtleSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0
X3Jvb3QgPSBbXSgpIC0+IEF0a09iamVjdCogewotICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBh
Y2Nlc3NpYmxlID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQotICAgICAgICAg
ICAgYWNjZXNzaWJsZSA9IEFUS19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3
KCkpOwotICAgICAgICByZXR1cm4gYWNjZXNzaWJsZTsKLSAgICB9OwotCi0gICAgYXRrVXRpbENs
YXNzLT5nZXRfdG9vbGtpdF9uYW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogewotICAgICAgICBy
ZXR1cm4gIldQRVdlYktpdCI7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xr
aXRfdmVyc2lvbiA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKLSAgICAgICAgcmV0dXJuICIiOwot
ICAgIH07Ci0KLSAgICBhdGtfYnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsK
LSNlbmRpZgogfQogCiB2b2lkIFZpZXdCYWNrZW5kOjp1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUo
dWludDMyX3QgcHJldmlvdXNGbGFncykKIHsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElU
WSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCi0gICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRf
cm9vdCgpOwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNz
aWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdf
YmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKLSAgICB1aW50MzJfdCBjaGFu
Z2VkRmxhZ3MgPSBwcmV2aW91c0ZsYWdzIF4gZmxhZ3M7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykKLSAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYg
d3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKLSAgICBpZiAoY2hhbmdlZEZsYWdz
ICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSkKLSAgICAgICAgYXRrX29iamVjdF9u
b3RpZnlfc3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3Mg
JiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSB7Ci0gICAgICAgIGF0a19vYmplY3Rf
bm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3Mg
JiB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKTsKLSAgICAgICAgaWYgKChmbGFncyAm
IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdf
YWN0aXZpdHlfc3RhdGVfZm9jdXNlZCkpCi0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUoYWNjZXNzaWJsZSwgImFjdGl2YXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiZGVhY3RpdmF0ZSIpOwotICAgIH0KLSNl
bmRpZgogfQorI2VuZGlmIC8vICFIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKIHZvaWQgVmlld0JhY2tl
bmQ6OnNldElucHV0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnB1dENsaWVudD4mJiBjbGllbnQp
CiB7CiAgICAgbV9pbnB1dENsaWVudCA9IHN0ZDo6bW92ZShjbGllbnQpOwogfQogCi0jaWYgZGVm
aW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotdm9pZCBWaWV3
QmFja2VuZDo6c2V0QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCi17Ci0gICAgYXV0
byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VT
U0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdl
YmtpdEFjY2Vzc2libGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJ
Q0FUSU9OKGFjY2Vzc2libGUpLCBjaGlsZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBWaWV3QmFja2Vu
ZDo6YWRkQWN0aXZpdHlTdGF0ZSh1aW50MzJfdCBmbGFncykKIHsKICAgICB1aW50MzJfdCBwcmV2
aW91c0ZsYWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMv
d3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggOTkzODhmYzVkNzNlLi5jMmYzNTUwNzE3
M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3BlL2Zkby5oPgogCisjaWYgZGVmaW5lZChIQVZFX0FD
Q0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQordHlwZWRlZiBzdHJ1Y3QgX0F0a09i
amVjdCBBdGtPYmplY3Q7CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7CiB0eXBl
ZGVmIHZvaWQqIEVHTENvbnRleHQ7CiB0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci10eXBlZGVm
IHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRl
ZF9pbWFnZTsKIAogI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQpAQCAtNzMsNiAr
NzYsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7
CiAgICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMyX3QpOworI2lmIGRlZmlu
ZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKKyAgICBzdGF0aWMg
dm9pZCBub3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1
dF9rZXlib2FyZF9ldmVudCogZXZlbnQpOworI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoSW5w
dXRQb2ludGVyRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50Kik7CiAgICAgdm9p
ZCBkaXNwYXRjaElucHV0QXhpc0V2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCopOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9U
b29scy93cGUvYmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdkNjdiZjkyMmRjYQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL3dwZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJWaWV3QmFja2VuZC5oIgorCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkp
ICYmIEhBVkVfQUNDRVNTSUJJTElUWQorCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmgiCisjaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4K
KyNpbmNsdWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgeworCitz
dGF0aWMgR0hhc2hUYWJsZSoga2V5RXZlbnRMaXN0ZW5lcnM7CisKK3N0cnVjdCBLZXlFdmVudExp
c3RlbmVyIHsKKyAgICBBdGtLZXlTbm9vcEZ1bmMgZnVuY3Rpb247CisgICAgZ3BvaW50ZXIgdXNl
ckRhdGE7Cit9OworCitzdGF0aWMgdW5zaWduZWQgYWRkS2V5RXZlbnRMaXN0ZW5lcihBdGtLZXlT
bm9vcEZ1bmMgZnVuY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGlmICgha2V5RXZl
bnRMaXN0ZW5lcnMpIHsKKyAgICAgICAga2V5RXZlbnRMaXN0ZW5lcnMgPSBnX2hhc2hfdGFibGVf
bmV3X2Z1bGwoZ19kaXJlY3RfaGFzaCwgZ19kaXJlY3RfZXF1YWwsIG51bGxwdHIsIFtdKGdwb2lu
dGVyIGRhdGEpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxLZXlFdmVudExpc3Rl
bmVyKj4oZGF0YSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBr
ZXkgPSAwOworICAgIGtleSsrOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5RXZlbnRMaXN0
ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSwgbmV3IEtleUV2ZW50TGlzdGVuZXIgeyBmdW5j
dGlvbiwgdXNlckRhdGEgfSk7CisKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgdm9pZCBy
ZW1vdmVLZXlFdmVudExpc3RlbmVyKHVuc2lnbmVkIGtleSkKK3sKKyAgICBpZiAoIWtleUV2ZW50
TGlzdGVuZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2hhc2hfdGFibGVfcmVtb3ZlKGtl
eUV2ZW50TGlzdGVuZXJzLCBHVUlOVF9UT19QT0lOVEVSKGtleSkpOworfQorCit2b2lkIFZpZXdC
YWNrZW5kOjpub3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9p
bnB1dF9rZXlib2FyZF9ldmVudCogZXZlbnQpCit7CisgICAgaWYgKCFrZXlFdmVudExpc3RlbmVy
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgQXRrS2V5RXZlbnRTdHJ1Y3QgYXRrRXZlbnQ7Cisg
ICAgYXRrRXZlbnQudHlwZSA9IGV2ZW50LT5wcmVzc2VkID8gQVRLX0tFWV9FVkVOVF9QUkVTUyA6
IEFUS19LRVlfRVZFTlRfUkVMRUFTRTsKKyAgICBhdGtFdmVudC5zdGF0ZSA9IGV2ZW50LT5tb2Rp
ZmllcnM7CisgICAgYXRrRXZlbnQua2V5dmFsID0gZXZlbnQtPmtleV9jb2RlOworICAgIGF0a0V2
ZW50LmtleWNvZGUgPSBldmVudC0+aGFyZHdhcmVfa2V5X2NvZGU7CisgICAgYXRrRXZlbnQudGlt
ZXN0YW1wID0gZXZlbnQtPnRpbWU7CisKKyAgICBhdGtFdmVudC5zdHJpbmcgPSBudWxscHRyOwor
ICAgIHN3aXRjaCAoYXRrRXZlbnQua2V5dmFsKSB7CisgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRl
cjoKKyAgICBjYXNlIFdQRV9LRVlfS1BfRW50ZXI6CisgICAgY2FzZSBXUEVfS0VZX1JldHVybjoK
KyAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlxyIik7CisgICAgICAgIGF0a0V2
ZW50Lmxlbmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV1BFX0tFWV9CYWNrU3Bh
Y2U6CisgICAgICAgIGF0a0V2ZW50LnN0cmluZyA9IGdfc3RyZHVwKCJceDgiKTsKKyAgICAgICAg
YXRrRXZlbnQubGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXUEVfS0VZX1Rh
YjoKKyAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx0Iik7CisgICAgICAgIGF0
a0V2ZW50Lmxlbmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KKworICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7CisgICAgICAgIGF1
dG8gdW5pY29kZUNoYXJhY3RlciA9IHdwZV9rZXlfY29kZV90b191bmljb2RlKGF0a0V2ZW50Lmtl
eXZhbCk7CisgICAgICAgIGlmICh1bmljb2RlQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBjaGFy
IGJ1ZmZlcls3XTsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBnX3VuaWNoYXJfdG9fdXRmOCh1
bmljb2RlQ2hhcmFjdGVyLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyW2xlbmd0aF0gPSAn
XDAnOworICAgICAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgICAgIGF0a0V2
ZW50LnN0cmluZyA9IGdfbG9jYWxlX2Zyb21fdXRmOChidWZmZXIsIGxlbmd0aCwgbnVsbHB0ciwg
JmJ5dGVzV3JpdHRlbiwgbnVsbHB0cik7CisgICAgICAgICAgICBhdGtFdmVudC5sZW5ndGggPSBi
eXRlc1dyaXR0ZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWF0a0V2ZW50LnN0cmlu
ZykgeworICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAwOworICAgICAgICBhdGtFdmVudC5zdHJp
bmcgPSBnX3N0cmR1cCgiIik7CisgICAgfQorCisgICAgR0hhc2hUYWJsZUl0ZXIgaXRlcjsKKyAg
ICBncG9pbnRlciB2YWx1ZTsKKyAgICBnX2hhc2hfdGFibGVfaXRlcl9pbml0KCZpdGVyLCBrZXlF
dmVudExpc3RlbmVycyk7CisgICAgd2hpbGUgKGdfaGFzaF90YWJsZV9pdGVyX25leHQoJml0ZXIs
IG51bGxwdHIsICZ2YWx1ZSkpIHsKKyAgICAgICAgYXV0byogbGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxLZXlFdmVudExpc3RlbmVyKj4odmFsdWUpOworICAgICAgICBsaXN0ZW5lci0+ZnVuY3Rpb24o
JmF0a0V2ZW50LCBsaXN0ZW5lci0+dXNlckRhdGEpOworICAgIH0KKworICAgIGdfZnJlZShhdGtF
dmVudC5zdHJpbmcpOworfQorCit2b2lkIFZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNjZXNzaWJp
bGl0eSgpCit7CisgICAgYXV0byogYXRrVXRpbENsYXNzID0gQVRLX1VUSUxfQ0xBU1MoZ190eXBl
X2NsYXNzX3JlZihBVEtfVFlQRV9VVElMKSk7CisgICAgYXRrVXRpbENsYXNzLT5hZGRfa2V5X2V2
ZW50X2xpc3RlbmVyID0gW10oQXRrS2V5U25vb3BGdW5jIGxpc3RlbmVyLCBncG9pbnRlciB1c2Vy
RGF0YSkgLT4gZ3VpbnQgeworICAgICAgICByZXR1cm4gYWRkS2V5RXZlbnRMaXN0ZW5lcihsaXN0
ZW5lciwgdXNlckRhdGEpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPnJlbW92ZV9rZXlf
ZXZlbnRfbGlzdGVuZXIgPSBbXShndWludCBrZXkpIHsKKyAgICAgICAgcmVtb3ZlS2V5RXZlbnRM
aXN0ZW5lcihrZXkpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF9yb290ID0gW10o
KSAtPiBBdGtPYmplY3QqIHsKKyAgICAgICAgc3RhdGljIEF0a09iamVjdCogYWNjZXNzaWJsZSA9
IG51bGxwdHI7CisgICAgICAgIGlmICghYWNjZXNzaWJsZSkKKyAgICAgICAgICAgIGFjY2Vzc2li
bGUgPSBBVEtfT0JKRUNUKHdlYmtpdEFjY2Vzc2libGVBcHBsaWNhdGlvbk5ldygpKTsKKyAgICAg
ICAgcmV0dXJuIGFjY2Vzc2libGU7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rv
b2xraXRfbmFtZSA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJuICJXUEVX
ZWJLaXQiOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF90b29sa2l0X3ZlcnNpb24g
PSBbXSgpIC0+IGNvbnN0IGdjaGFyKiB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9OworCisg
ICAgYXRrX2JyaWRnZV9hZGFwdG9yX2luaXQobnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQg
Vmlld0JhY2tlbmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSh1aW50MzJfdCBwcmV2aW91c0Zs
YWdzKQoreworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAo
IVdFQktJVF9JU19BQ0NFU1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1aW50MzJfdCBmbGFncyA9IHdwZV92aWV3X2JhY2tlbmRfZ2V0X2FjdGl2
aXR5X3N0YXRlKGJhY2tlbmQoKSk7CisgICAgdWludDMyX3QgY2hhbmdlZEZsYWdzID0gcHJldmlv
dXNGbGFncyBeIGZsYWdzOworICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0
eV9zdGF0ZV9pbl93aW5kb3cpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5n
ZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfQUNUSVZFLCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5
X3N0YXRlX2luX3dpbmRvdyk7CisgICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2
aXR5X3N0YXRlX3Zpc2libGUpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5n
ZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfVklTSUJMRSwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0
eV9zdGF0ZV92aXNpYmxlKTsKKyAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZp
dHlfc3RhdGVfZm9jdXNlZCkgeworICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFu
Z2UoYWNjZXNzaWJsZSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZp
dHlfc3RhdGVfZm9jdXNlZCk7CisgICAgICAgIGlmICgoZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0
eV9zdGF0ZV9pbl93aW5kb3cpICYmIChmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQpKQorICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2libGUsICJh
Y3RpdmF0ZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25h
bWUoYWNjZXNzaWJsZSwgImRlYWN0aXZhdGUiKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld0JhY2tl
bmQ6OnNldEFjY2Vzc2libGVDaGlsZChBdGtPYmplY3QqIGNoaWxkKQoreworICAgIGF1dG8qIGFj
Y2Vzc2libGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAoIVdFQktJVF9JU19BQ0NFU1NJQkxF
X0FQUExJQ0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRB
Y2Nlc3NpYmxlQXBwbGljYXRpb25TZXRDaGlsZChXRUJLSVRfQUNDRVNTSUJMRV9BUFBMSUNBVElP
TihhY2Nlc3NpYmxlKSwgY2hpbGQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFj
a2VuZHMKKworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvd3Bl
L2JhY2tlbmRzL2F0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwCnNpbWlsYXJpdHkg
aW5kZXggMTAwJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJs
ZUFwcGxpY2F0aW9uLmNwcApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMv
V2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmggYi9Ub29scy93cGUvYmFja2VuZHMvYXRrL1dl
YktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUg
ZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgKcmVu
YW1lIHRvIFRvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmgK
</data>
<flag name="commit-queue"
          id="472771"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447205</attachid>
            <date>2021-12-14 22:31:30 -0800</date>
            <delta_ts>2021-12-15 13:33:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234310.diff</filename>
            <type>text/plain</type>
            <size>17610</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMGZk
OWM1Y2Q5MzYuLjE5YmJiYjg5MjQ1YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIxLTEyLTE0ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgU3BsaXQgQVRLIHNwZWNpZmlj
IGNvZGUgaW4gV1BFVmlld0JhY2tlbmRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzQzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBNb3ZlIEFUSyBzcGVjaWZpYyBjb2RlIGluIFdQRVZpZXdCYWNrZW5k
cyBpbnRvIHRoZSBhdGsgZGlyZWN0b3J5LiBUaGlzIHNwbGl0cworICAgICAgICBWaWV3QmFja2Vu
ZCdzIGltcGxlbWVudGF0aW9uIGludG8gdHdvIGZpbGVzIHdpdGggQVRLIHNwZWNpZmljIGNvZGUg
bWlncmF0ZWQgdG8KKyAgICAgICAgYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcC4gVGhlIGNvZGUgaW4g
V2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uIGlzIGFsbCBBVEsgc3BlY2lmaWMgc28KKyAgICAg
ICAgaXRzIGNvbXBsZXRlbHkgbW92ZWQgaW50byB0aGUgYXRrIGRpcmVjdG9yeS4KKworICAgICAg
ICAqIHdwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMv
UGxhdGZvcm1XUEUuY21ha2U6CisgICAgICAgICogd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ6OmluaXRpYWxpemVB
Y2Nlc3NpYmlsaXR5KToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ6
OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSk6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6
OmFkZEtleUV2ZW50TGlzdGVuZXIpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tl
bmRzOjpyZW1vdmVLZXlFdmVudExpc3RlbmVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdQRVRvb2xp
bmdCYWNrZW5kczo6bm90aWZ5QWNjZXNzaWJpbGl0eUtleUV2ZW50TGlzdGVuZXJzKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6Vmlld0JhY2tlbmQ6OnNldEFjY2Vzc2li
bGVDaGlsZCk6IERlbGV0ZWQuCisgICAgICAgICogd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmg6
CisgICAgICAgICogd3BlL2JhY2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHA6IENvcGllZCBm
cm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAuCisgICAgICAgIChXUEVUb29s
aW5nQmFja2VuZHM6OmFkZEtleUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV1BFVG9vbGluZ0Jh
Y2tlbmRzOjpyZW1vdmVLZXlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNr
ZW5kczo6Vmlld0JhY2tlbmQ6Om5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyk6
CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNj
ZXNzaWJpbGl0eSk6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OlZpZXdCYWNrZW5kOjp1
cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUpOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpW
aWV3QmFja2VuZDo6c2V0QWNjZXNzaWJsZUNoaWxkKToKKyAgICAgICAgKiB3cGUvYmFja2VuZHMv
YXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHA6IFJlbmFtZWQgZnJvbSBUb29scy93
cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcC4KKyAgICAgICAgKiB3
cGUvYmFja2VuZHMvYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oOiBSZW5hbWVkIGZy
b20gVG9vbHMvd3BlL2JhY2tlbmRzL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5oLgorCiAy
MDIxLTEyLTE0ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBNb2Rlcm5pemUgV1BFVG9vbGluZ0JhY2tlbmQKZGlmZiAtLWdpdCBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxp
c3RzLnR4dAppbmRleCBiMmU0NjdkMTdhNjIuLjVmZDVlMzgzNjE1MSAxMDA2NDQKLS0tIGEvVG9v
bHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9D
TWFrZUxpc3RzLnR4dApAQCAtMTMsNyArMTMsNiBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1BV
QkxJQ19IRUFERVJTCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICBIZWFkbGVz
c1ZpZXdCYWNrZW5kLmNwcAogICAgIFZpZXdCYWNrZW5kLmNwcAotICAgIFdlYktpdEFjY2Vzc2li
bGVBcHBsaWNhdGlvbi5jcHAKICAgICBXaW5kb3dWaWV3QmFja2VuZC5jcHAKICkKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDJjODAzNzViM2RlMy4uOTc3NjZhZjgzODVj
IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC05LDYgKzksMTIgQEAgbGlz
dChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BVQkxJQ19IRUFERVJTCiAKIGxpc3QoQVBQRU5E
IFdQRVRvb2xpbmdCYWNrZW5kc19TT1VSQ0VTCiAgICAgJHtXUEVUb29saW5nQmFja2VuZHNfREVS
SVZFRF9TT1VSQ0VTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMKKyAgICBh
dGsvVmlld0JhY2tlbmRBdGsuY3BwCisgICAgYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlv
bi5jcHAKKykKKworbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVE
RV9ESVJFQ1RPUklFUworICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCiApCiAKIGxp
c3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKaW5kZXggNDZlNThhNDdhNWVjLi5hNTRmMWY5YjUy
OTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKKysrIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcApAQCAtMjUsMTEwICsyNSw4IEBACiAK
ICNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8ZXBveHkvZWdsLmg+Ci0jaW5j
bHVkZSA8Z2xpYi5oPgotI2luY2x1ZGUgPHdwZS9mZG8tZWdsLmg+Ci0KLSNpZiBkZWZpbmVkKEhB
VkVfQUNDRVNTSUJJTElUWSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZCi0jaW5jbHVkZSAiV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgiCi0jaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgotI2luY2x1
ZGUgPGF0ay9hdGsuaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsK
IAotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkK
LXN0YXRpYyBHSGFzaFRhYmxlKiBrZXlFdmVudExpc3RlbmVyczsKLQotc3RydWN0IEtleUV2ZW50
TGlzdGVuZXIgewotICAgIEF0a0tleVNub29wRnVuYyBmdW5jdGlvbjsKLSAgICBncG9pbnRlciB1
c2VyRGF0YTsKLX07Ci0KLXN0YXRpYyB1bnNpZ25lZCBhZGRLZXlFdmVudExpc3RlbmVyKEF0a0tl
eVNub29wRnVuYyBmdW5jdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCi17Ci0gICAgaWYgKCFrZXlF
dmVudExpc3RlbmVycykgewotICAgICAgICBrZXlFdmVudExpc3RlbmVycyA9IGdfaGFzaF90YWJs
ZV9uZXdfZnVsbChnX2RpcmVjdF9oYXNoLCBnX2RpcmVjdF9lcXVhbCwgbnVsbHB0ciwgW10oZ3Bv
aW50ZXIgZGF0YSkgewotICAgICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEtleUV2ZW50TGlz
dGVuZXIqPihkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHVuc2lnbmVk
IGtleSA9IDA7Ci0gICAga2V5Kys7Ci0gICAgZ19oYXNoX3RhYmxlX2luc2VydChrZXlFdmVudExp
c3RlbmVycywgR1VJTlRfVE9fUE9JTlRFUihrZXkpLCBuZXcgS2V5RXZlbnRMaXN0ZW5lciB7IGZ1
bmN0aW9uLCB1c2VyRGF0YSB9KTsKLQotICAgIHJldHVybiBrZXk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHJlbW92ZUtleUV2ZW50TGlzdGVuZXIodW5zaWduZWQga2V5KQotewotICAgIGlmICgha2V5RXZl
bnRMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybjsKLQotICAgIGdfaGFzaF90YWJsZV9yZW1vdmUo
a2V5RXZlbnRMaXN0ZW5lcnMsIEdVSU5UX1RPX1BPSU5URVIoa2V5KSk7Ci19Ci0KLXN0YXRpYyB2
b2lkIG5vdGlmeUFjY2Vzc2liaWxpdHlLZXlFdmVudExpc3RlbmVycyhzdHJ1Y3Qgd3BlX2lucHV0
X2tleWJvYXJkX2V2ZW50KiBldmVudCkKLXsKLSAgICBpZiAoIWtleUV2ZW50TGlzdGVuZXJzKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBBdGtLZXlFdmVudFN0cnVjdCBhdGtFdmVudDsKLSAgICBh
dGtFdmVudC50eXBlID0gZXZlbnQtPnByZXNzZWQgPyBBVEtfS0VZX0VWRU5UX1BSRVNTIDogQVRL
X0tFWV9FVkVOVF9SRUxFQVNFOwotICAgIGF0a0V2ZW50LnN0YXRlID0gZXZlbnQtPm1vZGlmaWVy
czsKLSAgICBhdGtFdmVudC5rZXl2YWwgPSBldmVudC0+a2V5X2NvZGU7Ci0gICAgYXRrRXZlbnQu
a2V5Y29kZSA9IGV2ZW50LT5oYXJkd2FyZV9rZXlfY29kZTsKLSAgICBhdGtFdmVudC50aW1lc3Rh
bXAgPSBldmVudC0+dGltZTsKLQotICAgIGF0a0V2ZW50LnN0cmluZyA9IG51bGxwdHI7Ci0gICAg
c3dpdGNoIChhdGtFdmVudC5rZXl2YWwpIHsKLSAgICBjYXNlIFdQRV9LRVlfSVNPX0VudGVyOgot
ICAgIGNhc2UgV1BFX0tFWV9LUF9FbnRlcjoKLSAgICBjYXNlIFdQRV9LRVlfUmV0dXJuOgotICAg
ICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHIiKTsKLSAgICAgICAgYXRrRXZlbnQu
bGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXUEVfS0VZX0JhY2tTcGFjZToK
LSAgICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx4OCIpOwotICAgICAgICBhdGtF
dmVudC5sZW5ndGggPSAxOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdQRV9LRVlfVGFiOgot
ICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBnX3N0cmR1cCgiXHQiKTsKLSAgICAgICAgYXRrRXZl
bnQubGVuZ3RoID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKCFhdGtFdmVudC5zdHJpbmcpIHsKLSAgICAgICAgYXV0byB1
bmljb2RlQ2hhcmFjdGVyID0gd3BlX2tleV9jb2RlX3RvX3VuaWNvZGUoYXRrRXZlbnQua2V5dmFs
KTsKLSAgICAgICAgaWYgKHVuaWNvZGVDaGFyYWN0ZXIpIHsKLSAgICAgICAgICAgIGNoYXIgYnVm
ZmVyWzddOwotICAgICAgICAgICAgaW50IGxlbmd0aCA9IGdfdW5pY2hhcl90b191dGY4KHVuaWNv
ZGVDaGFyYWN0ZXIsIGJ1ZmZlcik7Ci0gICAgICAgICAgICBidWZmZXJbbGVuZ3RoXSA9ICdcMCc7
Ci0gICAgICAgICAgICBzaXplX3QgYnl0ZXNXcml0dGVuOwotICAgICAgICAgICAgYXRrRXZlbnQu
c3RyaW5nID0gZ19sb2NhbGVfZnJvbV91dGY4KGJ1ZmZlciwgbGVuZ3RoLCBudWxscHRyLCAmYnl0
ZXNXcml0dGVuLCBudWxscHRyKTsKLSAgICAgICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IGJ5dGVz
V3JpdHRlbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7
Ci0gICAgICAgIGF0a0V2ZW50Lmxlbmd0aCA9IDA7Ci0gICAgICAgIGF0a0V2ZW50LnN0cmluZyA9
IGdfc3RyZHVwKCIiKTsKLSAgICB9Ci0KLSAgICBHSGFzaFRhYmxlSXRlciBpdGVyOwotICAgIGdw
b2ludGVyIHZhbHVlOwotICAgIGdfaGFzaF90YWJsZV9pdGVyX2luaXQoJml0ZXIsIGtleUV2ZW50
TGlzdGVuZXJzKTsKLSAgICB3aGlsZSAoZ19oYXNoX3RhYmxlX2l0ZXJfbmV4dCgmaXRlciwgbnVs
bHB0ciwgJnZhbHVlKSkgewotICAgICAgICBhdXRvKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEtl
eUV2ZW50TGlzdGVuZXIqPih2YWx1ZSk7Ci0gICAgICAgIGxpc3RlbmVyLT5mdW5jdGlvbigmYXRr
RXZlbnQsIGxpc3RlbmVyLT51c2VyRGF0YSk7Ci0gICAgfQotCi0gICAgZ19mcmVlKGF0a0V2ZW50
LnN0cmluZyk7Ci19Ci0jZW5kaWYKLQogVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90
IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9o
ZWlnaHQoaGVpZ2h0KQpAQCAtMTM4LDc3ICszNiwyMSBAQCBWaWV3QmFja2VuZDo6Vmlld0JhY2tl
bmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKIAogVmlld0JhY2tlbmQ6On5WaWV3
QmFja2VuZCgpID0gZGVmYXVsdDsKIAotCisjaWYgIShkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElU
WSkgJiYgSEFWRV9BQ0NFU1NJQklMSVRZKQogdm9pZCBWaWV3QmFja2VuZDo6aW5pdGlhbGl6ZUFj
Y2Vzc2liaWxpdHkoKQogewotI2lmIGRlZmluZWQoSEFWRV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZF
X0FDQ0VTU0lCSUxJVFkKLSAgICBhdXRvKiBhdGtVdGlsQ2xhc3MgPSBBVEtfVVRJTF9DTEFTUyhn
X3R5cGVfY2xhc3NfcmVmKEFUS19UWVBFX1VUSUwpKTsKLSAgICBhdGtVdGlsQ2xhc3MtPmFkZF9r
ZXlfZXZlbnRfbGlzdGVuZXIgPSBbXShBdGtLZXlTbm9vcEZ1bmMgbGlzdGVuZXIsIGdwb2ludGVy
IHVzZXJEYXRhKSAtPiBndWludCB7Ci0gICAgICAgIHJldHVybiBhZGRLZXlFdmVudExpc3RlbmVy
KGxpc3RlbmVyLCB1c2VyRGF0YSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+cmVtb3Zl
X2tleV9ldmVudF9saXN0ZW5lciA9IFtdKGd1aW50IGtleSkgewotICAgICAgICByZW1vdmVLZXlF
dmVudExpc3RlbmVyKGtleSk7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Jvb3Qg
PSBbXSgpIC0+IEF0a09iamVjdCogewotICAgICAgICBzdGF0aWMgQXRrT2JqZWN0KiBhY2Nlc3Np
YmxlID0gbnVsbHB0cjsKLSAgICAgICAgaWYgKCFhY2Nlc3NpYmxlKQotICAgICAgICAgICAgYWNj
ZXNzaWJsZSA9IEFUS19PQkpFQ1Qod2Via2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uTmV3KCkpOwot
ICAgICAgICByZXR1cm4gYWNjZXNzaWJsZTsKLSAgICB9OwotCi0gICAgYXRrVXRpbENsYXNzLT5n
ZXRfdG9vbGtpdF9uYW1lID0gW10oKSAtPiBjb25zdCBnY2hhciogewotICAgICAgICByZXR1cm4g
IldQRVdlYktpdCI7Ci0gICAgfTsKLQotICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRfdmVy
c2lvbiA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKLSAgICAgICAgcmV0dXJuICIiOwotICAgIH07
Ci0KLSAgICBhdGtfYnJpZGdlX2FkYXB0b3JfaW5pdChudWxscHRyLCBudWxscHRyKTsKLSNlbmRp
ZgogfQogCiB2b2lkIFZpZXdCYWNrZW5kOjp1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMy
X3QgcHJldmlvdXNGbGFncykKIHsKLSNpZiBkZWZpbmVkKEhBVkVfQUNDRVNTSUJJTElUWSkgJiYg
SEFWRV9BQ0NFU1NJQklMSVRZCi0gICAgYXV0byogYWNjZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgp
OwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQVBQTElDQVRJT04oYWNjZXNzaWJsZSkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIHVpbnQzMl90IGZsYWdzID0gd3BlX3ZpZXdfYmFja2Vu
ZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKLSAgICB1aW50MzJfdCBjaGFuZ2VkRmxh
Z3MgPSBwcmV2aW91c0ZsYWdzIF4gZmxhZ3M7Ci0gICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9BQ1RJVkUsIGZsYWdzICYgd3BlX3Zp
ZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKLSAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3Bl
X3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSkKLSAgICAgICAgYXRrX29iamVjdF9ub3RpZnlf
c3RhdGVfY2hhbmdlKGFjY2Vzc2libGUsIEFUS19TVEFURV9WSVNJQkxFLCBmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUpOwotICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKSB7Ci0gICAgICAgIGF0a19vYmplY3Rfbm90aWZ5
X3N0YXRlX2NoYW5nZShhY2Nlc3NpYmxlLCBBVEtfU1RBVEVfRk9DVVNFRCwgZmxhZ3MgJiB3cGVf
dmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkKTsKLSAgICAgICAgaWYgKChmbGFncyAmIHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdykgJiYgKGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZp
dHlfc3RhdGVfZm9jdXNlZCkpCi0gICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNj
ZXNzaWJsZSwgImFjdGl2YXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdfc2lnbmFs
X2VtaXRfYnlfbmFtZShhY2Nlc3NpYmxlLCAiZGVhY3RpdmF0ZSIpOwotICAgIH0KLSNlbmRpZgog
fQorI2VuZGlmIC8vICFIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKIHZvaWQgVmlld0JhY2tlbmQ6OnNl
dElucHV0Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxJbnB1dENsaWVudD4mJiBjbGllbnQpCiB7CiAg
ICAgbV9pbnB1dENsaWVudCA9IHN0ZDo6bW92ZShjbGllbnQpOwogfQogCi0jaWYgZGVmaW5lZChI
QVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQotdm9pZCBWaWV3QmFja2Vu
ZDo6c2V0QWNjZXNzaWJsZUNoaWxkKEF0a09iamVjdCogY2hpbGQpCi17Ci0gICAgYXV0byogYWNj
ZXNzaWJsZSA9IGF0a19nZXRfcm9vdCgpOwotICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEVf
QVBQTElDQVRJT04oYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHdlYmtpdEFj
Y2Vzc2libGVBcHBsaWNhdGlvblNldENoaWxkKFdFQktJVF9BQ0NFU1NJQkxFX0FQUExJQ0FUSU9O
KGFjY2Vzc2libGUpLCBjaGlsZCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBWaWV3QmFja2VuZDo6YWRk
QWN0aXZpdHlTdGF0ZSh1aW50MzJfdCBmbGFncykKIHsKICAgICB1aW50MzJfdCBwcmV2aW91c0Zs
YWdzID0gd3BlX3ZpZXdfYmFja2VuZF9nZXRfYWN0aXZpdHlfc3RhdGUoYmFja2VuZCgpKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggOTkzODhmYzVkNzNlLi5jMmYzNTUwNzE3M2MgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yOCwxMCArMjgsMTMgQEAKICNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3BlL2Zkby5oPgogCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lC
SUxJVFkpICYmIEhBVkVfQUNDRVNTSUJJTElUWQordHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBB
dGtPYmplY3Q7CisjZW5kaWYKKwogdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7CiB0eXBlZGVmIHZv
aWQqIEVHTENvbnRleHQ7CiB0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci10eXBlZGVmIHN0cnVj
dCBfQXRrT2JqZWN0IEF0a09iamVjdDsKIHN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFn
ZTsKIAogI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQpAQCAtNzMsNiArNzYsOSBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIGluaXRpYWxpemVBY2Nlc3NpYmlsaXR5KCk7CiAgICAg
dm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5U3RhdGUodWludDMyX3QpOworI2lmIGRlZmluZWQoSEFW
RV9BQ0NFU1NJQklMSVRZKSAmJiBIQVZFX0FDQ0VTU0lCSUxJVFkKKyAgICBzdGF0aWMgdm9pZCBu
b3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1dF9rZXli
b2FyZF9ldmVudCogZXZlbnQpOworI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoSW5wdXRQb2lu
dGVyRXZlbnQoc3RydWN0IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50Kik7CiAgICAgdm9pZCBkaXNw
YXRjaElucHV0QXhpc0V2ZW50KHN0cnVjdCB3cGVfaW5wdXRfYXhpc19ldmVudCopOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9WaWV3QmFja2VuZEF0ay5jcHAgYi9Ub29scy93
cGUvYmFja2VuZHMvYXRrL1ZpZXdCYWNrZW5kQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjdkNjdiZjkyMmRjYQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L3dwZS9iYWNrZW5kcy9hdGsvVmlld0JhY2tlbmRBdGsuY3BwCkBAIC0wLDAgKzEsMTg4IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJWaWV3QmFja2VuZC5oIgorCisjaWYgZGVmaW5lZChIQVZFX0FDQ0VTU0lCSUxJVFkpICYmIEhB
VkVfQUNDRVNTSUJJTElUWQorCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9u
LmgiCisjaW5jbHVkZSA8YXRrLWJyaWRnZS5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNs
dWRlIDxnbGliLmg+CisKK25hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgeworCitzdGF0aWMg
R0hhc2hUYWJsZSoga2V5RXZlbnRMaXN0ZW5lcnM7CisKK3N0cnVjdCBLZXlFdmVudExpc3RlbmVy
IHsKKyAgICBBdGtLZXlTbm9vcEZ1bmMgZnVuY3Rpb247CisgICAgZ3BvaW50ZXIgdXNlckRhdGE7
Cit9OworCitzdGF0aWMgdW5zaWduZWQgYWRkS2V5RXZlbnRMaXN0ZW5lcihBdGtLZXlTbm9vcEZ1
bmMgZnVuY3Rpb24sIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGlmICgha2V5RXZlbnRMaXN0
ZW5lcnMpIHsKKyAgICAgICAga2V5RXZlbnRMaXN0ZW5lcnMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1
bGwoZ19kaXJlY3RfaGFzaCwgZ19kaXJlY3RfZXF1YWwsIG51bGxwdHIsIFtdKGdwb2ludGVyIGRh
dGEpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxLZXlFdmVudExpc3RlbmVyKj4o
ZGF0YSk7CisgICAgICAgIH0pOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCBrZXkgPSAw
OworICAgIGtleSsrOworICAgIGdfaGFzaF90YWJsZV9pbnNlcnQoa2V5RXZlbnRMaXN0ZW5lcnMs
IEdVSU5UX1RPX1BPSU5URVIoa2V5KSwgbmV3IEtleUV2ZW50TGlzdGVuZXIgeyBmdW5jdGlvbiwg
dXNlckRhdGEgfSk7CisKKyAgICByZXR1cm4ga2V5OworfQorCitzdGF0aWMgdm9pZCByZW1vdmVL
ZXlFdmVudExpc3RlbmVyKHVuc2lnbmVkIGtleSkKK3sKKyAgICBpZiAoIWtleUV2ZW50TGlzdGVu
ZXJzKQorICAgICAgICByZXR1cm47CisKKyAgICBnX2hhc2hfdGFibGVfcmVtb3ZlKGtleUV2ZW50
TGlzdGVuZXJzLCBHVUlOVF9UT19QT0lOVEVSKGtleSkpOworfQorCit2b2lkIFZpZXdCYWNrZW5k
Ojpub3RpZnlBY2Nlc3NpYmlsaXR5S2V5RXZlbnRMaXN0ZW5lcnMoc3RydWN0IHdwZV9pbnB1dF9r
ZXlib2FyZF9ldmVudCogZXZlbnQpCit7CisgICAgaWYgKCFrZXlFdmVudExpc3RlbmVycykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQXRrS2V5RXZlbnRTdHJ1Y3QgYXRrRXZlbnQ7CisgICAgYXRr
RXZlbnQudHlwZSA9IGV2ZW50LT5wcmVzc2VkID8gQVRLX0tFWV9FVkVOVF9QUkVTUyA6IEFUS19L
RVlfRVZFTlRfUkVMRUFTRTsKKyAgICBhdGtFdmVudC5zdGF0ZSA9IGV2ZW50LT5tb2RpZmllcnM7
CisgICAgYXRrRXZlbnQua2V5dmFsID0gZXZlbnQtPmtleV9jb2RlOworICAgIGF0a0V2ZW50Lmtl
eWNvZGUgPSBldmVudC0+aGFyZHdhcmVfa2V5X2NvZGU7CisgICAgYXRrRXZlbnQudGltZXN0YW1w
ID0gZXZlbnQtPnRpbWU7CisKKyAgICBhdGtFdmVudC5zdHJpbmcgPSBudWxscHRyOworICAgIHN3
aXRjaCAoYXRrRXZlbnQua2V5dmFsKSB7CisgICAgY2FzZSBXUEVfS0VZX0lTT19FbnRlcjoKKyAg
ICBjYXNlIFdQRV9LRVlfS1BfRW50ZXI6CisgICAgY2FzZSBXUEVfS0VZX1JldHVybjoKKyAgICAg
ICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlxyIik7CisgICAgICAgIGF0a0V2ZW50Lmxl
bmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV1BFX0tFWV9CYWNrU3BhY2U6Cisg
ICAgICAgIGF0a0V2ZW50LnN0cmluZyA9IGdfc3RyZHVwKCJceDgiKTsKKyAgICAgICAgYXRrRXZl
bnQubGVuZ3RoID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXUEVfS0VZX1RhYjoKKyAg
ICAgICAgYXRrRXZlbnQuc3RyaW5nID0gZ19zdHJkdXAoIlx0Iik7CisgICAgICAgIGF0a0V2ZW50
Lmxlbmd0aCA9IDE7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFr
OworICAgIH0KKworICAgIGlmICghYXRrRXZlbnQuc3RyaW5nKSB7CisgICAgICAgIGF1dG8gdW5p
Y29kZUNoYXJhY3RlciA9IHdwZV9rZXlfY29kZV90b191bmljb2RlKGF0a0V2ZW50LmtleXZhbCk7
CisgICAgICAgIGlmICh1bmljb2RlQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICBjaGFyIGJ1ZmZl
cls3XTsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBnX3VuaWNoYXJfdG9fdXRmOCh1bmljb2Rl
Q2hhcmFjdGVyLCBidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyW2xlbmd0aF0gPSAnXDAnOwor
ICAgICAgICAgICAgc2l6ZV90IGJ5dGVzV3JpdHRlbjsKKyAgICAgICAgICAgIGF0a0V2ZW50LnN0
cmluZyA9IGdfbG9jYWxlX2Zyb21fdXRmOChidWZmZXIsIGxlbmd0aCwgbnVsbHB0ciwgJmJ5dGVz
V3JpdHRlbiwgbnVsbHB0cik7CisgICAgICAgICAgICBhdGtFdmVudC5sZW5ndGggPSBieXRlc1dy
aXR0ZW47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIWF0a0V2ZW50LnN0cmluZykgewor
ICAgICAgICBhdGtFdmVudC5sZW5ndGggPSAwOworICAgICAgICBhdGtFdmVudC5zdHJpbmcgPSBn
X3N0cmR1cCgiIik7CisgICAgfQorCisgICAgR0hhc2hUYWJsZUl0ZXIgaXRlcjsKKyAgICBncG9p
bnRlciB2YWx1ZTsKKyAgICBnX2hhc2hfdGFibGVfaXRlcl9pbml0KCZpdGVyLCBrZXlFdmVudExp
c3RlbmVycyk7CisgICAgd2hpbGUgKGdfaGFzaF90YWJsZV9pdGVyX25leHQoJml0ZXIsIG51bGxw
dHIsICZ2YWx1ZSkpIHsKKyAgICAgICAgYXV0byogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxLZXlF
dmVudExpc3RlbmVyKj4odmFsdWUpOworICAgICAgICBsaXN0ZW5lci0+ZnVuY3Rpb24oJmF0a0V2
ZW50LCBsaXN0ZW5lci0+dXNlckRhdGEpOworICAgIH0KKworICAgIGdfZnJlZShhdGtFdmVudC5z
dHJpbmcpOworfQorCit2b2lkIFZpZXdCYWNrZW5kOjppbml0aWFsaXplQWNjZXNzaWJpbGl0eSgp
Cit7CisgICAgYXV0byogYXRrVXRpbENsYXNzID0gQVRLX1VUSUxfQ0xBU1MoZ190eXBlX2NsYXNz
X3JlZihBVEtfVFlQRV9VVElMKSk7CisgICAgYXRrVXRpbENsYXNzLT5hZGRfa2V5X2V2ZW50X2xp
c3RlbmVyID0gW10oQXRrS2V5U25vb3BGdW5jIGxpc3RlbmVyLCBncG9pbnRlciB1c2VyRGF0YSkg
LT4gZ3VpbnQgeworICAgICAgICByZXR1cm4gYWRkS2V5RXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwg
dXNlckRhdGEpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPnJlbW92ZV9rZXlfZXZlbnRf
bGlzdGVuZXIgPSBbXShndWludCBrZXkpIHsKKyAgICAgICAgcmVtb3ZlS2V5RXZlbnRMaXN0ZW5l
cihrZXkpOworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF9yb290ID0gW10oKSAtPiBB
dGtPYmplY3QqIHsKKyAgICAgICAgc3RhdGljIEF0a09iamVjdCogYWNjZXNzaWJsZSA9IG51bGxw
dHI7CisgICAgICAgIGlmICghYWNjZXNzaWJsZSkKKyAgICAgICAgICAgIGFjY2Vzc2libGUgPSBB
VEtfT0JKRUNUKHdlYmtpdEFjY2Vzc2libGVBcHBsaWNhdGlvbk5ldygpKTsKKyAgICAgICAgcmV0
dXJuIGFjY2Vzc2libGU7CisgICAgfTsKKworICAgIGF0a1V0aWxDbGFzcy0+Z2V0X3Rvb2xraXRf
bmFtZSA9IFtdKCkgLT4gY29uc3QgZ2NoYXIqIHsKKyAgICAgICAgcmV0dXJuICJXUEVXZWJLaXQi
OworICAgIH07CisKKyAgICBhdGtVdGlsQ2xhc3MtPmdldF90b29sa2l0X3ZlcnNpb24gPSBbXSgp
IC0+IGNvbnN0IGdjaGFyKiB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9OworCisgICAgYXRr
X2JyaWRnZV9hZGFwdG9yX2luaXQobnVsbHB0ciwgbnVsbHB0cik7Cit9CisKK3ZvaWQgVmlld0Jh
Y2tlbmQ6OnVwZGF0ZUFjY2Vzc2liaWxpdHlTdGF0ZSh1aW50MzJfdCBwcmV2aW91c0ZsYWdzKQor
eworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAoIVdFQktJ
VF9JU19BQ0NFU1NJQkxFX0FQUExJQ0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICByZXR1cm47
CisKKyAgICB1aW50MzJfdCBmbGFncyA9IHdwZV92aWV3X2JhY2tlbmRfZ2V0X2FjdGl2aXR5X3N0
YXRlKGJhY2tlbmQoKSk7CisgICAgdWludDMyX3QgY2hhbmdlZEZsYWdzID0gcHJldmlvdXNGbGFn
cyBeIGZsYWdzOworICAgIGlmIChjaGFuZ2VkRmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9pbl93aW5kb3cpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfQUNUSVZFLCBmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRl
X2luX3dpbmRvdyk7CisgICAgaWYgKGNoYW5nZWRGbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0
YXRlX3Zpc2libGUpCisgICAgICAgIGF0a19vYmplY3Rfbm90aWZ5X3N0YXRlX2NoYW5nZShhY2Nl
c3NpYmxlLCBBVEtfU1RBVEVfVklTSUJMRSwgZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV92aXNpYmxlKTsKKyAgICBpZiAoY2hhbmdlZEZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfZm9jdXNlZCkgeworICAgICAgICBhdGtfb2JqZWN0X25vdGlmeV9zdGF0ZV9jaGFuZ2UoYWNj
ZXNzaWJsZSwgQVRLX1NUQVRFX0ZPQ1VTRUQsIGZsYWdzICYgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfZm9jdXNlZCk7CisgICAgICAgIGlmICgoZmxhZ3MgJiB3cGVfdmlld19hY3Rpdml0eV9zdGF0
ZV9pbl93aW5kb3cpICYmIChmbGFncyAmIHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQp
KQorICAgICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKGFjY2Vzc2libGUsICJhY3RpdmF0
ZSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYWNj
ZXNzaWJsZSwgImRlYWN0aXZhdGUiKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld0JhY2tlbmQ6OnNl
dEFjY2Vzc2libGVDaGlsZChBdGtPYmplY3QqIGNoaWxkKQoreworICAgIGF1dG8qIGFjY2Vzc2li
bGUgPSBhdGtfZ2V0X3Jvb3QoKTsKKyAgICBpZiAoIVdFQktJVF9JU19BQ0NFU1NJQkxFX0FQUExJ
Q0FUSU9OKGFjY2Vzc2libGUpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRBY2Nlc3Np
YmxlQXBwbGljYXRpb25TZXRDaGlsZChXRUJLSVRfQUNDRVNTSUJMRV9BUFBMSUNBVElPTihhY2Nl
c3NpYmxlKSwgY2hpbGQpOworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMK
KworI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9i
YWNrZW5kcy9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwIGIvVG9vbHMvd3BlL2JhY2tl
bmRzL2F0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwCnNpbWlsYXJpdHkgaW5kZXgg
MTAwJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxp
Y2F0aW9uLmNwcApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRzL2F0ay9XZWJLaXRBY2Nlc3Np
YmxlQXBwbGljYXRpb24uY3BwCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2ViS2l0
QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmggYi9Ub29scy93cGUvYmFja2VuZHMvYXRrL1dlYktpdEFj
Y2Vzc2libGVBcHBsaWNhdGlvbi5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBU
b29scy93cGUvYmFja2VuZHMvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgKcmVuYW1lIHRv
IFRvb2xzL3dwZS9iYWNrZW5kcy9hdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmgK
</data>

          </attachment>
      

    </bug>

</bugzilla>