<?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>94588</bug_id>
          
          <creation_ts>2012-08-21 05:02:33 -0700</creation_ts>
          <short_desc>[V8] Replace v8::String::NewSymbol() in CodeGeneratorV8.pm with v8String()</short_desc>
          <delta_ts>2012-08-22 23:55:36 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dcarney</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>700631</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 05:02:33 -0700</bug_when>
    <thetext>v8String() is much faster than v8::String::NewSymbol().

// 83 nano sec
static v8::Handle&lt;v8::Value&gt; attr1AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    static String str1 = String(&quot;foo&quot;);
    static String str2 = String(&quot;foo&quot;);
    v8::Handle&lt;v8::Value&gt; v1 = v8String(str1);
    v8::Handle&lt;v8::Value&gt; v2 = v8String(str2);
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}

// 86 nano sec
static v8::Handle&lt;v8::Value&gt; attr2AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    static String str1 = String(&quot;foo&quot;);
    static String str2 = String(&quot;bar&quot;);
    v8::Handle&lt;v8::Value&gt; v1 = v8String(str1);
    v8::Handle&lt;v8::Value&gt; v2 = v8String(str2);
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}

// 376 nano sec
static v8::Handle&lt;v8::Value&gt; attr3AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    v8::Handle&lt;v8::Value&gt; v1 = v8::String::NewSymbol(&quot;foo&quot;, 3);
    v8::Handle&lt;v8::Value&gt; v2 = v8::String::NewSymbol(&quot;foo&quot;, 3);
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}

// 377 nano sec
static v8::Handle&lt;v8::Value&gt; attr4AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    v8::Handle&lt;v8::Value&gt; v1 = v8::String::NewSymbol(&quot;foo&quot;, 3);
    v8::Handle&lt;v8::Value&gt; v2 = v8::String::NewSymbol(&quot;bar&quot;, 3);
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700659</commentid>
    <comment_count>1</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 05:40:37 -0700</bug_when>
    <thetext>Sorry, the above performance measurement was not fair. We need to compare the time for converting char* to v8::String.

Updated result:

// 272 nano sec
static v8::Handle&lt;v8::Value&gt; attr3AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    v8::Handle&lt;v8::Value&gt; v1 = v8String(String(&quot;foo&quot;));
    v8::Handle&lt;v8::Value&gt; v2 = v8String(String(&quot;bar&quot;));
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}

// 377 nano sec
static v8::Handle&lt;v8::Value&gt; attr4AttrGetter(v8::Local&lt;v8::String&gt; name, const v8::AccessorInfo&amp; info)
{
    v8::Handle&lt;v8::Value&gt; v1 = v8::String::NewSymbol(&quot;foo&quot;);
    v8::Handle&lt;v8::Value&gt; v2 = v8::String::NewSymbol(&quot;bar&quot;);
    if (!v1.IsEmpty() &amp;&amp; !v2.IsEmpty())
        return v8Undefined();
    return v8::Null(); // Never reach.
}

Anyway, v8String() is faster than String::NewSymbol().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700671</commentid>
    <comment_count>2</comment_count>
      <attachid>159669</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 05:51:54 -0700</bug_when>
    <thetext>Created attachment 159669
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700776</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 08:16:00 -0700</bug_when>
    <thetext>Do you have any thoughts on https://bugs.webkit.org/show_bug.cgi?id=94574#c5 ?  I wonder if there&apos;s a place for NewSymbol in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702276</commentid>
    <comment_count>4</comment_count>
      <attachid>159669</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-22 13:31:15 -0700</bug_when>
    <thetext>Comment on attachment 159669
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702330</commentid>
    <comment_count>5</comment_count>
      <attachid>159669</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:13:49 -0700</bug_when>
    <thetext>Comment on attachment 159669
Patch

Clearing flags on attachment: 159669

Committed r126348: &lt;http://trac.webkit.org/changeset/126348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702331</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-22 14:13:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702742</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 23:54:18 -0700</bug_when>
    <thetext>Reverted r126348 for reason:

We should use v8::String::NewSymbol() for symbols. See https://bugs.webkit.org/show_bug.cgi?id=94574#c10 for more details

