<?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>38682</bug_id>
          
          <creation_ts>2010-05-06 13:23:17 -0700</creation_ts>
          <short_desc>further fixes towards REGRESSION (r57292): 1% PLT regression from visited link information leak fix</short_desc>
          <delta_ts>2010-05-06 19:53:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>221915</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-06 13:23:17 -0700</bug_when>
    <thetext>further fixes towards REGRESSION (r57292): 1% PLT regression from visited link information leak fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221956</commentid>
    <comment_count>1</comment_count>
      <attachid>55295</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-06 14:01:19 -0700</bug_when>
    <thetext>Created attachment 55295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222006</commentid>
    <comment_count>2</comment_count>
      <attachid>55295</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-05-06 15:25:32 -0700</bug_when>
    <thetext>Comment on attachment 55295
Patch

&gt; +    void setStyleChange(StyleChangeType changeType);

No need for an argument name here.

I read the rest carefully and this looks great. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222017</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-06 15:41:40 -0700</bug_when>
    <thetext>Committed r58914: &lt;http://trac.webkit.org/changeset/58914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222094</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-06 18:03:22 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58914 might have broken Qt Windows 32-bit Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/58912
http://trac.webkit.org/changeset/58913
http://trac.webkit.org/changeset/58914
http://trac.webkit.org/changeset/58915
http://trac.webkit.org/changeset/58916
http://trac.webkit.org/changeset/58917
http://trac.webkit.org/changeset/58918</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222128</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-06 19:53:04 -0700</bug_when>
    <thetext>I believe either this patch (http://trac.webkit.org/changeset/58914) or http://trac.webkit.org/changeset/58917 caused this failure:
http://build.webkit.org/results/Tiger%20Intel%20Release/r58918%20(11721)/webarchive/test-link-rel-icon-pretty-diff.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55295</attachid>
            <date>2010-05-06 14:01:19 -0700</date>
            <delta_ts>2010-05-06 15:25:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38682-20100506140118.patch</filename>
            <type>text/plain</type>
            <size>75752</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1ODkwNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjA5IEBACisyMDEwLTA1LTA2ICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
ZnVydGhlciBmaXhlcyB0b3dhcmRzIFJFR1JFU1NJT04gKHI1NzI5Mik6IDElIFBMVCByZWdyZXNz
aW9uIGZyb20gdmlzaXRlZCBsaW5rIGluZm9ybWF0aW9uIGxlYWsgZml4CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY4MgorCisgICAgICAgIExvb2tz
IGxpa2UgYSAxLTIlIHNwZWVkdXAgb24gUExULgorCisgICAgICAgIC0gUmVvcmRlciBDU1MgcHJv
cGVydGllcy4KKyAgICAgICAgLSBSZW1vdmUgc2hvcnQgY2lyY3VpdCB0YWcgY2hlY2sgaW4gbWF0
Y2hSdWxlc0Zvckxpc3Qgd2hpY2ggY29zdHMgbW9yZSB0aGFuIGl0IHNhdmVzLgorICAgICAgICAt
IElubGluZSBpbml0Rm9yU3R5bGVSZXNvbHZlLgorICAgICAgICAtIE9wdGltaXplIGFwcGx5RGVj
bGFyYXRpb25zIHRvIGF2b2lkIHN3aXRjaCBhbmQgdGFrZSBmZXdlciBicmFuY2hlcyBpbiB0aGUg
aW5uZXIgbG9vcC4KKyAgICAgICAgCisgICAgICAgIC0gQ2hhbmdlIHRoZSB3YXkgTm9kZSBoYW5k
bGVzIGZsYWdzIC0gcmVwbGFjZSBiaXRmaWVsZCB3aXRoIGEgdWludDMyX3QgYW5kIGV4cGxpY2l0
IG1hc2tpbmcsIAorICAgICAgICB0byBtYWtlIGl0IGNoZWFwZXIgdG8gaW5pdGlhbGl6ZSB0aGUg
Yml0cyBhbmQgZ2l2ZSBmYXN0ZXIgYWNjZXNzLgorICAgICAgICAtIEFkZGVkIG5ldyBOb2RlIGZs
YWdzIHRvIGNoZWNrIGZvciBpc1N0eWxlZEVsZW1lbnQsIGlzSFRNTEVsZW1lbnQsIGlzU1ZHRWxl
bWVudCwgaXNDb21tZW50LCAKKyAgICAgICAgYW5kIGRldmlydHVhbGl6ZSB0aG9zZSBtZXRob2Rz
LgorICAgICAgICAtIElubGluZSBjb25zdHJ1Y3RvcnMgZm9yIE5vZGUsIEVsZW1lbnQsIFRleHQs
IENoYXJhY3RlckRhdGEsIFN0eWxlZEVsZW1lbnQsIGV0YyBzaW5jZQorICAgICAgICB0aGV5IGFy
ZSB2ZXJ5IHNpbXBsZSBhbmQgbG90cyBvZiBub2RlcyBnZXQgY29uc3RydWN0ZWQuCisgICAgICAg
IAorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOiBNb3ZlIGEgZmV3IG9mIHRoZSBw
cm9wZXJ0aWVzIHVwIGZyb250IHNvIHdlIGNhbiBjaGVjayBmb3IgdGhlbQorICAgICAgICB3aXRo
IDwgaW5zdGVhZCBvZiBzd2l0Y2ggc3RhdGVtZW50cworICAgICAgICAqIGNzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVs
ZXNGb3JMaXN0KTogUmVtb3ZlIHVubmVjZXNzYXJ5IHByZWZsaWdodCBjaGVjaworICAgICAgICBm
b3IgdGFnIG1hdGNoIGJlZm9yZSBjaGVja2luZyBzZWxlY3Rvci4gVGhpcyBjaGVjayB2ZXJ5IHJh
cmVseSBzaG9ydCBjaXJjdWl0cyBhbnl0aGluZywKKyAgICAgICAgc2luY2UgbW9zdCBydWxlcyB3
aXRoIGEgdGFnIGVuZCB1cCBpbiB0aGUgYXBwcm9wcmlhdGUgdGFnIGJ1Y2tldC4gU28gZG9pbmcg
dGhlIGNoZWNrCisgICAgICAgIGNvc3QgbW9yZSB0aW1lIHRoYW4gdGhlIHRpbWUgc2F2ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yU3R5bGVSZXNvbHZlKTog
SW5saW5lLiBDcmVhdGUgUmVuZGVyU3R5bGUgaW4gYSBiZXR0ZXIgd2F5LgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMpOiBHZXQgcmlkIG9mIHN3
aXRjaCBzdGF0ZW1lbnQgYW5kIHVzZSA8PSB0bworICAgICAgICBjaGVjayBmb3IgdGhlIGhpZ2gg
cHJpb3JpdHkgcHJvcGVydGllcy4gQ29udmVydCB0byB0ZW1wbGF0ZSB0byBhdm9pZCBjaGVja2lu
ZyAiYXBwbHlGaXJzdCIKKyAgICAgICAgZWFjaCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQpOiBBZGp1c3Qg
Zm9yIG5ldyBhcHBseURlY2xhcmF0aW9ucygpIHNpZ25hdHVyZS4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKTogZGl0dG8KKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlRm9yRWxlbWVudCk6
IGRpdHRvCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDogQWRqdXN0IGZvciBuZXcg
YXBwbHlEZWNsYXJhdGlvbnMoKSBzaWduYXR1cmUuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJT
dHlsZSk6IElubGluZSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaDogTWFrZSBjb25zdHJ1Y3RvciBwcml2YXRlIHNvIGl0IGNhbiBiZSBpbmxpbmUu
CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6IFNlZSBoaWdoLWxl
dmVsIGRlc2NyaXB0aW9uIG9mIGNoYW5nZXMgYWJvdmUuIFJlZGlkIHRoZQorICAgICAgICB3YXkg
Ym9vbGVhbiBmbGFncyB3b3JrLgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNFbGVtZW50Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0NvbnRhaW5lck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6aXNUZXh0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0hU
TUxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzU1ZHRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjppc1N0eWxlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6aXNDb21tZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNDbGFzcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjphY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aW5BY3RpdmVDaGFpbik6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjppbkRldGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpo
b3ZlcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmF0dGFjaGVkKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OnNldEF0dGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Om5lZWRz
U3R5bGVSZWNhbGMpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c3R5bGVDaGFuZ2VUeXBlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmNoaWxkTmVlZHNTdHlsZVJlY2FsYyk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjppc0xpbmspOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0SGFz
SUQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0SGFzQ2xhc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OnNldEluRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJJbkRvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEluQWN0aXZlQ2hhaW4pOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJJbkFjdGl2ZUNoYWluKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OnNldElzTGluayk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhcklzTGluayk6
CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0SG92ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppbkRvY3VtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Oik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpnZXRG
bGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldEZsYWcpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZTo6Y2xlYXJGbGFnKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6Omhhc1JhcmVEYXRh
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhcklzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6aXNTdHlsZUF0dHJpYnV0ZVZhbGlkKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OnNldElzU3R5bGVBdHRyaWJ1dGVWYWxpZCk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpjbGVhcklzU3R5bGVBdHRyaWJ1dGVWYWxpZCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjppc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzZXRJc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpOb2RlOjpjbGVhcklzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGU6OmFyZVNWR0F0dHJpYnV0ZXNWYWxpZCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlOjpzZXRBcmVTVkdBdHRyaWJ1dGVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6Y2xlYXJBcmVTVkdBdHRyaWJ1dGVzVmFsaWQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
aXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpz
ZXRJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmNsZWFySXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpO
b2RlOjpoYXNSYXJlU1ZHRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRIYXNSYXJl
U1ZHRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhckhhc1JhcmVTVkdEYXRhKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmluaXRpYWxSZWZDb3VudCk6CisgICAgICAgICogZG9t
L05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6dHJhY2tGb3JEZWJ1Z2dpbmcpOiBB
ZGp1c3RlZCBmb3IgY2hhbmdlcyBpbgorICAgICAgICBmbGFnIGhhbmRsaW5nLgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZTo6ZW5zdXJlUmFyZURhdGEpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6
Tm9kZTo6c2V0U3R5bGVDaGFuZ2UpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6c2V0
TmVlZHNTdHlsZVJlY2FsYyk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpsYXp5QXR0
YWNoKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmF0dGFjaCk6IGRpdHRvCisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpkZXRhY2gpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
cmVtb3ZlZEZyb21Eb2N1bWVudCk6IGRpdHRvCisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEu
Y3BwOgorICAgICAgICAqIGRvbS9DaGFyYWN0ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpD
aGFyYWN0ZXJEYXRhOjpDaGFyYWN0ZXJEYXRhKTogSW5saW5lIHRoZSBjb25zdHJ1Y3RvciAobW92
ZWQgZnJvbSAuY3BwKQorICAgICAgICAqIGRvbS9Db21tZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbW1lbnQ6OkNvbW1lbnQpOiBUZWxsIHRoZSBiYXNlIGNsYXNzIHRoYXQgd2UncmUgYSBj
b21tZW50LgorICAgICAgICAqIGRvbS9Db21tZW50Lmg6IFJlbW92ZSBpc0NvbW1lbnROb2RlIG92
ZXJyaWRlLgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRhaW5lck5vZGU6OmRldGFjaCk6IEFkanVzdGVkIGZvciBjaGFuZ2VzIGluIGZsYWcK
KyAgICAgICAgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1v
dmVkRnJvbURvY3VtZW50KTogZGl0dG8KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KTogQWRqdXN0ZWQgZm9yIGNoYW5nZXMg
aW4gZmxhZyBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZWNhbGNTdHls
ZSk6IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0Rm9jdXNlZE5vZGUpOiBk
aXR0bworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
Tm9kZSk6IElubGluZSB0aGUgTm9kZSBjb25zdHJ1Y3RvciAtIGdvZXMgaGVyZQorICAgICAgICBi
ZWNhdXNlIGl0IHVzZXMgRG9jdW1lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwOiBpbmNsdWRlIERvY3VtZW50LmggZHVlIHRvIGFib3ZlIGNoYW5nZQorICAgICAgICAqIGRv
bS9FZGl0aW5nVGV4dC5jcHA6IGRpdHRvCisgICAgICAgICogZG9tL0VudGl0eVJlZmVyZW5jZS5j
cHA6IGRpdHRvCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6Z2V0QXR0cmlidXRlKTogQWRqdXN0ZWQgZm9yIGNoYW5nZXMgaW4gZmxhZworICAg
ICAgICBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZSk6
IGRpdHRvCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNBdHRyaWJ1dGVzKTogZGl0dG8K
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlY2FsY1N0eWxlKTogZGl0dG8KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6IGRpdHRvCisgICAgICAg
ICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OkVsZW1lbnQpOiBJ
bmxpbmUgKG1vdmVkIGZyb20gLmNwcCkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRmlu
aXNoZWRQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YmVnaW5Q
YXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlcyk6
IEFkanVzdGVkIGZvciBjaGFuZ2VzIGluIGZsYWcKKyAgICAgICAgaGFuZGxpbmcuCisgICAgICAg
ICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVu
dDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUpOiBBZGp1c3QgZm9yCisgICAgICAgIGNoYW5nZXMgdG8g
ZmxhZyBoYW5kbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6Om1hcFRvRW50
cnkpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUpOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6Y29weU5v
bkF0dHJpYnV0ZVByb3BlcnRpZXMpOiBkaXR0bworICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpTdHlsZWRFbGVtZW50KTogSW5s
aW5lIChtb3ZlZCBmcm9tLmNwcCkKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6Omlu
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSk6IEFkanVzdCBmb3IKKyAgICAgICAgY2hhbmdlcyBpbiBm
bGFnIGhhbmRsaW5nLgorICAgICAgICAqIGRvbS9UZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0OjpUZXh0KTogSW5saW5lIChtb3ZlZCBmcm9tIC5jcHApCisgICAgICAgICogZG9tL1RleHQu
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6OkhUTUxBbmNob3JFbGVtZW50KTogQWRqdXN0IGZvciBj
aGFuZ2VzIGluCisgICAgICAgIGZsYWcgaGFuZGxpbmcuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
QW5jaG9yRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBkaXR0bworICAgICAgICAqIGh0
bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNyZWF0
ZSk6IFRlbGwgYmFzZSBjbGFzcyB3ZSdyZSBhbiBIVE1MIGVsZW1lbnQuCisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5oOiBkaXR0byBhYm92ZTsgcmVtb3ZlIGlzSFRNTEVsZW1lbnQgb3ZlcnJp
ZGUuCisgICAgICAgICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50Lmg6IFRlbGwgYmFzZSBj
bGFzcyB3ZSdyZSBhbiBIVE1MIGVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MRnJhbWVPd25l
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50OjpI
VE1MRnJhbWVPd25lckVsZW1lbnQpOiBkaXR0bworICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNz
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpIVE1M
UHJvZ3Jlc3NFbGVtZW50KTogZGl0dG8KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxFbGVtZW50OjpNYXRoTUxFbGVtZW50KTogVGVs
bCBiYXNlIGNsYXNzIHdlJ3JlIGEgc3R5bGVkCisgICAgICAgIGVsZW1lbnQuCisgICAgICAgICog
cmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpNZWRpYUNvbnRyb2xTaGFkb3dSb290RWxlbWVu
dCk6CisgICAgICAgIEFkanVzdCBmb3IgY2hhbmdlcyBpbiBmbGFnIGhhbmRsaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudCk6IGRp
dHRvCisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlhQ29u
dHJvbElucHV0RWxlbWVudCk6IGRpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZpbGVV
cGxvYWRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZpbGVVcGxvYWRDb250
cm9sOjp1cGRhdGVGcm9tRWxlbWVudCk6IGRpdHRvCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVIb3ZlckFj
dGl2ZVN0YXRlKTogZGl0dG8KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUHJvZ3Jlc3MuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyUHJvZ3Jlc3M6OnVwZGF0ZVZhbHVlUGFydFN0YXRl
KTogZGl0dG8KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNsaWRlcjo6dXBkYXRlRnJvbUVsZW1lbnQpOiBkaXR0bworICAgICAg
ICAqIHJlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50OjpTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQpOiBk
aXR0bworICAgICAgICAqIHJlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmF0dGFjaElubmVyRWxl
bWVudCk6IGRpdHRvCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpzZXRCYXNlVmFsKTogZGl0
dG8KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmOjpzZXRBbmlt
VmFsKTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpTVkdFbGVtZW50KTogVGVsbCBiYXNlIGNsYXNzIHdlJ3JlCisgICAg
ICAgIGFuIHN2ZyBlbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6ZW5zdXJl
UmFyZVNWR0RhdGEpOiBBZGp1c3QgZm9yIGZsYWcgaGFuZGxpbmcKKyAgICAgICAgY2hhbmdlcy4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRl
KTogZGl0dG8KKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBkaXR0bworICAgICAgICAqIHN2
Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6IGRpdHRvCisgICAgICAgICogd21sL1dNTEFuY2hvckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V01MQW5jaG9yRWxlbWVudDo6V01MQW5jaG9yRWxl
bWVudCk6IGRpdHRvCisgICAgICAgICogd21sL1dNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V01MRWxlbWVudDo6V01MRWxlbWVudCk6IFRlbGwgYmFzZSBjbGFzcyB3ZSdyZSBhIHN0
eWxlZAorICAgICAgICBlbGVtZW50LgorCiAyMDEwLTA1LTA2ICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkocmV2aXNpb24g
NTg5MDEpCisrKyBXZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC04LDYgKzgsMjQgQEAKICMgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS93b3Jrc2hvcC9h
dXRob3IvY3NzL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmFzcAogIwogCisjIGhpZ2gtcHJpb3JpdHkg
cHJvcGVydHkgbmFtZXMgaGF2ZSB0byBiZSBsaXN0ZWQgZmlyc3QsIHRvIHNpbXBsaWZ5IHRoZSBj
aGVjaworIyBmb3IgYXBwbHlpbmcgdGhlbSBmaXJzdC4KK2NvbG9yCitkaXJlY3Rpb24KK2Rpc3Bs
YXkKK2ZvbnQKK2ZvbnQtZmFtaWx5Citmb250LXNpemUKK2ZvbnQtc3R5bGUKK2ZvbnQtdmFyaWFu
dAorZm9udC13ZWlnaHQKKy13ZWJraXQtdGV4dC1zaXplLWFkanVzdAorem9vbQorCisjIGxpbmUg
aGVpZ2h0IG5lZWRzIHRvIGJlIHJpZ2h0IGFmdGVyIHRoZSBhYm92ZSBoaWdoLXByaW9yaXR5IHBy
b3BlcnRpZXMKK2xpbmUtaGVpZ2h0CisKKyMgVGhlIHJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBs
aXN0ZWQgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCiBiYWNrZ3JvdW5kCiBiYWNrZ3JvdW5kLWF0dGFj
aG1lbnQKIGJhY2tncm91bmQtY2xpcApAQCAtNTIsMjYgKzcwLDE2IEBAIGJvdHRvbQogY2FwdGlv
bi1zaWRlCiBjbGVhcgogY2xpcAotY29sb3IKIGNvbnRlbnQKIGNvdW50ZXItaW5jcmVtZW50CiBj
b3VudGVyLXJlc2V0CiBjdXJzb3IKLWRpcmVjdGlvbgotZGlzcGxheQogZW1wdHktY2VsbHMKIGZs
b2F0Ci1mb250Ci1mb250LWZhbWlseQotZm9udC1zaXplCiBmb250LXN0cmV0Y2gKLWZvbnQtc3R5
bGUKLWZvbnQtdmFyaWFudAotZm9udC13ZWlnaHQKIGhlaWdodAogbGVmdAogbGV0dGVyLXNwYWNp
bmcKLWxpbmUtaGVpZ2h0CiBsaXN0LXN0eWxlCiBsaXN0LXN0eWxlLWltYWdlCiBsaXN0LXN0eWxl
LXBvc2l0aW9uCkBAIC0xNDYsNyArMTU0LDYgQEAgd29yZC1icmVhawogd29yZC1zcGFjaW5nCiB3
b3JkLXdyYXAKIHotaW5kZXgKLXpvb20KIC13ZWJraXQtYW5pbWF0aW9uCiAtd2Via2l0LWFuaW1h
dGlvbi1kZWxheQogLXdlYmtpdC1hbmltYXRpb24tZGlyZWN0aW9uCkBAIC0yMzgsNyArMjQ1LDYg
QEAgem9vbQogLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdAogLXdlYmtpdC10ZXh0
LWZpbGwtY29sb3IKIC13ZWJraXQtdGV4dC1zZWN1cml0eQotLXdlYmtpdC10ZXh0LXNpemUtYWRq
dXN0CiAtd2Via2l0LXRleHQtc3Ryb2tlCiAtd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yCiAtd2Vi
a2l0LXRleHQtc3Ryb2tlLXdpZHRoCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAwLDExICs3MDAsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNo
UnVsZXNGb3JMaXN0CiAgICAgaWYgKCFydWxlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBtX2VsZW1lbnQtPmxvY2FsTmFtZSgpOwogICAg
IGZvciAoQ1NTUnVsZURhdGEqIGQgPSBydWxlcy0+Zmlyc3QoKTsgZDsgZCA9IGQtPm5leHQoKSkg
ewogICAgICAgICBDU1NTdHlsZVJ1bGUqIHJ1bGUgPSBkLT5ydWxlKCk7Ci0gICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgc2VsZWN0b3JMb2NhbE5hbWUgPSBkLT5zZWxlY3RvcigpLT5tX3RhZy5s
b2NhbE5hbWUoKTsKLSAgICAgICAgaWYgKChsb2NhbE5hbWUgPT0gc2VsZWN0b3JMb2NhbE5hbWUg
fHwgc2VsZWN0b3JMb2NhbE5hbWUgPT0gc3RhckF0b20pICYmIGNoZWNrU2VsZWN0b3IoZC0+c2Vs
ZWN0b3IoKSkpIHsKKyAgICAgICAgaWYgKGNoZWNrU2VsZWN0b3IoZC0+c2VsZWN0b3IoKSkpIHsK
ICAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGhhcyBubyBwcm9wZXJ0aWVzIHRvIGFwcGx5LCB0
aGVuIGlnbm9yZSBpdC4KICAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBk
ZWNsID0gcnVsZS0+ZGVjbGFyYXRpb24oKTsKICAgICAgICAgICAgIGlmICghZGVjbCB8fCAhZGVj
bC0+bGVuZ3RoKCkpCkBAIC04MTUsNyArODEzLDcgQEAgaW5saW5lIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aW5pdEVsZW1lbgogICAgIG1fc3R5bGVkRWxlbWVudCA9IG1fZWxlbWVudCAmJiBtX2Vs
ZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpID8gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG1f
ZWxlbWVudCkgOiAwOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJl
c29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCBwc2V1
ZG9JRCkKK2lubGluZSB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUo
RWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JRCkK
IHsKICAgICBtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSA9IHBzZXVkb0lEOwogCkBAIC0xMTQwLDcg
KzExMzgsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAg
Ly8gd2lsbCB2YW5pc2ggaWYgYSBzdHlsZSByZWNhbGMgaGFwcGVucyBkdXJpbmcgbG9hZGluZy4K
ICAgICBpZiAoYWxsb3dTaGFyaW5nICYmICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNM
b2FkZWQoKSAmJiAhZS0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAoIXNfc3R5bGVOb3RZZXRB
dmFpbGFibGUpIHsKLSAgICAgICAgICAgIHNfc3R5bGVOb3RZZXRBdmFpbGFibGUgPSA6Om5ldyBS
ZW5kZXJTdHlsZTsKKyAgICAgICAgICAgIHNfc3R5bGVOb3RZZXRBdmFpbGFibGUgPSBSZW5kZXJT
dHlsZTo6Y3JlYXRlKCkucmVsZWFzZVJlZigpOwogICAgICAgICAgICAgc19zdHlsZU5vdFlldEF2
YWlsYWJsZS0+cmVmKCk7CiAgICAgICAgICAgICBzX3N0eWxlTm90WWV0QXZhaWxhYmxlLT5zZXRE
aXNwbGF5KE5PTkUpOwogICAgICAgICAgICAgc19zdHlsZU5vdFlldEF2YWlsYWJsZS0+Zm9udCgp
LnVwZGF0ZShtX2ZvbnRTZWxlY3Rvcik7CkBAIC0xMzA3LDEyICsxMzA1LDEyIEBAIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAvLyBUaGUgb3JkZXIgaXMgKDEp
IGhpZ2gtcHJpb3JpdHkgbm90IGltcG9ydGFudCwgKDIpIGhpZ2gtcHJpb3JpdHkgaW1wb3J0YW50
LCAoMykgbm9ybWFsIG5vdCBpbXBvcnRhbnQKICAgICAvLyBhbmQgKDQpIG5vcm1hbCBpbXBvcnRh
bnQuCiAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKHRy
dWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKyAgICBhcHBseURlY2xh
cmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CiAgICAg
aWYgKCFyZXNvbHZlRm9yUm9vdERlZmF1bHQpIHsKLSAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnMo
dHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7Ci0gICAgICAgIGFw
cGx5RGVjbGFyYXRpb25zKHRydWUsIHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7
CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zPHRydWU+KHRydWUsIGZpcnN0QXV0aG9yUnVsZSwg
bGFzdEF1dGhvclJ1bGUpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVlLCBm
aXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwogICAgIH0KLSAgICBhcHBseURlY2xhcmF0aW9u
cyh0cnVlLCB0cnVlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgYXBwbHlEZWNsYXJh
dGlvbnM8dHJ1ZT4odHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8v
IElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IG5vdy4KICAg
ICBpZiAobV9mb250RGlydHkpCkBAIC0xMzIzLDE4ICsxMzIxLDE4IEBAIFBhc3NSZWZQdHI8UmVu
ZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgYXBwbHlQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUxpbmVIZWlnaHQsIG1fbGluZUhlaWdodFZhbHVlKTsKIAogICAgIC8vIE5vdyBkbyB0aGUg
bm9ybWFsIHByaW9yaXR5IFVBIHByb3BlcnRpZXMuCi0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFs
c2UsIGZhbHNlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgYXBwbHlEZWNsYXJhdGlv
bnM8ZmFsc2U+KGZhbHNlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8g
Q2FjaGUgb3VyIGJvcmRlciBhbmQgYmFja2dyb3VuZCBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRo
ZW0gbGF0ZXIuCiAgICAgY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgCiAgICAgLy8g
Tm93IGRvIHRoZSBhdXRob3IgYW5kIHVzZXIgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRpZXMgYW5k
IGFsbCB0aGUgIWltcG9ydGFudCBwcm9wZXJ0aWVzLgogICAgIGlmICghcmVzb2x2ZUZvclJvb3RE
ZWZhdWx0KSB7Ci0gICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgbGFzdFVB
UnVsZSArIDEsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOwotICAgICAgICBhcHBseURlY2xh
cmF0aW9ucyhmYWxzZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7Ci0g
ICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVzZXJSdWxlLCBsYXN0
VXNlclJ1bGUpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIGxhc3RV
QVJ1bGUgKyAxLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKyAgICAgICAgYXBwbHlEZWNs
YXJhdGlvbnM8ZmFsc2U+KHRydWUsIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUpOwor
ICAgICAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4odHJ1ZSwgZmlyc3RVc2VyUnVsZSwgbGFz
dFVzZXJSdWxlKTsKICAgICB9Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZp
cnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKyAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4odHJ1
ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8vIElmIG91ciBmb250IGdv
dCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLCAKICAgICAv
LyBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCkBAIC0xMzk4LDcgKzEzOTYs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmtleWZyYW1lU3R5bGVzRm9yCiAgICAgICAgIAog
ICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGJvdGhlciB3aXRoICFpbXBvcnRhbnQuIFNpbmNl
IHRoZXJlIGlzIG9ubHkgZXZlciBvbmUKICAgICAgICAgLy8gZGVjbCwgdGhlcmUncyBub3RoaW5n
IHRvIG92ZXJyaWRlLiBTbyBqdXN0IGFkZCB0aGUgZmlyc3QgcHJvcGVydGllcy4KLSAgICAgICAg
YXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAt
IDEpOworICAgICAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVk
RGVjbHMuc2l6ZSgpIC0gMSk7CiAgICAgICAgIAogICAgICAgICAvLyBJZiBvdXIgZm9udCBnb3Qg
ZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBub3cuCiAgICAgICAgIGlmIChtX2ZvbnRE
aXJ0eSkKQEAgLTE0MDksNyArMTQwNyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJh
bWVTdHlsZXNGb3IKICAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVp
Z2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7CiAgICAgICAgIAogICAgICAgICAvLyBOb3cgZG8gcmVz
dCBvZiB0aGUgcHJvcGVydGllcy4KLSAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIGZh
bHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKKyAgICAgICAgYXBwbHlEZWNsYXJh
dGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKICAgICAg
ICAgCiAgICAgICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9u
LWVzc2VudGlhbCBmb250IHByb3BzLCAKICAgICAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBp
dCBhIHNlY29uZCB0aW1lLgpAQCAtMTQ5NiwxMCArMTQ5NCwxMCBAQCBQYXNzUmVmUHRyPFJlbmRl
clN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yCiAgICAgbV9jaGVja2VyLm1fbWF0Y2hWaXNpdGVkUHNl
dWRvQ2xhc3MgPSBoZWxwZXJDYWxsRm9yVmlzaXRlZFN0eWxlOwogCiAgICAgLy8gSGlnaC1wcmlv
cml0eSBwcm9wZXJ0aWVzLgotICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBt
X21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKLSAgICBhcHBseURlY2xhcmF0aW9ucyh0cnVlLCB0
cnVlLCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRob3JSdWxlKTsKLSAgICBhcHBseURlY2xhcmF0
aW9ucyh0cnVlLCB0cnVlLCBmaXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwotICAgIGFwcGx5
RGVjbGFyYXRpb25zKHRydWUsIHRydWUsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKyAgICBh
cHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0g
MSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBs
YXN0QXV0aG9yUnVsZSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4odHJ1ZSwgZmlyc3RV
c2VyUnVsZSwgbGFzdFVzZXJSdWxlKTsKKyAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPih0cnVl
LCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290
IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgogICAgIGlmIChtX2ZvbnREaXJ0
eSkKQEAgLTE1MTAsMTUgKzE1MDgsMTUgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5
bGVTZWxlY3RvcgogICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwg
bV9saW5lSGVpZ2h0VmFsdWUpOwogICAgIAogICAgIC8vIE5vdyBkbyB0aGUgbm9ybWFsIHByaW9y
aXR5IHByb3BlcnRpZXMuCi0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIGZhbHNlLCBmaXJz
dFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNl
LCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gQ2FjaGUgb3VyIGJvcmRl
ciBhbmQgYmFja2dyb3VuZCBzbyB0aGF0IHdlIGNhbiBleGFtaW5lIHRoZW0gbGF0ZXIuCiAgICAg
Y2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgCi0gICAgYXBwbHlEZWNsYXJhdGlvbnMo
ZmFsc2UsIGZhbHNlLCBsYXN0VUFSdWxlICsgMSwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7
Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0QXV0aG9yUnVsZSwgbGFz
dEF1dGhvclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVz
ZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVl
LCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+
KGZhbHNlLCBsYXN0VUFSdWxlICsgMSwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CisgICAg
YXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KHRydWUsIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhv
clJ1bGUpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBmaXJzdFVzZXJSdWxl
LCBsYXN0VXNlclJ1bGUpOworICAgIGFwcGx5RGVjbGFyYXRpb25zPGZhbHNlPih0cnVlLCBmaXJz
dFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRp
ZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsIAogICAgIC8vIGdvIGFo
ZWFkIGFuZCB1cGRhdGUgaXQgYSBzZWNvbmQgdGltZS4KQEAgLTI4NDMsOCArMjg0MSw4IEBAIHN0
YXRpYyBMZW5ndGggY29udmVydFRvTGVuZ3RoKENTU1ByaW1pdGkKICAgICByZXR1cm4gbDsKIH0K
IAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyhib29sIGFwcGx5Rmly
c3QsIGJvb2wgaXNJbXBvcnRhbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzdGFydEluZGV4LCBpbnQgZW5kSW5kZXgpCit0ZW1wbGF0ZSA8Ym9vbCBhcHBs
eUZpcnN0Pgordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseURlY2xhcmF0aW9ucyhib29sIGlz
SW1wb3J0YW50LCBpbnQgc3RhcnRJbmRleCwgaW50IGVuZEluZGV4KQogewogICAgIGlmIChzdGFy
dEluZGV4ID09IC0xKQogICAgICAgICByZXR1cm47CkBAIC0yODU0LDM1ICsyODUyLDI2IEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlEZWNsYXJhdGlvbnMKICAgICAgICAgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRlY2wtPmVuZCgpOwogICAg
ICAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9
IGRlY2wtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgY29uc3QgQ1NT
UHJvcGVydHkmIGN1cnJlbnQgPSAqaXQ7Ci0gICAgICAgICAgICAvLyBnaXZlIHNwZWNpYWwgcHJp
b3JpdHkgdG8gZm9udC14eHgsIGNvbG9yIHByb3BlcnRpZXMKICAgICAgICAgICAgIGlmIChpc0lt
cG9ydGFudCA9PSBjdXJyZW50LmlzSW1wb3J0YW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29s
IGZpcnN0OwotICAgICAgICAgICAgICAgIHN3aXRjaCAoY3VycmVudC5pZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMaW5lSGVpZ2h0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSBjdXJyZW50LnZhbHVlKCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmaXJzdCA9ICFhcHBseUZpcnN0OyAvLyB3ZSBhcHBseSBsaW5lLWhlaWdo
dCBsYXRlcgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvcjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NQ
cm9wZXJ0eURpcmVjdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eURp
c3BsYXk6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlGb250OgotICAgICAg
ICAgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9udFNpemU6Ci0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U3R5bGU6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlGb250RmFtaWx5OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFdlaWdodDoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFRleHRTaXplQWRqdXN0OgotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1Byb3BlcnR5Rm9u
dFZhcmlhbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgaGF2ZSB0byBiZSBhcHBsaWVkIGZpcnN0LCBi
ZWNhdXNlIG90aGVyIHByb3BlcnRpZXMgdXNlIHRoZSBjb21wdXRlZAotICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gdmFsdWVzIG9mIHRoZXNlIHByb3BlcnRpZXMuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBmaXJzdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBpbnQgcHJvcGVydHkgPSBjdXJyZW50LmlkKCk7CisKKyAgICAgICAgICAgICAgICBpZiAoYXBw
bHlGaXJzdCkgeworICAgICAgICAgICAgICAgICAgICBDT01QSUxFX0FTU0VSVChmaXJzdENTU1By
b3BlcnR5ID09IENTU1Byb3BlcnR5Q29sb3IsIENTU19jb2xvcl9pc19maXJzdF9wcm9wZXJ0eSk7
CisgICAgICAgICAgICAgICAgICAgIENPTVBJTEVfQVNTRVJUKENTU1Byb3BlcnR5Wm9vbSA9PSBD
U1NQcm9wZXJ0eUNvbG9yICsgMTAsIENTU196b29tX2lzX2VuZF9vZl9maXJzdF9wcm9wX3Jhbmdl
KTsKKyAgICAgICAgICAgICAgICAgICAgQ09NUElMRV9BU1NFUlQoQ1NTUHJvcGVydHlMaW5lSGVp
Z2h0ID09IENTU1Byb3BlcnR5Wm9vbSArIDEsIENTU19saW5lX2hlaWdodF9pc19hZnRlcl96b29t
KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBnaXZlIHNwZWNpYWwgcHJpb3JpdHkgdG8gZm9u
dC14eHgsIGNvbG9yIHByb3BlcnRpZXMsIGV0YworICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHkgPD0gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyB3ZSBhcHBseSBsaW5lLWhlaWdodCBsYXRlcgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5TGluZUhlaWdodCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IGN1cnJlbnQudmFsdWUoKTsgCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5
UHJvcGVydHkoY3VycmVudC5pZCgpLCBjdXJyZW50LnZhbHVlKCkpOworICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHByb3BlcnR5ID4gQ1NTUHJvcGVydHlMaW5lSGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwbHlQcm9wZXJ0eShjdXJyZW50LmlkKCksIGN1cnJlbnQudmFsdWUoKSk7CiAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmaXJzdCA9PSBhcHBseUZpcnN0KQotICAg
ICAgICAgICAgICAgICAgICBhcHBseVByb3BlcnR5KGN1cnJlbnQuaWQoKSwgY3VycmVudC52YWx1
ZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmgJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksNyArMTc5LDggQEAgcHVibGljOgogICAgICAgICB2
b2lkIG1hdGNoUnVsZXNGb3JMaXN0KENTU1J1bGVEYXRhTGlzdCosIGludCYgZmlyc3RSdWxlSW5k
ZXgsIGludCYgbGFzdFJ1bGVJbmRleCk7CiAgICAgICAgIHZvaWQgc29ydE1hdGNoZWRSdWxlcyh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKIAotICAgICAgICB2b2lkIGFwcGx5RGVjbGFy
YXRpb25zKGJvb2wgZmlyc3RQYXNzLCBib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGlu
dCBlbmRJbmRleCk7CisgICAgICAgIHRlbXBsYXRlIDxib29sIGZpcnN0UGFzcz4KKyAgICAgICAg
dm9pZCBhcHBseURlY2xhcmF0aW9ucyhib29sIGltcG9ydGFudCwgaW50IHN0YXJ0SW5kZXgsIGlu
dCBlbmRJbmRleCk7CiAgICAgICAgIAogICAgICAgICBDU1NSdWxlU2V0KiBtX2F1dGhvclN0eWxl
OwogICAgICAgICBDU1NSdWxlU2V0KiBtX3VzZXJTdHlsZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEu
Y3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMyArMjksNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUNoYXJhY3RlckRhdGE6OkNoYXJhY3RlckRhdGEoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIHRleHQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKLSAgICA6IE5vZGUoZG9jdW1lbnQs
IHR5cGUpCi0gICAgLCBtX2RhdGEodGV4dC5pbXBsKCkgPyB0ZXh0LmltcGwoKSA6IFN0cmluZ0lt
cGw6OmVtcHR5KCkpCi17Ci0gICAgQVNTRVJUKHR5cGUgPT0gQ3JlYXRlT3RoZXIgfHwgdHlwZSA9
PSBDcmVhdGVUZXh0KTsKLX0KLQogdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNvbnN0IFN0
cmluZyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYpCiB7CiAgICAgU3RyaW5nSW1wbCogZGF0YUltcGwg
PSBkYXRhLmltcGwoKSA/IGRhdGEuaW1wbCgpIDogU3RyaW5nSW1wbDo6ZW1wdHkoKTsKSW5kZXg6
IFdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9D
aGFyYWN0ZXJEYXRhLmgJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0MywxMiBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nSW1wbCogZGF0YUltcGwoKSB7IHJldHVybiBtX2RhdGEuZ2V0KCk7IH0KIAogcHJvdGVjdGVk
OgotICAgIENoYXJhY3RlckRhdGEoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmLCBDb25zdHJ1Y3Rp
b25UeXBlKTsKKyAgICBDaGFyYWN0ZXJEYXRhKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCisgICAgICAgIDogTm9kZShkb2N1bWVu
dCwgdHlwZSkKKyAgICAgICAgLCBtX2RhdGEodGV4dC5pbXBsKCkgPyB0ZXh0LmltcGwoKSA6IFN0
cmluZ0ltcGw6OmVtcHR5KCkpCisgICAgeworICAgICAgICBBU1NFUlQodHlwZSA9PSBDcmVhdGVP
dGhlciB8fCB0eXBlID09IENyZWF0ZVRleHQpOworICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBy
ZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0NvbW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCShyZXZpc2lvbiA1
ODkwMSkKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwx
MCArMjIsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb21tZW50LmgiCiAK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBD
b21tZW50OjpDb21tZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQot
ICAgIDogQ2hhcmFjdGVyRGF0YShkb2N1bWVudCwgdGV4dCwgQ3JlYXRlT3RoZXIpCisgICAgOiBD
aGFyYWN0ZXJEYXRhKGRvY3VtZW50LCB0ZXh0LCBDcmVhdGVDb21tZW50KQogewogfQogCkluZGV4
OiBXZWJDb3JlL2RvbS9Db21tZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ29tbWVu
dC5oCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9tL0NvbW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNyArMzcsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVO
YW1lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxOb2RlPiBjbG9uZU5vZGUoYm9vbCBkZWVwKTsKLSAgICB2aXJ0
dWFsIGJvb2wgaXNDb21tZW50Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSk7CiB9OwogCkluZGV4OiBXZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE2LDcgKzYxNiw3IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6ZGV0YWNoKCkKIHsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gbV9maXJzdENoaWxkOyBjaGls
ZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgY2hpbGQtPmRldGFjaCgp
OwotICAgIHNldENoaWxkTmVlZHNTdHlsZVJlY2FsYyhmYWxzZSk7CisgICAgY2xlYXJDaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKTsKICAgICBOb2RlOjpkZXRhY2goKTsKIH0KIApAQCAtNjMzLDcgKzYz
Myw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlZEZyb21Eb2N1bWVudCgKICAgICBOb2Rl
OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAgaWYgKGRvY3VtZW50KCktPmNzc1RhcmdldCgp
ID09IHRoaXMpIAogICAgICAgICBkb2N1bWVudCgpLT5zZXRDU1NUYXJnZXQoMCk7IAotICAgIHNl
dEluRG9jdW1lbnQoZmFsc2UpOworICAgIGNsZWFySW5Eb2N1bWVudCgpOwogICAgIHJlbW92ZWRG
cm9tVHJlZShmYWxzZSk7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IG1fZmlyc3RDaGlsZDsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGNoaWxkLT5yZW1vdmVk
RnJvbURvY3VtZW50KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIyLDcgKzQyMiw3IEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGJvb2wgaXMKIAogICAgIG1fdGV4dENvbG9y
ID0gQ29sb3I6OmJsYWNrOwogICAgIG1fbGlzdGVuZXJUeXBlcyA9IDA7Ci0gICAgbV9pbkRvY3Vt
ZW50ID0gdHJ1ZTsKKyAgICBzZXRJbkRvY3VtZW50KCk7CiAgICAgbV9pblN0eWxlUmVjYWxjID0g
ZmFsc2U7CiAgICAgbV9jbG9zZUFmdGVyU3R5bGVSZWNhbGMgPSBmYWxzZTsKIApAQCAtMTM4Niw3
ICsxMzg2LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVjYWxjU3R5bGUoU3R5bGVDaGFuZ2UgYwogCiBi
YWlsX291dDoKICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKE5vU3R5bGVDaGFuZ2UpOwotICAgIHNl
dENoaWxkTmVlZHNTdHlsZVJlY2FsYyhmYWxzZSk7CisgICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICB1bnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKIAogICAgIGlmICh2aWV3KCkp
CkBAIC0yODM1LDcgKzI4MzUsNyBAQCBib29sIERvY3VtZW50OjpzZXRGb2N1c2VkTm9kZShQYXNz
UmVmUHRyCiAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CiAKICAgICAvLyBSZW1vdmUgZm9jdXMgZnJv
bSB0aGUgZXhpc3RpbmcgZm9jdXMgbm9kZSAoaWYgYW55KQotICAgIGlmIChvbGRGb2N1c2VkTm9k
ZSAmJiAhb2xkRm9jdXNlZE5vZGUtPm1faW5EZXRhY2gpIHsgCisgICAgaWYgKG9sZEZvY3VzZWRO
b2RlICYmICFvbGRGb2N1c2VkTm9kZS0+aW5EZXRhY2goKSkgeyAKICAgICAgICAgaWYgKG9sZEZv
Y3VzZWROb2RlLT5hY3RpdmUoKSkKICAgICAgICAgICAgIG9sZEZvY3VzZWROb2RlLT5zZXRBY3Rp
dmUoZmFsc2UpOwogCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1NCw2ICsxMjU0LDIyIEBAIGlubGluZSBi
b29sIE5vZGU6OmlzRG9jdW1lbnROb2RlKCkgY29uc3QKICAgICByZXR1cm4gdGhpcyA9PSBtX2Rv
Y3VtZW50OwogfQogCisvLyBoZXJlIGJlY2F1c2UgaXQgdXNlcyBhIERvY3VtZW50IG1ldGhvZCBi
dXQgd2UgcmVhbGx5IHdhbnQgdG8gaW5saW5lIGl0CitpbmxpbmUgTm9kZTo6Tm9kZShEb2N1bWVu
dCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKKyAgICA6IFRyZWVTaGFyZWQ8Tm9k
ZT4oaW5pdGlhbFJlZkNvdW50KHR5cGUpKQorICAgICwgbV9kb2N1bWVudChkb2N1bWVudCkKKyAg
ICAsIG1fcHJldmlvdXMoMCkKKyAgICAsIG1fbmV4dCgwKQorICAgICwgbV9yZW5kZXJlcigwKQor
ICAgICwgbV9ub2RlRmxhZ3ModHlwZSkKK3sKKyAgICBpZiAobV9kb2N1bWVudCkKKyAgICAgICAg
bV9kb2N1bWVudC0+c2VsZk9ubHlSZWYoKTsKKyNpZiAhZGVmaW5lZChOREVCVUcpIHx8IChkZWZp
bmVkKERVTVBfTk9ERV9TVEFUSVNUSUNTKSAmJiBEVU1QX05PREVfU1RBVElTVElDUykKKyAgICB0
cmFja0ZvckRlYnVnZ2luZygpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIERvY3VtZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCShy
ZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBpbmxpbmUgRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVu
dChEb2N1bWVudCogZG9jdW1lbnQpCkluZGV4OiBXZWJDb3JlL2RvbS9FZGl0aW5nVGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWRpdGluZ1RleHQuY3BwCShyZXZpc2lvbiA1ODkw
MSkKKysrIFdlYkNvcmUvZG9tL0VkaXRpbmdUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVkaXRpbmdUZXh0Lmgi
CiAKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorCiAvLyBGSVhNRTogRG9lcyB0aGlzIHJlYWxseSBy
ZXF1aXJlIGEgY2xhc3M/IFBlcmhhcHMgaW5zdGVhZCBhbnkgdGV4dCBub2RlCiAvLyBpbnNpZGUg
YW4gZWRpdGFibGUgZWxlbWVudCBjb3VsZCBoYXZlIHRoZSAiYWx3YXlzIGNyZWF0ZSBhIHJlbmRl
cmVyIiBiZWhhdmlvci4KIApJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiB1c2luZyBuYW1lc3Bh
Y2UgWE1MTmFtZXM7CiAgICAgCi1FbGVtZW50OjpFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAg
IDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgdHlwZSkKLSAgICAsIG1fdGFnTmFtZSh0YWdOYW1l
KQotewotfQotCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVtZW50KSk7CkBA
IC0yMjUsMTEgKzIxOSwxMSBAQCBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZShjb25zdCBRdWFs
aWZpCiAKIGNvbnN0IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKG5hbWUgPT0gc3R5bGVBdHRyICYm
ICFtX2lzU3R5bGVBdHRyaWJ1dGVWYWxpZCkKKyAgICBpZiAobmFtZSA9PSBzdHlsZUF0dHIgJiYg
IWlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpKQogICAgICAgICB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgp
OwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQor
ICAgIGlmICghYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCkpCiAgICAgICAgIHVwZGF0ZUFuaW1hdGVk
U1ZHQXR0cmlidXRlKG5hbWUpOwogI2VuZGlmCiAKQEAgLTUzMiwxMSArNTI2LDExIEBAIGNvbnN0
IEF0b21pY1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXQKICAgICBib29sIGlnbm9yZUNhc2Ug
PSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpOwogICAgIAogICAgIC8vIFVwZGF0ZSB0
aGUgJ3N0eWxlJyBhdHRyaWJ1dGUgaWYgaXQncyBpbnZhbGlkIGFuZCBiZWluZyByZXF1ZXN0ZWQ6
Ci0gICAgaWYgKCFtX2lzU3R5bGVBdHRyaWJ1dGVWYWxpZCAmJiBlcXVhbFBvc3NpYmx5SWdub3Jp
bmdDYXNlKG5hbWUsIHN0eWxlQXR0ci5sb2NhbE5hbWUoKSwgaWdub3JlQ2FzZSkpCisgICAgaWYg
KCFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSAmJiBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5h
bWUsIHN0eWxlQXR0ci5sb2NhbE5hbWUoKSwgaWdub3JlQ2FzZSkpCiAgICAgICAgIHVwZGF0ZVN0
eWxlQXR0cmlidXRlKCk7CiAKICNpZiBFTkFCTEUoU1ZHKQotICAgIGlmICghbV9hcmVTVkdBdHRy
aWJ1dGVzVmFsaWQpIHsKKyAgICBpZiAoIWFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpKSB7CiAgICAg
ICAgIC8vIFdlJ3JlIG5vdCBwYXNzaW5nIGEgbmFtZXNwYWNlIGFyZ3VtZW50IG9uIHB1cnBvc2Uu
IFNWR05hbWVzOjoqQXR0ciBhcmUgZGVmaW5lZCB3L28gbmFtZXNwYWNlcyBhcyB3ZWxsLgogICAg
ICAgICB1cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBu
YW1lLCBudWxsQXRvbSkpOwogICAgIH0KQEAgLTU4Myw3ICs1NzcsNyBAQCB2b2lkIEVsZW1lbnQ6
OnNldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBp
ZiAoUGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAgICBpZiAoSW5zcGVj
dG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciA9IHBhZ2UtPmluc3BlY3RvckNvbnRy
b2xsZXIoKSkgewotICAgICAgICAgICAgaWYgKCFtX3N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0
ZSkKKyAgICAgICAgICAgIGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKICAg
ICAgICAgICAgICAgICBpbnNwZWN0b3JDb250cm9sbGVyLT5kaWRNb2RpZnlET01BdHRyKHRoaXMp
OwogICAgICAgICB9CiAgICAgfQpAQCAtNjEyLDcgKzYwNiw3IEBAIHZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmkKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIGlmIChQ
YWdlKiBwYWdlID0gZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAgICAgICAgIGlmIChJbnNwZWN0b3JD
b250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyID0gcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpKSB7Ci0gICAgICAgICAgICBpZiAoIW1fc3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKQor
ICAgICAgICAgICAgaWYgKCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQogICAgICAg
ICAgICAgICAgIGluc3BlY3RvckNvbnRyb2xsZXItPmRpZE1vZGlmeURPTUF0dHIodGhpcyk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MTgsMTEgKzcxMiwxMSBAQCB2b2lkIEVsZW1lbnQ6OnNldEF0
dHJpYnV0ZU1hcChQYXNzUmVmUHRyCiAKIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlcygpIGNv
bnN0CiB7Ci0gICAgaWYgKCFtX2lzU3R5bGVBdHRyaWJ1dGVWYWxpZCkKKyAgICBpZiAoIWlzU3R5
bGVBdHRyaWJ1dGVWYWxpZCgpKQogICAgICAgICB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpOwogCiAj
aWYgRU5BQkxFKFNWRykKLSAgICBpZiAoIW1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKQorICAgIGlm
ICghYXJlU1ZHQXR0cmlidXRlc1ZhbGlkKCkpCiAgICAgICAgIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0
cmlidXRlKGFueVFOYW1lKCkpOwogI2VuZGlmCiAKQEAgLTkxNiw3ICs5MTAsNyBAQCB2b2lkIEVs
ZW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlIGNoCiAgICAgICAgICAgICBhdHRhY2goKTsg
Ly8gRklYTUU6IFRoZSBzdHlsZSBnZXRzIGNvbXB1dGVkIHR3aWNlIGJ5IGNhbGxpbmcgYXR0YWNo
LiBXZSBjb3VsZCBkbyBiZXR0ZXIgaWYgd2UgcGFzc2VkIHRoZSBzdHlsZSBhbG9uZy4KICAgICAg
ICAgICAgIC8vIGF0dGFjaCByZWNhbHVsYXRlcyB0aGUgc3R5bGUgZm9yIGFsbCBjaGlsZHJlbi4g
Tm8gbmVlZCB0byBkbyBpdCB0d2ljZS4KICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMo
Tm9TdHlsZUNoYW5nZSk7Ci0gICAgICAgICAgICBzZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoZmFs
c2UpOworICAgICAgICAgICAgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC05ODIsNyArOTc2LDcgQEAgdm9pZCBFbGVtZW50
OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaAogICAgIH0KIAogICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoTm9TdHlsZUNoYW5nZSk7Ci0gICAgc2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKGZhbHNl
KTsKKyAgICBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogfQogCiBib29sIEVsZW1lbnQ6
OmNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUgdHlwZSkKQEAgLTEwOTEsNyArMTA4NSw3IEBAIHZv
aWQgRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmcKIHZvaWQgRWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWxkcmVuKCkKIHsKICAgICBDb250YWluZXJOb2RlOjpmaW5pc2hQYXJzaW5n
Q2hpbGRyZW4oKTsKLSAgICBtX3BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkID0gdHJ1ZTsKKyAgICBz
ZXRJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7CiAgICAgY2hlY2tGb3JTaWJsaW5nU3R5bGVD
aGFuZ2VzKHRoaXMsIHJlbmRlclN0eWxlKCksIHRydWUsIGxhc3RDaGlsZCgpLCAwLCAwKTsKIH0K
IApJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuaAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZUVudHJ5LmgiCisj
aW5jbHVkZSAiTmFtZWROb2RlTWFwLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAKQEAgLTIzNiw5ICsyMzcsOSBAQCBwdWJsaWM6CiAgICAg
Ly8gVXNlIERvY3VtZW50OjpyZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKCkgdG8gc3Vi
c2NyaWJlIHRvIHRoaXMKICAgICB2aXJ0dWFsIHZvaWQgbWVkaWFWb2x1bWVEaWRDaGFuZ2UoKSB7
IH0KIAotICAgIGJvb2wgaXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyc2luZ0NoaWxkcmVuRmluaXNoZWQ7IH0KKyAgICBib29sIGlzRmluaXNoZWRQYXJzaW5n
Q2hpbGRyZW4oKSBjb25zdCB7IHJldHVybiBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCk7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7Ci0gICAgdmlydHVhbCB2
b2lkIGJlZ2luUGFyc2luZ0NoaWxkcmVuKCkgeyBtX3BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkID0g
ZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5QYXJzaW5nQ2hpbGRyZW4oKSB7IGNsZWFy
SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCgpOyB9CiAKICAgICAvLyBFbGVtZW50VHJhdmVyc2Fs
IEFQSQogICAgIEVsZW1lbnQqIGZpcnN0RWxlbWVudENoaWxkKCkgY29uc3Q7CkBAIC0yNzMsNyAr
Mjc0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hGb3JtQ29udHJvbENo
YW5nZUV2ZW50KCkgeyB9CiAKIHByb3RlY3RlZDoKLSAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmLCBEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOworICAgIEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25U
eXBlIHR5cGUpCisgICAgICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgdHlwZSkKKyAgICAg
ICAgLCBtX3RhZ05hbWUodGFnTmFtZSkKKyAgICB7CisgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IGluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoKTsKQEAgLTM1NywxMSArMzYyLDExIEBAIGlubGluZSBjb25zdCBRdWFsaWZpZWROYW1l
JiBFbGVtZW50OjppZEEKIAogaW5saW5lIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6YXR0cmlidXRl
cyhib29sIHJlYWRvbmx5KSBjb25zdAogewotICAgIGlmICghbV9pc1N0eWxlQXR0cmlidXRlVmFs
aWQpCisgICAgaWYgKCFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSkKICAgICAgICAgdXBkYXRlU3R5
bGVBdHRyaWJ1dGUoKTsKIAogI2lmIEVOQUJMRShTVkcpCi0gICAgaWYgKCFtX2FyZVNWR0F0dHJp
YnV0ZXNWYWxpZCkKKyAgICBpZiAoIWFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpKQogICAgICAgICB1
cGRhdGVBbmltYXRlZFNWR0F0dHJpYnV0ZShhbnlRTmFtZSgpKTsKICNlbmRpZgogCkluZGV4OiBX
ZWJDb3JlL2RvbS9FbnRpdHlSZWZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VudGl0eVJlZmVyZW5jZS5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9kb20vRW50
aXR5UmVmZXJlbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkVudGl0eVJlZmVyZW5jZS5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBpbmxpbmUgRW50aXR5UmVmZXJl
bmNlOjpFbnRpdHlSZWZlcmVuY2UoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGVu
dGl0eU5hbWUpCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL2RvbS9Ob2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDk5ICszMzQsOCBAQCBOb2RlOjpTdHlsZUNoYW5nZSBO
b2RlOjpkaWZmKGNvbnN0IFJlbmRlCiAgICAgcmV0dXJuIGNoOwogfQogCi1pbmxpbmUgYm9vbCBO
b2RlOjppbml0aWFsUmVmQ291bnQoQ29uc3RydWN0aW9uVHlwZSB0eXBlKQordm9pZCBOb2RlOjp0
cmFja0ZvckRlYnVnZ2luZygpCiB7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2Ug
Q3JlYXRlQ29udGFpbmVyOgotICAgICAgICBjYXNlIENyZWF0ZUVsZW1lbnQ6Ci0gICAgICAgIGNh
c2UgQ3JlYXRlT3RoZXI6Ci0gICAgICAgIGNhc2UgQ3JlYXRlVGV4dDoKLSAgICAgICAgICAgIHJl
dHVybiAxOwotICAgICAgICBjYXNlIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQ6Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIDE7Ci19Ci0KLWlubGluZSBib29sIE5vZGU6OmlzQ29udGFpbmVyKENvbnN0cnVjdGlvblR5
cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBDcmVhdGVDb250
YWluZXI6Ci0gICAgICAgIGNhc2UgQ3JlYXRlRWxlbWVudDoKLSAgICAgICAgY2FzZSBDcmVhdGVF
bGVtZW50WmVyb1JlZkNvdW50OgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGNh
c2UgQ3JlYXRlT3RoZXI6Ci0gICAgICAgIGNhc2UgQ3JlYXRlVGV4dDoKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1pbmxpbmUgYm9vbCBOb2RlOjppc0VsZW1lbnQoQ29uc3RydWN0aW9uVHlw
ZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIENyZWF0ZUNvbnRh
aW5lcjoKLSAgICAgICAgY2FzZSBDcmVhdGVPdGhlcjoKLSAgICAgICAgY2FzZSBDcmVhdGVUZXh0
OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNlIENyZWF0ZUVsZW1lbnQ6
Ci0gICAgICAgIGNhc2UgQ3JlYXRlRWxlbWVudFplcm9SZWZDb3VudDoKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7Ci19Ci0KLWlubGluZSBib29sIE5vZGU6OmlzVGV4dChDb25zdHJ1Y3Rpb25UeXBlIHR5
cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQ3JlYXRlQ29udGFpbmVy
OgotICAgICAgICBjYXNlIENyZWF0ZUVsZW1lbnQ6Ci0gICAgICAgIGNhc2UgQ3JlYXRlRWxlbWVu
dFplcm9SZWZDb3VudDoKLSAgICAgICAgY2FzZSBDcmVhdGVPdGhlcjoKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBDcmVhdGVUZXh0OgotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotTm9kZTo6Tm9kZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUg
dHlwZSkKLSAgICA6IFRyZWVTaGFyZWQ8Tm9kZT4oaW5pdGlhbFJlZkNvdW50KHR5cGUpKQotICAg
ICwgbV9kb2N1bWVudChkb2N1bWVudCkKLSAgICAsIG1fcHJldmlvdXMoMCkKLSAgICAsIG1fbmV4
dCgwKQotICAgICwgbV9yZW5kZXJlcigwKQotICAgICwgbV9zdHlsZUNoYW5nZShOb1N0eWxlQ2hh
bmdlKQotICAgICwgbV9oYXNJZChmYWxzZSkKLSAgICAsIG1faGFzQ2xhc3MoZmFsc2UpCi0gICAg
LCBtX2F0dGFjaGVkKGZhbHNlKQotICAgICwgbV9jaGlsZE5lZWRzU3R5bGVSZWNhbGMoZmFsc2Up
Ci0gICAgLCBtX2luRG9jdW1lbnQoZmFsc2UpCi0gICAgLCBtX2lzTGluayhmYWxzZSkKLSAgICAs
IG1fYWN0aXZlKGZhbHNlKQotICAgICwgbV9ob3ZlcmVkKGZhbHNlKQotICAgICwgbV9pbkFjdGl2
ZUNoYWluKGZhbHNlKQotICAgICwgbV9pbkRldGFjaChmYWxzZSkKLSAgICAsIG1faGFzUmFyZURh
dGEoZmFsc2UpCi0gICAgLCBtX2lzRWxlbWVudChpc0VsZW1lbnQodHlwZSkpCi0gICAgLCBtX2lz
Q29udGFpbmVyKGlzQ29udGFpbmVyKHR5cGUpKQotICAgICwgbV9pc1RleHQoaXNUZXh0KHR5cGUp
KQotICAgICwgbV9wYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCh0cnVlKQotICAgICwgbV9pc1N0eWxl
QXR0cmlidXRlVmFsaWQodHJ1ZSkKLSAgICAsIG1fc3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRl
KGZhbHNlKQotI2lmIEVOQUJMRShTVkcpCi0gICAgLCBtX2FyZVNWR0F0dHJpYnV0ZXNWYWxpZCh0
cnVlKQotICAgICwgbV9zeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyhmYWxzZSkKLSAgICAsIG1f
aGFzUmFyZVNWR0RhdGEoZmFsc2UpCi0jZW5kaWYKLXsKLSAgICBpZiAobV9kb2N1bWVudCkKLSAg
ICAgICAgbV9kb2N1bWVudC0+c2VsZk9ubHlSZWYoKTsKLQogI2lmbmRlZiBOREVCVUcKICAgICBp
ZiAoc2hvdWxkSWdub3JlTGVha3MpCiAgICAgICAgIGlnbm9yZVNldC5hZGQodGhpcyk7CkBAIC01
NTAsNyArNDU5LDcgQEAgTm9kZVJhcmVEYXRhKiBOb2RlOjplbnN1cmVSYXJlRGF0YSgpCiAgICAg
QVNTRVJUKCFOb2RlUmFyZURhdGE6OnJhcmVEYXRhTWFwKCkuY29udGFpbnModGhpcykpOwogICAg
IE5vZGVSYXJlRGF0YSogZGF0YSA9IGNyZWF0ZVJhcmVEYXRhKCk7CiAgICAgTm9kZVJhcmVEYXRh
OjpyYXJlRGF0YU1hcCgpLnNldCh0aGlzLCBkYXRhKTsKLSAgICBtX2hhc1JhcmVEYXRhID0gdHJ1
ZTsKKyAgICBzZXRGbGFnKEhhc1JhcmVEYXRhRmxhZyk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CiAg
ICAgCkBAIC03ODcsMTcgKzY5NiwyMiBAQCBib29sIE5vZGU6Omhhc05vbkVtcHR5Qm91bmRpbmdC
b3goKSBjb25zCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbmxpbmUgdm9pZCBOb2RlOjpzZXRT
dHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSkKK3sKKyAgICBtX25vZGVGbGFn
cyA9IChtX25vZGVGbGFncyAmIH5TdHlsZUNoYW5nZU1hc2spIHwgY2hhbmdlVHlwZTsKK30KKwog
dm9pZCBOb2RlOjpzZXROZWVkc1N0eWxlUmVjYWxjKFN0eWxlQ2hhbmdlVHlwZSBjaGFuZ2VUeXBl
KQogewogICAgIGlmICgoY2hhbmdlVHlwZSAhPSBOb1N0eWxlQ2hhbmdlKSAmJiAhYXR0YWNoZWQo
KSkgLy8gY2hhbmdlZCBjb21wYXJlZCB0byB3aGF0PwogICAgICAgICByZXR1cm47CiAKLSAgICBp
ZiAoIShjaGFuZ2VUeXBlID09IElubGluZVN0eWxlQ2hhbmdlICYmIChtX3N0eWxlQ2hhbmdlID09
IEZ1bGxTdHlsZUNoYW5nZSB8fCBtX3N0eWxlQ2hhbmdlID09IFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KSkpCi0gICAgICAgIG1fc3R5bGVDaGFuZ2UgPSBjaGFuZ2VUeXBlOworICAgIGlmICghKGNoYW5n
ZVR5cGUgPT0gSW5saW5lU3R5bGVDaGFuZ2UgJiYgKHN0eWxlQ2hhbmdlVHlwZSgpID09IEZ1bGxT
dHlsZUNoYW5nZSB8fCBzdHlsZUNoYW5nZVR5cGUoKSA9PSBTeW50aGV0aWNTdHlsZUNoYW5nZSkp
KQorICAgICAgICBzZXRTdHlsZUNoYW5nZShjaGFuZ2VUeXBlKTsKIAotICAgIGlmIChtX3N0eWxl
Q2hhbmdlICE9IE5vU3R5bGVDaGFuZ2UpIHsKKyAgICBpZiAoc3R5bGVDaGFuZ2VUeXBlKCkgIT0g
Tm9TdHlsZUNoYW5nZSkgewogICAgICAgICBmb3IgKE5vZGUqIHAgPSBwYXJlbnROb2RlKCk7IHAg
JiYgIXAtPmNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOyBwID0gcC0+cGFyZW50Tm9kZSgpKQotICAg
ICAgICAgICAgcC0+c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKHRydWUpOworICAgICAgICAgICAg
cC0+c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgIGlmIChkb2N1bWVudCgpLT5j
aGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPnNjaGVkdWxl
U3R5bGVSZWNhbGMoKTsKICAgICB9CkBAIC04MjEsOSArNzM1LDkgQEAgdm9pZCBOb2RlOjpsYXp5
QXR0YWNoKCkKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuLT5maXJzdENoaWxkKCkpCi0gICAg
ICAgICAgICBuLT5zZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGModHJ1ZSk7Ci0gICAgICAgIG4tPm1f
c3R5bGVDaGFuZ2UgPSBGdWxsU3R5bGVDaGFuZ2U7Ci0gICAgICAgIG4tPm1fYXR0YWNoZWQgPSB0
cnVlOworICAgICAgICAgICAgbi0+c2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgICAg
IG4tPnNldFN0eWxlQ2hhbmdlKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgICAgIG4tPnNldEF0dGFj
aGVkKCk7CiAgICAgfQogCiAgICAgaWYgKG11c3REb0Z1bGxBdHRhY2gpIHsKQEAgLTgzMyw3ICs3
NDcsNyBAQCB2b2lkIE5vZGU6OmxhenlBdHRhY2goKQogICAgICAgICBsYXp5QXR0YWNoZWRBbmNl
c3Rvci0+YXR0YWNoKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChOb2RlKiBwID0gcGFy
ZW50Tm9kZSgpOyBwICYmICFwLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsgcCA9IHAtPnBhcmVu
dE5vZGUoKSkKLSAgICAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYyh0cnVlKTsK
KyAgICAgICAgICAgIHAtPnNldENoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogICAgICAgICBpZiAo
ZG9jdW1lbnQoKS0+Y2hpbGROZWVkc1N0eWxlUmVjYWxjKCkpCiAgICAgICAgICAgICBkb2N1bWVu
dCgpLT5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAgICAgfQpAQCAtMTI5Niw3ICsxMjEwLDcgQEAg
dm9pZCBOb2RlOjphdHRhY2goKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9hdHRhY2hlZCA9
IHRydWU7CisgICAgc2V0QXR0YWNoZWQoKTsKIH0KIAogdm9pZCBOb2RlOjp3aWxsUmVtb3ZlKCkK
QEAgLTEzMDUsMjMgKzEyMTksMjQgQEAgdm9pZCBOb2RlOjp3aWxsUmVtb3ZlKCkKIAogdm9pZCBO
b2RlOjpkZXRhY2goKQogewotICAgIG1faW5EZXRhY2ggPSB0cnVlOworICAgIHNldEZsYWcoSW5E
ZXRhY2hGbGFnKTsKIAogICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlcigpLT5k
ZXN0cm95KCk7CiAgICAgc2V0UmVuZGVyZXIoMCk7CiAKICAgICBEb2N1bWVudCogZG9jID0gZG9j
dW1lbnQoKTsKLSAgICBpZiAobV9ob3ZlcmVkKQorICAgIGlmIChob3ZlcmVkKCkpCiAgICAgICAg
IGRvYy0+aG92ZXJlZE5vZGVEZXRhY2hlZCh0aGlzKTsKLSAgICBpZiAobV9pbkFjdGl2ZUNoYWlu
KQorICAgIGlmIChpbkFjdGl2ZUNoYWluKCkpCiAgICAgICAgIGRvYy0+YWN0aXZlQ2hhaW5Ob2Rl
RGV0YWNoZWQodGhpcyk7CiAKLSAgICBtX2FjdGl2ZSA9IGZhbHNlOwotICAgIG1faG92ZXJlZCA9
IGZhbHNlOwotICAgIG1faW5BY3RpdmVDaGFpbiA9IGZhbHNlOwotICAgIG1fYXR0YWNoZWQgPSBm
YWxzZTsKLSAgICBtX2luRGV0YWNoID0gZmFsc2U7CisgICAgY2xlYXJGbGFnKElzQWN0aXZlRmxh
Zyk7CisgICAgY2xlYXJGbGFnKElzSG92ZXJlZEZsYWcpOworICAgIGNsZWFyRmxhZyhJbkFjdGl2
ZUNoYWluRmxhZyk7CisgICAgY2xlYXJGbGFnKElzQXR0YWNoZWRGbGFnKTsKKworICAgIGNsZWFy
RmxhZyhJbkRldGFjaEZsYWcpOwogfQogCiBOb2RlICpOb2RlOjpwcmV2aW91c0VkaXRhYmxlKCkg
Y29uc3QKQEAgLTIzNzAsMTIgKzIyODUsMTIgQEAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTm9k
ZTo6c2NyaXB0RXhlYwogCiB2b2lkIE5vZGU6Omluc2VydGVkSW50b0RvY3VtZW50KCkKIHsKLSAg
ICBzZXRJbkRvY3VtZW50KHRydWUpOworICAgIHNldEluRG9jdW1lbnQoKTsKIH0KIAogdm9pZCBO
b2RlOjpyZW1vdmVkRnJvbURvY3VtZW50KCkKIHsKLSAgICBzZXRJbkRvY3VtZW50KGZhbHNlKTsK
KyAgICBjbGVhckluRG9jdW1lbnQoKTsKIH0KIAogdm9pZCBOb2RlOjp3aWxsTW92ZVRvTmV3T3du
ZXJEb2N1bWVudCgpCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vTm9kZS5oCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9tL05vZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNzYsMTAgKzc2LDE3IEBAIGNsYXNzIFRhZ05vZGVMaXN0OwogCiB0
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCitjb25zdCBpbnQgbm9kZVN0eWxlQ2hhbmdlU2hp
ZnQgPSAyNDsKKwogLy8gU3ludGhldGljU3R5bGVDaGFuZ2UgbWVhbnMgdGhhdCB3ZSBuZWVkIHRv
IGdvIHRocm91Z2ggdGhlIGVudGlyZSBzdHlsZSBjaGFuZ2UgbG9naWMgZXZlbiB0aG91Z2gKIC8v
IG5vIHN0eWxlIHByb3BlcnR5IGhhcyBhY3R1YWxseSBjaGFuZ2VkLiBJdCBpcyB1c2VkIHRvIHJl
c3RydWN0dXJlIHRoZSB0cmVlIHdoZW4sIGZvciBpbnN0YW5jZSwKIC8vIFJlbmRlckxheWVycyBh
cmUgY3JlYXRlZCBvciBkZXN0cm95ZWQgZHVlIHRvIGFuaW1hdGlvbiBjaGFuZ2VzLgotZW51bSBT
dHlsZUNoYW5nZVR5cGUgeyBOb1N0eWxlQ2hhbmdlLCBJbmxpbmVTdHlsZUNoYW5nZSwgRnVsbFN0
eWxlQ2hhbmdlLCBTeW50aGV0aWNTdHlsZUNoYW5nZSB9OworZW51bSBTdHlsZUNoYW5nZVR5cGUg
eyAKKyAgICBOb1N0eWxlQ2hhbmdlID0gMCwgCisgICAgSW5saW5lU3R5bGVDaGFuZ2UgPSAxIDw8
IG5vZGVTdHlsZUNoYW5nZVNoaWZ0LCAKKyAgICBGdWxsU3R5bGVDaGFuZ2UgPSAyIDw8IG5vZGVT
dHlsZUNoYW5nZVNoaWZ0LCAKKyAgICBTeW50aGV0aWNTdHlsZUNoYW5nZSA9IDMgPDwgbm9kZVN0
eWxlQ2hhbmdlU2hpZnQKK307CiAKIGNvbnN0IHVuc2lnbmVkIHNob3J0IERPQ1VNRU5UX1BPU0lU
SU9OX0VRVUlWQUxFTlQgPSAweDAwOwogY29uc3QgdW5zaWduZWQgc2hvcnQgRE9DVU1FTlRfUE9T
SVRJT05fRElTQ09OTkVDVEVEID0gMHgwMTsKQEAgLTE3NCwxNyArMTgxLDEzIEBAIHB1YmxpYzoK
ICAgICAKICAgICAvLyBPdGhlciBtZXRob2RzIChub3QgcGFydCBvZiBET00pCiAKLSAgICBib29s
IGlzRWxlbWVudE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzRWxlbWVudDsgfQotICAgIGJvb2wg
aXNDb250YWluZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NvbnRhaW5lcjsgfQotICAgIGJv
b2wgaXNUZXh0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNUZXh0OyB9CisgICAgYm9vbCBpc0Vs
ZW1lbnROb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0VsZW1lbnRGbGFnKTsgfQorICAg
IGJvb2wgaXNDb250YWluZXJOb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0NvbnRhaW5l
ckZsYWcpOyB9CisgICAgYm9vbCBpc1RleHROb2RlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJ
c1RleHRGbGFnKTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzSFRNTEVsZW1lbnQoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorICAgIGJvb2wgaXNIVE1MRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoSXNIVE1MRmxhZyk7IH0KIAotI2lmIEVOQUJMRShTVkcpCi0gICAgdmlydHVhbCBi
b29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZWxzZQotICAgIHN0
YXRpYyBib29sIGlzU1ZHRWxlbWVudCgpIHsgcmV0dXJuIGZhbHNlOyB9Ci0jZW5kaWYKKyAgICBi
b29sIGlzU1ZHRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTVkdGbGFnKTsgfQog
CiAjaWYgRU5BQkxFKFdNTCkKICAgICB2aXJ0dWFsIGJvb2wgaXNXTUxFbGVtZW50KCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KQEAgLTIwMCwxMCArMjAzLDEwIEBAIHB1YmxpYzoKIAogCiAgICAg
dmlydHVhbCBib29sIGlzTWVkaWFDb250cm9sRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIGlzU3R5bGVkRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgYm9vbCBpc1N0eWxlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFn
KElzU3R5bGVkRWxlbWVudEZsYWcpOyB9CiAgICAgdmlydHVhbCBib29sIGlzRnJhbWVPd25lckVs
ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0F0dHJp
YnV0ZU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bW1lbnROb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGlzQ29tbWVudE5v
ZGUoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzQ29tbWVudEZsYWcpOyB9CiAgICAgdmlydHVh
bCBib29sIGlzQ2hhcmFjdGVyRGF0YU5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IGJvb2wgaXNEb2N1bWVudE5vZGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dO
b2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTI4MCwzMyArMjgzLDQwIEBAIHB1Ymxp
YzoKICAgICAvLyBGb3IgPGxpbms+IGFuZCA8c3R5bGU+IGVsZW1lbnRzLgogICAgIHZpcnR1YWwg
Ym9vbCBzaGVldExvYWRlZCgpIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIGJvb2wgaGFzSUQoKSBj
b25zdCB7IHJldHVybiBtX2hhc0lkOyB9Ci0gICAgYm9vbCBoYXNDbGFzcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQ2xhc3M7IH0KLSAgICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0
aXZlOyB9Ci0gICAgYm9vbCBpbkFjdGl2ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gbV9pbkFjdGl2
ZUNoYWluOyB9Ci0gICAgYm9vbCBpbkRldGFjaCgpIGNvbnN0IHsgcmV0dXJuIG1faW5EZXRhY2g7
IH0KLSAgICBib29sIGhvdmVyZWQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWQ7IH0KKyAgICBi
b29sIGhhc0lEKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhIYXNJREZsYWcpOyB9CisgICAgYm9v
bCBoYXNDbGFzcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzQ2xhc3NGbGFnKTsgfQorICAg
IGJvb2wgYWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0FjdGl2ZUZsYWcpOyB9Cisg
ICAgYm9vbCBpbkFjdGl2ZUNoYWluKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbkFjdGl2ZUNo
YWluRmxhZyk7IH0KKyAgICBib29sIGluRGV0YWNoKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJ
bkRldGFjaEZsYWcpOyB9CisgICAgYm9vbCBob3ZlcmVkKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhJc0hvdmVyZWRGbGFnKTsgfQogICAgIGJvb2wgZm9jdXNlZCgpIGNvbnN0IHsgcmV0dXJuIGhh
c1JhcmVEYXRhKCkgPyByYXJlRGF0YUZvY3VzZWQoKSA6IGZhbHNlOyB9Ci0gICAgYm9vbCBhdHRh
Y2hlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXR0YWNoZWQ7IH0KLSAgICB2b2lkIHNldEF0dGFjaGVk
KGJvb2wgYiA9IHRydWUpIHsgbV9hdHRhY2hlZCA9IGI7IH0KLSAgICBib29sIG5lZWRzU3R5bGVS
ZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlQ2hhbmdlICE9IE5vU3R5bGVDaGFuZ2U7IH0K
LSAgICBTdHlsZUNoYW5nZVR5cGUgc3R5bGVDaGFuZ2VUeXBlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8U3R5bGVDaGFuZ2VUeXBlPihtX3N0eWxlQ2hhbmdlKTsgfQotICAgIGJvb2wgY2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZE5lZWRzU3R5bGVSZWNh
bGM7IH0KLSAgICBib29sIGlzTGluaygpIGNvbnN0IHsgcmV0dXJuIG1faXNMaW5rOyB9Ci0gICAg
dm9pZCBzZXRIYXNJRChib29sIGIgPSB0cnVlKSB7IG1faGFzSWQgPSBiOyB9Ci0gICAgdm9pZCBz
ZXRIYXNDbGFzcyhib29sIGIgPSB0cnVlKSB7IG1faGFzQ2xhc3MgPSBiOyB9Ci0gICAgdm9pZCBz
ZXRDaGlsZE5lZWRzU3R5bGVSZWNhbGMoYm9vbCBiID0gdHJ1ZSkgeyBtX2NoaWxkTmVlZHNTdHls
ZVJlY2FsYyA9IGI7IH0KLSAgICB2b2lkIHNldEluRG9jdW1lbnQoYm9vbCBiID0gdHJ1ZSkgeyBt
X2luRG9jdW1lbnQgPSBiOyB9Ci0gICAgdm9pZCBzZXRJbkFjdGl2ZUNoYWluKGJvb2wgYiA9IHRy
dWUpIHsgbV9pbkFjdGl2ZUNoYWluID0gYjsgfQorICAgIGJvb2wgYXR0YWNoZWQoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKElzQXR0YWNoZWRGbGFnKTsgfQorICAgIHZvaWQgc2V0QXR0YWNoZWQo
KSB7IHNldEZsYWcoSXNBdHRhY2hlZEZsYWcpOyB9CisgICAgYm9vbCBuZWVkc1N0eWxlUmVjYWxj
KCkgY29uc3QgeyByZXR1cm4gc3R5bGVDaGFuZ2VUeXBlKCkgIT0gTm9TdHlsZUNoYW5nZTsgfQor
ICAgIFN0eWxlQ2hhbmdlVHlwZSBzdHlsZUNoYW5nZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxTdHlsZUNoYW5nZVR5cGU+KG1fbm9kZUZsYWdzICYgU3R5bGVDaGFuZ2VNYXNrKTsg
fQorICAgIGJvb2wgY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4gZ2V0Rmxh
ZyhDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnKTsgfQorICAgIGJvb2wgaXNMaW5rKCkgY29uc3Qg
eyByZXR1cm4gZ2V0RmxhZyhJc0xpbmtGbGFnKTsgfQorCisgICAgdm9pZCBzZXRIYXNJRChib29s
IGYpIHsgc2V0RmxhZyhmLCBIYXNJREZsYWcpOyB9CisgICAgdm9pZCBzZXRIYXNDbGFzcyhib29s
IGYpIHsgc2V0RmxhZyhmLCBIYXNDbGFzc0ZsYWcpOyB9CisgICAgdm9pZCBzZXRDaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSB7IHNldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KKyAg
ICB2b2lkIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBjbGVhckZsYWcoQ2hpbGROZWVk
c1N0eWxlUmVjYWxjRmxhZyk7IH0KKyAgICB2b2lkIHNldEluRG9jdW1lbnQoKSB7IHNldEZsYWco
SW5Eb2N1bWVudEZsYWcpOyB9CisgICAgdm9pZCBjbGVhckluRG9jdW1lbnQoKSB7IGNsZWFyRmxh
ZyhJbkRvY3VtZW50RmxhZyk7IH0KKworICAgIHZvaWQgc2V0SW5BY3RpdmVDaGFpbigpIHsgc2V0
RmxhZyhJbkFjdGl2ZUNoYWluRmxhZyk7IH0KKyAgICB2b2lkIGNsZWFySW5BY3RpdmVDaGFpbigp
IHsgY2xlYXJGbGFnKEluQWN0aXZlQ2hhaW5GbGFnKTsgfQogICAgIHZvaWQgc2V0TmVlZHNTdHls
ZVJlY2FsYyhTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSA9IEZ1bGxTdHlsZUNoYW5nZSk7Ci0g
ICAgdm9pZCBzZXRJc0xpbmsoYm9vbCBiID0gdHJ1ZSkgeyBtX2lzTGluayA9IGI7IH0KKyAgICB2
b2lkIHNldElzTGluayhib29sIGYpIHsgc2V0RmxhZyhmLCBJc0xpbmtGbGFnKTsgfQorICAgIHZv
aWQgc2V0SXNMaW5rKCkgeyBzZXRGbGFnKElzTGlua0ZsYWcpOyB9CisgICAgdm9pZCBjbGVhcklz
TGluaygpIHsgY2xlYXJGbGFnKElzTGlua0ZsYWcpOyB9CiAKICAgICB2b2lkIGxhenlBdHRhY2go
KTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuTGF6eUF0dGFjaCgpOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEZvY3VzKGJvb2wgYiA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9v
bCBiID0gdHJ1ZSwgYm9vbCAvKnBhdXNlKi8gPSBmYWxzZSkgeyBtX2FjdGl2ZSA9IGI7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZChib29sIGIgPSB0cnVlKSB7IG1faG92ZXJlZCA9IGI7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wgZiA9IHRydWUsIGJvb2wgLypwYXVz
ZSovID0gZmFsc2UpIHsgc2V0RmxhZyhmLCBJc0FjdGl2ZUZsYWcpOyB9CisgICAgdmlydHVhbCB2
b2lkIHNldEhvdmVyZWQoYm9vbCBmID0gdHJ1ZSkgeyBzZXRGbGFnKGYsIElzSG92ZXJlZEZsYWcp
OyB9CiAKICAgICB2aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3Q7CiAKQEAgLTM1MSw3ICsz
NjEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpbkRvY3VtZW50KCkgY29uc3QgCiAgICAgeyAKICAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQgfHwgIW1faW5Eb2N1bWVudCk7Ci0gICAgICAgIHJldHVy
biBtX2luRG9jdW1lbnQ7IAorICAgICAgICByZXR1cm4gZ2V0RmxhZyhJbkRvY3VtZW50RmxhZyk7
CiAgICAgfQogCiAgICAgYm9vbCBpc1JlYWRPbmx5Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG5vZGVU
eXBlKCkgPT0gRU5USVRZX1JFRkVSRU5DRV9OT0RFOyB9CkBAIC01OTAsMTAgKzYwMCw3MSBAQCBw
dWJsaWM6CiAgICAgfQogI2VuZGlmCiAKK3ByaXZhdGU6CisgICAgZW51bSBOb2RlRmxhZ3Mgewor
ICAgICAgICBJc1RleHRGbGFnID0gMSwKKyAgICAgICAgSXNDb21tZW50RmxhZyA9IDEgPDwgMSwK
KyAgICAgICAgSXNDb250YWluZXJGbGFnID0gMSA8PCAyLAorICAgICAgICBJc0VsZW1lbnRGbGFn
ID0gMSA8PCAzLAorICAgICAgICBJc1N0eWxlZEVsZW1lbnRGbGFnID0gMSA8PCA0LAorICAgICAg
ICBJc0hUTUxGbGFnID0gMSA8PCA1LAorICAgICAgICBJc1NWR0ZsYWcgPSAxIDw8IDYsCisgICAg
ICAgIEhhc0lERmxhZyA9IDEgPDwgNywKKyAgICAgICAgSGFzQ2xhc3NGbGFnID0gMSA8PCA4LAor
ICAgICAgICBJc0F0dGFjaGVkRmxhZyA9IDEgPDwgOSwKKyAgICAgICAgQ2hpbGROZWVkc1N0eWxl
UmVjYWxjRmxhZyA9IDEgPDwgMTAsCisgICAgICAgIEluRG9jdW1lbnRGbGFnID0gMSA8PCAxMSwK
KyAgICAgICAgSXNMaW5rRmxhZyA9IDEgPDwgMTIsCisgICAgICAgIElzQWN0aXZlRmxhZyA9IDEg
PDwgMTMsCisgICAgICAgIElzSG92ZXJlZEZsYWcgPSAxIDw8IDE0LAorICAgICAgICBJbkFjdGl2
ZUNoYWluRmxhZyA9IDEgPDwgMTUsCisgICAgICAgIEluRGV0YWNoRmxhZyA9IDEgPDwgMTYsCisg
ICAgICAgIEhhc1JhcmVEYXRhRmxhZyA9IDEgPDwgMTcsCisKKyAgICAgICAgLy8gVGhlc2UgYml0
cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2Fu
CisgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9k
ZSBiaXRzIGFib3ZlLgorICAgICAgICBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyA9IDEg
PDwgMTgsIC8vIEVsZW1lbnQKKyAgICAgICAgSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxhZyA9IDEg
PDwgMTksIC8vIFN0eWxlZEVsZW1lbnQKKyAgICAgICAgSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRy
aWJ1dGVGbGFnID0gMSA8PCAyMCwgLy8gU3R5bGVkRWxlbWVudAorI2lmIEVOQUJMRShTVkcpCisg
ICAgICAgIEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8IDIxLCAvLyBFbGVtZW50Cisg
ICAgICAgIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8PCAyMiwgLy8gU1ZH
RWxlbWVudAorICAgICAgICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAxIDw8IDIzLCAvLyBTVkdFbGVt
ZW50CisjZW5kaWYKKyAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2RlU3R5bGVDaGFu
Z2VTaGlmdCB8IDEgPDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCisgICAgICAgIENyZWF0
ZVdpdGhaZXJvUmVmQ291bnRGbGFnID0gMSA8PCAyNiwKKworI2lmIEVOQUJMRShTVkcpCisgICAg
ICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElz
U3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnCisjZWxz
ZQorICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZs
YWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnCisjZW5kaWYKKyAgICB9OworCisgICAgLy8g
NSBiaXRzIHJlbWFpbmluZworCisgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBtYXNrKSBjb25z
dCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KKyAgICB2b2lkIHNldEZsYWcoYm9vbCBm
LCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVGbGFncyAmIH5t
YXNrKSB8ICgtZiAmIG1hc2spOyB9IAorICAgIHZvaWQgc2V0RmxhZyhOb2RlRmxhZ3MgbWFzaykg
Y29uc3QgeyBtX25vZGVGbGFncyB8PSBtYXNrOyB9IAorICAgIHZvaWQgY2xlYXJGbGFnKE5vZGVG
bGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdzICY9IH5tYXNrOyB9IAorCiBwcm90ZWN0ZWQ6
CiAgICAgLy8gQ3JlYXRlRWxlbWVudFplcm9SZWZDb3VudCBpcyBkZXByZWNhdGVkIGFuZCBjYW4g
YmUgcmVtb3ZlZCBvbmNlIHdlIGNvbnZlcnQgYWxsIGVsZW1lbnQKICAgICAvLyBjbGFzc2VzIHRv
IHN0YXJ0IHdpdGggYSByZWZlcmVuY2UgY291bnQgb2YgMS4KLSAgICBlbnVtIENvbnN0cnVjdGlv
blR5cGUgeyBDcmVhdGVDb250YWluZXIsIENyZWF0ZUVsZW1lbnQsIENyZWF0ZU90aGVyLCBDcmVh
dGVUZXh0LCBDcmVhdGVFbGVtZW50WmVyb1JlZkNvdW50IH07CisgICAgZW51bSBDb25zdHJ1Y3Rp
b25UeXBlIHsgCisgICAgICAgIENyZWF0ZU90aGVyID0gRGVmYXVsdE5vZGVGbGFncywKKyAgICAg
ICAgQ3JlYXRlVGV4dCA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc1RleHRGbGFnLAorICAgICAgICBD
cmVhdGVDb21tZW50ID0gRGVmYXVsdE5vZGVGbGFncyB8IElzQ29tbWVudEZsYWcsCisgICAgICAg
IENyZWF0ZUNvbnRhaW5lciA9IERlZmF1bHROb2RlRmxhZ3MgfCBJc0NvbnRhaW5lckZsYWcsIAor
ICAgICAgICBDcmVhdGVFbGVtZW50ID0gQ3JlYXRlQ29udGFpbmVyIHwgSXNFbGVtZW50RmxhZywg
CisgICAgICAgIENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQgPSBJc0VsZW1lbnRGbGFnIHwgQ3Jl
YXRlV2l0aFplcm9SZWZDb3VudEZsYWcsIAorICAgICAgICBDcmVhdGVTdHlsZWRFbGVtZW50ID0g
Q3JlYXRlRWxlbWVudCB8IElzU3R5bGVkRWxlbWVudEZsYWcsIAorICAgICAgICBDcmVhdGVTdHls
ZWRFbGVtZW50WmVyb1JlZkNvdW50ID0gIENyZWF0ZVN0eWxlZEVsZW1lbnQgfCBDcmVhdGVXaXRo
WmVyb1JlZkNvdW50RmxhZywgCisgICAgICAgIENyZWF0ZUhUTUxFbGVtZW50ID0gQ3JlYXRlU3R5
bGVkRWxlbWVudCB8IElzSFRNTEZsYWcsIAorICAgICAgICBDcmVhdGVIVE1MRWxlbWVudFplcm9S
ZWZDb3VudCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgQ3JlYXRlV2l0aFplcm9SZWZDb3VudEZsYWcs
CisgICAgICAgIENyZWF0ZVNWR0VsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVtZW50IHwgSXNTVkdG
bGFnLCAKKyAgICAgICAgQ3JlYXRlU1ZHRWxlbWVudFplcm9SZWZDb3VudCA9IENyZWF0ZVNWR0Vs
ZW1lbnQgfCBDcmVhdGVXaXRoWmVyb1JlZkNvdW50RmxhZywKKyAgICB9OwogICAgIE5vZGUoRG9j
dW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlKTsKIAogICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92ZVRv
TmV3T3duZXJEb2N1bWVudCgpOwpAQCAtNjAyLDEwICs2NzMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJM
PiYpIGNvbnN0IHsgfQogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0KTsKICAg
ICAKLSAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSYXJlRGF0YTsg
fQotI2lmIEVOQUJMRShTVkcpCi0gICAgYm9vbCBoYXNSYXJlU1ZHRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzUmFyZVNWR0RhdGE7IH0KLSNlbmRpZgorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKEhhc1JhcmVEYXRhRmxhZyk7IH0KIAogICAgIE5vZGVSYXJl
RGF0YSogcmFyZURhdGEoKSBjb25zdDsKICAgICBOb2RlUmFyZURhdGEqIGVuc3VyZVJhcmVEYXRh
KCk7CkBAIC02MTYsOSArNjg0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgc3RhdGljIGJv
b2wgaW5pdGlhbFJlZkNvdW50KENvbnN0cnVjdGlvblR5cGUpOwotICAgIHN0YXRpYyBib29sIGlz
Q29udGFpbmVyKENvbnN0cnVjdGlvblR5cGUpOwotICAgIHN0YXRpYyBib29sIGlzRWxlbWVudChD
b25zdHJ1Y3Rpb25UeXBlKTsKLSAgICBzdGF0aWMgYm9vbCBpc1RleHQoQ29uc3RydWN0aW9uVHlw
ZSk7CisgICAgdm9pZCBzZXRTdHlsZUNoYW5nZShTdHlsZUNoYW5nZVR5cGUgY2hhbmdlVHlwZSk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSB7IHJlZigpOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSB7IGRlcmVmKCk7IH0KQEAgLTY0MCw0NSArNzA2
LDQ1IEBAIHByaXZhdGU6CiAgICAgRWxlbWVudCogYW5jZXN0b3JFbGVtZW50KCkgY29uc3Q7CiAK
ICAgICB2b2lkIGFwcGVuZFRleHRDb250ZW50KGJvb2wgY29udmVydEJSc1RvTmV3bGluZXMsIFN0
cmluZ0J1aWxkZXImKSBjb25zdDsKKyAgICB2b2lkIHRyYWNrRm9yRGVidWdnaW5nKCk7CiAKICAg
ICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBOb2RlKiBtX3ByZXZpb3VzOwogICAgIE5vZGUq
IG1fbmV4dDsKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgbXV0YWJsZSB1aW50
MzJfdCBtX25vZGVGbGFnczsKIAotICAgIHVuc2lnbmVkIG1fc3R5bGVDaGFuZ2UgOiAyOwotICAg
IGJvb2wgbV9oYXNJZCA6IDE7Ci0gICAgYm9vbCBtX2hhc0NsYXNzIDogMTsKLSAgICBib29sIG1f
YXR0YWNoZWQgOiAxOwotICAgIGJvb2wgbV9jaGlsZE5lZWRzU3R5bGVSZWNhbGMgOiAxOwotICAg
IGJvb2wgbV9pbkRvY3VtZW50IDogMTsKLSAgICBib29sIG1faXNMaW5rIDogMTsKLSAgICBib29s
IG1fYWN0aXZlIDogMTsKLSAgICBib29sIG1faG92ZXJlZCA6IDE7Ci0gICAgYm9vbCBtX2luQWN0
aXZlQ2hhaW4gOiAxOwotICAgIGJvb2wgbV9pbkRldGFjaCA6IDE7Ci0gICAgYm9vbCBtX2hhc1Jh
cmVEYXRhIDogMTsKLSAgICBjb25zdCBib29sIG1faXNFbGVtZW50IDogMTsKLSAgICBjb25zdCBi
b29sIG1faXNDb250YWluZXIgOiAxOwotICAgIGNvbnN0IGJvb2wgbV9pc1RleHQgOiAxOwotCi1w
cm90ZWN0ZWQ6Ci0gICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMs
IHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCi0gICAgLy8gYmUgc3RvcmVkIGluIHRoZSBzYW1l
IG1lbW9yeSB3b3JkIGFzIHRoZSBOb2RlIGJpdHMgYWJvdmUuCi0KLSAgICBib29sIG1fcGFyc2lu
Z0NoaWxkcmVuRmluaXNoZWQgOiAxOyAvLyBFbGVtZW50Ci0gICAgbXV0YWJsZSBib29sIG1faXNT
dHlsZUF0dHJpYnV0ZVZhbGlkIDogMTsgLy8gU3R5bGVkRWxlbWVudAotICAgIG11dGFibGUgYm9v
bCBtX3N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSA6IDE7IC8vIFN0eWxlZEVsZW1lbnQKKyBw
cm90ZWN0ZWQ6CisgICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkKCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KKyAgICB2b2lk
IHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHNldEZsYWcoSXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZEZsYWcpOyB9CisgICAgdm9pZCBjbGVhcklzUGFyc2luZ0NoaWxkcmVuRmluaXNo
ZWQoKSB7IGNsZWFyRmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KKyAgICBi
b29sIGlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTdHls
ZUF0dHJpYnV0ZVZhbGlkRmxhZyk7IH0KKyAgICB2b2lkIHNldElzU3R5bGVBdHRyaWJ1dGVWYWxp
ZChib29sIGYpIHsgc2V0RmxhZyhmLCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQorICAg
IHZvaWQgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgY29uc3QgeyBzZXRGbGFnKElzU3R5bGVB
dHRyaWJ1dGVWYWxpZEZsYWcpOyB9CisgICAgdm9pZCBjbGVhcklzU3R5bGVBdHRyaWJ1dGVWYWxp
ZCgpIHsgY2xlYXJGbGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcpOyB9CisgICAgYm9vbCBp
c1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNT
eW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGVGbGFnKTsgfQorICAgIHZvaWQgc2V0SXNTeW5jaHJv
bml6aW5nU3R5bGVBdHRyaWJ1dGUoYm9vbCBmKSB7IHNldEZsYWcoZiwgSXNTeW5jaHJvbml6aW5n
U3R5bGVBdHRyaWJ1dGVGbGFnKTsgfQorICAgIHZvaWQgc2V0SXNTeW5jaHJvbml6aW5nU3R5bGVB
dHRyaWJ1dGUoKSBjb25zdCB7IHNldEZsYWcoSXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGVG
bGFnKTsgfQorICAgIHZvaWQgY2xlYXJJc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpIGNv
bnN0IHsgY2xlYXJGbGFnKElzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlRmxhZyk7IH0KIAog
I2lmIEVOQUJMRShTVkcpCi0gICAgbXV0YWJsZSBib29sIG1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlk
IDogMTsgLy8gRWxlbWVudAotICAgIG11dGFibGUgYm9vbCBtX3N5bmNocm9uaXppbmdTVkdBdHRy
aWJ1dGVzIDogMTsgLy8gU1ZHRWxlbWVudAotICAgIGJvb2wgbV9oYXNSYXJlU1ZHRGF0YSA6IDE7
IC8vIFNWR0VsZW1lbnQKKyAgICBib29sIGFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIGdldEZsYWcoQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZyk7IH0KKyAgICB2b2lkIHNl
dEFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpIGNvbnN0IHsgc2V0RmxhZyhBcmVTVkdBdHRyaWJ1dGVz
VmFsaWRGbGFnKTsgfQorICAgIHZvaWQgY2xlYXJBcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKSB7IGNs
ZWFyRmxhZyhBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnKTsgfQorICAgIGJvb2wgaXNTeW5jaHJv
bml6aW5nU1ZHQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTeW5jaHJvbml6
aW5nU1ZHQXR0cmlidXRlc0ZsYWcpOyB9CisgICAgdm9pZCBzZXRJc1N5bmNocm9uaXppbmdTVkdB
dHRyaWJ1dGVzKCkgY29uc3QgeyBzZXRGbGFnKElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNG
bGFnKTsgfQorICAgIHZvaWQgY2xlYXJJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzKCkgY29u
c3QgeyBjbGVhckZsYWcoSXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlc0ZsYWcpOyB9CisgICAg
Ym9vbCBoYXNSYXJlU1ZHRGF0YSgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSGFzU1ZHUmFyZURh
dGFGbGFnKTsgfQorICAgIHZvaWQgc2V0SGFzUmFyZVNWR0RhdGEoKSB7IHNldEZsYWcoSGFzU1ZH
UmFyZURhdGFGbGFnKTsgfQorICAgIHZvaWQgY2xlYXJIYXNSYXJlU1ZHRGF0YSgpIHsgY2xlYXJG
bGFnKEhhc1NWR1JhcmVEYXRhRmxhZyk7IH0KICNlbmRpZgotCi0gICAgLy8gMTAgYml0cyByZW1h
aW5pbmcKIH07CiAKK2lubGluZSBib29sIE5vZGU6OmluaXRpYWxSZWZDb3VudChDb25zdHJ1Y3Rp
b25UeXBlIHR5cGUpCit7CisgICAgcmV0dXJuICEodHlwZSAmIENyZWF0ZVdpdGhaZXJvUmVmQ291
bnRGbGFnKTsKK30KKwogLy8gVXNlZCBpbiBOb2RlOjphZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVS
THMoKSBhbmQgaW4gYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoKQogaW5saW5lIHZvaWQgYWRkU3Vi
cmVzb3VyY2VVUkwoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IEtVUkwmIHVybCkKIHsK
SW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9t
L1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsMTcgKzEwMywxMiBAQCB2
b2lkIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZU1hcHBlZEF0dHJpYnV0CiAKIHZvaWQgU3R5bGVkRWxl
bWVudDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewotICAgIEFTU0VSVCghbV9pc1N0
eWxlQXR0cmlidXRlVmFsaWQpOwotICAgIG1faXNTdHlsZUF0dHJpYnV0ZVZhbGlkID0gdHJ1ZTsK
LSAgICBtX3N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSA9IHRydWU7CisgICAgQVNTRVJUKCFp
c1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7CisgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7
CisgICAgc2V0SXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKTsKICAgICBpZiAobV9pbmxp
bmVTdHlsZURlY2wpCiAgICAgICAgIGNvbnN0X2Nhc3Q8U3R5bGVkRWxlbWVudCo+KHRoaXMpLT5z
ZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBtX2lubGluZVN0eWxlRGVjbC0+Y3NzVGV4dCgpKTsKLSAg
ICBtX3N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSA9IGZhbHNlOwotfQotCi1TdHlsZWRFbGVt
ZW50OjpTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIERvY3VtZW50KiBk
b2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQotICAgIDogRWxlbWVudChuYW1lLCBkb2N1
bWVudCwgdHlwZSkKLXsKKyAgICBjbGVhcklzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKCk7
CiB9CiAKIFN0eWxlZEVsZW1lbnQ6On5TdHlsZWRFbGVtZW50KCkKQEAgLTIwOCw3ICsyMDMsNyBA
QCBib29sIFN0eWxlZEVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhCiB7CiAgICAgcmVzdWx0
ID0gZU5vbmU7CiAgICAgaWYgKGF0dHJOYW1lID09IHN0eWxlQXR0cikKLSAgICAgICAgcmV0dXJu
ICFtX3N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZTsKKyAgICAgICAgcmV0dXJuICFpc1N5bmNo
cm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yNTMs
NyArMjQ4LDcgQEAgdm9pZCBTdHlsZWRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQogICAg
ICAgICAgICAgZGVzdHJveUlubGluZVN0eWxlRGVjbCgpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBnZXRJbmxpbmVTdHlsZURlY2woKS0+cGFyc2VEZWNsYXJhdGlvbihhdHRyLT52YWx1ZSgp
KTsKLSAgICAgICAgbV9pc1N0eWxlQXR0cmlidXRlVmFsaWQgPSB0cnVlOworICAgICAgICBzZXRJ
c1N0eWxlQXR0cmlidXRlVmFsaWQoKTsKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwog
ICAgIH0KIH0KQEAgLTQ3Niw4ICs0NzEsOCBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmNvcHlOb25B
dHRyaWJ1dGVQcm9wCiAgICAgICAgIHJldHVybjsKIAogICAgICpnZXRJbmxpbmVTdHlsZURlY2wo
KSA9ICpzb3VyY2UtPm1faW5saW5lU3R5bGVEZWNsOwotICAgIG1faXNTdHlsZUF0dHJpYnV0ZVZh
bGlkID0gc291cmNlLT5tX2lzU3R5bGVBdHRyaWJ1dGVWYWxpZDsKLSAgICBtX3N5bmNocm9uaXpp
bmdTdHlsZUF0dHJpYnV0ZSA9IHNvdXJjZS0+bV9zeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGU7
CisgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKHNvdXJjZS0+aXNTdHlsZUF0dHJpYnV0ZVZh
bGlkKCkpOworICAgIHNldElzU3luY2hyb25pemluZ1N0eWxlQXR0cmlidXRlKHNvdXJjZS0+aXNT
eW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSk7CiAgICAgCiAgICAgRWxlbWVudDo6Y29weU5v
bkF0dHJpYnV0ZVByb3BlcnRpZXMoc291cmNlRWxlbWVudCk7CiB9CkluZGV4OiBXZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5oCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBTdHlsZWRFbGVtZW50X2gKICNk
ZWZpbmUgU3R5bGVkRWxlbWVudF9oCiAKKyNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbi5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZUVudHJ5LmgiCkBAIC0zMyw3ICszNCw2IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENTU01hcHBlZEF0dHJpYnV0ZURlY2xhcmF0
aW9uOwotY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBNYXBwZWRBdHRy
aWJ1dGU7CiAKIGNsYXNzIFN0eWxlZEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7CkBAIC03Myw3
ICs3MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEF0dHJpYnV0ZT4gY3Jl
YXRlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKTsKIAogcHJvdGVjdGVkOgotICAgIFN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSk7CisgICAgU3R5bGVkRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5
cGUgdHlwZSkKKyAgICAgICAgOiBFbGVtZW50KG5hbWUsIGRvY3VtZW50LCB0eXBlKQorICAgIHsK
KyAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBi
b29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSopOwpAQCAtODksOCArOTIsNiBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGRpZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIAogcHJpdmF0
ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNTdHlsZWRFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCiAgICAgdm9pZCBjcmVhdGVNYXBwZWREZWNsKE1hcHBlZEF0dHJpYnV0ZSopOwogCiAg
ICAgdm9pZCBjcmVhdGVJbmxpbmVTdHlsZURlY2woKTsKQEAgLTEwNCw3ICsxMDUsNyBAQCBwcml2
YXRlOgogCiBpbmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKQogewotICAgIG1faXNTdHlsZUF0dHJpYnV0ZVZhbGlkID0gZmFsc2U7CisgICAgY2xlYXJJ
c1N0eWxlQXR0cmlidXRlVmFsaWQoKTsKIH0KIAogfSAvL25hbWVzcGFjZQpJbmRleDogV2ViQ29y
ZS9kb20vVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vVGV4dC5jcHAJKHJldmlz
aW9uIDU4OTAxKQorKysgV2ViQ29yZS9kb20vVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQx
LDExICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotVGV4dDo6VGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKLSAg
ICA6IENoYXJhY3RlckRhdGEoZG9jdW1lbnQsIGRhdGEsIENyZWF0ZVRleHQpCi17Ci19Ci0KIFBh
c3NSZWZQdHI8VGV4dD4gVGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgU3Ry
aW5nJiBkYXRhKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dChkb2N1bWVudCwgZGF0
YSkpOwpJbmRleDogV2ViQ29yZS9kb20vVGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1RleHQuaAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL2RvbS9UZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDcgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CiAKIHByb3RlY3RlZDoKLSAgICBUZXh0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKKyAgICAgICAg
OiBDaGFyYWN0ZXJEYXRhKGRvY3VtZW50LCBkYXRhLCBDcmVhdGVUZXh0KQorICAgIHsKKyAgICB9
CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTEFuY2hvckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhU
TUxBbmNob3JFbGVtZW50OjpIVE1MQW5jaG9yRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBk
b2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBDcmVhdGVIVE1MRWxlbWVudCkKICAgICAsIG1fd2FzU2hpZnRLZXlEb3duT25Nb3VzZURv
d24oZmFsc2UpCiAgICAgLCBtX2xpbmtSZWxhdGlvbnMoMCkKIHsKQEAgLTI2NSw3ICsyNjUsNyBA
QCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgICAgICAg
ICAgICAgIFJlc291cmNlSGFuZGxlOjpwcmVwYXJlRm9yVVJMKGRvY3VtZW50KCktPmNvbXBsZXRl
VVJMKHBhcnNlZFVSTCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRvY3VtZW50
KCktPnBhZ2UoKSAmJiAhZG9jdW1lbnQoKS0+cGFnZSgpLT5qYXZhU2NyaXB0VVJMc0FyZUFsbG93
ZWQoKSAmJiBwcm90b2NvbElzSmF2YVNjcmlwdChwYXJzZWRVUkwpKSB7Ci0gICAgICAgICAgICAg
ICAgc2V0SXNMaW5rKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjbGVhcklzTGluaygpOwogICAg
ICAgICAgICAgICAgIGF0dHItPnNldFZhbHVlKG51bGxBdG9tKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAg
dXNpbmcgc3RkOjptYXg7CiAKIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IEhUTUxFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQs
IENyZWF0ZUVsZW1lbnQpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxFbGVtZW50KHRh
Z05hbWUsIGRvY3VtZW50LCBDcmVhdGVIVE1MRWxlbWVudCkpOwogfQogCiBTdHJpbmcgSFRNTEVs
ZW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiA1ODkw
MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhZGRIVE1MQWxpZ25tZW50VG9TdHls
ZWRFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBNYXBwZWRBdHRyaWJ1dGUqKTsKIAogcHJvdGVjdGVk
OgotICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUVsZW1lbnRaZXJvUmVmQ291bnQpOworICAgIEhU
TUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiwgQ29uc3Ry
dWN0aW9uVHlwZSA9IENyZWF0ZUhUTUxFbGVtZW50WmVyb1JlZkNvdW50KTsKIAogICAgIHZvaWQg
YWRkSFRNTEFsaWdubWVudChNYXBwZWRBdHRyaWJ1dGUqKTsKIApAQCAtMTAyLDggKzEwMiw2IEBA
IHByb3RlY3RlZDoKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZpbmRGb3JtQW5jZXN0b3IoKSBjb25z
dDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgaXNIVE1MRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KLQogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAK
ICAgICB2b2lkIHNldENvbnRlbnRFZGl0YWJsZShNYXBwZWRBdHRyaWJ1dGUqKTsKSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3
ICszNiw3IEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIGNsYXNzIEhUTUxGb3JtQ29udHJv
bEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgewogcHVibGljOgotICAgIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqLCBIVE1M
Rm9ybUVsZW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlRWxlbWVudFplcm9SZWZDb3Vu
dCk7CisgICAgSFRNTEZvcm1Db250cm9sRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVh
dGVIVE1MRWxlbWVudFplcm9SZWZDb3VudCk7CiAgICAgdmlydHVhbCB+SFRNTEZvcm1Db250cm9s
RWxlbWVudCgpOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6SFRNTEZy
YW1lT3duZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVt
ZW50KQorICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZUhUTUxFbGVt
ZW50KQogICAgICwgbV9jb250ZW50RnJhbWUoMCkKICAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRi
b3hOb25lKQogewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAkocmV2aXNp
b24gNTg5MDEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKIAogSFRNTFByb2dyZXNzRWxlbWVudDo6SFRNTFByb2dyZXNzRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIEhU
TUxGb3JtRWxlbWVudCogZm9ybSkKLSAgICA6IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQsIGZvcm0sIENyZWF0ZUVsZW1lbnQpCisgICAgOiBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBDcmVhdGVIVE1MRWxlbWVudCkKIHsKICAg
ICBBU1NFUlQoaGFzVGFnTmFtZShwcm9ncmVzc1RhZykpOwogfQpJbmRleDogV2ViQ29yZS9tYXRo
bWwvTWF0aE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYXRobWwvTWF0aE1M
RWxlbWVudC5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwogICAgIAogTWF0aE1MRWxlbWVudDo6
TWF0aE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9j
dW1lbnQpCi0gICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVFbGVt
ZW50WmVyb1JlZkNvdW50KQorICAgIDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Q3JlYXRlU3R5bGVkRWxlbWVudFplcm9SZWZDb3VudCkKIHsKIH0KICAgICAKSW5kZXg6IFdlYkNv
cmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDU4OTAxKQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw3ICs3NCw3IEBAIE1lZGlhQ29udHJvbFNoYWRvd1Jvb3RFbGVtZW50OjpNZWRp
YUNvbnQKICAgICByZW5kZXJlci0+c2V0U3R5bGUocm9vdFN0eWxlLnJlbGVhc2UoKSk7CiAgICAg
c2V0UmVuZGVyZXIocmVuZGVyZXIpOwogICAgIHNldEF0dGFjaGVkKCk7Ci0gICAgc2V0SW5Eb2N1
bWVudCh0cnVlKTsKKyAgICBzZXRJbkRvY3VtZW50KCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9s
U2hhZG93Um9vdEVsZW1lbnQ6OnVwZGF0ZVN0eWxlKCkKQEAgLTkyLDcgKzkyLDcgQEAgTWVkaWFD
b250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxlbWVudAogICAgICwgbV9tZWRpYUVsZW1lbnQo
bWVkaWFFbGVtZW50KQogICAgICwgbV9wc2V1ZG9TdHlsZUlkKHBzZXVkbykKIHsKLSAgICBzZXRJ
bkRvY3VtZW50KHRydWUpOworICAgIHNldEluRG9jdW1lbnQoKTsKICAgICBzd2l0Y2ggKHBzZXVk
bykgewogICAgIGNhc2UgTUVESUFfQ09OVFJPTFNfQ1VSUkVOVF9USU1FX0RJU1BMQVk6CiAgICAg
ICAgIG1fZGlzcGxheVR5cGUgPSBNZWRpYUN1cnJlbnRUaW1lRGlzcGxheTsKQEAgLTMxOCw3ICsz
MTgsNyBAQCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlhQ29udHJvbEluCiAgICAgLCBt
X3BzZXVkb1N0eWxlSWQocHNldWRvKQogewogICAgIHNldElucHV0VHlwZSh0eXBlKTsKLSAgICBz
ZXRJbkRvY3VtZW50KHRydWUpOworICAgIHNldEluRG9jdW1lbnQoKTsKIAogICAgIHN3aXRjaCAo
cHNldWRvKSB7CiAgICAgY2FzZSBNRURJQV9DT05UUk9MU19NVVRFX0JVVFRPTjoKSW5kZXg6IFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAJKHJldmlzaW9u
IDU4OTAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBSZW5kZXJGaWxlVXBsb2Fk
Q29udHJvbDo6dXBkYXRlRnJvbQogICAgICAgICByZW5kZXJlci0+c2V0U3R5bGUoYnV0dG9uU3R5
bGUucmVsZWFzZSgpKTsKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiAg
ICAgICAgIG1fYnV0dG9uLT5zZXRBdHRhY2hlZCgpOwotICAgICAgICBtX2J1dHRvbi0+c2V0SW5E
b2N1bWVudCh0cnVlKTsKKyAgICAgICAgbV9idXR0b24tPnNldEluRG9jdW1lbnQoKTsKIAogICAg
ICAgICBhZGRDaGlsZChyZW5kZXJlcik7CiAgICAgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxODMsNyArMzE4Myw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUKICAgICAgICAgLy8gV2UgYXJlIGNsZWFyaW5nIHRo
ZSA6YWN0aXZlIGNoYWluIGJlY2F1c2UgdGhlIG1vdXNlIGhhcyBiZWVuIHJlbGVhc2VkLgogICAg
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IGFjdGl2ZU5vZGUtPnJlbmRlcmVyKCk7IGN1
cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewogICAgICAgICAgICAgaWYgKGN1cnItPm5vZGUo
KSAmJiAhY3Vyci0+aXNUZXh0KCkpCi0gICAgICAgICAgICAgICAgY3Vyci0+bm9kZSgpLT5zZXRJ
bkFjdGl2ZUNoYWluKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBjdXJyLT5ub2RlKCktPmNsZWFy
SW5BY3RpdmVDaGFpbigpOwogICAgICAgICB9CiAgICAgICAgIGRvYy0+c2V0QWN0aXZlTm9kZSgw
KTsKICAgICB9IGVsc2UgewpAQCAtMzE5Myw3ICszMTkzLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZQogICAgICAgICAgICAgLy8gd2lsbCBuZWVkIHRvIHJlZmVy
ZW5jZSB0aGlzIGNoYWluLgogICAgICAgICAgICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnIgPSBu
ZXdBY3RpdmVOb2RlLT5yZW5kZXJlcigpOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsK
ICAgICAgICAgICAgICAgICBpZiAoY3Vyci0+bm9kZSgpICYmICFjdXJyLT5pc1RleHQoKSkgewot
ICAgICAgICAgICAgICAgICAgICBjdXJyLT5ub2RlKCktPnNldEluQWN0aXZlQ2hhaW4odHJ1ZSk7
CisgICAgICAgICAgICAgICAgICAgIGN1cnItPm5vZGUoKS0+c2V0SW5BY3RpdmVDaGFpbigpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRvYy0+c2V0QWN0
aXZlTm9kZShuZXdBY3RpdmVOb2RlKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclBy
b2dyZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJQcm9ncmVz
cy5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUHJvZ3Jl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNyArMTQxLDcgQEAgdm9pZCBSZW5kZXJQcm9n
cmVzczo6dXBkYXRlVmFsdWVQYXJ0U3RhdAogICAgICAgICBtX3ZhbHVlUGFydC0+c2V0UmVuZGVy
ZXIobV92YWx1ZVBhcnQtPmNyZWF0ZVJlbmRlcmVyKHJlbmRlckFyZW5hKCksIHN0eWxlRm9yVmFs
dWVQYXJ0LmdldCgpKSk7CiAgICAgICAgIG1fdmFsdWVQYXJ0LT5yZW5kZXJlcigpLT5zZXRTdHls
ZShzdHlsZUZvclZhbHVlUGFydC5yZWxlYXNlKCkpOwogICAgICAgICBtX3ZhbHVlUGFydC0+c2V0
QXR0YWNoZWQoKTsKLSAgICAgICAgbV92YWx1ZVBhcnQtPnNldEluRG9jdW1lbnQodHJ1ZSk7Cisg
ICAgICAgIG1fdmFsdWVQYXJ0LT5zZXRJbkRvY3VtZW50KCk7CiAgICAgICAgIGFkZENoaWxkKG1f
dmFsdWVQYXJ0LT5yZW5kZXJlcigpKTsKICAgICB9IGVsc2UgaWYgKHN0eWxlKCktPmhhc0FwcGVh
cmFuY2UoKSAmJiBtX3ZhbHVlUGFydCkgewogICAgICAgICBtX3ZhbHVlUGFydC0+ZGV0YWNoKCk7
CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEw
LDcgKzMxMCw3IEBAIHZvaWQgUmVuZGVyU2xpZGVyOjp1cGRhdGVGcm9tRWxlbWVudCgpCiAgICAg
ICAgIG1fdGh1bWItPnNldFJlbmRlcmVyKG1fdGh1bWItPmNyZWF0ZVJlbmRlcmVyKHJlbmRlckFy
ZW5hKCksIHRodW1iU3R5bGUuZ2V0KCkpKTsKICAgICAgICAgbV90aHVtYi0+cmVuZGVyZXIoKS0+
c2V0U3R5bGUodGh1bWJTdHlsZS5yZWxlYXNlKCkpOwogICAgICAgICBtX3RodW1iLT5zZXRBdHRh
Y2hlZCgpOwotICAgICAgICBtX3RodW1iLT5zZXRJbkRvY3VtZW50KHRydWUpOworICAgICAgICBt
X3RodW1iLT5zZXRJbkRvY3VtZW50KCk7CiAgICAgICAgIGFkZENoaWxkKG1fdGh1bWItPnJlbmRl
cmVyKCkpOwogICAgIH0KICAgICBzZXROZWVkc0xheW91dCh0cnVlKTsKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1NWR1NoYWRvd1RyZWVFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvU1ZHU2hhZG93VHJlZUVsZW1lbnRzLmNwcAkocmV2aXNpb24gNTg5MDEpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9TVkdTaGFkb3dUcmVlRWxlbWVudHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw3ICs0OSw3IEBAIFNWR1NoYWRvd1RyZWVSb290RWxlbWVudDo6U1ZHU2hhZG93
VHJlZVIKICAgICA6IFNWR1NoYWRvd1RyZWVDb250YWluZXJFbGVtZW50KGRvY3VtZW50KQogICAg
ICwgbV9zaGFkb3dQYXJlbnQoc2hhZG93UGFyZW50KQogewotICAgIHNldEluRG9jdW1lbnQodHJ1
ZSk7CisgICAgc2V0SW5Eb2N1bWVudCgpOwogfQogCiBTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQ6
On5TVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQoKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6YXR0YWNoSW5u
ZQogICAgIAogICAgIC8vIFNldCB0aGVzZSBleHBsaWNpdGx5IHNpbmNlIHRoaXMgbm9ybWFsbHkg
aGFwcGVucyBkdXJpbmcgYW4gYXR0YWNoKCkKICAgICBzZXRBdHRhY2hlZCgpOwotICAgIHNldElu
RG9jdW1lbnQodHJ1ZSk7CisgICAgc2V0SW5Eb2N1bWVudCgpOwogICAgIAogICAgIC8vIEZvciBl
bGVtZW50cyB3aXRob3V0IGEgc2hhZG93IHBhcmVudCwgYWRkIHRoZSBub2RlIHRvIHRoZSBET00g
bm9ybWFsbHkuCiAgICAgaWYgKCFtX3NoYWRvd1BhcmVudCkKSW5kZXg6IFdlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3
IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFJlbmRlclN0eWxlOjpjbG8KICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFJlbmRlclN0eWxlKCpvdGhlcikpOwogfQogCi1SZW5kZXJTdHlsZTo6UmVu
ZGVyU3R5bGUoKQorQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoKQogICAg
IDogbV9hZmZlY3RlZEJ5QXR0cmlidXRlU2VsZWN0b3JzKGZhbHNlKQogICAgICwgbV91bmlxdWUo
ZmFsc2UpCiAgICAgLCBtX2FmZmVjdGVkQnlFbXB0eShmYWxzZSkKQEAgLTg1LDcgKzg1LDcgQEAg
UmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKCkKICAgICBzZXRCaXREZWZhdWx0cygpOyAvLyBXb3Vs
ZCBpdCBiZSBmYXN0ZXIgdG8gY29weSB0aGlzIGZyb20gdGhlIGRlZmF1bHQgc3R5bGU/CiB9CiAK
LVJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZShib29sKQorQUxXQVlTX0lOTElORSBSZW5kZXJTdHls
ZTo6UmVuZGVyU3R5bGUoYm9vbCkKICAgICA6IG1fYWZmZWN0ZWRCeUF0dHJpYnV0ZVNlbGVjdG9y
cyhmYWxzZSkKICAgICAsIG1fdW5pcXVlKGZhbHNlKQogICAgICwgbV9hZmZlY3RlZEJ5RW1wdHko
ZmFsc2UpCkBAIC0xMTgsNyArMTE4LDcgQEAgUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGJvb2wp
CiAjZW5kaWYKIH0KIAotUmVuZGVyU3R5bGU6OlJlbmRlclN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBvKQorQUxXQVlTX0lOTElORSBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoY29uc3QgUmVuZGVy
U3R5bGUmIG8pCiAgICAgOiBSZWZDb3VudGVkPFJlbmRlclN0eWxlPigpCiAgICAgLCBtX2FmZmVj
dGVkQnlBdHRyaWJ1dGVTZWxlY3RvcnMoZmFsc2UpCiAgICAgLCBtX3VuaXF1ZShmYWxzZSkKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gNTg5MDEpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMDIsNyArMzAyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBub25pbmhlcml0ZWRfZmxhZ3Mu
X2lzTGluayA9IGZhbHNlOwogICAgIH0KIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBSZW5k
ZXJTdHlsZSgpOwogICAgIC8vIHVzZWQgdG8gY3JlYXRlIHRoZSBkZWZhdWx0IHN0eWxlLgogICAg
IFJlbmRlclN0eWxlKGJvb2wpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcm9wZXJ0
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJvcGVydHkuaAkocmV2
aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByb3BlcnR5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDEzICs0OCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEJhc2VWYWwoUGFzc1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIG1fY3JlYXRvci5zZXRCYXNl
VmFsdWUodHlwZSk7Ci0gICAgICAgIG1fY29udGV4dEVsZW1lbnQtPnNldFN5bmNocm9uaXplZFNW
R0F0dHJpYnV0ZXMoZmFsc2UpOworICAgICAgICBtX2NvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRl
U1ZHQXR0cmlidXRlcygpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltVmFsKFBh
c3NUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBtX2NyZWF0b3Iuc2V0VmFsdWUodHlwZSk7Ci0g
ICAgICAgIG1fY29udGV4dEVsZW1lbnQtPnNldFN5bmNocm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFs
c2UpOworICAgICAgICBtX2NvbnRleHRFbGVtZW50LT5pbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgUmV0dXJuVHlwZSBiYXNlVmFsKCkgY29uc3QgeyByZXR1
cm4gbV9jcmVhdG9yLmJhc2VWYWx1ZSgpOyB9CkBAIC0xODEsMTQgKzE4MSwxNCBAQCBwdWJsaWM6
IFwKICAgICB7IFwKICAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc2V0VmFsdWUodHlwZSk7IFwK
ICAgICAgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1lbnRGb3JU
eXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6dmFsdWU+
Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKLSAgICAgICAgY29udGV4dEVsZW1lbnQtPnNldFN5bmNo
cm9uaXplZFNWR0F0dHJpYnV0ZXMoZmFsc2UpOyBcCisgICAgICAgIGNvbnRleHRFbGVtZW50LT5p
bnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOyBcCiAgICAgfSBcCiAgICAgXAogICAgIHZvaWQgc2V0
IyNVcHBlclByb3BlcnR5IyNCYXNlVmFsdWUoU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRyYWl0czxBbmlt
YXRlZFR5cGU+OjpQYXNzVHlwZSB0eXBlKSBcCiAgICAgeyBcCiAgICAgICAgIG1fIyNMb3dlclBy
b3BlcnR5LnNldEJhc2VWYWx1ZSh0eXBlKTsgXAogICAgICAgICBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZvclR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9t
U1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAotICAg
ICAgICBjb250ZXh0RWxlbWVudC0+c2V0U3luY2hyb25pemVkU1ZHQXR0cmlidXRlcyhmYWxzZSk7
IFwKKyAgICAgICAgY29udGV4dEVsZW1lbnQtPmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7IFwK
ICAgICB9IFwKICAgICBcCiAgICAgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSgpIFwK
SW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiA1ODkwMSkKKysrIFdlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFNWR0VsZW1lbnQ6OlNWR0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudFplcm9SZWZD
b3VudCkKKyAgICA6IFN0eWxlZEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0ZVNWR0Vs
ZW1lbnRaZXJvUmVmQ291bnQpCiB7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgU1ZHRWxlbWVudFJh
cmVEYXRhKiBTVkdFbGVtZW50OjplbnN1cmVSYQogICAgIEFTU0VSVCghU1ZHRWxlbWVudFJhcmVE
YXRhOjpyYXJlRGF0YU1hcCgpLmNvbnRhaW5zKHRoaXMpKTsKICAgICBTVkdFbGVtZW50UmFyZURh
dGEqIGRhdGEgPSBuZXcgU1ZHRWxlbWVudFJhcmVEYXRhOwogICAgIFNWR0VsZW1lbnRSYXJlRGF0
YTo6cmFyZURhdGFNYXAoKS5zZXQodGhpcywgZGF0YSk7Ci0gICAgbV9oYXNSYXJlU1ZHRGF0YSA9
IHRydWU7CisgICAgc2V0SGFzUmFyZVNWR0RhdGEoKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApA
QCAtMzA2LDE2ICszMDYsMTYgQEAgdm9pZCBTVkdFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKEF0
dHJpYgogCiB2b2lkIFNWR0VsZW1lbnQ6OnVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc3luY2hyb25pemluZ1NW
R0F0dHJpYnV0ZXMgfHwgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQpCisgICAgaWYgKGlzU3luY2hy
b25pemluZ1NWR0F0dHJpYnV0ZXMoKSB8fCBhcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9zeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcyA9IHRydWU7Cisg
ICAgc2V0SXNTeW5jaHJvbml6aW5nU1ZHQXR0cmlidXRlcygpOwogCiAgICAgY29uc3RfY2FzdDxT
VkdFbGVtZW50Kj4odGhpcyktPnN5bmNocm9uaXplUHJvcGVydHkobmFtZSk7CiAgICAgaWYgKG5h
bWUgPT0gYW55UU5hbWUoKSkKLSAgICAgICAgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQgPSB0cnVl
OworICAgICAgICBzZXRBcmVTVkdBdHRyaWJ1dGVzVmFsaWQoKTsKIAotICAgIG1fc3luY2hyb25p
emluZ1NWR0F0dHJpYnV0ZXMgPSBmYWxzZTsKKyAgICBjbGVhcklzU3luY2hyb25pemluZ1NWR0F0
dHJpYnV0ZXMoKTsKIH0KIAogQ29udGFpbmVyTm9kZSogU1ZHRWxlbWVudDo6ZXZlbnRQYXJlbnRO
b2RlKCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmgJKHJldmlzaW9uIDU4OTAxKQorKysgV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVt
ZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiAwOyB9CiAKLSAgICAgICAgdm9pZCBzZXRTeW5jaHJv
bml6ZWRTVkdBdHRyaWJ1dGVzKGJvb2wgdmFsdWUpIHsgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQg
PSB2YWx1ZTsgfQorICAgICAgICB2b2lkIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCkgeyBjbGVh
ckFyZVNWR0F0dHJpYnV0ZXNWYWxpZCgpOyB9CiAKICAgICAgICAgY29uc3QgSGFzaFNldDxTVkdF
bGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzRm9yRWxlbWVudCgpIGNvbnN0OwogCkBAIC05NCw3
ICs5NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmll
bmQgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1NW
R0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBp
c1N1cHBvcnRlZChTdHJpbmdJbXBsKiBmZWF0dXJlLCBTdHJpbmdJbXBsKiB2ZXJzaW9uKSBjb25z
dDsKIAogICAgICAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGV2ZW50UGFyZW50Tm9kZSgpOwpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL3N2
Zy9TVkdQb2x5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDcgQEAgdm9p
ZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogCiAgICAgLy8gVGhlIHBvaW50
cyBwcm9wZXJ0eSBpcyBub3QgYSByZWd1bGFyIFNWR0FuaW1hdGVkUHJvcGVydHksIHN0aWxsIHdl
IHVzZSB0aGUgc2FtZSBTVkc8LT5YTUwgRE9NIHN5bmNocm9uaXphdGlvbiBmcmFtZXdvcmsuCiAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKQotICAgICAgICBzZXRTeW5j
aHJvbml6ZWRTVkdBdHRyaWJ1dGVzKGZhbHNlKTsKKyAgICAgICAgaW52YWxpZGF0ZVNWR0F0dHJp
YnV0ZXMoKTsKIAogICAgIFJlbmRlclBhdGgqIHJlbmRlcmVyID0gc3RhdGljX2Nhc3Q8UmVuZGVy
UGF0aCo+KHRoaXMtPnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVyZXIpCkluZGV4OiBXZWJD
b3JlL3dtbC9XTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dtbC9X
TUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gNTg5MDEpCisrKyBXZWJDb3JlL3dtbC9XTUxB
bmNob3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEwIEBAIFdNTEFu
Y2hvckVsZW1lbnQ6OldNTEFuY2hvckVsZW1lbnQoY29uc3QKICAgICA6IFdNTEFFbGVtZW50KHRh
Z05hbWUsIGRvYykKICAgICAsIG1fdGFzaygwKQogewotICAgIC8vIENhbGxpbmcgc2V0SXNMaW5r
KHRydWUpLCBhbmQgcmV0dXJuaW5nIGEgbm9uLW51bGwgdmFsdWUgb24gQ1NTU3R5bGVTZWxlY3Rv
cnMnIGxpbmtBdHRyaWJ1dGUKKyAgICAvLyBDYWxsaW5nIHNldElzTGluaygpLCBhbmQgcmV0dXJu
aW5nIGEgbm9uLW51bGwgdmFsdWUgb24gQ1NTU3R5bGVTZWxlY3RvcnMnIGxpbmtBdHRyaWJ1dGUK
ICAgICAvLyBtZXRob2QsIG1ha2VzIGl0IHBvc3NpYmxlIHRvICdhcHBlYXIgYXMgbGluaycgKGp1
c3QgbGlrZSA8YSBocmVmPSIuLiI+KSB3aXRob3V0IHRoZSBuZWVkIHRvCiAgICAgLy8gYWN0dWFs
bHkgc2V0IHRoZSBocmVmIHZhbHVlIHRvIGFuIGVtcHR5IHZhbHVlIGluIHRoZSBET00gdHJlZS4K
LSAgICBzZXRJc0xpbmsodHJ1ZSk7CisgICAgc2V0SXNMaW5rKCk7CiB9CiAKIFdNTEFuY2hvckVs
ZW1lbnQ6On5XTUxBbmNob3JFbGVtZW50KCkKSW5kZXg6IFdlYkNvcmUvd21sL1dNTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd21sL1dNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1
ODkwMSkKKysrIFdlYkNvcmUvd21sL1dNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBXTUxOYW1l
czsKIAogV01MRWxlbWVudDo6V01MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50LCBDcmVhdGVFbGVtZW50WmVyb1JlZkNvdW50KQorICAgIDogU3R5bGVkRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCwgQ3JlYXRlU3R5bGVkRWxlbWVudFplcm9SZWZDb3VudCkKIHsKIH0KIAo=
</data>
<flag name="review"
          id="39450"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>