<?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>190933</bug_id>
          
          <creation_ts>2018-10-25 16:41:03 -0700</creation_ts>
          <short_desc>Consider removing double load for accessing the MetadataTable from LLInt</short_desc>
          <delta_ts>2018-11-08 07:43:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tadeu Zagallo">tzagallo</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1472251</commentid>
    <comment_count>0</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2018-10-25 16:41:03 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=187373 introduces a MetadataTable to store mutable data for bytecodes. Right now, fetching the table requires two loads (codeBlock-&gt;m_metadataTable-&gt;m_buffer).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475953</commentid>
    <comment_count>1</comment_count>
      <attachid>354080</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-07 04:09:33 -0800</bug_when>
    <thetext>Created attachment 354080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475963</commentid>
    <comment_count>2</comment_count>
      <attachid>354080</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-11-07 05:25:48 -0800</bug_when>
    <thetext>Comment on attachment 354080
Patch

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

r=me with some nits.

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTableInlines.h:112
&gt; +    void* buffer;

Nit: Can&apos;t this just be a char*? Then you wouldn&apos;t need the reinterpret_casts below.

&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTableInlines.h:121
&gt; +    memset(reinterpret_cast&lt;uint8_t*&gt;(buffer) + sizeof(LinkingData) + s_offsetTableSize, 0, totalSize - s_offsetTableSize);
&gt; +    return adoptRef(*new (reinterpret_cast&lt;uint8_t*&gt;(buffer) + sizeof(LinkingData)) MetadataTable(*this));

It seems like we are going to fill a lot of the buffer twice between here and the MetadataTable constructor? Should we file a bug to move the zeroing into the constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476525</commentid>
    <comment_count>3</comment_count>
      <attachid>354080</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-08 07:37:59 -0800</bug_when>
    <thetext>Comment on attachment 354080
Patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTableInlines.h:112
&gt;&gt; +    void* buffer;
&gt; 
&gt; Nit: Can&apos;t this just be a char*? Then you wouldn&apos;t need the reinterpret_casts below.

Sounds nice! Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/UnlinkedMetadataTableInlines.h:121
&gt;&gt; +    return adoptRef(*new (reinterpret_cast&lt;uint8_t*&gt;(buffer) + sizeof(LinkingData)) MetadataTable(*this));
&gt; 
&gt; It seems like we are going to fill a lot of the buffer twice between here and the MetadataTable constructor? Should we file a bug to move the zeroing into the constructor?

MetadataTable&apos;s constructor does nothing except for filling LinkingData :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476527</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-11-08 07:42:17 -0800</bug_when>
    <thetext>Committed r237987: &lt;https://trac.webkit.org/changeset/237987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476529</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-08 07:43:24 -0800</bug_when>
    <thetext>&lt;rdar://problem/45910122&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354080</attachid>
            <date>2018-11-07 04:09:33 -0800</date>
            <delta_ts>2018-11-07 05:25:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190933-20181107210932.patch</filename>
            <type>text/plain</type>
            <size>20098</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODE1MjcxYzgzZWQ4ZTk0ZGM0NDNjOWZjMWY1OTg2MzcwNTk0MTQ2Li5mMGIyOGFhN2FjNjUwMTAy
