<?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>215017</bug_id>
          
          <creation_ts>2020-07-31 07:36:39 -0700</creation_ts>
          <short_desc>Convert LinkHeader to use StringParsingBuffer</short_desc>
          <delta_ts>2020-08-01 10:52:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1676818</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-31 07:36:39 -0700</bug_when>
    <thetext>LinkHeader parsing should use StringParsingBuffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1676819</commentid>
    <comment_count>1</comment_count>
      <attachid>405692</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-07-31 07:38:17 -0700</bug_when>
    <thetext>Created attachment 405692
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677129</commentid>
    <comment_count>2</comment_count>
      <attachid>405692</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-01 10:39:50 -0700</bug_when>
    <thetext>Comment on attachment 405692
Patch

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

&gt; Source/WebCore/loader/LinkHeader.cpp:54
&gt; -    if ((chr &gt;= &apos;^&apos; &amp;&amp; chr &lt;= &apos;z&apos;) || (chr &gt;= &apos;A&apos; &amp;&amp; chr &lt;= &apos;Z&apos;) || (chr &gt;= &apos;0&apos; &amp;&amp; chr &lt;= &apos;9&apos;) || (chr &gt;= &apos;!&apos; &amp;&amp; chr &lt;= &apos;$&apos;) || chr == &apos;&amp;&apos; || chr == &apos;+&apos; || chr == &apos;-&apos; || chr == &apos;.&apos;)
&gt; +    if ((character &gt;= &apos;^&apos; &amp;&amp; character &lt;= &apos;z&apos;) || (character &gt;= &apos;A&apos; &amp;&amp; character &lt;= &apos;Z&apos;) || (character &gt;= &apos;0&apos; &amp;&amp; character &lt;= &apos;9&apos;) || (character &gt;= &apos;!&apos; &amp;&amp; character &lt;= &apos;$&apos;) || character == &apos;&amp;&apos; || character == &apos;+&apos; || character == &apos;-&apos; || character == &apos;.&apos;)
&gt;          return true;
&gt;      return false;

I’d like to see this be made shorter by using isASCIIAlphanumeric.

Also, I’d like to use return rather than if return true else return false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677131</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-01 10:51:22 -0700</bug_when>
    <thetext>Committed r265177: &lt;https://trac.webkit.org/changeset/265177&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 405692.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677132</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-01 10:52:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/66427205&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405692</attachid>
            <date>2020-07-31 07:38:17 -0700</date>
            <delta_ts>2020-08-01 10:51:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215017-20200731073816.patch</filename>
            <type>text/plain</type>
            <size>16262</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2NTEzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA3LTMxICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBDb252ZXJ0IExpbmtIZWFkZXIgdG8g