Committed r126397: &lt;http://trac.webkit.org/changeset/126397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702743</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-22 23:55:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; All reviewed patches have been landed.  Closing bug.

This patch is not quite right. As abarth pointed out, we should use String::NewSymbol() for symbols and use String::New() for other strings. See https://bugs.webkit.org/show_bug.cgi?id=94574#c10 for more details.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159669</attachid>
            <date>2012-08-21 05:51:54 -0700</date>
            <delta_ts>2012-08-22 14:13:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94588-20120821215113.patch</filename>
            <type>text/plain</type>
            <size>28498</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjFhNTc1ZmE1OGUzOWM3
NmZjZjNmOTY1Y2ZhMmYwZTM3ZDY5ZWM0NC4uNmMzNWVlMTE4ZTA1ZTliZWEwMmIzZDE0MTMwODVh
MDRmZjBkMDUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA4LTIxICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlcGxhY2Ug
djg6OlN0cmluZzo6TmV3U3ltYm9sKCkgaW4gQ29kZUdlbmVyYXRvclY4LnBtIHdpdGggdjhTdHJp
bmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ1
ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICB2OFN0
cmluZygpIGlzIGZhc3RlciB0aGFuIFN0cmluZzo6TmV3U3ltYm9sKCkuCisgICAgICAgIFRoaXMg
cGF0Y2ggaW1wbGVtZW50cyB2OFN0cmluZyhjaGFyKiwgSXNvbGF0ZSopIGFuZAorICAgICAgICBy
ZXBsYWNlcyBTdHJpbmc6Ok5ld1N5bWJvbChjaGFyKikgaW4gQ29kZUdlbmVyYXRvclY4LnBtCisg
ICAgICAgIHdpdGggdjhTdHJpbmcoY2hhciosIElzb2xhdGUqKS4KKworICAgICAgICBQZXJmb3Jt
YW5jZSByZXN1bHQ6CisKKyAgICAgICAgLy8gMjcyIG5hbm8gc2VjCisgICAgICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorICAgICAgICB7CisgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdjEgPSB2OFN0cmluZyhTdHJpbmcoImZvbyIpKTsK
KyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2MiA9IHY4U3RyaW5nKFN0cmluZygi
YmFyIikpOworICAgICAgICAgICAgaWYgKCF2MS5Jc0VtcHR5KCkgJiYgIXYyLklzRW1wdHkoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHJldHVy
biB2ODo6TnVsbCgpOyAvLyBOZXZlciByZWFjaC4KKyAgICAgICAgfQorCisgICAgICAgIC8vIDM3
NyBuYW5vIHNlYworICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHI0QXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKKyAgICAgICAgeworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHYx
ID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2MiA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiYmFyIik7CisgICAgICAgICAg
ICBpZiAoIXYxLklzRW1wdHkoKSAmJiAhdjIuSXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOworICAgICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7IC8vIE5l
dmVyIHJlYWNoLgorICAgICAgICB9CisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBi
ZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
OgorICAgICAgICAoR2VuZXJhdGVOb3JtYWxBdHRyR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRl
Tm9ybWFsQXR0clNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3RydWN0b3JDYWxs
YmFjayk6CisgICAgICAgIChHZW5lcmF0ZU5vblN0YW5kYXJkRnVuY3Rpb24pOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4Rmxv
YXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9i
ajo6aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVy
bmFsOjpjYWNoZWRWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjp2OFN0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1MRGl2RWxlbWVudC5pZGw6CisKIDIw
MTItMDgtMTcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAg
ICAgICAgIFtRdF0gUkVHUkVTU0lPTihyMTI1NDI4KTogZmFzdC9wcm9maWxlci9uZXN0ZWQtc3Rh
cnQtYW5kLXN0b3AtcHJvZmlsZXIuaHRtbCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCAyYzE3MGUyYzkyNDA4NWMw
NjA2NDM2ZjIwN2YwOTI2YWJiYTAzNmZhLi5hNGY2MTgyZTc5MmM4ODdiZjIwNmE1NmRmMjhmODM3
NjM0MDFkMTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQpAQCAtOTA0LDcgKzkwNCw3IEBAIEVORAogICAgICAgICB9CiAgICAg
ICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSIgJiYgJGF0dHJFeHQtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHthdHRyTmFtZX0iKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4U3RyaW5nKCIke2F0dHJO
YW1lfSIsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghdmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC0xMjkyLDcgKzEy
OTIsNyBAQCBFTkQKIAogICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgIlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSIgJiYgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgPDxFTkQpOwotICAgIGluZm8uSG9sZGVyKCktPkRlbGV0ZUhpZGRlblZhbHVlKHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHthdHRyTmFtZX0iKSk7IC8vIEludmFsaWRhdGUgdGhlIGNh
Y2hlZCB2YWx1ZS4KKyAgICBpbmZvLkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1ZSh2OFN0cmlu
ZygiJHthdHRyTmFtZX0iLCBpbmZvLkdldElzb2xhdGUoKSkpOyAvLyBJbnZhbGlkYXRlIHRoZSBj
YWNoZWQgdmFsdWUuCiBFTkQKICAgICB9CiAKQEAgLTIwOTgsNyArMjA5OCw3IEBAIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUoCiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZSA9IHJlc3VsdC0+SW5zdGFuY2VUZW1wbGF0ZSgpOwogICAgIGluc3RhbmNlLT5TZXRJbnRl
cm5hbEZpZWxkQ291bnQoVjgke2ltcGxDbGFzc05hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQpOwot
ICAgIHJlc3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtpbXBsQ2xh
c3NOYW1lfSIpKTsKKyAgICByZXN1bHQtPlNldENsYXNzTmFtZSh2OFN0cmluZygiJHtpbXBsQ2xh
c3NOYW1lfSIpKTsKICAgICByZXN1bHQtPkluaGVyaXQoVjgke2ltcGxDbGFzc05hbWV9OjpHZXRU
ZW1wbGF0ZSgpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKQEAgLTIyOTgsNyArMjI5OCw3IEBAIHN1YiBH
ZW5lcmF0ZU5vblN0YW5kYXJkRnVuY3Rpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8
RU5EKTsKIAogICAgIC8vICRjb21tZW50SW5mbwotICAgICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRl
LT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXdTeW1ib2woIiRuYW1lIiksICR7aW50ZXJmYWNl
TmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0ckdldHRlciwgJHtpbnRlcmZhY2VOYW1lfVY4SW50
ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Eb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIsIHY4VW5kZWZp
bmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKKyAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+
U2V0QWNjZXNzb3IodjhTdHJpbmcoIiRuYW1lIiksICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFs
Ojoke25hbWV9QXR0ckdldHRlciwgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJm
YWNlTmFtZX1Eb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExf
Q0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0
dHJpYnV0ZXMpKTsKIEVORAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjMyOSw3ICsyMzI5
LDcgQEAgRU5ECiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdl
bmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1bmN0aW9uLT5zaWduYXR1cmUpOwogICAgIHB1c2go
QGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0
ZW1wbGF0ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChcIiRuYW1lXCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KCRjYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgJHtzaWduYXR1cmV9KSRw
cm9wZXJ0eV9hdHRyaWJ1dGVzKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7
Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXQodjhTdHJpbmcoXCIkbmFtZVwiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldygkY2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksICR7c2lnbmF0dXJlfSkk
cHJvcGVydHlfYXR0cmlidXRlcyk7XG4iKTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiB9
CkBAIC0yOTUxLDkgKzI5NTEsOSBAQCBFTkQKIAogICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25z
LCB0aGVzZSBmdW5jdGlvbnMgYXJlIG9uIHRoZSBpbnN0YW5jZSBpbnN0ZWFkCiAgICAgLy8gb2Yg
b24gdGhlIHByb3RvdHlwZSBvYmplY3QgdG8gZW5zdXJlIHRoYXQgdGhleSBjYW5ub3QgYmUgb3Zl
cndyaXR0ZW4uCi0gICAgaW5zdGFuY2UtPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgicmVsb2FkIiksIFY4TG9jYXRpb246OnJlbG9hZEFjY2Vzc29yR2V0dGVyLCAwLCB2OFVuZGVm
aW5lZCgpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpEb250RGVsZXRlIHwgdjg6OlJlYWRPbmx5KSk7Ci0gICAgaW5zdGFuY2UtPlNldEFj
Y2Vzc29yKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicmVwbGFjZSIpLCBWOExvY2F0aW9uOjpyZXBs
YWNlQWNjZXNzb3JHZXR0ZXIsIDAsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVh
ZE9ubHkpKTsKLSAgICBpbnN0YW5jZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJhc3NpZ24iKSwgVjhMb2NhdGlvbjo6YXNzaWduQWNjZXNzb3JHZXR0ZXIsIDAsIHY4VW5kZWZp
bmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVhZE9ubHkpKTsKKyAgICBpbnN0YW5jZS0+U2V0QWNj
ZXNzb3IodjhTdHJpbmcoInJlbG9hZCIpLCBWOExvY2F0aW9uOjpyZWxvYWRBY2Nlc3NvckdldHRl
ciwgMCwgdjhVbmRlZmluZWQoKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSB8IHY4OjpSZWFkT25seSkpOworICAgIGlu
c3RhbmNlLT5TZXRBY2Nlc3Nvcih2OFN0cmluZygicmVwbGFjZSIpLCBWOExvY2F0aW9uOjpyZXBs
YWNlQWNjZXNzb3JHZXR0ZXIsIDAsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUgfCB2ODo6UmVh
ZE9ubHkpKTsKKyAgICBpbnN0YW5jZS0+U2V0QWNjZXNzb3IodjhTdHJpbmcoImFzc2lnbiIpLCBW
OExvY2F0aW9uOjphc3NpZ25BY2Nlc3NvckdldHRlciwgMCwgdjhVbmRlZmluZWQoKSwgdjg6OkFM
TF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERl
bGV0ZSB8IHY4OjpSZWFkT25seSkpOwogRU5ECiAgICAgfQogCkBAIC0zMDQwLDcgKzMwNDAsNyBA
QCBFTkQKICAgICAgICAgICAgICAgICBteSAkbmFtZSA9ICRydW50aW1lRnVuYy0+c2lnbmF0dXJl
LT5uYW1lOwogICAgICAgICAgICAgICAgIG15ICRjYWxsYmFjayA9IEdldEZ1bmN0aW9uVGVtcGxh
dGVDYWxsYmFja05hbWUoJHJ1bnRpbWVGdW5jLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woIiR7bmFtZX0iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygk
e2NhbGxiYWNrfSwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9u
KCkpOworICAgICAgICBwcm90by0+U2V0KHY4U3RyaW5nKCIke25hbWV9IiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoJHtjYWxsYmFja30sIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1
cmUpLT5HZXRGdW5jdGlvbigpKTsKIEVORAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9h
dDY0QXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
RmxvYXQ2NEFycmF5LmNwcAppbmRleCA1MzRhOGRlY2I2MWEzMDUxN2JiMWI5YzJlM2U3MWIyOWEy
Y2I2MjFmLi43NTU3M2EwODVkY2QyNmY2MWQ1NDZiMzQ3OGJiZDg2YWQ5Njc3ZGU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJy
YXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZs
b2F0NjRBcnJheS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6
OgogICAgIGNvbnN0IGludCBmb29BcmdjID0gMTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBmb29Bcmd2W2Zvb0FyZ2NdID0geyBWOEZsb2F0MzJBcnJheTo6R2V0UmF3VGVt
cGxhdGUoKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZm9vU2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZvb0FyZ2MsIGZvb0FyZ3YpOwotICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJmb28iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZm9v
U2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2OFN0cmluZygiZm9vIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6Zm9vQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBs
YXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA4NmIxZmQyYzg2MzE2
YzY4Y2Y0OGJjYjk1ODIzMzcwNmNmM2IzNjk0Li41Y2Q1OTNjZWI4ZTU5MDcwOTc2OTllMzU5NjBk
MTMwY2U2MTBmMDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTM0
LDEwICsxMzQsMTAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBjb25zdCBpbnQgZXhj
aXRpbmdGdW5jdGlvbkFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhOb2Rl
OjpHZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBleGNp
dGluZ0Z1bmN0aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGV4Y2l0aW5n
RnVuY3Rpb25BcmdjLCBleGNpdGluZ0Z1bmN0aW9uQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImV4Y2l0aW5nRnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlvbkNh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBleGNpdGluZ0Z1bmN0aW9uU2lnbmF0dXJlKSk7CisgICAg
cHJvdG8tPlNldCh2OFN0cmluZygiZXhjaXRpbmdGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0Z1bmN0aW9u
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGV4Y2l0aW5nRnVuY3Rpb25TaWduYXR1cmUpKTsKIAog
ICAgIC8vIEZ1bmN0aW9uICdwb3N0TWVzc2FnZScgKEV4dEF0dHI6ICdEb05vdENoZWNrU2VjdXJp
dHknKQotICAgIHByb3RvLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXdTeW1ib2woInBvc3RN
ZXNzYWdlIiksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJH
ZXR0ZXIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpUZXN0QWN0aXZlRE9NT2JqZWN0
RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyLCB2OFVuZGVmaW5lZCgpLCB2ODo6QUxMX0NBTl9SRUFE
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSk7Cisg
ICAgcHJvdG8tPlNldEFjY2Vzc29yKHY4U3RyaW5nKCJwb3N0TWVzc2FnZSIpLCBUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VBdHRyR2V0dGVyLCBUZXN0QWN0aXZlRE9N
T2JqZWN0VjhJbnRlcm5hbDo6VGVzdEFjdGl2ZURPTU9iamVjdERvbWFpblNhZmVGdW5jdGlvblNl
dHRlciwgdjhVbmRlZmluZWQoKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSkpOwogCiAgICAgLy8gQ3VzdG9tIHRvU3Ry
aW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmlu
Z1RlbXBsYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggY2QyMDc2YzQwZGIy
MGY2MjdlNmNmZDE4YzA4YzJhMjVmNWUxZTlmNi4uMTdjNjEyZDliNjk1ZTAzODkyNzYyNTQ4NjJh
NDhiYTUyNTZjZGM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xMzEsNyArMTMx
LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYKICAgICBjb25zdCBpbnQgZGlzcGF0Y2hFdmVu
dEFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRpc3BhdGNo
RXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhFdmVudDo6R2V0UmF3VGVtcGxhdGUo
KSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hF
dmVudEFyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRj
aEV2ZW50IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRl
cm5hbDo6ZGlzcGF0Y2hFdmVudENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50
U2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2OFN0cmluZygiZGlzcGF0Y2hFdmVudCIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3Bh
dGNoRXZlbnRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkp
OwogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRv
U3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cAppbmRleCBhYWFjYzgxYzFiYjNlMGQ2MGMxMjM5OGRmNzc3YzhhNjZlZjFlOTYxLi45MmEyM2M1
NjI2YTFmZDkzNjNmMGFhMDE0ODVmMDM2MzdjMzgxYjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNw
cApAQCAtMjk1LDEwICsyOTUsMTAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICB2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdXBwbGVtZW50YWxNZXRob2QyQXJndltzdXBw
bGVtZW50YWxNZXRob2QyQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUoKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Yp
OwogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbE1ldGhvZDJDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNp
Z25hdHVyZSkpOworICAgIHByb3RvLT5TZXQodjhTdHJpbmcoInN1cHBsZW1lbnRhbE1ldGhvZDIi
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3Vw
cGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50YWxNZXRo
b2QyU2lnbmF0dXJlKSk7CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi0gICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3VwcGxlbWVudGFsTWV0
aG9kNCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RJbnRlcmZhY2VWOEludGVybmFs
OjpzdXBwbGVtZW50YWxNZXRob2Q0Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPigpKSk7CisgICAgZGVzYy0+U2V0KHY4U3RyaW5nKCJzdXBwbGVtZW50YWxN
ZXRob2Q0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJu
YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+KCkpKTsKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJl
Q29uc3RhbnRzKGRlc2MsIHByb3RvLCBUZXN0SW50ZXJmYWNlQ29uc3RzLCBXVEZfQVJSQVlfTEVO
R1RIKFRlc3RJbnRlcmZhY2VDb25zdHMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwCmluZGV4IDc4YmQ4ZDU5MjdlZWFmYmNmNDBhMzdlOWU1NzA0ZjQ5ODkwOGQyOWUuLjJk
NzZkNjU2OWRjZmYwZTgwMDlhNTU5YWVlYjYxYTFiOGIxZmVmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6R2V0
VGVtcGwKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gcmVz
dWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRD
b3VudChWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291bnQpOwotICAgIHJl
c3VsdC0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiVGVzdE5hbWVkQ29uc3Ry
dWN0b3IiKSk7CisgICAgcmVzdWx0LT5TZXRDbGFzc05hbWUodjhTdHJpbmcoIlRlc3ROYW1lZENv
bnN0cnVjdG9yIikpOwogICAgIHJlc3VsdC0+SW5oZXJpdChWOFRlc3ROYW1lZENvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSgpKTsKIAogICAgIGNhY2hlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggZWRjZTk3
ZTdhZmMzMjE4ODMxOTY5ZGU1ZmYzYzJkMGQwMTM3MjBiYS4uYTM4NGQ4M2NlMDNmMTYwNDgwZDQz
Yjc0ZWQ0MmNjZTRhMzRlNTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIxOTIsNjUgKzIxOTIsNjUgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdpdGhBcmdz
QXJnYyA9IDM7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9pZE1ldGhv
ZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwg
VjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVz
Yywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJndik7Ci0gICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0
aEFyZ3NDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJl
KSk7CisgICAgcHJvdG8tPlNldCh2OFN0cmluZygidm9pZE1ldGhvZFdpdGhBcmdzIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZvaWRNZXRob2RXaXRoQXJn
c0NhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ01ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGlu
dCBNZXRob2RXaXRoQXJnc0FyZ2MgPSAzOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IE1ldGhvZFdpdGhBcmdzQXJndltNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIE1ldGhvZFdpdGhBcmdzQXJnYywgTWV0aG9kV2l0aEFyZ3NBcmd2KTsKLSAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6TWV0aG9kV2l0aEFyZ3NDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKKyAgICBwcm90by0+
U2V0KHY4U3RyaW5nKCJNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpNZXRob2RXaXRoQXJnc0NhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
b2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9
IDM7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFy
Z3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9i
ajo6R2V0UmF3VGVtcGxhdGUoKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gb2Jq
TWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgb2JqTWV0
aG9kV2l0aEFyZ3NBcmdjLCBvYmpNZXRob2RXaXRoQXJnc0FyZ3YpOwotICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJvYmpNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOworICAgIHByb3Rv
LT5TZXQodjhTdHJpbmcoIm9iak1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZFdpdGhBcmdzQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10g
PSB7IFY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKLSAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxiYWNrLCB2OFVuZGVm
aW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKKyAgICBwcm90by0+U2V0
KHY4U3RyaW5nKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8g
Q3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cycKICAg
ICBjb25zdCBpbnQgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2MgPSAyOwog
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3NBcmd2W21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdj
XSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRS
YXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0NhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7Ci0gICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiY2xhc3NNZXRob2QiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+KCkpKTsKLSAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbENhbGxiYWNrLCB2OFVuZGVm
aW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwotICAgIGRlc2MtPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImNsYXNzTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFY4VGVzdE9iajo6Y2xhc3NNZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CisgICAgcHJvdG8tPlNldCh2OFN0cmluZygibWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NT
aWduYXR1cmUpKTsKKyAgICBkZXNjLT5TZXQodjhTdHJpbmcoImNsYXNzTWV0aG9kIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kQ2FsbGJh
Y2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CisgICAgZGVz
Yy0+U2V0KHY4U3RyaW5nKCJjbGFzc01ldGhvZFdpdGhPcHRpb25hbCIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjbGFzc01ldGhvZFdpdGhPcHRpb25hbENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOworICAg
IGRlc2MtPlNldCh2OFN0cmluZygiY2xhc3NNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVjhUZXN0T2JqOjpjbGFzc01ldGhvZDJDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6
OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKLSAgICBk
ZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJvdmVybG9hZGVkTWV0aG9kMSIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9k
MUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwor
ICAgIGRlc2MtPlNldCh2OFN0cmluZygib3ZlcmxvYWRlZE1ldGhvZDEiKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICNlbmRpZiAv
LyBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZW5h
YmxlZEF0UnVudGltZU1ldGhvZDFFbmFibGVkKCkpCi0gICAgICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMUNh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKSk7CisgICAgICAgIHByb3Rv
LT5TZXQodjhTdHJpbmcoImVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUpKTsKICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKCkpCi0gICAgICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMiIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1l
TWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKSk7CisgICAg
ICAgIHByb3RvLT5TZXQodjhTdHJpbmcoImVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVN
ZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUpKTsKIAogICAg
IC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQxJwogICAgIGNvbnN0IGludCBjb252ZXJ0MUFy
Z2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJn
dltjb252ZXJ0MUFyZ2NdID0geyBWOGE6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQxU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIGNvbnZlcnQxQXJnYywgY29udmVydDFBcmd2KTsKLSAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDFDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVy
dDFTaWduYXR1cmUpKTsKKyAgICBwcm90by0+U2V0KHY4U3RyaW5nKCJjb252ZXJ0MSIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MUNhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7CiAgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJn
Y10gPSB7IFY4Yjo6R2V0UmF3VGVtcGxhdGUoKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gY29udmVydDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVy
dDJBcmdjLCBjb252ZXJ0MkFyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJjb252ZXJ0MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVy
bmFsOjpjb252ZXJ0MkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MlNpZ25hdHVyZSkp
OworICAgIHByb3RvLT5TZXQodjhTdHJpbmcoImNvbnZlcnQyIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQyQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252
ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVydDRBcmdjID0gMTsKICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhkOjpH
ZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0
NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNvbnZl
cnQ0QXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ0
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ0
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CisgICAgcHJvdG8t
PlNldCh2OFN0cmluZygiY29udmVydDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udmVydDRDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDRT
aWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ1JwogICAgIGNv
bnN0IGludCBjb252ZXJ0NUFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBsYXRl
KCkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0g
djg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKLSAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDUiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDVDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgY29udmVydDVTaWduYXR1cmUpKTsKKyAgICBwcm90by0+U2V0KHY4U3RyaW5n
KCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
Ojpjb252ZXJ0NUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOwog
ICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJv
dG8sIFRlc3RPYmpDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdE9iakNvbnN0cykpOwogCiAg
ICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCkBAIC0yMzEwLDEwICsyMzEwLDEwIEBAIHZv
aWQgVjhUZXN0T2JqOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBpbnN0YW5jZSwgVGVzCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1
bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CiAgICAgVU5V
U0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5v
dCBiZSB1c2VkLgogICAgIGlmIChDb250ZXh0RmVhdHVyZXM6OmVuYWJsZWRQZXJDb250ZXh0TWV0
aG9kMUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMSIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhv
ZDFDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9u
KCkpOworICAgICAgICBwcm90by0+U2V0KHY4U3RyaW5nKCJlbmFibGVkUGVyQ29udGV4dE1ldGhv
ZDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxl
ZFBlckNvbnRleHRNZXRob2QxQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1
cmUpLT5HZXRGdW5jdGlvbigpKTsKICAgICB9CiAgICAgaWYgKENvbnRleHRGZWF0dXJlczo6ZmVh
dHVyZU5hbWVFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJlbmFibGVkUGVyQ29udGV4dE1ldGhvZDIiKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRN
ZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUpLT5HZXRGdW5j
dGlvbigpKTsKKyAgICAgICAgcHJvdG8tPlNldCh2OFN0cmluZygiZW5hYmxlZFBlckNvbnRleHRN
ZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVu
YWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2ln
bmF0dXJlKS0+R2V0RnVuY3Rpb24oKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDcxZjBhMzc4
YjEzY2NhZGE1Nzc2OGM4NjYyNTg4ZDM0NzhjMmM0NTkuLmY0YWZiM2U2Yjk3YzZlODI5NDRhZGQ0
NDdhZGVkNDAxNmJiMzczZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNhY2hlZFZhbHVlLl9nZXQiKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+
IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2FjaGVkVmFsdWUiKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4U3RyaW5nKCJjYWNoZWRW
YWx1ZSIsIGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBpbmZvLkhvbGRlcigpLT5HZXRIaWRkZW5WYWx1ZShwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghdmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdmFsdWU7CkBAIC04OCw3ICs4OCw3
IEBAIHN0YXRpYyB2b2lkIGNhY2hlZFZhbHVlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiB2ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUodmFsdWUsIGluZm8uR2V0SXNvbGF0
ZSgpKTsKICAgICBpbXAtPnNldENhY2hlZFZhbHVlKFdURjo6Z2V0UHRyKHYpKTsKLSAgICBpbmZv
LkhvbGRlcigpLT5EZWxldGVIaWRkZW5WYWx1ZSh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hl
ZFZhbHVlIikpOyAvLyBJbnZhbGlkYXRlIHRoZSBjYWNoZWQgdmFsdWUuCisgICAgaW5mby5Ib2xk
ZXIoKS0+RGVsZXRlSGlkZGVuVmFsdWUodjhTdHJpbmcoImNhY2hlZFZhbHVlIiwgaW5mby5HZXRJ
c29sYXRlKCkpKTsgLy8gSW52YWxpZGF0ZSB0aGUgY2FjaGVkIHZhbHVlLgogICAgIHJldHVybjsK
IH0KIApAQCAtMTA5LDcgKzEwOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9y
dHNBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2CiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY2Fj
aGVkUmVhZG9ubHlWYWx1ZS5fZ2V0Iik7Ci0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBwcm9w
ZXJ0eU5hbWUgPSB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNhY2hlZFJlYWRvbmx5VmFsdWUiKTsK
KyAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4U3RyaW5nKCJjYWNo
ZWRSZWFkb25seVZhbHVlIiwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSA9IGluZm8uSG9sZGVyKCktPkdldEhpZGRlblZhbHVlKHByb3BlcnR5TmFt
ZSk7CiAgICAgaWYgKCF2YWx1ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYTRjNWYwYjVkMmQ3YzI3NjM5
YTMyZjZkMGMwODBjZDM2ZDRhMzVmZC4uNmFmODFmN2I0ZmJmZWM3NGE0YjkxYzRlMDNlZWJkMmRi
NWU1NjA5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTEwNSwx
MiArMTA1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgcmV0dXJuIGRhdGEtPnN0
cmluZ0NhY2hlKCktPnY4RXh0ZXJuYWxTdHJpbmcoc3RyaW5nSW1wbCwgaXNvbGF0ZSk7CiAgICAg
fQogCi0gICAgLy8gQ29udmVydCBhIHN0cmluZyB0byBhIFY4IHN0cmluZy4KKyAgICAvLyBDb252
ZXJ0IGEgV2ViQ29yZSBTdHJpbmcgdG8gYSBWOCBzdHJpbmcuCiAgICAgaW5saW5lIHY4OjpIYW5k
bGU8djg6OlN0cmluZz4gdjhTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKICAgICB7CiAgICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKHN0
cmluZywgaXNvbGF0ZSk7CiAgICAgfQogCisgICAgLy8gQ29udmVydCBhIGNoYXIqIHN0cmluZyB0
byBhIFY4IHN0cmluZy4KKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiB2OFN0cmlu
Zyhjb25zdCBjaGFyKiBzdHJpbmcsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB2OEV4dGVybmFsU3RyaW5nKFN0cmluZyhzdHJpbmcpLCBpc29sYXRlKTsK
KyAgICB9CisKICAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6SW50ZWdlcj4gdjhJbnRlZ2VyKGlu
dCB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogICAgIHsKICAgICAgICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoaXNvbGF0ZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>