OTJiNzBmNTAxYTQ0OTYwZDgxMzBjZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxOC0xMS0wNyAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIENvbnNpZGVyIHJlbW92aW5nIGRvdWJsZSBsb2FkIGZvciBh
Y2Nlc3NpbmcgdGhlIE1ldGFkYXRhVGFibGUgZnJvbSBMTEludAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwOTMzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVzIGRvdWJsZSBs
b2FkIGZvciBhY2Nlc3NlcyB0byBNZXRhZGF0YVRhYmxlIGZyb20gTExJbnQuCisgICAgICAgIE1l
dGFkYXRhVGFibGUgaXMgbm93IHNwZWNpYWxseSBSZWZDb3VudGVkIGNsYXNzLCB3aGljaCBoYXMg
aW50ZXJlc3RpbmcgbWVtb3J5IGxheW91dC4KKyAgICAgICAgV2hlbiByZWZjb3VudCBiZWNvbWVz
IDAsIE1ldGFkYXRhVGFibGUgYXNrcyBVbmxpbmtlZE1ldGFkYXRhVGFibGUgdG8gZGVzdHJveSBp
dHNlbGYuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpl
c3RpbWF0ZWRTaXplKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKToK
KyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjptZXRhZGF0YSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmZvckVhY2hBcnJheUFsbG9jYXRpb25Qcm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmb3JFYWNoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmZvckVhY2hMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5jcHA6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6Ok1ldGFkYXRhVGFi
bGUpOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjp+TWV0YWRhdGFUYWJsZSk6CisgICAg
ICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKToKKyAgICAgICAgKiBieXRlY29k
ZS9NZXRhZGF0YVRhYmxlLmg6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmdldCk6Cisg
ICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OmZvckVhY2gpOgorICAgICAgICAoSlNDOjpNZXRh
ZGF0YVRhYmxlOjpyZWYgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpkZXJl
ZiBjb25zdCk6CisgICAgICAgIChKU0M6Ok1ldGFkYXRhVGFibGU6OnJlZkNvdW50IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6aGFzT25lUmVmIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TWV0YWRhdGFUYWJsZTo6YnVmZmVyKToKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJs
ZTo6bGlua2luZ0RhdGEgY29uc3QpOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpnZXRJ
bXBsKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpidWZmZXIgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpVbmxpbmtlZE1ldGFkYXRhVGFibGUpOgorICAgICAgICAo
SlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6On5VbmxpbmtlZE1ldGFkYXRhVGFibGUpOgorICAg
ICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmFkZEVudHJ5KToKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpzaXplSW5CeXRlcyk6CisgICAgICAgIChKU0M6OlVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1l
dGFkYXRhVGFibGU6OmxpbmspOgorICAgICAgICAoSlNDOjpVbmxpbmtlZE1ldGFkYXRhVGFibGU6
OnVubGluayk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206CisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKwogMjAxOC0xMS0wNiAg
SnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJHUFVdIEV4
cGVyaW1lbnRhbCBwcm90b3R5cGUgZm9yIFdlYkdQVVJlbmRlclBpcGVsaW5lIGFuZCBXZWJHUFVT
d2FwQ2hhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
aW5kZXggYWY2OTBiOTQxYmIxMGM5MTJmMDNkZDJlNmRmNmVhNDc1OWE1NGVmNi4uN2I3NjIzZjUw
YTI3YmI0NjI2MjdlMTQ0Nzg4ZjhkODc0ZGU5NWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTgxMyw3ICs4MTMsOCBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgIGlmIChPcHRpb25zOjpkdW1wR2VuZXJhdGVkQnl0ZWNvZGVzKCkp
CiAgICAgICAgIGR1bXBCeXRlY29kZSgpOwogCi0gICAgaGVhcCgpLT5yZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZChtX21ldGFkYXRhLT5zaXplSW5CeXRlcygpKTsKKyAgICBpZiAobV9tZXRhZGF0
YSkKKyAgICAgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChtX21ldGFkYXRh
LT5zaXplSW5CeXRlcygpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtOTU0LDcgKzk1NSw5
IEBAIENvZGVCbG9jayogQ29kZUJsb2NrOjpzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpCiBz
aXplX3QgQ29kZUJsb2NrOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCwgVk0mIHZtKQogewog
ICAgIENvZGVCbG9jayogdGhpc09iamVjdCA9IGpzQ2FzdDxDb2RlQmxvY2sqPihjZWxsKTsKLSAg
ICBzaXplX3QgZXh0cmFNZW1vcnlBbGxvY2F0ZWQgPSB0aGlzT2JqZWN0LT5tX21ldGFkYXRhLT5z
aXplSW5CeXRlcygpOworICAgIHNpemVfdCBleHRyYU1lbW9yeUFsbG9jYXRlZCA9IDA7CisgICAg
aWYgKHRoaXNPYmplY3QtPm1fbWV0YWRhdGEpCisgICAgICAgIGV4dHJhTWVtb3J5QWxsb2NhdGVk
ICs9IHRoaXNPYmplY3QtPm1fbWV0YWRhdGEtPnNpemVJbkJ5dGVzKCk7CiAgICAgaWYgKHRoaXNP
YmplY3QtPm1faml0Q29kZSkKICAgICAgICAgZXh0cmFNZW1vcnlBbGxvY2F0ZWQgKz0gdGhpc09i
amVjdC0+bV9qaXRDb2RlLT5zaXplKCk7CiAgICAgcmV0dXJuIEJhc2U6OmVzdGltYXRlZFNpemUo
Y2VsbCwgdm0pICsgZXh0cmFNZW1vcnlBbGxvY2F0ZWQ7CkBAIC05NzUsOSArOTc4LDExIEBAIHZv
aWQgQ29kZUJsb2NrOjp2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIGlm
IChDb2RlQmxvY2sqIG90aGVyQmxvY2sgPSBzcGVjaWFsT1NSRW50cnlCbG9ja09yTnVsbCgpKQog
ICAgICAgICB2aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKG90aGVyQmxvY2spOwogCi0gICAgc2l6
ZV90IGV4dHJhTWVtb3J5ID0gbV9tZXRhZGF0YS0+c2l6ZUluQnl0ZXMoKTsKKyAgICBzaXplX3Qg
ZXh0cmFNZW1vcnkgPSAwOworICAgIGlmIChtX21ldGFkYXRhKQorICAgICAgICBleHRyYU1lbW9y
eSArPSBtX21ldGFkYXRhLT5zaXplSW5CeXRlcygpOwogICAgIGlmIChtX2ppdENvZGUpCi0gICAg
ICAgIGV4dHJhTWVtb3J5ID0gbV9qaXRDb2RlLT5zaXplKCk7CisgICAgICAgIGV4dHJhTWVtb3J5
ICs9IG1faml0Q29kZS0+c2l6ZSgpOwogICAgIHZpc2l0b3IucmVwb3J0RXh0cmFNZW1vcnlWaXNp
dGVkKGV4dHJhTWVtb3J5KTsKIAogICAgIHN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKGxv
Y2tlciwgdmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKaW5kZXggYjhmODQwYjNlNWI2ZjBkMzc5ZTllZDhkODQ1N2IxMzVmODUxYzA3My4uM2M1YjU2
N2EyODliMTBjYzEzZDNlOGViYzU3ZmYwY2Q0OWY0ZmQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtODU5LDYgKzg1OSw3IEBAIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1ldGFkYXRhPgog
ICAgIE1ldGFkYXRhJiBtZXRhZGF0YShPcGNvZGVJRCBvcGNvZGVJRCwgdW5zaWduZWQgbWV0YWRh
dGFJRCkKICAgICB7CisgICAgICAgIEFTU0VSVChtX21ldGFkYXRhKTsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8TWV0YWRhdGEqPihtX21ldGFkYXRhLT5nZXQob3Bjb2RlSUQpKVtt
ZXRhZGF0YUlEXTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrSW5saW5lcy5oCmluZGV4IDQyMGNlNWM1NTBmMTUwODlmZDBmYWM4MjE5ZTdk
NWRlMzMyZTQxNTUuLmY4MWY5ZDVmNmI2M2YyZDJkNTY4NzJiYmMxYTllMzYzYTk1Y2U5OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMu
aApAQCAtMzcsMTIgKzM3LDE1IEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9maWxl
KGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJl
ck9mQXJndW1lbnRWYWx1ZVByb2ZpbGVzKCk7ICsraSkKICAgICAgICAgZnVuYyh2YWx1ZVByb2Zp
bGVGb3JBcmd1bWVudChpKSk7CiAKKyAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJ
VChfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFk
YXRhKSB7IGZ1bmMobWV0YWRhdGEucHJvZmlsZSk7IH0pOwogCi1GT1JfRUFDSF9PUENPREVfV0lU
SF9WQUxVRV9QUk9GSUxFKFZJU0lUKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9WQUxV
RV9QUk9GSUxFKFZJU0lUKQogCiAjdW5kZWYgVklTSVQKKyAgICB9CisKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTUxLDUwICs1NCw1OCBAQCB2b2lkIENvZGVCbG9jazo6Zm9y
RWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogICAgIGZvciAoYXV0byYgYXJy
YXlQcm9maWxlIDogbV9hcnJheVByb2ZpbGVzKQogICAgICAgICBmdW5jKGFycmF5UHJvZmlsZSk7
CiAKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0
YSkgewotICAgICAgICBpZiAobWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpCi0gICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1v
ZGUuYXJyYXlQcm9maWxlKTsKLSAgICB9KTsKKyAgICBpZiAobV9tZXRhZGF0YSkgeworICAgICAg
ICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkgewor
ICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3Ro
KQorICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEubW9kZU1ldGFkYXRhLmFycmF5TGVuZ3Ro
TW9kZS5hcnJheVByb2ZpbGUpOworICAgICAgICB9KTsKIAogI2RlZmluZSBWSVNJVChfX29wKSBc
CiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1
bmMobWV0YWRhdGEuYXJyYXlQcm9maWxlKTsgfSk7CiAKLUZPUl9FQUNIX09QQ09ERV9XSVRIX0FS
UkFZX1BST0ZJTEUoVklTSVQpCisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BS
T0ZJTEUoVklTSVQpCiAKICN1bmRlZiBWSVNJVAorICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlBbGxvY2F0aW9uUHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogeworICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5l
IFZJU0lUKF9fb3ApIFwKICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYg
bWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5hcnJheUFsbG9jYXRpb25Qcm9maWxlKTsgfSk7CiAK
LUZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX0FMTE9DQVRJT05fUFJPRklMRShWSVNJVCkKKyAg
ICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfQUxMT0NBVElPTl9QUk9GSUxFKFZJU0lU
KQogCiAjdW5kZWYgVklTSVQKKyAgICB9CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+
CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKGNvbnN0IEZ1
bmN0b3ImIGZ1bmMpCiB7CisgICAgaWYgKG1fbWV0YWRhdGEpIHsKICNkZWZpbmUgVklTSVQoX19v
cCkgXAogICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
eyBmdW5jKG1ldGFkYXRhLm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsgfSk7CiAKLUZPUl9FQUNI
X09QQ09ERV9XSVRIX09CSkVDVF9BTExPQ0FUSU9OX1BST0ZJTEUoVklTSVQpCisgICAgICAgIEZP
Ul9FQUNIX09QQ09ERV9XSVRIX09CSkVDVF9BTExPQ0FUSU9OX1BST0ZJTEUoVklTSVQpCiAKICN1
bmRlZiBWSVNJVAorICAgIH0KIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KIHZvaWQg
Q29kZUJsb2NrOjpmb3JFYWNoTExJbnRDYWxsTGlua0luZm8oY29uc3QgRnVuY3RvciYgZnVuYykK
IHsKKyAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJVChfX29wKSBcCiAgICAgbV9t
ZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRh
dGEuY2FsbExpbmtJbmZvKTsgfSk7CiAKLUZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExf
TElOS19JTkZPKFZJU0lUKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxM
X0xJTktfSU5GTyhWSVNJVCkKIAogI3VuZGVmIFZJU0lUCisgICAgfQogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRh
ZGF0YVRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRh
YmxlLmNwcAppbmRleCBlMzFiMjdmZDc5ZWY4YzNmZmY3ZmFhMjI3NjM4NmE1ODdlZTI4NzczLi45
ZDg5ZGI0YWRmZDBjNDI1N2Q0YTM3ZGEwODY3YWZiMTFjNzZhMDIzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuY3BwCkBAIC0zMywxMCArMzMs
MTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLU1ldGFkYXRhVGFibGU6Ok1ldGFkYXRhVGFibGUo
VW5saW5rZWRNZXRhZGF0YVRhYmxlJiB1bmxpbmtlZE1ldGFkYXRhLCBVbmxpbmtlZE1ldGFkYXRh
VGFibGU6Ok9mZnNldCogYnVmZmVyKQotICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICwgbV91
bmxpbmtlZE1ldGFkYXRhKHVubGlua2VkTWV0YWRhdGEpCitNZXRhZGF0YVRhYmxlOjpNZXRhZGF0
YVRhYmxlKFVubGlua2VkTWV0YWRhdGFUYWJsZSYgdW5saW5rZWRNZXRhZGF0YSkKIHsKKyAgICBs
aW5raW5nRGF0YSgpID0gVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSB7CisgICAg
ICAgICZ1bmxpbmtlZE1ldGFkYXRhLAorICAgICAgICAxLAorICAgIH07CiB9CiAKIHN0cnVjdCBE
ZWFsbG9jVGFibGUgewpAQCAtNTMsMTIgKzU1LDEyIEBAIE1ldGFkYXRhVGFibGU6On5NZXRhZGF0
YVRhYmxlKCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTlVNQkVSX09GX0JZVEVD
T0RFX1dJVEhfTUVUQURBVEE7IGkrKykKICAgICAgICAgZ2V0T3Bjb2RlVHlwZTxEZWFsbG9jVGFi
bGU+KHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSwgdGhpcyk7Ci0gICAgbV91bmxpbmtlZE1ldGFk
YXRhLnVubGluaygqdGhpcyk7CisgICAgbGlua2luZ0RhdGEoKS51bmxpbmtlZE1ldGFkYXRhLT51
bmxpbmsoKnRoaXMpOwogfQogCiBzaXplX3QgTWV0YWRhdGFUYWJsZTo6c2l6ZUluQnl0ZXMoKQog
ewotICAgIHJldHVybiBtX3VubGlua2VkTWV0YWRhdGEuc2l6ZUluQnl0ZXMoKnRoaXMpOworICAg
IHJldHVybiBsaW5raW5nRGF0YSgpLnVubGlua2VkTWV0YWRhdGEtPnNpemVJbkJ5dGVzKCp0aGlz
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGFkYXRhVGFibGUuaAppbmRleCA1YWNlYTcwOGMwODI4YjZkMzhiMzEyNGM4MTU0
ZDYwNzlhYzZhMGZjLi42MGNkZTVmNWFhMTI4MTUyMjhiMzY2YzA4OTkwNTJlNTczNThmY2FlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAg
LTM0LDI2ICszNCwyNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgQ29kZUJsb2NrOwogCi1j
bGFzcyBNZXRhZGF0YVRhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWRhdGFUYWJsZT4gewor
Ly8gTWV0YWRhdGFUYWJsZSBoYXMgYSBiaXQgc3RyYW5nZSBtZW1vcnkgbGF5b3V0IGZvciBMTElu
dCBvcHRpbWl6YXRpb24uCisvLyBbVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YV1b
TWV0YWRhdGFUYWJsZV0KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K
Ky8vICAgICAgICAgICAgICAgICBUaGUgcG9pbnRlciBvZiBNZXRhZGF0YVRhYmxlIHBvaW50cyBh
dCB0aGlzIGFkZHJlc3MuCitjbGFzcyBNZXRhZGF0YVRhYmxlIHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShNZXRhZGF0YVRhYmxlKTsKICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGZyaWVuZCBjbGFzcyBV
bmxpbmtlZE1ldGFkYXRhVGFibGU7Ci0KIHB1YmxpYzoKICAgICB+TWV0YWRhdGFUYWJsZSgpOwog
CiAgICAgQUxXQVlTX0lOTElORSBJbnN0cnVjdGlvbjo6TWV0YWRhdGEqIGdldChPcGNvZGVJRCBv
cGNvZGVJRCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX2J1ZmZlciAmJiBvcGNvZGVJRCA8IE5V
TUJFUl9PRl9CWVRFQ09ERV9XSVRIX01FVEFEQVRBKTsKKyAgICAgICAgQVNTRVJUKG9wY29kZUlE
IDwgTlVNQkVSX09GX0JZVEVDT0RFX1dJVEhfTUVUQURBVEEpOwogICAgICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxJbnN0cnVjdGlvbjo6TWV0YWRhdGEqPihnZXRJbXBsKG9wY29kZUlEKSk7
CiAgICAgfQogCi0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcCwgdHlwZW5hbWUgRnVuY3Rvcj4K
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgZm9yRWFjaChjb25zdCBGdW5jdG9yJiBmdW5jKQogICAg
IHsKLSAgICAgICAgaWYgKCFtX2J1ZmZlcikKLSAgICAgICAgICAgIHJldHVybjsKLQogICAgICAg
ICBhdXRvKiBtZXRhZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dHlwZW5hbWUgT3A6Ok1ldGFkYXRh
Kj4oZ2V0KE9wOjpvcGNvZGVJRCkpOwogICAgICAgICBhdXRvKiBlbmQgPSByZWludGVycHJldF9j
YXN0PHR5cGVuYW1lIE9wOjpNZXRhZGF0YSo+KGdldEltcGwoT3A6Om9wY29kZUlEICsgMSkpOwog
ICAgICAgICBmb3IgKDsgbWV0YWRhdGEgKyAxIDw9IGVuZDsgKyttZXRhZGF0YSkKQEAgLTYyLDE2
ICs2Myw0OCBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIDogcHVibGljIFJlZkNvdW50ZWQ8TWV0YWRh
dGFUYWJsZT4gewogCiAgICAgc2l6ZV90IHNpemVJbkJ5dGVzKCk7CiAKKyAgICB2b2lkIHJlZigp
IGNvbnN0CisgICAgeworICAgICAgICArK2xpbmtpbmdEYXRhKCkucmVmQ291bnQ7CisgICAgfQor
CisgICAgdm9pZCBkZXJlZigpIGNvbnN0CisgICAgeworICAgICAgICB1bnNpZ25lZCB0ZW1wUmVm
Q291bnQgPSBsaW5raW5nRGF0YSgpLnJlZkNvdW50IC0gMTsKKyAgICAgICAgaWYgKCF0ZW1wUmVm
Q291bnQpIHsKKyAgICAgICAgICAgIHRoaXMtPn5NZXRhZGF0YVRhYmxlKCk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbGlua2luZ0RhdGEoKS5yZWZDb3VudCA9IHRl
bXBSZWZDb3VudDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZWZDb3VudCgpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gbGlua2luZ0RhdGEoKS5yZWZDb3VudDsKKyAgICB9CisKKyAgICB1
bnNpZ25lZCBoYXNPbmVSZWYoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHJlZkNvdW50
KCkgPT0gMTsKKyAgICB9CisKKyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVm
ZmVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpPZmZzZXQqPih0aGlzKTsKKyAgICB9CisKIHByaXZhdGU6Ci0gICAgTWV0YWRhdGFU
YWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmLCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCopOworICAgIE1ldGFkYXRhVGFibGUoVW5saW5rZWRNZXRhZGF0YVRhYmxlJik7CiAKLSAgICBB
TFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwodW5zaWduZWQgaSkKKyAgICBVbmxpbmtlZE1l
dGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhJiBsaW5raW5nRGF0YSgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9idWZmZXIpICsgbV9idWZm
ZXJbaV07CisgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVvZihV
bmxpbmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwogICAgIH0KIAotICAgIFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBtX2J1ZmZlcjsKLSAgICBVbmxpbmtlZE1ldGFkYXRh
VGFibGUmIG1fdW5saW5rZWRNZXRhZGF0YTsKKyAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdl
dEltcGwodW5zaWduZWQgaSkKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWlu
dDhfdCo+KHRoaXMpICsgYnVmZmVyKClbaV07CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRN
ZXRhZGF0YVRhYmxlLmgKaW5kZXggOTM4ZDZiY2JiNzM1ZjgyMzk2YTcxODM2MWQ4NjdhZDNhOGFm
NTk1Mi4uM2UzZThkZmI0ZDViYmM0NjRmNWU2YTIzNDRjYWFjYTk5NDk0OWVmMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkTWV0YWRhdGFUYWJsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFi
bGUuaApAQCAtMzcsNiArMzcsMTEgQEAgY2xhc3MgVW5saW5rZWRNZXRhZGF0YVRhYmxlIHsKICAg
ICBmcmllbmQgY2xhc3MgTWV0YWRhdGFUYWJsZTsKIAogcHVibGljOgorICAgIHN0cnVjdCBMaW5r
aW5nRGF0YSB7CisgICAgICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZSogdW5saW5rZWRNZXRhZGF0
YTsKKyAgICAgICAgdW5zaWduZWQgcmVmQ291bnQ7CisgICAgfTsKKwogICAgIFVubGlua2VkTWV0
YWRhdGFUYWJsZSgpOwogICAgIH5VbmxpbmtlZE1ldGFkYXRhVGFibGUoKTsKIApAQCAtNDYsNyAr
NTEsNyBAQCBjbGFzcyBVbmxpbmtlZE1ldGFkYXRhVGFibGUgewogCiAgICAgdm9pZCBmaW5hbGl6
ZSgpOwogCi0gICAgUmVmPE1ldGFkYXRhVGFibGU+IGxpbmsoKTsKKyAgICBSZWZQdHI8TWV0YWRh
dGFUYWJsZT4gbGluaygpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdW5saW5rKE1ldGFkYXRhVGFi
bGUmKTsKQEAgLTU4LDEwICs2MywxMiBAQCBjbGFzcyBVbmxpbmtlZE1ldGFkYXRhVGFibGUgewog
ICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgc19vZmZzZXRUYWJsZUVudHJpZXMgPSBOVU1C
RVJfT0ZfQllURUNPREVfV0lUSF9NRVRBREFUQSArIDE7IC8vIG9uZSBleHRyYSBlbnRyeSBmb3Ig
dGhlICJlbmQiIG9mZnNldDsKICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHNfb2Zmc2V0
VGFibGVTaXplID0gc19vZmZzZXRUYWJsZUVudHJpZXMgKiBzaXplb2YoVW5saW5rZWRNZXRhZGF0
YVRhYmxlOjpPZmZzZXQpOwogCisgICAgT2Zmc2V0KiBidWZmZXIoKSBjb25zdCB7IHJldHVybiBi
aXR3aXNlX2Nhc3Q8T2Zmc2V0Kj4oYml0d2lzZV9jYXN0PHVpbnQ4X3QqPihtX3Jhd0J1ZmZlcikg
KyBzaXplb2YoTGlua2luZ0RhdGEpKTsgfQorCiAgICAgYm9vbCBtX2hhc01ldGFkYXRhIDogMTsK
ICAgICBib29sIG1faXNGaW5hbGl6ZWQgOiAxOwogICAgIGJvb2wgbV9pc0xpbmtlZCA6IDE7Ci0g
ICAgT2Zmc2V0KiBtX2J1ZmZlcjsKKyAgICB2b2lkKiBtX3Jhd0J1ZmZlcjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9VbmxpbmtlZE1ldGFkYXRhVGFibGVJbmxpbmVzLmgKaW5kZXggMDNmZmI2MzIxNjFk
NTNlZmE1MzMxZDQ0YmQ2ZGYxYzQxNzZjNjU5NC4uMzc0ZWMxNjdlMGI3M2E4MTQyYWY4ODE5NGRj
MjM2YTZkNTFmYmI2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkTWV0YWRhdGFUYWJsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVW5saW5rZWRNZXRhZGF0YVRhYmxlSW5saW5lcy5oCkBAIC0zNiwyMSArMzYs
MjEgQEAgQUxXQVlTX0lOTElORSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OlVubGlua2VkTWV0YWRh
dGFUYWJsZSgpCiAgICAgbV9oYXNNZXRhZGF0YSA9IGZhbHNlOwogICAgIG1faXNGaW5hbGl6ZWQg
PSBmYWxzZTsKICAgICBtX2lzTGlua2VkID0gZmFsc2U7Ci0gICAgbV9idWZmZXIgPSByZWludGVy
cHJldF9jYXN0PE9mZnNldCo+KGZhc3RDYWxsb2Moc19vZmZzZXRUYWJsZUVudHJpZXMsIHNpemVv
ZihVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCkpKTsKKyAgICBtX3Jhd0J1ZmZlciA9IGZh
c3RaZXJvZWRNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSArIHNfb2Zmc2V0VGFibGVTaXplKTsK
IH0KIAogQUxXQVlTX0lOTElORSBVbmxpbmtlZE1ldGFkYXRhVGFibGU6On5VbmxpbmtlZE1ldGFk
YXRhVGFibGUoKQogewogICAgIEFTU0VSVCghbV9pc0xpbmtlZCk7CiAgICAgaWYgKG1faGFzTWV0
YWRhdGEgfHwgIW1faXNGaW5hbGl6ZWQpCi0gICAgICAgIGZhc3RGcmVlKG1fYnVmZmVyKTsKKyAg
ICAgICAgZmFzdEZyZWUobV9yYXdCdWZmZXIpOwogfQogCiBBTFdBWVNfSU5MSU5FIHVuc2lnbmVk
IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6YWRkRW50cnkoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CiAg
ICAgQVNTRVJUKCFtX2lzRmluYWxpemVkICYmIG9wY29kZUlEIDwgc19vZmZzZXRUYWJsZUVudHJp
ZXMgLSAxKTsKICAgICBtX2hhc01ldGFkYXRhID0gdHJ1ZTsKLSAgICByZXR1cm4gbV9idWZmZXJb
b3Bjb2RlSURdKys7CisgICAgcmV0dXJuIGJ1ZmZlcigpW29wY29kZUlEXSsrOwogfQogCiBBTFdB
WVNfSU5MSU5FIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OnNpemVJbkJ5dGVzKCkKQEAg
LTY1LDE3ICs2NSwxNCBAQCBBTFdBWVNfSU5MSU5FIHNpemVfdCBVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6OnNpemVJbkJ5dGVzKE1ldGFkYXRhVGFibGUmIG1ldGFkYXRhVAogewogICAgIEFTU0VSVCht
X2lzRmluYWxpemVkKTsKIAotICAgIGlmICghbWV0YWRhdGFUYWJsZS5tX2J1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHJldHVybiB0aGUgc2l6ZSBv
ZiB0aGUgdGFibGUgbWludXMgdGhlIG9mZnNldCB0YWJsZSwKICAgICAvLyB3aGljaCB3YXMgYWxy
ZWFkeSBhY2NvdW50ZWQgZm9yIGluIHRoZSBVbmxpbmtlZENvZGVCbG9jay4KLSAgICBpZiAobWV0
YWRhdGFUYWJsZS5tX2J1ZmZlciA9PSBtX2J1ZmZlcikgeworICAgIGlmIChtZXRhZGF0YVRhYmxl
LmJ1ZmZlcigpID09IGJ1ZmZlcigpKSB7CiAgICAgICAgIEFTU0VSVChtX2lzTGlua2VkKTsKLSAg
ICAgICAgcmV0dXJuIG1fYnVmZmVyW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV0gLSBzX29mZnNl
dFRhYmxlU2l6ZTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVz
IC0gMV0gLSBzX29mZnNldFRhYmxlU2l6ZTsKICAgICB9CiAKLSAgICByZXR1cm4gbWV0YWRhdGFU
YWJsZS5tX2J1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdOworICAgIHJldHVybiBtZXRh
ZGF0YVRhYmxlLmJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07CiB9CiAKIEFMV0FZ
U19JTkxJTkUgdm9pZCBVbmxpbmtlZE1ldGFkYXRhVGFibGU6OmZpbmFsaXplKCkKQEAgLTgzLDQ1
ICs4MCw0NSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpmaW5h
bGl6ZSgpCiAgICAgQVNTRVJUKCFtX2lzRmluYWxpemVkKTsKICAgICBtX2lzRmluYWxpemVkID0g
dHJ1ZTsKICAgICBpZiAoIW1faGFzTWV0YWRhdGEpIHsKLSAgICAgICAgZmFzdEZyZWUobV9idWZm
ZXIpOwotICAgICAgICBtX2J1ZmZlciA9IG51bGxwdHI7CisgICAgICAgIGZhc3RGcmVlKG1fcmF3
QnVmZmVyKTsKKyAgICAgICAgbV9yYXdCdWZmZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc19vZmZzZXRUYWJsZVNpemU7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMTsgaSsrKSB7
Ci0gICAgICAgIHVuc2lnbmVkIG51bWJlck9mRW50cmllcyA9IG1fYnVmZmVyW2ldOworICAgICAg
ICB1bnNpZ25lZCBudW1iZXJPZkVudHJpZXMgPSBidWZmZXIoKVtpXTsKIAogICAgICAgICBpZiAo
bnVtYmVyT2ZFbnRyaWVzID4gMCkgewogI2lmIENQVShORUVEU19BTElHTkVEX0FDQ0VTUykKICAg
ICAgICAgICAgIG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YobWV0YWRhdGFBbGlnbm1lbnQo
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKSwgb2Zmc2V0KTsKICNlbmRpZgotICAgICAgICAgICAg
bV9idWZmZXJbaV0gPSBvZmZzZXQ7CisgICAgICAgICAgICBidWZmZXIoKVtpXSA9IG9mZnNldDsK
ICAgICAgICAgICAgIG9mZnNldCArPSBudW1iZXJPZkVudHJpZXMgKiBtZXRhZGF0YVNpemUoc3Rh
dGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2J1
ZmZlcltpXSA9IG9mZnNldDsKKyAgICAgICAgICAgIGJ1ZmZlcigpW2ldID0gb2Zmc2V0OwogICAg
IH0KLSAgICBtX2J1ZmZlcltzX29mZnNldFRhYmxlRW50cmllcyAtIDFdID0gb2Zmc2V0OworICAg
IGJ1ZmZlcigpW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV0gPSBvZmZzZXQ7CiB9CiAKLUFMV0FZ
U19JTkxJTkUgUmVmPE1ldGFkYXRhVGFibGU+IFVubGlua2VkTWV0YWRhdGFUYWJsZTo6bGluaygp
CitBTFdBWVNfSU5MSU5FIFJlZlB0cjxNZXRhZGF0YVRhYmxlPiBVbmxpbmtlZE1ldGFkYXRhVGFi
bGU6OmxpbmsoKQogewogICAgIEFTU0VSVChtX2lzRmluYWxpemVkKTsKIAogICAgIGlmICghbV9o
YXNNZXRhZGF0YSkKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWV0YWRhdGFUYWJsZSgq
dGhpcywgbnVsbHB0cikpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHVuc2lnbmVk
IHRvdGFsU2l6ZSA9IG1fYnVmZmVyW3Nfb2Zmc2V0VGFibGVFbnRyaWVzIC0gMV07Ci0gICAgT2Zm
c2V0KiBidWZmZXI7CisgICAgdW5zaWduZWQgdG90YWxTaXplID0gYnVmZmVyKClbc19vZmZzZXRU
YWJsZUVudHJpZXMgLSAxXTsKKyAgICB2b2lkKiBidWZmZXI7CiAgICAgaWYgKCFtX2lzTGlua2Vk
KSB7CiAgICAgICAgIG1faXNMaW5rZWQgPSB0cnVlOwotICAgICAgICBidWZmZXIgPSBtX2J1ZmZl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8T2Zmc2V0Kj4oZmFzdFJlYWxsb2MobV9idWZmZXIsIHRvdGFs
U2l6ZSkpOworICAgICAgICBidWZmZXIgPSBtX3Jhd0J1ZmZlciA9IGZhc3RSZWFsbG9jKG1fcmF3
QnVmZmVyLCBzaXplb2YoTGlua2luZ0RhdGEpICsgdG90YWxTaXplKTsKICAgICB9IGVsc2Ugewot
ICAgICAgICBidWZmZXIgPSByZWludGVycHJldF9jYXN0PE9mZnNldCo+KGZhc3RNYWxsb2ModG90
YWxTaXplKSk7Ci0gICAgICAgIG1lbWNweShidWZmZXIsIG1fYnVmZmVyLCBzX29mZnNldFRhYmxl
U2l6ZSk7CisgICAgICAgIGJ1ZmZlciA9IGZhc3RNYWxsb2Moc2l6ZW9mKExpbmtpbmdEYXRhKSAr
IHRvdGFsU2l6ZSk7CisgICAgICAgIG1lbWNweShidWZmZXIsIG1fcmF3QnVmZmVyLCBzaXplb2Yo
TGlua2luZ0RhdGEpICsgc19vZmZzZXRUYWJsZVNpemUpOwogICAgIH0KLSAgICBtZW1zZXQocmVp
bnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSArIHNfb2Zmc2V0VGFibGVTaXplLCAwLCB0
b3RhbFNpemUgLSBzX29mZnNldFRhYmxlU2l6ZSk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
TWV0YWRhdGFUYWJsZSgqdGhpcywgYnVmZmVyKSk7CisgICAgbWVtc2V0KHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KGJ1ZmZlcikgKyBzaXplb2YoTGlua2luZ0RhdGEpICsgc19vZmZzZXRUYWJs
ZVNpemUsIDAsIHRvdGFsU2l6ZSAtIHNfb2Zmc2V0VGFibGVTaXplKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyAocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYnVmZmVyKSArIHNpemVvZihM
aW5raW5nRGF0YSkpIE1ldGFkYXRhVGFibGUoKnRoaXMpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2
b2lkIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6dW5saW5rKE1ldGFkYXRhVGFibGUmIG1ldGFkYXRh
VGFibGUpCkBAIC0xMzAsMTIgKzEyNywxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgVW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjp1bmxpbmsoTWV0YWRhdGFUYWJsZSYgbWV0YWRhdGFUYWJsZSkKICAgICBp
ZiAoIW1faGFzTWV0YWRhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChtZXRhZGF0YVRh
YmxlLm1fYnVmZmVyID09IG1fYnVmZmVyKSB7CisgICAgaWYgKG1ldGFkYXRhVGFibGUuYnVmZmVy
KCkgPT0gYnVmZmVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1faXNMaW5rZWQpOwogICAgICAgICBt
X2lzTGlua2VkID0gZmFsc2U7Ci0gICAgICAgIG1fYnVmZmVyID0gcmVpbnRlcnByZXRfY2FzdDxP
ZmZzZXQqPihmYXN0UmVhbGxvYyhtX2J1ZmZlciwgc19vZmZzZXRUYWJsZVNpemUpKTsKLSAgICB9
IGVsc2UgaWYgKG1ldGFkYXRhVGFibGUubV9idWZmZXIpCi0gICAgICAgIGZhc3RGcmVlKG1ldGFk
YXRhVGFibGUubV9idWZmZXIpOworICAgICAgICBtX3Jhd0J1ZmZlciA9IGZhc3RSZWFsbG9jKG1f
cmF3QnVmZmVyLCBzaXplb2YoTGlua2luZ0RhdGEpICsgc19vZmZzZXRUYWJsZVNpemUpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIGZhc3RGcmVlKCZtZXRhZGF0YVRhYmxlLmxpbmtpbmdE
YXRhKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCA4OTJlMGE4MzJhZDg4
YmJiNzcxZjM2NWM4YmNhNmVlNDA4NzcwYWFjLi5hNWIzMDk0MGY3ZWI5MDgxODQzYjBiNWZiMjY1
ZDllY2IwNjFjMGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xMTk0LDEwICsxMTk0LDcgQEAgbWFjcm8gcHJvbG9n
dWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNs
b3dQYXRoKQogICAgICAgICBtb3ZlIHQwLCBzcAogICAgIGVuZAogCi0gICAgIyBGSVhNRTogY2xl
YW51cCBkb3VibGUgbG9hZAotICAgICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDkzMwogICAgIGxvYWRwIENvZGVCbG9jazo6bV9tZXRhZGF0YVt0MV0sIG1ldGFk
YXRhVGFibGUKLSAgICBsb2FkcCBNZXRhZGF0YVRhYmxlOjptX2J1ZmZlclttZXRhZGF0YVRhYmxl
XSwgbWV0YWRhdGFUYWJsZQogCiAgICAgaWYgSlNWQUxVRTY0CiAgICAgICAgIG1vdmUgVGFnVHlw
ZU51bWJlciwgdGFnVHlwZU51bWJlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBlM2Q3MjY5M2QwMDgx
ODM3ODM1MzcwNjVmM2FjY2JlYzNhYTZiNDJjLi44MWUyMDNiMjY5NDVjYzA1OWYyNGNiNDAwYTY2
NTNmZjgzMzM1ODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtMTk1NSwxMCArMTk1NSw3IEBAIGNv
bW1vbk9wKGxsaW50X29wX2NhdGNoLCBtYWNybygpIGVuZCwgbWFjcm8gKHNpemUpCiAKICAgICAj
IHJlc3RvcmUgbWV0YWRhdGFUYWJsZSBzaW5jZSB3ZSBkb24ndCByZXN0b3JlIGNhbGxlZSBzYXZl
cyBmb3IgQ0xvb3AgZHVyaW5nIHVud2luZGluZwogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQotICAgICMgRklYTUU6IGNsZWFudXAgZG91YmxlIGxvYWQKLSAgICAjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA5MzMKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
bWV0YWRhdGFbdDFdLCBtZXRhZGF0YVRhYmxlCi0gICAgbG9hZHAgTWV0YWRhdGFUYWJsZTo6bV9i
dWZmZXJbbWV0YWRhdGFUYWJsZV0sIG1ldGFkYXRhVGFibGUKIAogICAgIGxvYWRpIFZNOjp0YXJn
ZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQwogCg==
</data>
<flag name="review"
          id="371298"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>