dXNlIFN0cmluZ1BhcnNpbmdCdWZmZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTAxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBMaW5rSGVhZGVyIHBhcnNpbmcgdG8gdXNlIFN0cmluZ1Bh
cnNpbmdCdWZmZXIgYW5kIGRvIHNvbWUgbGlnaHQgY2xlYW51cC4KKworICAgICAgICAqIGxvYWRl
ci9MaW5rSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzU3BhY2VPclRhYik6CisgICAg
ICAgIChXZWJDb3JlOjppc05vdFVSTFRlcm1pbmF0aW5nQ2hhcik6CisgICAgICAgIChXZWJDb3Jl
Ojppc1ZhbGlkUGFyYW1ldGVyTmFtZUNoYXIpOgorICAgICAgICAoV2ViQ29yZTo6aXNQYXJhbWV0
ZXJWYWx1ZUVuZCk6CisgICAgICAgIChXZWJDb3JlOjppc1BhcmFtZXRlclZhbHVlQ2hhcik6Cisg
ICAgICAgIChXZWJDb3JlOjpmaW5kVVJMQm91bmRhcmllcyk6CisgICAgICAgIChXZWJDb3JlOjpp
bnZhbGlkUGFyYW1ldGVyRGVsaW1pdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkRmllbGRF
bmQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VQYXJhbWV0ZXJEZWxpbWl0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyYW10ZXJOYW1lRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpw
YXJzZVBhcmFtZXRlck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6c2tpcFF1b3Rlc0lmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUGFyYW1ldGVyVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6ZmluZE5leHRIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGlua0hlYWRlcjo6TGlu
a0hlYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpMaW5rSGVhZGVyU2V0OjpMaW5rSGVhZGVyU2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxpbmtIZWFkZXJTZXQ6OmluaXQpOiBEZWxldGVkLgorICAg
ICAgICAqIGxvYWRlci9MaW5rSGVhZGVyLmg6CisKIDIwMjAtMDctMzEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdXNlIHdoZWVs
IGV2ZW50cyBvbiBob3Jpem9udGFsIHNjcm9sbGJhciBub3QgY29ycmVjdGx5IGhhbmRsZWQgd2hl
biBBQyBtb2RlIGlzIGZvcmNlZApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9MaW5rSGVhZGVyLmNw
cAkocmV2aXNpb24gMjY1MTI5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtIZWFkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAyMDE1
IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0
IChDKSAyMDE2IEFrYW1haSBUZWNobm9sb2dpZXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNDAgKzMzLDM1IEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIExXU1AgZGVmaW5pdGlvbiBpbiBodHRwczovL3d3dy5pZXRmLm9y
Zy9yZmMvcmZjMDgyMi50eHQKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3Rh
dGljIGJvb2wgaXNTcGFjZU9yVGFiKENoYXJhY3RlclR5cGUgY2hyKQordGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGJvb2wgaXNTcGFjZU9yVGFiKENoYXJhY3RlclR5cGUg
Y2hhcmFjdGVyKQogewotICAgIHJldHVybiAoY2hyID09ICcgJykgfHwgKGNociA9PSAnXHQnKTsK
KyAgICByZXR1cm4gY2hhcmFjdGVyID09ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JzsKIH0KIAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgYm9vbCBpc05vdFVSTFRl
cm1pbmF0aW5nQ2hhcihDaGFyYWN0ZXJUeXBlIGNocikKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IHN0YXRpYyBib29sIGlzTm90VVJMVGVybWluYXRpbmdDaGFyKENoYXJhY3RlclR5
cGUgY2hhcmFjdGVyKQogewotICAgIHJldHVybiAoY2hyICE9ICc+Jyk7CisgICAgcmV0dXJuIGNo
YXJhY3RlciAhPSAnPic7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgot
c3RhdGljIGJvb2wgaXNWYWxpZFBhcmFtZXRlck5hbWVDaGFyKENoYXJhY3RlclR5cGUgY2hyKQor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGJvb2wgaXNWYWxpZFBhcmFt
ZXRlck5hbWVDaGFyKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewogICAgIC8vIEEgc2VwYXJh
dG9yLCBDVEwgb3IgJyUnLCAnKicgb3IgJ1wnJyBtZWFucyB0aGUgY2hhciBpcyBub3QgdmFsaWQu
CiAgICAgLy8gRGVmaW5pdGlvbiBhcyBhdHRyLWNoYXIgYXQgaHR0cHM6Ly90b29scy5pZXRmLm9y
Zy9odG1sL3JmYzU5ODcKICAgICAvLyBDVEwgYW5kIHNlcGFyYXRvcnMgYXJlIGRlZmluZWQgaW4g
aHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI2MTYjc2VjdGlvbi0yLjIKICAgICAvLyBW
YWxpZCBjaGFycyBhcmUgYWxwaGEtbnVtZXJpYyBhbmQgYW55IG9mICEjJCYrLS5eX2B8fiIKLSAg
ICBpZiAoKGNociA+PSAnXicgJiYgY2hyIDw9ICd6JykgfHwgKGNociA+PSAnQScgJiYgY2hyIDw9
ICdaJykgfHwgKGNociA+PSAnMCcgJiYgY2hyIDw9ICc5JykgfHwgKGNociA+PSAnIScgJiYgY2hy
IDw9ICckJykgfHwgY2hyID09ICcmJyB8fCBjaHIgPT0gJysnIHx8IGNociA9PSAnLScgfHwgY2hy
ID09ICcuJykKKyAgICBpZiAoKGNoYXJhY3RlciA+PSAnXicgJiYgY2hhcmFjdGVyIDw9ICd6Jykg
fHwgKGNoYXJhY3RlciA+PSAnQScgJiYgY2hhcmFjdGVyIDw9ICdaJykgfHwgKGNoYXJhY3RlciA+
PSAnMCcgJiYgY2hhcmFjdGVyIDw9ICc5JykgfHwgKGNoYXJhY3RlciA+PSAnIScgJiYgY2hhcmFj
dGVyIDw9ICckJykgfHwgY2hhcmFjdGVyID09ICcmJyB8fCBjaGFyYWN0ZXIgPT0gJysnIHx8IGNo
YXJhY3RlciA9PSAnLScgfHwgY2hhcmFjdGVyID09ICcuJykKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KLXN0YXRpYyBib29sIGlzUGFyYW1ldGVyVmFsdWVFbmQoQ2hhcmFjdGVyVHlwZSBjaHIpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCBpc1BhcmFtZXRlclZh
bHVlRW5kKENoYXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIHJldHVybiBjaHIgPT0gJzsn
IHx8IGNociA9PSAnLCc7CisgICAgcmV0dXJuIGNoYXJhY3RlciA9PSAnOycgfHwgY2hhcmFjdGVy
ID09ICcsJzsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMg
Ym9vbCBpc1BhcmFtZXRlclZhbHVlQ2hhcihDaGFyYWN0ZXJUeXBlIGNocikKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBib29sIGlzUGFyYW1ldGVyVmFsdWVDaGFyKENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQogewotICAgIHJldHVybiAhaXNTcGFjZU9yVGFiKGNocikg
JiYgIWlzUGFyYW1ldGVyVmFsdWVFbmQoY2hyKTsKKyAgICByZXR1cm4gIWlzU3BhY2VPclRhYihj
aGFyYWN0ZXIpICYmICFpc1BhcmFtZXRlclZhbHVlRW5kKGNoYXJhY3Rlcik7CiB9CiAKIC8vIFZl
cmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXIgaXMgYSBsaW5rLWV4dGVuc2lvbiB3aGljaCBhY2NvcmRp
bmcgdG8gc3BlYyBkb2Vzbid0IGhhdmUgdG8gaGF2ZSBhIHZhbHVlLgpAQCAtODUsMzcgKzgxLDMx
IEBAIHN0YXRpYyBib29sIGlzRXh0ZW5zaW9uUGFyYW1ldGVyKExpbmtIZWEKIC8vIDxjYXQuanBn
PjsgcmVsPXByZWxvYWQKIC8vICAgICAgICAgIF4gICAgICAgICAgICBeCiAvLyAgICAgICAgICBw
b3NpdGlvbiAgICAgZW5kCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRp
YyBPcHRpb25hbDxTdHJpbmc+IGZpbmRVUkxCb3VuZGFyaWVzKENoYXJhY3RlclR5cGUqJiBwb3Np
dGlvbiwgQ2hhcmFjdGVyVHlwZSogY29uc3QgZW5kKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gc3RhdGljIE9wdGlvbmFsPFN0cmluZz4gZmluZFVSTEJvdW5kYXJpZXMoU3RyaW5n
UGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewotICAgIEFTU0VSVChwb3Np
dGlvbiA8PSBlbmQpOwotICAgIHNraXBXaGlsZTxpc1NwYWNlT3JUYWI+KHBvc2l0aW9uLCBlbmQp
OwotICAgIGlmICghc2tpcEV4YWN0bHkocG9zaXRpb24sIGVuZCwgJzwnKSkKKyAgICBza2lwV2hp
bGU8aXNTcGFjZU9yVGFiPihidWZmZXIpOworICAgIGlmICghc2tpcEV4YWN0bHkoYnVmZmVyLCAn
PCcpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHNraXBXaGlsZTxpc1NwYWNl
T3JUYWI+KHBvc2l0aW9uLCBlbmQpOworICAgIHNraXBXaGlsZTxpc1NwYWNlT3JUYWI+KGJ1ZmZl
cik7CiAKLSAgICBDaGFyYWN0ZXJUeXBlKiB1cmxTdGFydCA9IHBvc2l0aW9uOwotICAgIHNraXBX
aGlsZTxpc05vdFVSTFRlcm1pbmF0aW5nQ2hhcj4ocG9zaXRpb24sIGVuZCk7Ci0gICAgQ2hhcmFj
dGVyVHlwZSogdXJsRW5kID0gcG9zaXRpb247Ci0gICAgc2tpcFVudGlsKHBvc2l0aW9uLCBlbmQs
ICc+Jyk7Ci0gICAgaWYgKCFza2lwRXhhY3RseShwb3NpdGlvbiwgZW5kLCAnPicpKQorICAgIGF1
dG8gdXJsU3RhcnQgPSBidWZmZXIucG9zaXRpb24oKTsKKyAgICBza2lwV2hpbGU8aXNOb3RVUkxU
ZXJtaW5hdGluZ0NoYXI+KGJ1ZmZlcik7CisgICAgYXV0byB1cmxFbmQgPSBidWZmZXIucG9zaXRp
b24oKTsKKyAgICBza2lwVW50aWwoYnVmZmVyLCAnPicpOworICAgIGlmICghc2tpcEV4YWN0bHko
YnVmZmVyLCAnPicpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgcmV0dXJu
IFN0cmluZyh1cmxTdGFydCwgdXJsRW5kIC0gdXJsU3RhcnQpOwogfQogCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBib29sIGludmFsaWRQYXJhbWV0ZXJEZWxpbWl0
ZXIoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBlKiBjb25zdCBlbmQpCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCBpbnZhbGlkUGFyYW1l
dGVyRGVsaW1pdGVyKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikK
IHsKLSAgICBBU1NFUlQocG9zaXRpb24gPD0gZW5kKTsKLSAgICByZXR1cm4gKCFza2lwRXhhY3Rs
eShwb3NpdGlvbiwgZW5kLCAnOycpICYmIChwb3NpdGlvbiA8IGVuZCkgJiYgKCpwb3NpdGlvbiAh
PSAnLCcpKTsKKyAgICByZXR1cm4gIXNraXBFeGFjdGx5KGJ1ZmZlciwgJzsnKSAmJiBidWZmZXIu
aGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpICYmICpidWZmZXIgIT0gJywnOwogfQogCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBib29sIHZhbGlkRmllbGRFbmQoQ2hh
cmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBlKiBjb25zdCBlbmQpCit0ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgYm9vbCB2YWxpZEZpZWxkRW5kKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQocG9z
aXRpb24gPD0gZW5kKTsKLSAgICByZXR1cm4gKHBvc2l0aW9uID09IGVuZCB8fCAqcG9zaXRpb24g
PT0gJywnKTsKKyAgICByZXR1cm4gYnVmZmVyLmF0RW5kKCkgfHwgKmJ1ZmZlciA9PSAnLCc7CiB9
CiAKIC8vIEJlZm9yZToKQEAgLTEyOSwyMyArMTE5LDIxIEBAIHN0YXRpYyBib29sIHZhbGlkRmll
bGRFbmQoQ2hhcmFjdGVyVHlwZSoKIC8vIDxjYXQuanBnPjsgcmVsPXByZWxvYWQKIC8vICAgICAg
ICAgICAgXiAgICAgICAgICBeCiAvLyAgICAgICAgICAgIHBvc2l0aW9uICBlbmQKLXRlbXBsYXRl
IDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGJvb2wgcGFyc2VQYXJhbWV0ZXJEZWxp
bWl0ZXIoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBlKiBjb25zdCBlbmQs
IGJvb2wmIGlzVmFsaWQpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMg
Ym9vbCBwYXJzZVBhcmFtZXRlckRlbGltaXRlcihTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+JiBidWZmZXIsIGJvb2wmIGlzVmFsaWQpCiB7Ci0gICAgQVNTRVJUKHBvc2l0aW9uIDw9
IGVuZCk7CiAgICAgaXNWYWxpZCA9IHRydWU7Ci0gICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4o
cG9zaXRpb24sIGVuZCk7Ci0gICAgaWYgKGludmFsaWRQYXJhbWV0ZXJEZWxpbWl0ZXIocG9zaXRp
b24sIGVuZCkpIHsKKyAgICBza2lwV2hpbGU8aXNTcGFjZU9yVGFiPihidWZmZXIpOworICAgIGlm
IChpbnZhbGlkUGFyYW1ldGVyRGVsaW1pdGVyKGJ1ZmZlcikpIHsKICAgICAgICAgaXNWYWxpZCA9
IGZhbHNlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIHNraXBXaGlsZTxpc1Nw
YWNlT3JUYWI+KHBvc2l0aW9uLCBlbmQpOwotICAgIGlmICh2YWxpZEZpZWxkRW5kKHBvc2l0aW9u
LCBlbmQpKQorICAgIHNraXBXaGlsZTxpc1NwYWNlT3JUYWI+KGJ1ZmZlcik7CisgICAgaWYgKHZh
bGlkRmllbGRFbmQoYnVmZmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgTGlua0hlYWRlcjo6TGlua1BhcmFtZXRlck5hbWUgcGFyYW10ZXJO
YW1lRnJvbVN0cmluZyhTdHJpbmcgbmFtZSkKK3N0YXRpYyBMaW5rSGVhZGVyOjpMaW5rUGFyYW1l
dGVyTmFtZSBwYXJhbXRlck5hbWVGcm9tU3RyaW5nKFN0cmluZ1ZpZXcgbmFtZSkKIHsKICAgICBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobmFtZSwgInJlbCIpKQogICAgICAgICBy
ZXR1cm4gTGlua0hlYWRlcjo6TGlua1BhcmFtZXRlclJlbDsKQEAgLTE4MywyMSArMTcxLDIxIEBA
IHN0YXRpYyBMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVyTmFtZSBwYXIKIC8vIDxjYXQuanBnPjsg
cmVsPXByZWxvYWQKIC8vICAgICAgICAgICAgICAgIF4gICAgICBeCiAvLyAgICAgICAgICAgIHBv
c2l0aW9uICBlbmQKLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIGJv
b2wgcGFyc2VQYXJhbWV0ZXJOYW1lKENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgQ2hhcmFjdGVy
VHlwZSogY29uc3QgZW5kLCBMaW5rSGVhZGVyOjpMaW5rUGFyYW1ldGVyTmFtZSYgbmFtZSkKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0YXRpYyBPcHRpb25hbDxMaW5rSGVhZGVy
OjpMaW5rUGFyYW1ldGVyTmFtZT4gcGFyc2VQYXJhbWV0ZXJOYW1lKFN0cmluZ1BhcnNpbmdCdWZm
ZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKLSAgICBBU1NFUlQocG9zaXRpb24gPD0gZW5k
KTsKLSAgICBDaGFyYWN0ZXJUeXBlKiBuYW1lU3RhcnQgPSBwb3NpdGlvbjsKLSAgICBza2lwV2hp
bGU8aXNWYWxpZFBhcmFtZXRlck5hbWVDaGFyPihwb3NpdGlvbiwgZW5kKTsKLSAgICBDaGFyYWN0
ZXJUeXBlKiBuYW1lRW5kID0gcG9zaXRpb247Ci0gICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4o
cG9zaXRpb24sIGVuZCk7Ci0gICAgYm9vbCBoYXNFcXVhbCA9IHNraXBFeGFjdGx5KHBvc2l0aW9u
LCBlbmQsICc9Jyk7Ci0gICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4ocG9zaXRpb24sIGVuZCk7
Ci0gICAgbmFtZSA9IHBhcmFtdGVyTmFtZUZyb21TdHJpbmcoU3RyaW5nKG5hbWVTdGFydCwgbmFt
ZUVuZCAtIG5hbWVTdGFydCkpOworICAgIGF1dG8gbmFtZVN0YXJ0ID0gYnVmZmVyLnBvc2l0aW9u
KCk7CisgICAgc2tpcFdoaWxlPGlzVmFsaWRQYXJhbWV0ZXJOYW1lQ2hhcj4oYnVmZmVyKTsKKyAg
ICBhdXRvIG5hbWVFbmQgPSBidWZmZXIucG9zaXRpb24oKTsKKyAgICBza2lwV2hpbGU8aXNTcGFj
ZU9yVGFiPihidWZmZXIpOworICAgIGJvb2wgaGFzRXF1YWwgPSBza2lwRXhhY3RseShidWZmZXIs
ICc9Jyk7CisgICAgc2tpcFdoaWxlPGlzU3BhY2VPclRhYj4oYnVmZmVyKTsKKyAgICBhdXRvIG5h
bWUgPSBwYXJhbXRlck5hbWVGcm9tU3RyaW5nKFN0cmluZ1ZpZXcgeyBuYW1lU3RhcnQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihuYW1lRW5kIC0gbmFtZVN0YXJ0KSB9KTsKICAgICBpZiAoaGFzRXF1
YWwpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGJvb2wgdmFsaWRQYXJhbWV0ZXJWYWx1ZUVu
ZCA9IChwb3NpdGlvbiA9PSBlbmQpIHx8IGlzUGFyYW1ldGVyVmFsdWVFbmQoKnBvc2l0aW9uKTsK
LSAgICByZXR1cm4gdmFsaWRQYXJhbWV0ZXJWYWx1ZUVuZCAmJiBpc0V4dGVuc2lvblBhcmFtZXRl
cihuYW1lKTsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgYm9vbCB2YWxpZFBhcmFtZXRlclZh
bHVlRW5kID0gYnVmZmVyLmF0RW5kKCkgfHwgaXNQYXJhbWV0ZXJWYWx1ZUVuZCgqYnVmZmVyKTsK
KyAgICBpZiAodmFsaWRQYXJhbWV0ZXJWYWx1ZUVuZCAmJiBpc0V4dGVuc2lvblBhcmFtZXRlcihu
YW1lKSkKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
IAogLy8gQmVmb3JlOgpAQCAtMjExLDIzICsxOTksMjEgQEAgc3RhdGljIGJvb2wgcGFyc2VQYXJh
bWV0ZXJOYW1lKENoYXJhY3RlcgogLy8gPGNhdC5qcGc+OyByZWw9InByZWxvYWQiOyB0eXBlPSJp
bWFnZS9qcGVnIjsKIC8vICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAgICAg
ICAgXgogLy8gICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAgICAgICAgICAgICAgIGVuZAot
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgYm9vbCBza2lwUXVvdGVz
SWZOZWVkZWQoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFyYWN0ZXJUeXBlKiBjb25zdCBl
bmQsIGJvb2wmIGNvbXBsZXRlUXVvdGVzKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4gc3RhdGljIGJvb2wgc2tpcFF1b3Rlc0lmTmVlZGVkKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlciwgYm9vbCYgY29tcGxldGVRdW90ZXMpCiB7Ci0gICAgQVNTRVJU
KHBvc2l0aW9uIDw9IGVuZCk7CiAgICAgdW5zaWduZWQgY2hhciBxdW90ZTsKLSAgICBpZiAoc2tp
cEV4YWN0bHkocG9zaXRpb24sIGVuZCwgJ1wnJykpCisgICAgaWYgKHNraXBFeGFjdGx5KGJ1ZmZl
ciwgJ1wnJykpCiAgICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICBlbHNlIGlmIChza2lwRXhhY3Rs
eShwb3NpdGlvbiwgZW5kLCAnIicpKQorICAgIGVsc2UgaWYgKHNraXBFeGFjdGx5KGJ1ZmZlciwg
JyInKSkKICAgICAgICAgcXVvdGUgPSAnIic7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICB3aGlsZSAoIWNvbXBsZXRlUXVvdGVzICYmIHBvc2l0aW9uIDwgZW5kKSB7Ci0g
ICAgICAgIHNraXBVbnRpbChwb3NpdGlvbiwgZW5kLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBl
PihxdW90ZSkpOwotICAgICAgICBpZiAoKihwb3NpdGlvbiAtIDEpICE9ICdcXCcpCisgICAgd2hp
bGUgKCFjb21wbGV0ZVF1b3RlcyAmJiBidWZmZXIuaGFzQ2hhcmFjdGVyc1JlbWFpbmluZygpKSB7
CisgICAgICAgIHNraXBVbnRpbChidWZmZXIsIHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KHF1
b3RlKSk7CisgICAgICAgIGlmICgqKGJ1ZmZlci5wb3NpdGlvbigpIC0gMSkgIT0gJ1xcJykKICAg
ICAgICAgICAgIGNvbXBsZXRlUXVvdGVzID0gdHJ1ZTsKLSAgICAgICAgY29tcGxldGVRdW90ZXMg
PSBza2lwRXhhY3RseShwb3NpdGlvbiwgZW5kLCBzdGF0aWNfY2FzdDxDaGFyYWN0ZXJUeXBlPihx
dW90ZSkpICYmIGNvbXBsZXRlUXVvdGVzOworICAgICAgICBjb21wbGV0ZVF1b3RlcyA9IHNraXBF
eGFjdGx5KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4ocXVvdGUpKSAmJiBjb21w
bGV0ZVF1b3RlczsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0yNDMsMTkgKzIyOSwx
NyBAQCBzdGF0aWMgYm9vbCBza2lwUXVvdGVzSWZOZWVkZWQoQ2hhcmFjdGVyCiAvLyA8Y2F0Lmpw
Zz47IHJlbD1wcmVsb2FkOyBmb289YmFyCiAvLyAgICAgICAgICAgICAgICAgICAgICAgXiAgICAg
ICAgXgogLy8gICAgICAgICAgICAgICAgICAgcG9zaXRpb24gICAgIGVuZAotdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgYm9vbCBwYXJzZVBhcmFtZXRlclZhbHVlKENo
YXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgQ2hhcmFjdGVyVHlwZSogY29uc3QgZW5kLCBTdHJpbmcm
IHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIGJvb2wgcGFy
c2VQYXJhbWV0ZXJWYWx1ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIsIFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgQVNTRVJUKHBvc2l0aW9uIDw9IGVuZCk7Ci0gICAg
Q2hhcmFjdGVyVHlwZSogdmFsdWVTdGFydCA9IHBvc2l0aW9uOwotICAgIENoYXJhY3RlclR5cGUq
IHZhbHVlRW5kID0gcG9zaXRpb247CisgICAgYXV0byB2YWx1ZVN0YXJ0ID0gYnVmZmVyLnBvc2l0
aW9uKCk7CisgICAgYXV0byB2YWx1ZUVuZCA9IGJ1ZmZlci5wb3NpdGlvbigpOwogICAgIGJvb2wg
Y29tcGxldGVRdW90ZXMgPSBmYWxzZTsKLSAgICBib29sIGhhc1F1b3RlcyA9IHNraXBRdW90ZXNJ
Zk5lZWRlZChwb3NpdGlvbiwgZW5kLCBjb21wbGV0ZVF1b3Rlcyk7CisgICAgYm9vbCBoYXNRdW90
ZXMgPSBza2lwUXVvdGVzSWZOZWVkZWQoYnVmZmVyLCBjb21wbGV0ZVF1b3Rlcyk7CiAgICAgaWYg
KCFoYXNRdW90ZXMpCi0gICAgICAgIHNraXBXaGlsZTxpc1BhcmFtZXRlclZhbHVlQ2hhcj4ocG9z
aXRpb24sIGVuZCk7Ci0gICAgdmFsdWVFbmQgPSBwb3NpdGlvbjsKLSAgICBza2lwV2hpbGU8aXNT
cGFjZU9yVGFiPihwb3NpdGlvbiwgZW5kKTsKLSAgICBpZiAoKCFjb21wbGV0ZVF1b3RlcyAmJiB2
YWx1ZVN0YXJ0ID09IHZhbHVlRW5kKSB8fCAocG9zaXRpb24gIT0gZW5kICYmICFpc1BhcmFtZXRl
clZhbHVlRW5kKCpwb3NpdGlvbikpKSB7CisgICAgICAgIHNraXBXaGlsZTxpc1BhcmFtZXRlclZh
bHVlQ2hhcj4oYnVmZmVyKTsKKyAgICB2YWx1ZUVuZCA9IGJ1ZmZlci5wb3NpdGlvbigpOworICAg
IHNraXBXaGlsZTxpc1NwYWNlT3JUYWI+KGJ1ZmZlcik7CisgICAgaWYgKCghY29tcGxldGVRdW90
ZXMgJiYgdmFsdWVTdGFydCA9PSB2YWx1ZUVuZCkgfHwgKCFidWZmZXIuYXRFbmQoKSAmJiAhaXNQ
YXJhbWV0ZXJWYWx1ZUVuZCgqYnVmZmVyKSkpIHsKICAgICAgICAgdmFsdWUgPSBlbXB0eVN0cmlu
ZygpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzA2LDY5ICsyOTAsNTMgQEAg
dm9pZCBMaW5rSGVhZGVyOjpzZXRWYWx1ZShMaW5rUGFyYW1ldGVyTgogICAgIC8vIEZJWE1FOiBB
ZGQgc3VwcG9ydCBmb3IgbW9yZSBoZWFkZXIgcGFyYW1ldGVycyBhcyBuZWNjZXNzYXJ5LgogfQog
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyB2b2lkIGZpbmROZXh0
SGVhZGVyKENoYXJhY3RlclR5cGUqJiBwb3NpdGlvbiwgQ2hhcmFjdGVyVHlwZSogY29uc3QgZW5k
KQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIHZvaWQgZmluZE5leHRI
ZWFkZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewotICAg
IEFTU0VSVChwb3NpdGlvbiA8PSBlbmQpOwotICAgIHNraXBVbnRpbChwb3NpdGlvbiwgZW5kLCAn
LCcpOwotICAgIHNraXBFeGFjdGx5KHBvc2l0aW9uLCBlbmQsICcsJyk7CisgICAgc2tpcFVudGls
KGJ1ZmZlciwgJywnKTsKKyAgICBza2lwRXhhY3RseShidWZmZXIsICcsJyk7CiB9CiAKLXRlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotTGlua0hlYWRlcjo6TGlua0hlYWRlcihDaGFy
YWN0ZXJUeXBlKiYgcG9zaXRpb24sIENoYXJhY3RlclR5cGUqIGNvbnN0IGVuZCkKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IExpbmtIZWFkZXI6OkxpbmtIZWFkZXIoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQogewotICAgIEFTU0VSVChwb3NpdGlv
biA8PSBlbmQpOwotICAgIGF1dG8gdXJsUmVzdWx0ID0gZmluZFVSTEJvdW5kYXJpZXMocG9zaXRp
b24sIGVuZCk7CisgICAgYXV0byB1cmxSZXN1bHQgPSBmaW5kVVJMQm91bmRhcmllcyhidWZmZXIp
OwogICAgIGlmICh1cmxSZXN1bHQgPT0gV1RGOjpudWxsb3B0KSB7CiAgICAgICAgIG1faXNWYWxp
ZCA9IGZhbHNlOwotICAgICAgICBmaW5kTmV4dEhlYWRlcihwb3NpdGlvbiwgZW5kKTsKKyAgICAg
ICAgZmluZE5leHRIZWFkZXIoYnVmZmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3VybCA9IHVybFJlc3VsdC52YWx1ZSgpOwogCi0gICAgd2hpbGUgKG1faXNWYWxpZCAmJiBwb3Np
dGlvbiA8IGVuZCkgewotICAgICAgICBpZiAoIXBhcnNlUGFyYW1ldGVyRGVsaW1pdGVyKHBvc2l0
aW9uLCBlbmQsIG1faXNWYWxpZCkpIHsKLSAgICAgICAgICAgIGZpbmROZXh0SGVhZGVyKHBvc2l0
aW9uLCBlbmQpOworICAgIHdoaWxlIChtX2lzVmFsaWQgJiYgYnVmZmVyLmhhc0NoYXJhY3RlcnNS
ZW1haW5pbmcoKSkgeworICAgICAgICBpZiAoIXBhcnNlUGFyYW1ldGVyRGVsaW1pdGVyKGJ1ZmZl
ciwgbV9pc1ZhbGlkKSkgeworICAgICAgICAgICAgZmluZE5leHRIZWFkZXIoYnVmZmVyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIExpbmtQYXJhbWV0ZXJOYW1l
IHBhcmFtZXRlck5hbWU7Ci0gICAgICAgIGlmICghcGFyc2VQYXJhbWV0ZXJOYW1lKHBvc2l0aW9u
LCBlbmQsIHBhcmFtZXRlck5hbWUpKSB7Ci0gICAgICAgICAgICBmaW5kTmV4dEhlYWRlcihwb3Np
dGlvbiwgZW5kKTsKKyAgICAgICAgYXV0byBwYXJhbWV0ZXJOYW1lID0gcGFyc2VQYXJhbWV0ZXJO
YW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghcGFyYW1ldGVyTmFtZSkgeworICAgICAgICAgICAg
ZmluZE5leHRIZWFkZXIoYnVmZmVyKTsKICAgICAgICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgU3RyaW5nIHBhcmFtZXRl
clZhbHVlOwotICAgICAgICBpZiAoIXBhcnNlUGFyYW1ldGVyVmFsdWUocG9zaXRpb24sIGVuZCwg
cGFyYW1ldGVyVmFsdWUpICYmICFpc0V4dGVuc2lvblBhcmFtZXRlcihwYXJhbWV0ZXJOYW1lKSkg
ewotICAgICAgICAgICAgZmluZE5leHRIZWFkZXIocG9zaXRpb24sIGVuZCk7CisgICAgICAgIGlm
ICghcGFyc2VQYXJhbWV0ZXJWYWx1ZShidWZmZXIsIHBhcmFtZXRlclZhbHVlKSAmJiAhaXNFeHRl
bnNpb25QYXJhbWV0ZXIoKnBhcmFtZXRlck5hbWUpKSB7CisgICAgICAgICAgICBmaW5kTmV4dEhl
YWRlcihidWZmZXIpOwogICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzZXRWYWx1ZShwYXJhbWV0ZXJOYW1lLCBX
VEZNb3ZlKHBhcmFtZXRlclZhbHVlKSk7CisgICAgICAgIHNldFZhbHVlKCpwYXJhbWV0ZXJOYW1l
LCBXVEZNb3ZlKHBhcmFtZXRlclZhbHVlKSk7CiAgICAgfQotICAgIGZpbmROZXh0SGVhZGVyKHBv
c2l0aW9uLCBlbmQpOworICAgIGZpbmROZXh0SGVhZGVyKGJ1ZmZlcik7CiB9CiAKIExpbmtIZWFk
ZXJTZXQ6OkxpbmtIZWFkZXJTZXQoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiB7Ci0gICAgaWYgKGhl
YWRlci5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGhlYWRlci5pczhCaXQo
KSkKLSAgICAgICAgaW5pdChoZWFkZXIuY2hhcmFjdGVyczgoKSwgaGVhZGVyLmxlbmd0aCgpKTsK
LSAgICBlbHNlCi0gICAgICAgIGluaXQoaGVhZGVyLmNoYXJhY3RlcnMxNigpLCBoZWFkZXIubGVu
Z3RoKCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXZvaWQgTGlu
a0hlYWRlclNldDo6aW5pdChDaGFyYWN0ZXJUeXBlKiBoZWFkZXJWYWx1ZSwgc2l6ZV90IGxlbmd0
aCkKLXsKLSAgICBDaGFyYWN0ZXJUeXBlKiBwb3NpdGlvbiA9IGhlYWRlclZhbHVlOwotICAgIENo
YXJhY3RlclR5cGUqIGNvbnN0IGVuZCA9IGhlYWRlclZhbHVlICsgbGVuZ3RoOwotICAgIHdoaWxl
IChwb3NpdGlvbiA8IGVuZCkKLSAgICAgICAgbV9oZWFkZXJTZXQuYXBwZW5kKExpbmtIZWFkZXIo
cG9zaXRpb24sIGVuZCkpOworICAgIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhoZWFkZXIsIFsm
XShhdXRvIGJ1ZmZlcikgeworICAgICAgICB3aGlsZSAoYnVmZmVyLmhhc0NoYXJhY3RlcnNSZW1h
aW5pbmcoKSkKKyAgICAgICAgICAgIG1faGVhZGVyU2V0LmFwcGVuZChMaW5rSGVhZGVyIHsgYnVm
ZmVyIH0pOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0hlYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rSGVhZGVyLmgJKHJldmlzaW9uIDI2NTEyOSkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9MaW5rSGVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBACiAv
KgogICogQ29weXJpZ2h0IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQWthbWFpIFRlY2hub2xvZ2llcyBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
NCArMjcsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIExpbmtIZWFkZXIgewogcHVibGljOgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotICAgIExpbmtIZWFkZXIoQ2hhcmFjdGVyVHlwZSomIHBvc2l0aW9uLCBDaGFy
YWN0ZXJUeXBlKiBjb25zdCBlbmQpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5
cGU+IExpbmtIZWFkZXIoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGNvbnN0
IFN0cmluZyYgcmVsKCkgY29uc3QgeyByZXR1cm4gbV9yZWw7IH0KQEAgLTg0LDkgKzg1LDYgQEAg
cHVibGljOgogICAgIFZlY3RvcjxMaW5rSGVhZGVyPjo6Y29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gbV9oZWFkZXJTZXQuZW5kKCk7IH0KIAogcHJpdmF0ZToKLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLSAgICB2b2lkIGluaXQoQ2hhcmFjdGVyVHlwZSog
aGVhZGVyVmFsdWUsIHNpemVfdCBsZW5ndGgpOwotCiAgICAgVmVjdG9yPExpbmtIZWFkZXI+IG1f
aGVhZGVyU2V0OwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>