<?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>112475</bug_id>
          
          <creation_ts>2013-03-15 16:01:07 -0700</creation_ts>
          <short_desc>Add IDL &apos;enum&apos; support to CodeGeneratorJS.pm</short_desc>
          <delta_ts>2013-03-19 18:04:41 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="arno.">a.renevier</reporter>
          <assigned_to name="arno.">a.renevier</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>nbarth</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>856369</commentid>
    <comment_count>0</comment_count>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-15 16:01:07 -0700</bug_when>
    <thetext>Hi,
this bug is to add enum support for JavaScriptCore bindings. It is similar to what has been done for V8 in bug #106553.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856384</commentid>
    <comment_count>1</comment_count>
      <attachid>193394</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-15 16:16:06 -0700</bug_when>
    <thetext>Created attachment 193394
patch proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856463</commentid>
    <comment_count>2</comment_count>
      <attachid>193411</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-15 18:24:52 -0700</bug_when>
    <thetext>Created attachment 193411
updated patch: check for exception after calling toString()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>856568</commentid>
    <comment_count>3</comment_count>
      <attachid>193411</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-16 07:49:37 -0700</bug_when>
    <thetext>Comment on attachment 193411
updated patch: check for exception after calling toString()

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2134
&gt; +                                    push(@implContent, &quot;    String string = value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec);\n&quot;);

Don&apos;t you need to add &apos;if (exec-&gt;hadException()) return&apos; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857220</commentid>
    <comment_count>4</comment_count>
      <attachid>193586</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-18 09:54:33 -0700</bug_when>
    <thetext>Created attachment 193586
updated patch: second check for exception after calling toString()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857381</commentid>
    <comment_count>5</comment_count>
      <attachid>193621</attachid>
    <who name="arno.">a.renevier</who>
    <bug_when>2013-03-18 11:57:25 -0700</bug_when>
    <thetext>Created attachment 193621
patch modification: use a reference to String to avoid a copy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857769</commentid>
    <comment_count>6</comment_count>
      <attachid>193621</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-18 17:20:25 -0700</bug_when>
    <thetext>Comment on attachment 193621
patch modification: use a reference to String to avoid a copy

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

LGTM, thanks!

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp:1892
&gt; +    if (args.Length() &lt; 1)
&gt; +        return throwNotEnoughArgumentsError(args.GetIsolate());
&gt; +    TestObj* imp = V8TestObj::toNative(args.Holder());
&gt; +    V8TRYCATCH_FOR_V8STRINGRESOURCE(V8StringResource&lt;&gt;, enumArg, args[0]);
&gt; +    imp-&gt;methodWithEnumArg(enumArg);
&gt; +    return v8Undefined();

If you have time, I&apos;d be happy if you could support &apos;enum&apos; in DOM methods in V8 as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857797</commentid>
    <comment_count>7</comment_count>
      <attachid>193621</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 17:35:52 -0700</bug_when>
    <thetext>Comment on attachment 193621
patch modification: use a reference to String to avoid a copy

Clearing flags on attachment: 193621

Committed r146161: &lt;http://trac.webkit.org/changeset/146161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>857798</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-18 17:35:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858900</commentid>
    <comment_count>9</comment_count>
      <attachid>193621</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-19 17:33:23 -0700</bug_when>
    <thetext>Comment on attachment 193621
patch modification: use a reference to String to avoid a copy

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2152
&gt; +                                    push(@implContent, &quot;    String&amp; string = value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec);\n&quot;);

This would work with const String&amp;, but won’t work with String&amp; — it will likely simply fail to compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858901</commentid>
    <comment_count>10</comment_count>
      <attachid>193621</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 17:33:42 -0700</bug_when>
    <thetext>Comment on attachment 193621
patch modification: use a reference to String to avoid a copy

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2152
&gt; +                                    push(@implContent, &quot;    String&amp; string = value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec);\n&quot;);

Sorry, this is wrong. This should be String, not String&amp;. If you are concerned about performance of String comparisons below, we should optimize it somehow. However, I think it is OK to just use String until we find any scenarios in which the String comparisons are bottlenecks.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2794
&gt; +            push(@$outputArray, &quot;    const String&amp; ${name}(${argValue}.isEmpty() ? String() : ${argValue}.toString(exec)-&gt;value(exec));\n&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858904</commentid>
    <comment_count>11</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 17:34:42 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 193621 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=193621&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2152
&gt; &gt; +                                    push(@implContent, &quot;    String&amp; string = value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec);\n&quot;);
&gt; 
&gt; This would work with const String&amp;, but won’t work with String&amp; — it will likely simply fail to compile.

Ah, const String&amp; sounds the best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858905</commentid>
    <comment_count>12</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 17:35:13 -0700</bug_when>
    <thetext>arno: would you fix it please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858906</commentid>
    <comment_count>13</comment_count>
      <attachid>193621</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-19 17:35:56 -0700</bug_when>
    <thetext>Comment on attachment 193621
patch modification: use a reference to String to avoid a copy

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

&gt;&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2152
&gt;&gt;&gt; +                                    push(@implContent, &quot;    String&amp; string = value.isEmpty() ? String() : value.toString(exec)-&gt;value(exec);\n&quot;);
&gt;&gt; 
&gt;&gt; This would work with const String&amp;, but won’t work with String&amp; — it will likely simply fail to compile.
&gt; 
&gt; Sorry, this is wrong. This should be String, not String&amp;. If you are concerned about performance of String comparisons below, we should optimize it somehow. However, I think it is OK to just use String until we find any scenarios in which the String comparisons are bottlenecks.

I don’t think that const String&amp; will give better performance than String. In either case there is still a local String value. The use of the reference might seem to eliminate a copy, but in practice is does not. So please just change back to &quot;String&quot; for clarity.

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2794
&gt;&gt; +            push(@$outputArray, &quot;    const String&amp; ${name}(${argValue}.isEmpty() ? String() : ${argValue}.toString(exec)-&gt;value(exec));\n&quot;);
&gt; 
&gt; Ditto.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858929</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-19 18:04:41 -0700</bug_when>
    <thetext>The fix is going to be landed in bug 112760.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193394</attachid>
            <date>2013-03-15 16:16:06 -0700</date>
            <delta_ts>2013-03-15 18:24:49 -0700</delta_ts>
            <desc>patch proposal</desc>
            <filename>bug-112475-20130315161201.patch</filename>
            <type>text/plain</type>
            <size>21427</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY4MjNjNjAyMzVjYWM5
ZTQ2NzAxZTMyNzIzYjMxODI1MDc2YjcyMS4uZmM0Mjc3NTIzYTVhYWViMzVlMzZlOGI4OWYzOGU5
M2U0MGQxNmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IElETCAnZW51bScgc3VwcG9ydCB0byBDb2RlR2VuZXJhdG9ySlMucG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBl
bnVtZXJhdGlvbnMgaW4gSlMsIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNraW5nCisgICAgICAgIHRv
IHNldHRlcnMuCisgICAgICAgIEl0IGFsc28gZG9lcyB2YWxpZGF0aW9uIGNoZWNraW5nIHRvIG1l
dGhvZHMsIGFuZCBhIG5ldyBtZXRob2QKKyAgICAgICAgbWV0aG9kV2l0aEVudW1BcmcgaW4gVGVz
dE9iai5pZGwKKworICAgICAgICBUZXN0OiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJET01UZXN0
T2JqOjptZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX2VudW1fYXJnKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVu
dW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIG1ldGhvZFdpdGhFbnVt
QXJnOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoRW51bUFyZ01ldGhvZCk6Cisg
ICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisKIDIwMTMtMDMtMTEgIEFybmF1ZCBS
ZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBXaGl0ZXNw
YWNlIGluIHBhcnRpY3VsYXIgc291cmNlIGNvZGUgY2hhbmdlcyByZW5kZXJpbmc7IGRvZXMgbm90
IGluIEZpcmVmb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggNmFkYzk4ODNkNDY2YjcxZmE1MTA3NWY1YjhkYzliZjI5YTVh
OGYzMS4uNGFmNDQ4MmJjNWVhZDg4M2QxZGFhYTZlMjRkYjVmZWQ5OWFkMWMwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIxMjksNyArMjEyOSwyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVl
ID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2RlR2VuZXJhdG9yLT5WYWxpZEVu
dW1WYWx1ZXMoJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkg
QGVudW1DaGVja3MgPSAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGVudW1WYWx1ZSAoQGVudW1WYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAic3RyaW5nICE9IFwiJGVudW1W
YWx1ZVwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYXRpdmVWYWx1ZSA9
ICJzdHJpbmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLT5p
c1JlYWRPbmx5KCkpIHtcbiIpOwpAQCAtMjc1Myw2ICsyNzY3LDE5IEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCRhcmdU
eXBlKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CisKKyAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0lu
ZGV4KSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3QgU3RyaW5n
ICR7bmFtZX0oJHthcmdWYWx1ZX0uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAke2FyZ1ZhbHVlfS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpO1xuIik7CisKKyAgICAgICAgICAgIG15IEBlbnVt
VmFsdWVzID0gJGNvZGVHZW5lcmF0b3ItPlZhbGlkRW51bVZhbHVlcygkYXJnVHlwZSk7CisgICAg
ICAgICAgICBteSBAZW51bUNoZWNrcyA9ICgpOworICAgICAgICAgICAgZm9yZWFjaCBteSAkZW51
bVZhbHVlIChAZW51bVZhbHVlcykgeworICAgICAgICAgICAgICAgIHB1c2goQGVudW1DaGVja3Ms
ICIke25hbWV9ICE9IFwiJGVudW1WYWx1ZVwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgIGlmICgiIC4gam9pbigiICYmICIsIEBlbnVtQ2hl
Y2tzKSAuICIpXG4iKTsKKyAgICAgICAgICAgIHB1c2ggKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAjIElmIHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRlZCBhdHRyaWJ1
dGUgaXMgcHJlc2VudCwgYW5kIHRoZSBhcmd1bWVudCdzIHR5cGUgaXMgYW4KICAgICAgICAgICAg
ICMgaW50ZXJmYWNlIHR5cGUsIHRoZW4gaWYgdGhlIGluY29taW5nIHZhbHVlIGRvZXMgbm90IGlt
cGxlbWVudCB0aGF0IGludGVyZmFjZSwgYSBUeXBlRXJyb3IKQEAgLTMyNTgsNiArMzI4NSwxMSBA
QCBzdWIgTmF0aXZlVG9KU1ZhbHVlCiAgICAgICAgIHJldHVybiAianNOdW1iZXIoJHZhbHVlKSI7
CiAgICAgfQogCisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgewor
ICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiPHJ1bnRpbWUvSlNTdHJpbmcuaD4iLCAkY29uZGl0
aW9uYWwpOworICAgICAgICByZXR1cm4gImpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsICR2YWx1ZSki
OworICAgIH0KKwogICAgIGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkg
ewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiS1VSTC5oIiwgJGNvbmRpdGlvbmFsKTsKICAg
ICAgICAgbXkgJGNvbnYgPSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRS
ZXR1cm5lZE51bGxTdHJpbmdBcyJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggOWZiYmQ1MDJi
N2ZhNmNjOTYwZWQ0OThlMmY2ODgxYmUzMGQ4NDU1NC4uZjY1YzVkNWVlZjgyMGZhZmI4N2Y4YmRi
OTU5NzgxNzJhNzVkMWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yOCwxMiArMjgsMTQg
QEAKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJUZXN0RW51bVR5cGUuaCIKICNpbmNs
dWRlICJXZWJET01EaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJXZWJET01Ob2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViRE9NU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKKyNpbmNsdWRl
ICJXZWJET01UZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJXZWJET01UZXN0T2JqLmgiCiAjaW5j
bHVkZSAiV2ViRE9NYS5oIgogI2luY2x1ZGUgIldlYkRPTWIuaCIKQEAgLTcxMiw2ICs3MTQsMTQg
QEAgV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjpvYmpNZXRob2RXaXRoQXJncyhpbnQgbG9u
Z0FyZywgY29uc3QgV2ViRE9NU3RyaW5nJgogICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0
cihpbXBsKCktPm9iak1ldGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9i
akFyZykpKSk7CiB9CiAKK3ZvaWQgV2ViRE9NVGVzdE9iajo6bWV0aG9kV2l0aEVudW1BcmcoY29u
c3QgV2ViRE9NVGVzdEVudW1UeXBlJiBlbnVtQXJnKQoreworICAgIGlmICghaW1wbCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPm1ldGhvZFdpdGhFbnVtQXJnKHRvV2ViQ29yZShl
bnVtQXJnKSk7Cit9CisKIFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6bWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93cyhjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3Qg
V2ViRE9NVGVzdE9iaiYgb2JqQXJnKQogewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
aAppbmRleCBlNjdiYTgzOGE3ZGI2NGQ4NDc3MmMxYzY3MjUwMjdmMjBlMDQ5YThlLi4yYTU2NDFl
ZDBhYjJlZjg1YTFhZjAyZWIwOWU1MGFiYWVkM2M2YWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAt
MzcsNiArMzcsNyBAQCBjbGFzcyBXZWJET01Ob2RlOwogY2xhc3MgV2ViRE9NT2JqZWN0OwogY2xh
c3MgV2ViRE9NU1ZHUG9pbnQ7CiBjbGFzcyBXZWJET01TdHJpbmc7CitjbGFzcyBXZWJET01UZXN0
RW51bVR5cGU7CiBjbGFzcyBXZWJET01UZXN0T2JqOwogY2xhc3MgV2ViRE9NYTsKIGNsYXNzIFdl
YkRPTWI7CkBAIC0xNTIsNiArMTUzLDcgQEAgcHVibGljOgogICAgIGludCBsb25nTWV0aG9kV2l0
aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJE
T01UZXN0T2JqJiBvYmpBcmcpOwogICAgIFdlYkRPTVRlc3RPYmogb2JqTWV0aG9kKCk7CiAgICAg
V2ViRE9NVGVzdE9iaiBvYmpNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9N
U3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CisgICAgdm9pZCBt
ZXRob2RXaXRoRW51bUFyZyhjb25zdCBXZWJET01UZXN0RW51bVR5cGUmIGVudW1BcmcpOwogICAg
IFdlYkRPTVRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhjb25zdCBX
ZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKICAgICB2
b2lkIHNlcmlhbGl6ZWRWYWx1ZShjb25zdCBXZWJET01TdHJpbmcmIHNlcmlhbGl6ZWRBcmcpOwog
ICAgIHZvaWQgb3B0aW9uc09iamVjdChjb25zdCBXZWJET01EaWN0aW9uYXJ5JiBvbywgY29uc3Qg
V2ViRE9NRGljdGlvbmFyeSYgb29vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAK
aW5kZXggNGQ0MWQ2ZTEzYjZjOGM2YjYyODBhNzZmY2Y5ODkxODk4OTA0ZWMyNS4uYjQ0N2YwMWU5
Y2U1NjA2OTgyMmRjMGEwZTFkNTdhYTE3Y2VmZGZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE9iai5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5oIgogI2luY2x1ZGUg
IldlYktpdERPTVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJL
aXRET01UZXN0RW51bVR5cGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdE9ialBy
aXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01hUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktp
dERPTWJQcml2YXRlLmgiCkBAIC05NjUsNiArOTY2LDE3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpf
b2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9uZ0Fy
ZywKICAgICByZXR1cm4gV2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKK3Zv
aWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51bV9hcmcoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdEVudW1UeXBlKiBlbnVtQXJnKQoreworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9ET01fSVNfVEVTVF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lU
X0RPTV9JU19URVNUX0VOVU1fVFlQRShlbnVtQXJnKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0RW51bVR5cGUqIGNv
bnZlcnRlZEVudW1BcmcgPSBXZWJLaXQ6OmNvcmUoZW51bUFyZyk7CisgICAgaXRlbS0+bWV0aG9k
V2l0aEVudW1BcmcoY29udmVydGVkRW51bUFyZyk7Cit9CisKIFdlYktpdERPTVRlc3RPYmoqCiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJv
d3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9N
VGVzdE9iaiogb2JqQXJnLCBHRXJyb3IqKiBlcnJvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaAppbmRleCBlZjA2ZGRkYjlmNWU2MDQyZTE2ODZiNzVlZGE1YTEyYTliNjBkOGUxLi42
ZjZiNzk2OGE4NmNkNGU3MDI1MWM5NzQzYzQzNzM3N2NlOTM2NmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE9iai5oCkBAIC0xMTksNiArMTE5LDE3IEBAIFdFQktJVF9BUEkgV2ViS2l0RE9N
VGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9uZ0FyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2Vi
S2l0RE9NVGVzdE9iaiogb2JqQXJnKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21l
dGhvZF93aXRoX2VudW1fYXJnOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBl
bnVtQXJnOiBBICNXZWJLaXRET01UZXN0RW51bVR5cGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoq
LworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2VudW1f
YXJnKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RFbnVtVHlwZSogZW51bUFy
Zyk7CisKKy8qKgogICogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1aXJlc19h
bGxfYXJnc19hbmRfdGhyb3dzOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqIEBz
dHJBcmc6IEEgI2djaGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IDBhZWZiMDY5NzZiOTFkZGZlNGFiNGM4YWJl
OGM4YjRjZjM4NjQ0NzQuLjAyMGU1NWI0OWNkNjBiYjUzMTlhYjc0YmE2NjhhNWE5MzU3ZjZkZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgog
I2luY2x1ZGUgIkpTU2NyaXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgi
Ci0jaW5jbHVkZSAiSlNUZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNp
bmNsdWRlICJKU1Rlc3RTdWJPYmouaCIKICNpbmNsdWRlICJKU2EuaCIKQEAgLTUyLDcgKzUxLDYg
QEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
UHJvZmlsZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUg
IlRlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlICJib29sLmgi
CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtMjczLDYgKzI3MSw3IEBAIHN0YXRpYyBj
b25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAg
ICB7ICJvYmpNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT2JqTWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7
ICJtZXRob2RXaXRoU2VxdWVuY2VBcmciLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGlu
dHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAog
ICAgIHsgIm1ldGhvZFJldHVybmluZ1NlcXVlbmNlIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSksIChpbnRwdHJfdCkxLCBOb0ludHJp
bnNpYyB9LAorICAgIHsgIm1ldGhvZFdpdGhFbnVtQXJnIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVu
Y3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNp
YyB9LAogICAgIHsgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiLCBEb250RGVs
ZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3MpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzZXJpYWxpemVkVmFs
dWUiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5h
dGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSks
IChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm9wdGlvbnNPYmplY3QiLCBEb250
RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0
aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QpLCAoaW50cHRyX3Qp
MiwgTm9JbnRyaW5zaWMgfSwKQEAgLTQ1Miw3ICs0NTEsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakVu
dW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChz
bG90QmFzZSkpOwogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0g
c3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0
cihpbXBsLT5lbnVtQXR0cigpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBpbXBsLT5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC0xMDAxLDcgKzEwMDAsMTAgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2Jq
Kj4odGhpc09iamVjdCk7CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoq
PihjYXN0ZWRUaGlzLT5pbXBsKCkpOwotICAgIGltcGwtPnNldEVudW1BdHRyKHRvVGVzdEVudW1U
eXBlKHZhbHVlKSk7CisgICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLmlzRW1wdHkoKSA/IFN0cmlu
ZygpIDogdmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChzdHJpbmcg
IT0gIiIgJiYgc3RyaW5nICE9ICJFbnVtVmFsdWUxIiAmJiBzdHJpbmcgIT0gIkVudW1WYWx1ZTIi
ICYmIHN0cmluZyAhPSAiRW51bVZhbHVlMyIpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5z
ZXRFbnVtQXR0cihzdHJpbmcpOwogfQogCiAKQEAgLTE1ODQsNiArMTU4NiwyMyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0
dXJuaW5nU2VxdWVuY2UoRQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2Fz
dDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgY29uc3QgU3RyaW5nIGVudW1BcmcoZXhl
Yy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIGlmIChlbnVtQXJnICE9ICIiICYmIGVu
dW1BcmcgIT0gIkVudW1WYWx1ZTEiICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTIiICYmIGVudW1B
cmcgIT0gIkVudW1WYWx1ZTMiKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICBpbXBsLT5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNjQxNTRlNDRlOWVlZjcxYTBlNjU5NGI5
OTU4ZGNiZmE1ZWRkMDNkYS4uMmU5ZGU4NjU4OWY3MjBmNjIyOTlhZDk3M2M0OTc1MmNkN2QzMWVh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0M6OkV4ZWNTCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVl
bmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNlcmlhbGl6ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChKU0M6
OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IGNlYjVhZThkYjkyYjE4NWRkYWU1MTIyY2M3
OTYxMmRlZDBhMzQ3M2MuLjNlOTc2YjkwOTc0NDM4MWU0YzljODFmOGUwZWY4OTk2M2VhZmQxYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKQEAgLTMzLDYgKzMzLDcgQEAKIEBjbGFzcyBET01Ob2RlOwogQGNsYXNz
IERPTVNWR0RvY3VtZW50OwogQGNsYXNzIERPTVNWR1BvaW50OworQGNsYXNzIERPTVRlc3RFbnVt
VHlwZTsKIEBjbGFzcyBET01UZXN0T2JqOwogQGNsYXNzIERPTVRlc3RPYmplY3RBQ29uc3RydWN0
b3I7CiBAY2xhc3MgRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvcjsKQEAgLTEyMiw2ICsxMjMsNyBA
QCBlbnVtIHsKIC0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzoo
TlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVz
dE9iaiAqKW9iak1ldGhvZDsKIC0gKERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJnczooaW50
KWxvbmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilv
YmpBcmc7CistICh2b2lkKW1ldGhvZFdpdGhFbnVtQXJnOihET01UZXN0RW51bVR5cGUgKillbnVt
QXJnOwogLSAoRE9NVGVzdE9iaiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3M6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0gKHZvaWQp
c2VyaWFsaXplZFZhbHVlOihOU1N0cmluZyAqKXNlcmlhbGl6ZWRBcmc7CiAtICh2b2lkKW9wdGlv
bnNPYmplY3Q6KERPTURpY3Rpb25hcnkgKilvbyBvb286KERPTURpY3Rpb25hcnkgKilvb287CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQppbmRleCA3ZGZiYWU4NDk3NjE0NzZkZmNjMTJhODU1YzBmNGI0YjkxYTAxZTcw
Li5jNjQwMTJmZmYyY2YzNGJhMDVhMjljNWUzMGIyYWVmN2Q5MDRmZDNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkRPTVNWR0RvY3VtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTVNWR1BvaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdEVudW1UeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTVRlc3RPYmpJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3Rv
ckludGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9ySW50ZXJuYWwu
aCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbXBvcnQgIlNWR0RvY3VtZW50LmgiCiAjaW1wb3J0ICJT
VkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2ltcG9ydCAiVGVzdEVudW1UeXBlLmgiCiAjaW1wb3J0ICJUZXN0T2JqLmgiCiAjaW1w
b3J0ICJUZXN0T2JqZWN0QUNvbnN0cnVjdG9yLmgiCiAjaW1wb3J0ICJUZXN0T2JqZWN0QkNvbnN0
cnVjdG9yLmgiCkBAIC03NTIsNiArNzU0LDEyIEBACiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0
cihJTVBMLT5vYmpNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSkp
KTsKIH0KIAorLSAodm9pZCltZXRob2RXaXRoRW51bUFyZzooRE9NVGVzdEVudW1UeXBlICopZW51
bUFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJ
TVBMLT5tZXRob2RXaXRoRW51bUFyZyhjb3JlKGVudW1BcmcpKTsKK30KKwogLSAoRE9NVGVzdE9i
aiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3M6KE5TU3RyaW5nICopc3RyQXJn
IG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAppbmRleCAyNGEwZTZjMDlhMzg2YjZiZmFmZGIwZGNjZWJhOWQyZWYy
NTU2NDc4Li4zMmQ0ZTg3ODI2YmZkYzMxZGQwNGY3ZWQ3NTM5ZjQyNzU2NDkxMDY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC04
MSw2ICs4MSw3IEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1W
YWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKICAgICB2b2lkIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhp
biBzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiBzZXF1ZW5jZUFyZyk7CiAgICAgc2VxdWVuY2U8U2Ny
aXB0UHJvZmlsZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoaW4gbG9uZyBsb25nQXJnKTsKIAor
ICAgIHZvaWQgbWV0aG9kV2l0aEVudW1BcmcoaW4gVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAg
IFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhpbiBET01TdHJpbmcg
c3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZykKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggMGE0Y2MzMzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIwYmYyY2Qx
NC4uYzc1Mjg5YWMyMWI0NjQ0NGZkZGExY2M5MDllNzFlZDY1OTlmOTY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJWOFNWR1BvaW50LmgiCiAjaW5jbHVkZSAiVjhT
Y3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhUZXN0Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJW
OFRlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIlY4VGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlY4
YS5oIgogI2luY2x1ZGUgIlY4Yi5oIgpAQCAtMTY2Niw2ICsxNjY3LDIxIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VNZXRob2RDYWxsYmFjayhj
b25zdCB2ODo6QXJnCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RSZXR1cm5p
bmdTZXF1ZW5jZU1ldGhvZChhcmdzKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RXaXRoRW51bUFyZ01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhT
VFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIGVudW1BcmcsIGFyZ3NbMF0pOworICAg
IGltcC0+bWV0aG9kV2l0aEVudW1BcmcoZW51bUFyZyk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEVudW1BcmdN
ZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2QoYXJncyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKQEAgLTMwODQsNiArMzEwMCwxMiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJz
aQogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwog
CisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aEVudW1BcmcnCisgICAgY29uc3Qg
aW50IG1ldGhvZFdpdGhFbnVtQXJnQXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbWV0aG9kV2l0aEVudW1BcmdBcmd2W21ldGhvZFdpdGhFbnVtQXJnQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RF
bnVtVHlwZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdp
dGhFbnVtQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhF
bnVtQXJnQXJnYywgbWV0aG9kV2l0aEVudW1BcmdBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aEVudW1BcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aEVudW1BcmdTaWduYXR1cmUpKTsKKwogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAg
ICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsK
ICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJn
Y10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193411</attachid>
            <date>2013-03-15 18:24:52 -0700</date>
            <delta_ts>2013-03-18 09:54:30 -0700</delta_ts>
            <desc>updated patch: check for exception after calling toString()</desc>
            <filename>bug-112475-20130315182046.patch</filename>
            <type>text/plain</type>
            <size>21661</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY4MjNjNjAyMzVjYWM5
ZTQ2NzAxZTMyNzIzYjMxODI1MDc2YjcyMS4uZmM0Mjc3NTIzYTVhYWViMzVlMzZlOGI4OWYzOGU5
M2U0MGQxNmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IElETCAnZW51bScgc3VwcG9ydCB0byBDb2RlR2VuZXJhdG9ySlMucG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBl
bnVtZXJhdGlvbnMgaW4gSlMsIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNraW5nCisgICAgICAgIHRv
IHNldHRlcnMuCisgICAgICAgIEl0IGFsc28gZG9lcyB2YWxpZGF0aW9uIGNoZWNraW5nIHRvIG1l
dGhvZHMsIGFuZCBhIG5ldyBtZXRob2QKKyAgICAgICAgbWV0aG9kV2l0aEVudW1BcmcgaW4gVGVz
dE9iai5pZGwKKworICAgICAgICBUZXN0OiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJET01UZXN0
T2JqOjptZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX2VudW1fYXJnKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVu
dW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIG1ldGhvZFdpdGhFbnVt
QXJnOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoRW51bUFyZ01ldGhvZCk6Cisg
ICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisKIDIwMTMtMDMtMTEgIEFybmF1ZCBS
ZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBXaGl0ZXNw
YWNlIGluIHBhcnRpY3VsYXIgc291cmNlIGNvZGUgY2hhbmdlcyByZW5kZXJpbmc7IGRvZXMgbm90
IGluIEZpcmVmb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggNmFkYzk4ODNkNDY2YjcxZmE1MTA3NWY1YjhkYzliZjI5YTVh
OGYzMS4uN2ViNjAwM2Y4OWViNjJmYzY1ODAxMGQ5ZDU1ODVjZTc3MzUyNmVkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIxMjksNyArMjEyOSwyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVl
ID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2RlR2VuZXJhdG9yLT5WYWxpZEVu
dW1WYWx1ZXMoJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkg
QGVudW1DaGVja3MgPSAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGVudW1WYWx1ZSAoQGVudW1WYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAic3RyaW5nICE9IFwiJGVudW1W
YWx1ZVwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYXRpdmVWYWx1ZSA9
ICJzdHJpbmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLT5p
c1JlYWRPbmx5KCkpIHtcbiIpOwpAQCAtMjc1Myw2ICsyNzY3LDIxIEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCRhcmdU
eXBlKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CisKKyAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0lu
ZGV4KSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3QgU3RyaW5n
ICR7bmFtZX0oJHthcmdWYWx1ZX0uaXNFbXB0eSgpID8gU3RyaW5nKCkgOiAke2FyZ1ZhbHVlfS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpO1xuIik7CisgICAgICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7XG4iKTsKKworICAgICAgICAgICAgbXkgQGVudW1WYWx1ZXMgPSAkY29kZUdl
bmVyYXRvci0+VmFsaWRFbnVtVmFsdWVzKCRhcmdUeXBlKTsKKyAgICAgICAgICAgIG15IEBlbnVt
Q2hlY2tzID0gKCk7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRlbnVtVmFsdWUgKEBlbnVtVmFs
dWVzKSB7CisgICAgICAgICAgICAgICAgcHVzaChAZW51bUNoZWNrcywgIiR7bmFtZX0gIT0gXCIk
ZW51bVZhbHVlXCIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2ggKEAkb3V0cHV0
QXJyYXksICIgICAgaWYgKCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOwor
ICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYyk7XG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICMgSWYg
dGhlICJTdHJpY3RUeXBlQ2hlY2tpbmciIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBwcmVzZW50LCBh
bmQgdGhlIGFyZ3VtZW50J3MgdHlwZSBpcyBhbgogICAgICAgICAgICAgIyBpbnRlcmZhY2UgdHlw
ZSwgdGhlbiBpZiB0aGUgaW5jb21pbmcgdmFsdWUgZG9lcyBub3QgaW1wbGVtZW50IHRoYXQgaW50
ZXJmYWNlLCBhIFR5cGVFcnJvcgpAQCAtMzI1OCw2ICszMjg3LDExIEBAIHN1YiBOYXRpdmVUb0pT
VmFsdWUKICAgICAgICAgcmV0dXJuICJqc051bWJlcigkdmFsdWUpIjsKICAgICB9CiAKKyAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJHR5cGUpKSB7CisgICAgICAgIEFkZFRvSW1w
bEluY2x1ZGVzKCI8cnVudGltZS9KU1N0cmluZy5oPiIsICRjb25kaXRpb25hbCk7CisgICAgICAg
IHJldHVybiAianNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgJHZhbHVlKSI7CisgICAgfQorCiAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1N0cmluZ1R5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJLVVJMLmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICBteSAkY29udiA9
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJUcmVhdFJldHVybmVkTnVsbFN0cmlu
Z0FzIn07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAppbmRleCA5ZmJiZDUwMmI3ZmE2Y2M5NjBlZDQ5OGUy
ZjY4ODFiZTMwZDg0NTU0Li5mNjVjNWQ1ZWVmODIwZmFmYjg3ZjhiZGI5NTk3ODE3MmE3NWQxZjQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKQEAgLTI4LDEyICsyOCwxNCBAQAogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJTVkdQb2ludC5oIgogI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIlRlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIldlYkRPTURpY3Rp
b25hcnkuaCIKICNpbmNsdWRlICJXZWJET01Eb2N1bWVudC5oIgogI2luY2x1ZGUgIldlYkRPTU5v
ZGUuaCIKICNpbmNsdWRlICJXZWJET01PYmplY3QuaCIKICNpbmNsdWRlICJXZWJET01TVkdQb2lu
dC5oIgogI2luY2x1ZGUgIldlYkRPTVN0cmluZy5oIgorI2luY2x1ZGUgIldlYkRPTVRlc3RFbnVt
VHlwZS5oIgogI2luY2x1ZGUgIldlYkRPTVRlc3RPYmouaCIKICNpbmNsdWRlICJXZWJET01hLmgi
CiAjaW5jbHVkZSAiV2ViRE9NYi5oIgpAQCAtNzEyLDYgKzcxNCwxNCBAQCBXZWJET01UZXN0T2Jq
IFdlYkRPTVRlc3RPYmo6Om9iak1ldGhvZFdpdGhBcmdzKGludCBsb25nQXJnLCBjb25zdCBXZWJE
T01TdHJpbmcmCiAgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+b2JqTWV0
aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCB0b1dlYkNvcmUob2JqQXJnKSkpKTsKIH0KIAor
dm9pZCBXZWJET01UZXN0T2JqOjptZXRob2RXaXRoRW51bUFyZyhjb25zdCBXZWJET01UZXN0RW51
bVR5cGUmIGVudW1BcmcpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGltcGwoKS0+bWV0aG9kV2l0aEVudW1BcmcodG9XZWJDb3JlKGVudW1BcmcpKTsKK30KKwog
V2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5k
VGhyb3dzKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBv
YmpBcmcpCiB7CiAgICAgaWYgKCFpbXBsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmluZGV4IGU2N2JhODM4
YTdkYjY0ZDg0NzcyYzFjNjcyNTAyN2YyMGUwNDlhOGUuLjJhNTY0MWVkMGFiMmVmODVhMWFmMDJl
YjA5ZTUwYWJhZWQzYzZhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0zNyw2ICszNyw3IEBAIGNs
YXNzIFdlYkRPTU5vZGU7CiBjbGFzcyBXZWJET01PYmplY3Q7CiBjbGFzcyBXZWJET01TVkdQb2lu
dDsKIGNsYXNzIFdlYkRPTVN0cmluZzsKK2NsYXNzIFdlYkRPTVRlc3RFbnVtVHlwZTsKIGNsYXNz
IFdlYkRPTVRlc3RPYmo7CiBjbGFzcyBXZWJET01hOwogY2xhc3MgV2ViRE9NYjsKQEAgLTE1Miw2
ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgaW50IGxvbmdNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0Fy
ZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFy
Zyk7CiAgICAgV2ViRE9NVGVzdE9iaiBvYmpNZXRob2QoKTsKICAgICBXZWJET01UZXN0T2JqIG9i
ak1ldGhvZFdpdGhBcmdzKGludCBsb25nQXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywg
Y29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKKyAgICB2b2lkIG1ldGhvZFdpdGhFbnVtQXJn
KGNvbnN0IFdlYkRPTVRlc3RFbnVtVHlwZSYgZW51bUFyZyk7CiAgICAgV2ViRE9NVGVzdE9iaiBt
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKGNvbnN0IFdlYkRPTVN0cmluZyYgc3Ry
QXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAgIHZvaWQgc2VyaWFsaXplZFZh
bHVlKGNvbnN0IFdlYkRPTVN0cmluZyYgc2VyaWFsaXplZEFyZyk7CiAgICAgdm9pZCBvcHRpb25z
T2JqZWN0KGNvbnN0IFdlYkRPTURpY3Rpb25hcnkmIG9vLCBjb25zdCBXZWJET01EaWN0aW9uYXJ5
JiBvb28pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCA0ZDQxZDZlMTNi
NmM4YzZiNjI4MGE3NmZjZjk4OTE4OTg5MDRlYzI1Li5iNDQ3ZjAxZTljZTU2MDY5ODIyZGMwYTBl
MWQ1N2FhMTdjZWZkZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYktpdERPTU5vZGVQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NU1ZHUG9pbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NU2VyaWFs
aXplZFNjcmlwdFZhbHVlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTVRlc3RFbnVtVHlw
ZVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01UZXN0T2JqUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdERPTWFQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NYlByaXZhdGUuaCIK
QEAgLTk2NSw2ICs5NjYsMTcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhf
YXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb25nQXJnLAogICAgIHJldHVybiBX
ZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAordm9pZAord2Via2l0X2RvbV90
ZXN0X29ial9tZXRob2Rfd2l0aF9lbnVtX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJL
aXRET01UZXN0RW51bVR5cGUqIGVudW1BcmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNU
X09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfRU5V
TV9UWVBFKGVudW1BcmcpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RFbnVtVHlwZSogY29udmVydGVkRW51bUFyZyA9
IFdlYktpdDo6Y29yZShlbnVtQXJnKTsKKyAgICBpdGVtLT5tZXRob2RXaXRoRW51bUFyZyhjb252
ZXJ0ZWRFbnVtQXJnKTsKK30KKwogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9v
YmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5kX3Rocm93cyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpBcmcs
IEdFcnJvcioqIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4IGVm
MDZkZGRiOWY1ZTYwNDJlMTY4NmI3NWVkYTVhMTJhOWI2MGQ4ZTEuLjZmNmI3OTY4YTg2Y2Q0ZTcw
MjUxYzk3NDNjNDM3Mzc3Y2U5MzY2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgK
QEAgLTExOSw2ICsxMTksMTcgQEAgV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Via2l0
X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxm
LCBnbG9uZyBsb25nQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBv
YmpBcmcpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51bV9h
cmc6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVudW1Bcmc6IEEgI1dlYktp
dERPTVRlc3RFbnVtVHlwZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJIHZv
aWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51bV9hcmcoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdEVudW1UeXBlKiBlbnVtQXJnKTsKKworLyoqCiAgKiB3
ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJv
d3M6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICogQHN0ckFyZzogQSAjZ2NoYXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5jcHAKaW5kZXggMGFlZmIwNjk3NmI5MWRkZmU0YWI0YzhhYmU4YzhiNGNmMzg2NDQ3NC4u
MWJjZTA2ZjVjMWZmNWFhMDg2MzU2Yzc3NDg5MzA1M2JkOGI2MTBjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAg
LTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU1NWR1BvaW50LmgiCiAjaW5jbHVkZSAiSlNTY3Jp
cHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJKU1Rl
c3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVzdFN1
Yk9iai5oIgogI2luY2x1ZGUgIkpTYS5oIgpAQCAtNTIsNyArNTEsNiBAQAogI2luY2x1ZGUgIlNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAjaW5j
bHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVGVzdEVudW1UeXBlLmgi
CiAjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxydW50
aW1lL0Vycm9yLmg+CkBAIC0yNzMsNiArMjcxLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIm9iak1ldGhvZFdp
dGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2Fz
dDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRo
QXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm1ldGhvZFdpdGhTZXF1
ZW5jZUFyZyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNl
cXVlbmNlQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0aG9kUmV0
dXJuaW5nU2VxdWVuY2UiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0
YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFJldHVybmluZ1NlcXVlbmNlKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAgeyAi
bWV0aG9kV2l0aEVudW1BcmciLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFbnVtQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0
aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyksIChpbnRwdHJf
dCkyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNlcmlhbGl6ZWRWYWx1ZSIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKSwgKGludHB0cl90KTEsIE5v
SW50cmluc2ljIH0sCiAgICAgeyAib3B0aW9uc09iamVjdCIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9
LApAQCAtNDUyLDcgKzQ1MSw3IEBAIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0
T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPmVudW1BdHRy
KCkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwt
PmVudW1BdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEwMDEsNyArMTAwMCwx
MCBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0KTsK
ICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7Ci0gICAgaW1wbC0+c2V0RW51bUF0dHIodG9UZXN0RW51bVR5cGUodmFsdWUpKTsKKyAg
ICBTdHJpbmcgc3RyaW5nID0gdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKHN0cmluZyAhPSAiIiAmJiBzdHJpbmcg
IT0gIkVudW1WYWx1ZTEiICYmIHN0cmluZyAhPSAiRW51bVZhbHVlMiIgJiYgc3RyaW5nICE9ICJF
bnVtVmFsdWUzIikKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwtPnNldEVudW1BdHRyKHN0cmlu
Zyk7CiB9CiAKIApAQCAtMTU4NCw2ICsxNTg2LDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShF
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1B
cmcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNf
aW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUp
KTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6
OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0
ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcgZW51bUFyZyhleGVjLT5hcmd1bWVudCgwKS5p
c0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmIChlbnVtQXJnICE9ICIi
ICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTEiICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTIiICYm
IGVudW1BcmcgIT0gIkVudW1WYWx1ZTMiKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjKTsKKyAgICBpbXBsLT5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggNjQxNTRlNDRlOWVlZjcxYTBl
NjU5NGI5OTU4ZGNiZmE1ZWRkMDNkYS4uMmU5ZGU4NjU4OWY3MjBmNjIyOTlhZDk3M2M0OTc1MmNk
N2QzMWVhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0M6OkV4
ZWNTCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5j
ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVj
dChKU0M6OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IGNlYjVhZThkYjkyYjE4NWRkYWU1
MTIyY2M3OTYxMmRlZDBhMzQ3M2MuLjNlOTc2YjkwOTc0NDM4MWU0YzljODFmOGUwZWY4OTk2M2Vh
ZmQxYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTMzLDYgKzMzLDcgQEAKIEBjbGFzcyBET01Ob2RlOwog
QGNsYXNzIERPTVNWR0RvY3VtZW50OwogQGNsYXNzIERPTVNWR1BvaW50OworQGNsYXNzIERPTVRl
c3RFbnVtVHlwZTsKIEBjbGFzcyBET01UZXN0T2JqOwogQGNsYXNzIERPTVRlc3RPYmplY3RBQ29u
c3RydWN0b3I7CiBAY2xhc3MgRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvcjsKQEAgLTEyMiw2ICsx
MjMsNyBAQCBlbnVtIHsKIC0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0
ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAo
RE9NVGVzdE9iaiAqKW9iak1ldGhvZDsKIC0gKERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJn
czooaW50KWxvbmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RP
YmogKilvYmpBcmc7CistICh2b2lkKW1ldGhvZFdpdGhFbnVtQXJnOihET01UZXN0RW51bVR5cGUg
KillbnVtQXJnOwogLSAoRE9NVGVzdE9iaiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3M6KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0g
KHZvaWQpc2VyaWFsaXplZFZhbHVlOihOU1N0cmluZyAqKXNlcmlhbGl6ZWRBcmc7CiAtICh2b2lk
KW9wdGlvbnNPYmplY3Q6KERPTURpY3Rpb25hcnkgKilvbyBvb286KERPTURpY3Rpb25hcnkgKilv
b287CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbQppbmRleCA3ZGZiYWU4NDk3NjE0NzZkZmNjMTJhODU1YzBmNGI0Yjkx
YTAxZTcwLi5jNjQwMTJmZmYyY2YzNGJhMDVhMjljNWUzMGIyYWVmN2Q5MDRmZDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkRPTVNWR0RvY3VtZW50SW50ZXJu
YWwuaCIKICNpbXBvcnQgIkRPTVNWR1BvaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVN0eWxl
U2hlZXRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdEVudW1UeXBlSW50ZXJuYWwuaCIKICNp
bXBvcnQgIkRPTVRlc3RPYmpJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVGVzdE9iamVjdEFDb25z
dHJ1Y3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9ySW50
ZXJuYWwuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbXBvcnQgIlNWR0RvY3VtZW50LmgiCiAjaW1w
b3J0ICJTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5oIgorI2ltcG9ydCAiVGVzdEVudW1UeXBlLmgiCiAjaW1wb3J0ICJUZXN0T2JqLmgi
CiAjaW1wb3J0ICJUZXN0T2JqZWN0QUNvbnN0cnVjdG9yLmgiCiAjaW1wb3J0ICJUZXN0T2JqZWN0
QkNvbnN0cnVjdG9yLmgiCkBAIC03NTIsNiArNzU0LDEyIEBACiAgICAgcmV0dXJuIGtpdChXVEY6
OmdldFB0cihJTVBMLT5vYmpNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIGNvcmUob2Jq
QXJnKSkpKTsKIH0KIAorLSAodm9pZCltZXRob2RXaXRoRW51bUFyZzooRE9NVGVzdEVudW1UeXBl
ICopZW51bUFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBJTVBMLT5tZXRob2RXaXRoRW51bUFyZyhjb3JlKGVudW1BcmcpKTsKK30KKwogLSAoRE9N
VGVzdE9iaiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3M6KE5TU3RyaW5nICop
c3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZwogewogICAgIFdlYkNvcmU6OkpTTWFp
blRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCAyNGEwZTZjMDlhMzg2YjZiZmFmZGIwZGNjZWJh
OWQyZWYyNTU2NDc4Li4zMmQ0ZTg3ODI2YmZkYzMxZGQwNGY3ZWQ3NTM5ZjQyNzU2NDkxMDY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRs
CkBAIC04MSw2ICs4MSw3IEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwg
IkVudW1WYWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKICAgICB2b2lkIG1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhpbiBzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiBzZXF1ZW5jZUFyZyk7CiAgICAgc2VxdWVu
Y2U8U2NyaXB0UHJvZmlsZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoaW4gbG9uZyBsb25nQXJn
KTsKIAorICAgIHZvaWQgbWV0aG9kV2l0aEVudW1BcmcoaW4gVGVzdEVudW1UeXBlIGVudW1Bcmcp
OwogICAgIFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhpbiBET01T
dHJpbmcgc3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZykKICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMGE0Y2MzMzNhMjkyMjEzNGMzZDg1MmZkMzJkZGNlNjIw
YmYyY2QxNC4uYzc1Mjg5YWMyMWI0NjQ0NGZkZGExY2M5MDllNzFlZDY1OTlmOTY4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJWOFNWR1BvaW50LmgiCiAjaW5jbHVk
ZSAiVjhTY3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhUZXN0Q2FsbGJhY2suaCIKKyNpbmNs
dWRlICJWOFRlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIlY4VGVzdFN1Yk9iai5oIgogI2luY2x1
ZGUgIlY4YS5oIgogI2luY2x1ZGUgIlY4Yi5oIgpAQCAtMTY2Niw2ICsxNjY3LDIxIEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VNZXRob2RDYWxs
YmFjayhjb25zdCB2ODo6QXJnCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RS
ZXR1cm5pbmdTZXF1ZW5jZU1ldGhvZChhcmdzKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBtZXRob2RXaXRoRW51bUFyZ01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90
RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9G
T1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIGVudW1BcmcsIGFyZ3NbMF0p
OworICAgIGltcC0+bWV0aG9kV2l0aEVudW1BcmcoZW51bUFyZyk7CisgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEVu
dW1BcmdNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIHJl
dHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2QoYXJncyk7Cit9
CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93c01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMikKQEAgLTMwODQsNiArMzEwMCwxMiBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaQogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNl
QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVy
ZSkpOwogCisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aEVudW1BcmcnCisgICAg
Y29uc3QgaW50IG1ldGhvZFdpdGhFbnVtQXJnQXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aEVudW1BcmdBcmd2W21ldGhvZFdpdGhFbnVtQXJn
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OFRlc3RFbnVtVHlwZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1l
dGhvZFdpdGhFbnVtQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhv
ZFdpdGhFbnVtQXJnQXJnYywgbWV0aG9kV2l0aEVudW1BcmdBcmd2KTsKKyAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aEVudW1BcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aEVudW1BcmdTaWduYXR1cmUpKTsKKwog
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3MnCiAgICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdj
ID0gMjsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhy
b3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193586</attachid>
            <date>2013-03-18 09:54:33 -0700</date>
            <delta_ts>2013-03-18 11:57:22 -0700</delta_ts>
            <desc>updated patch: second check for exception after calling toString()</desc>
            <filename>bug-112475-20130318095025.patch</filename>
            <type>text/plain</type>
            <size>21892</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRlY2NiMjFkYTUyMjA4
ZDQ2NjIyNmNhMGJhNmNmZmY5OTM0ZjBiMy4uNzNlN2Q1YWM2YzcyNDI0NzNhYjEwNmQ0Yjk1NDNj
YTBjNzc1NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IElETCAnZW51bScgc3VwcG9ydCB0byBDb2RlR2VuZXJhdG9ySlMucG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBl
bnVtZXJhdGlvbnMgaW4gSlMsIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNraW5nCisgICAgICAgIHRv
IHNldHRlcnMuCisgICAgICAgIEl0IGFsc28gZG9lcyB2YWxpZGF0aW9uIGNoZWNraW5nIHRvIG1l
dGhvZHMsIGFuZCBhIG5ldyBtZXRob2QKKyAgICAgICAgbWV0aG9kV2l0aEVudW1BcmcgaW4gVGVz
dE9iai5pZGwKKworICAgICAgICBUZXN0OiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJET01UZXN0
T2JqOjptZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX2VudW1fYXJnKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVu
dW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIG1ldGhvZFdpdGhFbnVt
QXJnOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoRW51bUFyZ01ldGhvZCk6Cisg
ICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisKIDIwMTMtMDMtMTEgIEFybmF1ZCBS
ZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBXaGl0ZXNw
YWNlIGluIHBhcnRpY3VsYXIgc291cmNlIGNvZGUgY2hhbmdlcyByZW5kZXJpbmc7IGRvZXMgbm90
IGluIEZpcmVmb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggNDE5YjMyN2VmMDhmY2U1NDEyNGJhZDQ0NTkzNjI1ZTZkOTY1
MmI1NC4uOWM0NjIyOWRmOTUxY2Q4ZTZlNjJlZmY5NDg1ZmFjNDQ3NTQzN2YyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIxNDcsNyArMjE0NywyMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVl
ID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFs
dWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNvZGVHZW5lcmF0b3ItPlZhbGlkRW51
bVZhbHVlcygkdHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSBA
ZW51bUNoZWNrcyA9ICgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
ZWFjaCBteSAkZW51bVZhbHVlIChAZW51bVZhbHVlcykgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGVudW1DaGVja3MsICJzdHJpbmcgIT0gXCIkZW51bVZh
bHVlXCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggKEBpbXBsQ29udGVudCwgIiAgICBpZiAo
IiAuIGpvaW4oIiAmJiAiLCBAZW51bUNoZWNrcykgLiAiKVxuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybjtc
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hdGl2ZVZhbHVlID0g
InN0cmluZyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbmF0aXZlVmFsdWUgPSBKU1ZhbHVlVG9O
YXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgk
c3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICgkc3ZnUHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGltcGwtPmlz
UmVhZE9ubHkoKSkge1xuIik7CkBAIC0yNzcxLDYgKzI3ODcsMjEgQEAgc3ViIEdlbmVyYXRlUGFy
YW1ldGVyc0NoZWNrCiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgICAgICAg
ICB9CiAKKyAgICAgICAgfSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPklzRW51bVR5cGUoJGFyZ1R5
cGUpKSB7CisgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5oPiJ9ID0g
MTsKKworICAgICAgICAgICAgbXkgJGFyZ1ZhbHVlID0gImV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5k
ZXgpIjsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBjb25zdCBTdHJpbmcg
JHtuYW1lfSgke2FyZ1ZhbHVlfS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6ICR7YXJnVmFsdWV9LnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpXG4iKTsKKyAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTtcbiIpOworCisgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2RlR2Vu
ZXJhdG9yLT5WYWxpZEVudW1WYWx1ZXMoJGFyZ1R5cGUpOworICAgICAgICAgICAgbXkgQGVudW1D
aGVja3MgPSAoKTsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGVudW1WYWx1ZSAoQGVudW1WYWx1
ZXMpIHsKKyAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAiJHtuYW1lfSAhPSBcIiRl
bnVtVmFsdWVcIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVzaCAoQCRvdXRwdXRB
cnJheSwgIiAgICBpZiAoIiAuIGpvaW4oIiAmJiAiLCBAZW51bUNoZWNrcykgLiAiKVxuIik7Cisg
ICAgICAgICAgICBwdXNoIChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTtcbiIpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgIyBJZiB0
aGUgIlN0cmljdFR5cGVDaGVja2luZyIgZXh0ZW5kZWQgYXR0cmlidXRlIGlzIHByZXNlbnQsIGFu
ZCB0aGUgYXJndW1lbnQncyB0eXBlIGlzIGFuCiAgICAgICAgICAgICAjIGludGVyZmFjZSB0eXBl
LCB0aGVuIGlmIHRoZSBpbmNvbWluZyB2YWx1ZSBkb2VzIG5vdCBpbXBsZW1lbnQgdGhhdCBpbnRl
cmZhY2UsIGEgVHlwZUVycm9yCkBAIC0zMjc3LDYgKzMzMDgsMTEgQEAgc3ViIE5hdGl2ZVRvSlNW
YWx1ZQogICAgICAgICByZXR1cm4gImpzTnVtYmVyKCR2YWx1ZSkiOwogICAgIH0KIAorICAgIGlm
ICgkY29kZUdlbmVyYXRvci0+SXNFbnVtVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIjxydW50aW1lL0pTU3RyaW5nLmg+IiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAg
cmV0dXJuICJqc1N0cmluZ1dpdGhDYWNoZShleGVjLCAkdmFsdWUpIjsKKyAgICB9CisKICAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPklzU3RyaW5nVHlwZSgkdHlwZSkpIHsKICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIktVUkwuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgIG15ICRjb252ID0g
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlRyZWF0UmV0dXJuZWROdWxsU3RyaW5n
QXMifTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9D
UFAvV2ViRE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCmluZGV4IDVkMDk1YjY2YTM1YzY3NzY5ZTlhNzFjNTNl
ZTg0NGE2NTIxNmRmYTcuLmQ2NTEwMTA5NWEyZGI3Zjk0NTc5YWUxMDFkNzYzZTk5MmZjZjI1M2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcApAQCAtMjgsMTIgKzI4LDE0IEBACiAjaW5jbHVkZSAiTm9k
ZS5oIgogI2luY2x1ZGUgIlNWR1BvaW50LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCisjaW5jbHVkZSAiVGVzdEVudW1UeXBlLmgiCiAjaW5jbHVkZSAiV2ViRE9NRGljdGlv
bmFyeS5oIgogI2luY2x1ZGUgIldlYkRPTURvY3VtZW50LmgiCiAjaW5jbHVkZSAiV2ViRE9NTm9k
ZS5oIgogI2luY2x1ZGUgIldlYkRPTU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkRPTVNWR1BvaW50
LmgiCiAjaW5jbHVkZSAiV2ViRE9NU3RyaW5nLmgiCisjaW5jbHVkZSAiV2ViRE9NVGVzdEVudW1U
eXBlLmgiCiAjaW5jbHVkZSAiV2ViRE9NVGVzdE9iai5oIgogI2luY2x1ZGUgIldlYkRPTWEuaCIK
ICNpbmNsdWRlICJXZWJET01iLmgiCkBAIC03ODUsNiArNzg3LDE0IEBAIFdlYkRPTVRlc3RPYmog
V2ViRE9NVGVzdE9iajo6b2JqTWV0aG9kV2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRP
TVN0cmluZyYKICAgICByZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5vYmpNZXRo
b2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIHRvV2ViQ29yZShvYmpBcmcpKSkpOwogfQogCit2
b2lkIFdlYkRPTVRlc3RPYmo6Om1ldGhvZFdpdGhFbnVtQXJnKGNvbnN0IFdlYkRPTVRlc3RFbnVt
VHlwZSYgZW51bUFyZykKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaW1wbCgpLT5tZXRob2RXaXRoRW51bUFyZyh0b1dlYkNvcmUoZW51bUFyZykpOworfQorCiBX
ZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3MoY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9i
akFyZykKIHsKICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXggZDgyYjc4MjVh
YTNkODY0MzY5ODkwZjA3MWI5OWUzOGI3YmMwODc0NS4uYzFjMTdkMjVkNzI0MTE0YmJiZjA4YmYy
YmVkYzdmZTEwZDlkN2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTM3LDYgKzM3LDcgQEAgY2xh
c3MgV2ViRE9NTm9kZTsKIGNsYXNzIFdlYkRPTU9iamVjdDsKIGNsYXNzIFdlYkRPTVNWR1BvaW50
OwogY2xhc3MgV2ViRE9NU3RyaW5nOworY2xhc3MgV2ViRE9NVGVzdEVudW1UeXBlOwogY2xhc3Mg
V2ViRE9NVGVzdE9iajsKIGNsYXNzIFdlYkRPTWE7CiBjbGFzcyBXZWJET01iOwpAQCAtMTYwLDYg
KzE2MSw3IEBAIHB1YmxpYzoKICAgICBpbnQgbG9uZ01ldGhvZFdpdGhBcmdzKGludCBsb25nQXJn
LCBjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJn
KTsKICAgICBXZWJET01UZXN0T2JqIG9iak1ldGhvZCgpOwogICAgIFdlYkRPTVRlc3RPYmogb2Jq
TWV0aG9kV2l0aEFyZ3MoaW50IGxvbmdBcmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBj
b25zdCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOworICAgIHZvaWQgbWV0aG9kV2l0aEVudW1Bcmco
Y29uc3QgV2ViRE9NVGVzdEVudW1UeXBlJiBlbnVtQXJnKTsKICAgICBXZWJET01UZXN0T2JqIG1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJB
cmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CiAgICAgdm9pZCBzZXJpYWxpemVkVmFs
dWUoY29uc3QgV2ViRE9NU3RyaW5nJiBzZXJpYWxpemVkQXJnKTsKICAgICB2b2lkIG9wdGlvbnNP
YmplY3QoY29uc3QgV2ViRE9NRGljdGlvbmFyeSYgb28sIGNvbnN0IFdlYkRPTURpY3Rpb25hcnkm
IG9vbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IDNmOThjYjdmYmQ3
ZjA0N2Y4NGE1NjUzZTljYjJlZTI0OGI4MDk5NTIuLjI2YzA2NjllNjA3YmJjMGEzZmRmYTQ4MmU0
NTRlZjVlZjI1ZDE2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiV2ViS2l0RE9NTm9kZVByaXZhdGUuaCIKICNpbmNsdWRl
ICJXZWJLaXRET01TVkdQb2ludFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01TZXJpYWxp
emVkU2NyaXB0VmFsdWVQcml2YXRlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdEVudW1UeXBl
UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVRlc3RPYmpQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NYVByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRET01iUHJpdmF0ZS5oIgpA
QCAtMTA2MCw2ICsxMDYxLDE3IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRo
X2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgbG9uZ0FyZywKICAgICByZXR1cm4g
V2ViS2l0OjpraXQoZ29iamVjdFJlc3VsdC5nZXQoKSk7CiB9CiAKK3ZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51bV9hcmcoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2Vi
S2l0RE9NVGVzdEVudW1UeXBlKiBlbnVtQXJnKQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVT
VF9PQkooc2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0VO
VU1fVFlQRShlbnVtQXJnKSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpUZXN0RW51bVR5cGUqIGNvbnZlcnRlZEVudW1Bcmcg
PSBXZWJLaXQ6OmNvcmUoZW51bUFyZyk7CisgICAgaXRlbS0+bWV0aG9kV2l0aEVudW1BcmcoY29u
dmVydGVkRW51bUFyZyk7Cit9CisKIFdlYktpdERPTVRlc3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rf
b2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90aHJvd3MoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqQXJn
LCBHRXJyb3IqKiBlcnJvcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAppbmRleCA4
MzRjYWY3MGY2N2JjYmYyOTMwYWE1YTY2NDViZWNhYTBiNzE1YTA3Li5hZjUzNmIwOTM0ZjcyYmY1
YWI1OTg0NWJiOWU3YTFjN2ViMWFmZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5o
CkBAIC0xMTksNiArMTE5LDE3IEBAIFdFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtp
dF9kb21fdGVzdF9vYmpfb2JqX21ldGhvZF93aXRoX2FyZ3MoV2ViS2l0RE9NVGVzdE9iaiogc2Vs
ZiwgZ2xvbmcgbG9uZ0FyZywgY29uc3QgZ2NoYXIqIHN0ckFyZywgV2ViS2l0RE9NVGVzdE9iaiog
b2JqQXJnKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2VudW1f
YXJnOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEBlbnVtQXJnOiBBICNXZWJL
aXRET01UZXN0RW51bVR5cGUKKyAqCisgKiBSZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2
b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRoX2VudW1fYXJnKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RFbnVtVHlwZSogZW51bUFyZyk7CisKKy8qKgogICog
d2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfdGhhdF9yZXF1aXJlc19hbGxfYXJnc19hbmRfdGhy
b3dzOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqIEBzdHJBcmc6IEEgI2djaGFy
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCmluZGV4IDQ1MjJlNDM4YzMwZmUwOWVjMDA5NjcxZjNlYWVhM2FjMGRiODZhZTgu
LmQ1MDFkOWFjMzk0YjljODcwMTM0M2U4ZWU3YWE4YWU5ZTQ0MTA2ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBA
IC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSlNTVkdQb2ludC5oIgogI2luY2x1ZGUgIkpTU2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkpTVGVzdENhbGxiYWNrLmgiCi0jaW5jbHVkZSAiSlNU
ZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJKU1Rlc3RPYmouaCIKICNpbmNsdWRlICJKU1Rlc3RT
dWJPYmouaCIKICNpbmNsdWRlICJKU2EuaCIKQEAgLTUyLDcgKzUxLDYgQEAKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2NyaXB0UHJvZmlsZS5oIgogI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlRlc3RFbnVtVHlwZS5o
IgogI2luY2x1ZGUgIlRlc3RPYmouaCIKICNpbmNsdWRlICJib29sLmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgpAQCAtMjc5LDYgKzI3Nyw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJvYmpNZXRob2RX
aXRoQXJncyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0
aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJtZXRob2RXaXRoU2Vx
dWVuY2VBcmciLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19j
YXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm1ldGhvZFJl
dHVybmluZ1NlcXVlbmNlIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClz
dGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RSZXR1cm5pbmdTZXF1ZW5jZSksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAorICAgIHsg
Im1ldGhvZFdpdGhFbnVtQXJnIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRW51bUFyZyksIChpbnRwdHJfdCkxLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpLCAoaW50cHRy
X3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzZXJpYWxpemVkVmFsdWUiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZSksIChpbnRwdHJfdCkxLCBO
b0ludHJpbnNpYyB9LAogICAgIHsgIm9wdGlvbnNPYmplY3QiLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMg
fSwKQEAgLTQ1OCw3ICs0NTcsNyBAQCBKU1ZhbHVlIGpzVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwogICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVz
dE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4
ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT5lbnVtQXR0
cigpKSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
LT5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMDg2LDcgKzEwODUs
MTIgQEAgdm9pZCBzZXRKU1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0
KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7
CiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpOwotICAgIGltcGwtPnNldEVudW1BdHRyKHRvVGVzdEVudW1UeXBlKHZhbHVlKSk7Cisg
ICAgU3RyaW5nIHN0cmluZyA9IHZhbHVlLmlzRW1wdHkoKSA/IFN0cmluZygpIDogdmFsdWUudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGlmIChzdHJpbmcgIT0gIiIgJiYgc3RyaW5nICE9ICJFbnVt
VmFsdWUxIiAmJiBzdHJpbmcgIT0gIkVudW1WYWx1ZTIiICYmIHN0cmluZyAhPSAiRW51bVZhbHVl
MyIpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRFbnVtQXR0cihzdHJpbmcpOwogfQog
CiAKQEAgLTE2ODcsNiArMTY5MSwyNSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoRQogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFs
dWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8p
OworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+
aW1wbCgpKTsKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVj
KSk7CisgICAgY29uc3QgU3RyaW5nIGVudW1BcmcoZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgp
ID8gU3RyaW5nKCkgOiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpZiAoZW51bUFyZyAhPSAiIiAmJiBlbnVt
QXJnICE9ICJFbnVtVmFsdWUxIiAmJiBlbnVtQXJnICE9ICJFbnVtVmFsdWUyIiAmJiBlbnVtQXJn
ICE9ICJFbnVtVmFsdWUzIikKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7
CisgICAgaW1wbC0+bWV0aG9kV2l0aEVudW1BcmcoZW51bUFyZyk7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDNjNDUxMzY5ZTc2Mzc5ZmMzMDQ5YjZkYmQ5
NDE5ZGQyNjQ2NGMzMWYuLjAyMjA1ZDI1OWRhOWU5ZDg5NjU3NjRlYzdmNGYxYjE0YjdmZWQ0MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmgKQEAgLTE2MSw2ICsxNjEsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNDOjpFeGVjUwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kV2l0aEFyZ3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoSlNDOjpF
eGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25T
ZXJpYWxpemVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wdGlvbnNPYmplY3QoSlNDOjpF
eGVjU3RhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaAppbmRleCAyYjhlYjg3ODcyNWYxOGEwMjc4ODVjZTViMmMy
ZmYzMTFkY2U2NzhjLi43MTUwMDYxMGY5ZjY0M2RkZTRiODk5OGQ2MGZiZDBiYWI5ZTA0OTdkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMv
RE9NVGVzdE9iai5oCkBAIC0zMyw2ICszMyw3IEBACiBAY2xhc3MgRE9NTm9kZTsKIEBjbGFzcyBE
T01TVkdEb2N1bWVudDsKIEBjbGFzcyBET01TVkdQb2ludDsKK0BjbGFzcyBET01UZXN0RW51bVR5
cGU7CiBAY2xhc3MgRE9NVGVzdE9iajsKIEBjbGFzcyBET01UZXN0T2JqZWN0QUNvbnN0cnVjdG9y
OwogQGNsYXNzIERPTVRlc3RPYmplY3RCQ29uc3RydWN0b3I7CkBAIC0xMjgsNiArMTI5LDcgQEAg
ZW51bSB7CiAtIChpbnQpbG9uZ01ldGhvZFdpdGhBcmdzOihpbnQpbG9uZ0FyZyBzdHJBcmc6KE5T
U3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0gKERPTVRlc3RP
YmogKilvYmpNZXRob2Q7CiAtIChET01UZXN0T2JqICopb2JqTWV0aG9kV2l0aEFyZ3M6KGludCls
b25nQXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2Jq
QXJnOworLSAodm9pZCltZXRob2RXaXRoRW51bUFyZzooRE9NVGVzdEVudW1UeXBlICopZW51bUFy
ZzsKIC0gKERPTVRlc3RPYmogKiltZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzOihO
U1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmc7CiAtICh2b2lkKXNl
cmlhbGl6ZWRWYWx1ZTooTlNTdHJpbmcgKilzZXJpYWxpemVkQXJnOwogLSAodm9pZClvcHRpb25z
T2JqZWN0OihET01EaWN0aW9uYXJ5ICopb28gb29vOihET01EaWN0aW9uYXJ5ICopb29vOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0KaW5kZXggYzg1Y2RjODM3NzcxYTc0YzBhZmRlZGI2ZTM2N2QyMjI5NWQxMDU3Yi4u
M2RhMTQ5MDdjZTlhNGU2ZDNiNmUwMDgyMTZkMDk0MWJhMmI1NTkyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1t
CkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJET01TVkdEb2N1bWVudEludGVybmFsLmgiCiAj
aW1wb3J0ICJET01TVkdQb2ludEludGVybmFsLmgiCiAjaW1wb3J0ICJET01TdHlsZVNoZWV0SW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVRlc3RFbnVtVHlwZUludGVybmFsLmgiCiAjaW1wb3J0ICJE
T01UZXN0T2JqSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVRlc3RPYmplY3RBQ29uc3RydWN0b3JJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvckludGVybmFsLmgi
CkBAIC02MSw2ICs2Miw3IEBACiAjaW1wb3J0ICJTVkdEb2N1bWVudC5oIgogI2ltcG9ydCAiU1ZH
U3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCiAjaW1wb3J0ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKKyNpbXBvcnQgIlRlc3RFbnVtVHlwZS5oIgogI2ltcG9ydCAiVGVzdE9iai5oIgogI2ltcG9y
dCAiVGVzdE9iamVjdEFDb25zdHJ1Y3Rvci5oIgogI2ltcG9ydCAiVGVzdE9iamVjdEJDb25zdHJ1
Y3Rvci5oIgpAQCAtODAzLDYgKzgwNSwxMiBAQAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIo
SU1QTC0+b2JqTWV0aG9kV2l0aEFyZ3MobG9uZ0FyZywgc3RyQXJnLCBjb3JlKG9iakFyZykpKSk7
CiB9CiAKKy0gKHZvaWQpbWV0aG9kV2l0aEVudW1Bcmc6KERPTVRlc3RFbnVtVHlwZSAqKWVudW1B
cmcKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1Q
TC0+bWV0aG9kV2l0aEVudW1BcmcoY29yZShlbnVtQXJnKSk7Cit9CisKIC0gKERPTVRlc3RPYmog
KiltZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzOihOU1N0cmluZyAqKXN0ckFyZyBv
YmpBcmc6KERPTVRlc3RPYmogKilvYmpBcmcKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWRO
dWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwKaW5kZXggZDNmNmYyYjk4NTNiOTQzYmI0Y2E0ZGRkZmU2MmExNDNjOGNl
ZjJjOC4uMmUyNjcwYjU0OTY4MTBkM2VlMjkyN2JmODM2Y2RkNDQ4ZWJhM2RlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtODEs
NiArODEsNyBAQCBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFbnVtVmFs
dWUyIiwgIkVudW1WYWx1ZTMiIH07CiAgICAgdm9pZCBtZXRob2RXaXRoU2VxdWVuY2VBcmcoaW4g
c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4gc2VxdWVuY2VBcmcpOwogICAgIHNlcXVlbmNlPFNjcmlw
dFByb2ZpbGU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlKGluIGxvbmcgbG9uZ0FyZyk7CiAKKyAg
ICB2b2lkIG1ldGhvZFdpdGhFbnVtQXJnKGluIFRlc3RFbnVtVHlwZSBlbnVtQXJnKTsKICAgICBU
ZXN0T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoaW4gRE9NU3RyaW5nIHN0
ckFyZywgaW4gVGVzdE9iaiBvYmpBcmcpCiAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCmluZGV4IDcyMDVhZTEzNjAyMTUyOGI5MzllZTFjMWZmN2JiYjg2Mjg0NzhiZDMu
LmFmYzc1MjMxMzNlY2QwMTE2MGFmZWJiOTBhNGFjY2NhNTk1ZGIxMGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBA
IC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiVjhTVkdQb2ludC5oIgogI2luY2x1ZGUgIlY4U2Ny
aXB0UHJvZmlsZS5oIgogI2luY2x1ZGUgIlY4VGVzdENhbGxiYWNrLmgiCisjaW5jbHVkZSAiVjhU
ZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJWOFRlc3RTdWJPYmouaCIKICNpbmNsdWRlICJWOGEu
aCIKICNpbmNsdWRlICJWOGIuaCIKQEAgLTE4ODEsNiArMTg4MiwyMSBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlTWV0aG9kQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZwogICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kUmV0dXJuaW5n
U2VxdWVuY2VNZXRob2QoYXJncyk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0aG9kV2l0aEVudW1BcmdNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RS
SU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+LCBlbnVtQXJnLCBhcmdzWzBdKTsKKyAgICBp
bXAtPm1ldGhvZFdpdGhFbnVtQXJnKGVudW1BcmcpOworICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OworfQorCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhFbnVtQXJnTWV0
aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhFbnVtQXJnTWV0aG9kKGFyZ3MpOworfQorCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJv
d3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDIpCkBAIC0zMzgzLDYgKzMzOTksMTIgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kK
ICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25h
dHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdj
LCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZENhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWduYXR1cmUpKTsKIAor
ICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhFbnVtQXJnJworICAgIGNvbnN0IGlu
dCBtZXRob2RXaXRoRW51bUFyZ0FyZ2MgPSAxOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG1ldGhvZFdpdGhFbnVtQXJnQXJndlttZXRob2RXaXRoRW51bUFyZ0FyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0RW51
bVR5cGU6OmluZm8pIH07CisgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRo
RW51bUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoRW51
bUFyZ0FyZ2MsIG1ldGhvZFdpdGhFbnVtQXJnQXJndik7CisgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhFbnVtQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhFbnVtQXJnTWV0aG9kQ2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhFbnVtQXJnU2lnbmF0dXJlKSk7CisKICAgICAvLyBD
dXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzJwogICAg
IGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYyA9IDI7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxs
QXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2Nd
ID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvLCB3b3JsZFR5cGUp
IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193621</attachid>
            <date>2013-03-18 11:57:25 -0700</date>
            <delta_ts>2013-03-19 17:35:56 -0700</delta_ts>
            <desc>patch modification: use a reference to String to avoid a copy</desc>
            <filename>bug-112475-20130318115315.patch</filename>
            <type>text/plain</type>
            <size>21894</size>
            <attacher name="arno.">a.renevier</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRlY2NiMjFkYTUyMjA4
ZDQ2NjIyNmNhMGJhNmNmZmY5OTM0ZjBiMy4uNzNlN2Q1YWM2YzcyNDI0NzNhYjEwNmQ0Yjk1NDNj
YTBjNzc1NGNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAzLTE1ICBBcm5h
dWQgUmVuZXZpZXIgIDxhLnJlbmV2aWVyQHNpc2Euc2Ftc3VuZy5jb20+CisKKyAgICAgICAgQWRk
IElETCAnZW51bScgc3VwcG9ydCB0byBDb2RlR2VuZXJhdG9ySlMucG0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ3NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciBl
bnVtZXJhdGlvbnMgaW4gSlMsIGFkZGluZyB2YWxpZGF0aW9uIGNoZWNraW5nCisgICAgICAgIHRv
IHNldHRlcnMuCisgICAgICAgIEl0IGFsc28gZG9lcyB2YWxpZGF0aW9uIGNoZWNraW5nIHRvIG1l
dGhvZHMsIGFuZCBhIG5ldyBtZXRob2QKKyAgICAgICAgbWV0aG9kV2l0aEVudW1BcmcgaW4gVGVz
dE9iai5pZGwKKworICAgICAgICBUZXN0OiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5p
ZGwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAg
ICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRl
cnNDaGVjayk6CisgICAgICAgIChOYXRpdmVUb0pTVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJET01UZXN0
T2JqOjptZXRob2RXaXRoRW51bUFyZyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHA6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X21ldGhvZF93aXRoX2VudW1fYXJnKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
R09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdE9iakVudW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9iakVu
dW1BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEVudW1BcmcpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
T2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2JqIG1ldGhvZFdpdGhFbnVt
QXJnOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoRW51bUFyZ01ldGhvZCk6Cisg
ICAgICAgIChUZXN0T2JqVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisKIDIwMTMtMDMtMTEgIEFybmF1ZCBS
ZW5ldmllciAgPGEucmVuZXZpZXJAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBXaGl0ZXNw
YWNlIGluIHBhcnRpY3VsYXIgc291cmNlIGNvZGUgY2hhbmdlcyByZW5kZXJpbmc7IGRvZXMgbm90
IGluIEZpcmVmb3gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggNDE5YjMyN2VmMDhmY2U1NDEyNGJhZDQ0NTkzNjI1ZTZkOTY1
MmI1NC4uY2VlOWJkZGIzY2Y3NDkyMDI3ZTA4YWJlNmVjNDRjMjNhZDNkMzE1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTIxNDcsNyArMjE0NywyMyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJG5hdGl2ZVZhbHVl
ID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRuYXRpdmVWYWx1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBl
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgU3RyaW5nJiBzdHJpbmcgPSB2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTtcbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSBAZW51bVZhbHVlcyA9ICRjb2RlR2VuZXJhdG9yLT5WYWxpZEVu
dW1WYWx1ZXMoJHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkg
QGVudW1DaGVja3MgPSAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cmVhY2ggbXkgJGVudW1WYWx1ZSAoQGVudW1WYWx1ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBlbnVtQ2hlY2tzLCAic3RyaW5nICE9IFwiJGVudW1W
YWx1ZVwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIChAaW1wbENvbnRlbnQsICIgICAgaWYg
KCIgLiBqb2luKCIgJiYgIiwgQGVudW1DaGVja3MpIC4gIilcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaCAoQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRuYXRpdmVWYWx1ZSA9
ICJzdHJpbmciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hdGl2ZVZhbHVlID0gSlNWYWx1ZVRv
TmF0aXZlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbXBsLT5p
c1JlYWRPbmx5KCkpIHtcbiIpOwpAQCAtMjc3MSw2ICsyNzg3LDIxIEBAIHN1YiBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTtcbiIpOwogICAgICAgICAg
ICAgfQogCisgICAgICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCRhcmdU
eXBlKSkgeworICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9
IDE7CisKKyAgICAgICAgICAgIG15ICRhcmdWYWx1ZSA9ICJleGVjLT5hcmd1bWVudCgkYXJnc0lu
ZGV4KSI7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgY29uc3QgU3RyaW5n
JiAke25hbWV9KCR7YXJnVmFsdWV9LmlzRW1wdHkoKSA/IFN0cmluZygpIDogJHthcmdWYWx1ZX0u
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOworICAgICAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpO1xuIik7CisKKyAgICAgICAgICAgIG15IEBlbnVtVmFsdWVzID0gJGNvZGVH
ZW5lcmF0b3ItPlZhbGlkRW51bVZhbHVlcygkYXJnVHlwZSk7CisgICAgICAgICAgICBteSBAZW51
bUNoZWNrcyA9ICgpOworICAgICAgICAgICAgZm9yZWFjaCBteSAkZW51bVZhbHVlIChAZW51bVZh
bHVlcykgeworICAgICAgICAgICAgICAgIHB1c2goQGVudW1DaGVja3MsICIke25hbWV9ICE9IFwi
JGVudW1WYWx1ZVwiIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoIChAJG91dHB1
dEFycmF5LCAiICAgIGlmICgiIC4gam9pbigiICYmICIsIEBlbnVtQ2hlY2tzKSAuICIpXG4iKTsK
KyAgICAgICAgICAgIHB1c2ggKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMpO1xuIik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAjIElm
IHRoZSAiU3RyaWN0VHlwZUNoZWNraW5nIiBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcHJlc2VudCwg
YW5kIHRoZSBhcmd1bWVudCdzIHR5cGUgaXMgYW4KICAgICAgICAgICAgICMgaW50ZXJmYWNlIHR5
cGUsIHRoZW4gaWYgdGhlIGluY29taW5nIHZhbHVlIGRvZXMgbm90IGltcGxlbWVudCB0aGF0IGlu
dGVyZmFjZSwgYSBUeXBlRXJyb3IKQEAgLTMyNzcsNiArMzMwOCwxMSBAQCBzdWIgTmF0aXZlVG9K
U1ZhbHVlCiAgICAgICAgIHJldHVybiAianNOdW1iZXIoJHZhbHVlKSI7CiAgICAgfQogCisgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0VudW1UeXBlKCR0eXBlKSkgeworICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiPHJ1bnRpbWUvSlNTdHJpbmcuaD4iLCAkY29uZGl0aW9uYWwpOworICAgICAg
ICByZXR1cm4gImpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsICR2YWx1ZSkiOworICAgIH0KKwogICAg
IGlmICgkY29kZUdlbmVyYXRvci0+SXNTdHJpbmdUeXBlKCR0eXBlKSkgewogICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiS1VSTC5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgbXkgJGNvbnYg
PSAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVHJlYXRSZXR1cm5lZE51bGxTdHJp
bmdBcyJ9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKaW5kZXggNWQwOTViNjZhMzVjNjc3NjllOWE3MWM1
M2VlODQ0YTY1MjE2ZGZhNy4uZDY1MTAxMDk1YTJkYjdmOTQ1NzlhZTEwMWQ3NjNlOTkyZmNmMjUz
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCkBAIC0yOCwxMiArMjgsMTQgQEAKICNpbmNsdWRlICJO
b2RlLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJUZXN0RW51bVR5cGUuaCIKICNpbmNsdWRlICJXZWJET01EaWN0
aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV2ViRE9NRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJET01O
b2RlLmgiCiAjaW5jbHVkZSAiV2ViRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViRE9NU1ZHUG9p
bnQuaCIKICNpbmNsdWRlICJXZWJET01TdHJpbmcuaCIKKyNpbmNsdWRlICJXZWJET01UZXN0RW51
bVR5cGUuaCIKICNpbmNsdWRlICJXZWJET01UZXN0T2JqLmgiCiAjaW5jbHVkZSAiV2ViRE9NYS5o
IgogI2luY2x1ZGUgIldlYkRPTWIuaCIKQEAgLTc4NSw2ICs3ODcsMTQgQEAgV2ViRE9NVGVzdE9i
aiBXZWJET01UZXN0T2JqOjpvYmpNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2Vi
RE9NU3RyaW5nJgogICAgIHJldHVybiB0b1dlYktpdChXVEY6OmdldFB0cihpbXBsKCktPm9iak1l
dGhvZFdpdGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgdG9XZWJDb3JlKG9iakFyZykpKSk7CiB9CiAK
K3ZvaWQgV2ViRE9NVGVzdE9iajo6bWV0aG9kV2l0aEVudW1BcmcoY29uc3QgV2ViRE9NVGVzdEVu
dW1UeXBlJiBlbnVtQXJnKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpbXBsKCktPm1ldGhvZFdpdGhFbnVtQXJnKHRvV2ViQ29yZShlbnVtQXJnKSk7Cit9CisK
IFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93cyhjb25zdCBXZWJET01TdHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYg
b2JqQXJnKQogewogICAgIGlmICghaW1wbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAppbmRleCBkODJiNzgy
NWFhM2Q4NjQzNjk4OTBmMDcxYjk5ZTM4YjdiYzA4NzQ1Li5jMWMxN2QyNWQ3MjQxMTRiYmJmMDhi
ZjJiZWRjN2ZlMTBkOWQ3YTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaApAQCAtMzcsNiArMzcsNyBAQCBj
bGFzcyBXZWJET01Ob2RlOwogY2xhc3MgV2ViRE9NT2JqZWN0OwogY2xhc3MgV2ViRE9NU1ZHUG9p
bnQ7CiBjbGFzcyBXZWJET01TdHJpbmc7CitjbGFzcyBXZWJET01UZXN0RW51bVR5cGU7CiBjbGFz
cyBXZWJET01UZXN0T2JqOwogY2xhc3MgV2ViRE9NYTsKIGNsYXNzIFdlYkRPTWI7CkBAIC0xNjAs
NiArMTYxLDcgQEAgcHVibGljOgogICAgIGludCBsb25nTWV0aG9kV2l0aEFyZ3MoaW50IGxvbmdB
cmcsIGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25zdCBXZWJET01UZXN0T2JqJiBvYmpB
cmcpOwogICAgIFdlYkRPTVRlc3RPYmogb2JqTWV0aG9kKCk7CiAgICAgV2ViRE9NVGVzdE9iaiBv
YmpNZXRob2RXaXRoQXJncyhpbnQgbG9uZ0FyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcs
IGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZyk7CisgICAgdm9pZCBtZXRob2RXaXRoRW51bUFy
Zyhjb25zdCBXZWJET01UZXN0RW51bVR5cGUmIGVudW1BcmcpOwogICAgIFdlYkRPTVRlc3RPYmog
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhjb25zdCBXZWJET01TdHJpbmcmIHN0
ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKICAgICB2b2lkIHNlcmlhbGl6ZWRW
YWx1ZShjb25zdCBXZWJET01TdHJpbmcmIHNlcmlhbGl6ZWRBcmcpOwogICAgIHZvaWQgb3B0aW9u
c09iamVjdChjb25zdCBXZWJET01EaWN0aW9uYXJ5JiBvbywgY29uc3QgV2ViRE9NRGljdGlvbmFy
eSYgb29vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKaW5kZXggM2Y5OGNiN2Zi
ZDdmMDQ3Zjg0YTU2NTNlOWNiMmVlMjQ4YjgwOTk1Mi4uMjZjMDY2OWU2MDdiYmMwYTNmZGZhNDgy
ZTQ1NGVmNWVmMjVkMTYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJLaXRET01Ob2RlUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIldlYktpdERPTVNWR1BvaW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTVNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZVByaXZhdGUuaCIKKyNpbmNsdWRlICJXZWJLaXRET01UZXN0RW51bVR5
cGVQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NVGVzdE9ialByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRET01hUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTWJQcml2YXRlLmgi
CkBAIC0xMDYwLDYgKzEwNjEsMTcgQEAgd2Via2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dp
dGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBsb25nQXJnLAogICAgIHJldHVy
biBXZWJLaXQ6OmtpdChnb2JqZWN0UmVzdWx0LmdldCgpKTsKIH0KIAordm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial9tZXRob2Rfd2l0aF9lbnVtX2FyZyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBX
ZWJLaXRET01UZXN0RW51bVR5cGUqIGVudW1BcmcpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19U
RVNUX09CSihzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1Rf
RU5VTV9UWVBFKGVudW1BcmcpKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqKiBpdGVtID0gV2ViS2l0
Ojpjb3JlKHNlbGYpOworICAgIFdlYkNvcmU6OlRlc3RFbnVtVHlwZSogY29udmVydGVkRW51bUFy
ZyA9IFdlYktpdDo6Y29yZShlbnVtQXJnKTsKKyAgICBpdGVtLT5tZXRob2RXaXRoRW51bUFyZyhj
b252ZXJ0ZWRFbnVtQXJnKTsKK30KKwogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVz
dF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5kX3Rocm93cyhXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2JqKiBvYmpB
cmcsIEdFcnJvcioqIGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4
IDgzNGNhZjcwZjY3YmNiZjI5MzBhYTVhNjY0NWJlY2FhMGI3MTVhMDcuLmFmNTM2YjA5MzRmNzJi
ZjVhYjU5ODQ1YmI5ZTdhMWM3ZWIxYWZkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmgKQEAgLTExOSw2ICsxMTksMTcgQEAgV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgogd2Vi
a2l0X2RvbV90ZXN0X29ial9vYmpfbWV0aG9kX3dpdGhfYXJncyhXZWJLaXRET01UZXN0T2JqKiBz
ZWxmLCBnbG9uZyBsb25nQXJnLCBjb25zdCBnY2hhciogc3RyQXJnLCBXZWJLaXRET01UZXN0T2Jq
KiBvYmpBcmcpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51
bV9hcmc6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVudW1Bcmc6IEEgI1dl
YktpdERPTVRlc3RFbnVtVHlwZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfZW51bV9hcmcoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdEVudW1UeXBlKiBlbnVtQXJnKTsKKworLyoqCiAg
KiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF90aGF0X3JlcXVpcmVzX2FsbF9hcmdzX2FuZF90
aHJvd3M6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICogQHN0ckFyZzogQSAjZ2No
YXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggNDUyMmU0MzhjMzBmZTA5ZWMwMDk2NzFmM2VhZWEzYWMwZGI4NmFl
OC4uZDUwMWQ5YWMzOTRiOWM4NzAxMzQzZThlZTdhYThhZTllNDQxMDZmYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJKU1NWR1BvaW50LmgiCiAjaW5jbHVkZSAiSlNT
Y3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2FsbGJhY2suaCIKLSNpbmNsdWRlICJK
U1Rlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIkpTVGVzdE9iai5oIgogI2luY2x1ZGUgIkpTVGVz
dFN1Yk9iai5oIgogI2luY2x1ZGUgIkpTYS5oIgpAQCAtNTIsNyArNTEsNiBAQAogI2luY2x1ZGUg
IlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlLmgiCiAj
aW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVGVzdEVudW1UeXBl
LmgiCiAjaW5jbHVkZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgImJvb2wuaCIKICNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CkBAIC0yNzksNiArMjc3LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJs
ZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQogICAgIHsgIm9iak1ldGhv
ZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNf
Y2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RX
aXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0aG9k
UmV0dXJuaW5nU2VxdWVuY2UiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90
KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFJldHVybmluZ1NlcXVlbmNlKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAg
eyAibWV0aG9kV2l0aEVudW1BcmciLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0
cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhFbnVtQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAi
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsIERvbnREZWxldGUgfCBKU0M6OkZ1
bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyksIChpbnRw
dHJfdCkyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNlcmlhbGl6ZWRWYWx1ZSIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKSwgKGludHB0cl90KTEs
IE5vSW50cmluc2ljIH0sCiAgICAgeyAib3B0aW9uc09iamVjdCIsIERvbnREZWxldGUgfCBKU0M6
OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdCksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNp
YyB9LApAQCAtNDU4LDcgKzQ1Nyw3IEBAIEpTVmFsdWUganNUZXN0T2JqRW51bUF0dHIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBQcm9wZXJ0eU5hbWUpCiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwogICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxU
ZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMo
ZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPmVudW1B
dHRyKCkpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGlt
cGwtPmVudW1BdHRyKCkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEwODYsNyArMTA4
NSwxMiBAQCB2b2lkIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwog
ICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0aGlzT2JqZWN0
KTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMt
PmltcGwoKSk7Ci0gICAgaW1wbC0+c2V0RW51bUF0dHIodG9UZXN0RW51bVR5cGUodmFsdWUpKTsK
KyAgICBTdHJpbmcgc3RyaW5nID0gdmFsdWUuaXNFbXB0eSgpID8gU3RyaW5nKCkgOiB2YWx1ZS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKHN0cmluZyAhPSAiIiAmJiBzdHJpbmcgIT0gIkVu
dW1WYWx1ZTEiICYmIHN0cmluZyAhPSAiRW51bVZhbHVlMiIgJiYgc3RyaW5nICE9ICJFbnVtVmFs
dWUzIikKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwtPnNldEVudW1BdHRyKHN0cmluZyk7CiB9
CiAKIApAQCAtMTY4Nyw2ICsxNjkxLDI1IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShFCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNW
YWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4
ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcgZW51bUFyZyhleGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5
KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmIChlbnVtQXJnICE9ICIiICYmIGVu
dW1BcmcgIT0gIkVudW1WYWx1ZTEiICYmIGVudW1BcmcgIT0gIkVudW1WYWx1ZTIiICYmIGVudW1B
cmcgIT0gIkVudW1WYWx1ZTMiKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKKyAgICBpbXBsLT5tZXRob2RXaXRoRW51bUFyZyhlbnVtQXJnKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJn
c0FuZFRocm93cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBl
eGVjLT5ob3N0VGhpc1ZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKaW5kZXggM2M0NTEzNjllNzYzNzlmYzMwNDliNmRi
ZDk0MTlkZDI2NDY0YzMxZi4uMDIyMDVkMjU5ZGE5ZTlkODk2NTc2NGVjN2Y0ZjFiMTRiN2ZlZDQy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouaApAQCAtMTYxLDYgKzE2MSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChKU0M6OkV4ZWNTCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVl
bmNlQXJnKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RSZXR1cm5pbmdTZXF1ZW5jZShKU0M6
OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNlcmlhbGl6ZWRWYWx1ZShKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3B0aW9uc09iamVjdChKU0M6
OkV4ZWNTdGF0ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDJiOGViODc4NzI1ZjE4YTAyNzg4NWNlNWIy
YzJmZjMxMWRjZTY3OGMuLjcxNTAwNjEwZjlmNjQzZGRlNGI4OTk4ZDYwZmJkMGJhYjllMDQ5N2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RP
TVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLmgKQEAgLTMzLDYgKzMzLDcgQEAKIEBjbGFzcyBET01Ob2RlOwogQGNsYXNz
IERPTVNWR0RvY3VtZW50OwogQGNsYXNzIERPTVNWR1BvaW50OworQGNsYXNzIERPTVRlc3RFbnVt
VHlwZTsKIEBjbGFzcyBET01UZXN0T2JqOwogQGNsYXNzIERPTVRlc3RPYmplY3RBQ29uc3RydWN0
b3I7CiBAY2xhc3MgRE9NVGVzdE9iamVjdEJDb25zdHJ1Y3RvcjsKQEAgLTEyOCw2ICsxMjksNyBA
QCBlbnVtIHsKIC0gKGludClsb25nTWV0aG9kV2l0aEFyZ3M6KGludClsb25nQXJnIHN0ckFyZzoo
TlNTdHJpbmcgKilzdHJBcmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVz
dE9iaiAqKW9iak1ldGhvZDsKIC0gKERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJnczooaW50
KWxvbmdBcmcgc3RyQXJnOihOU1N0cmluZyAqKXN0ckFyZyBvYmpBcmc6KERPTVRlc3RPYmogKilv
YmpBcmc7CistICh2b2lkKW1ldGhvZFdpdGhFbnVtQXJnOihET01UZXN0RW51bVR5cGUgKillbnVt
QXJnOwogLSAoRE9NVGVzdE9iaiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3M6
KE5TU3RyaW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKIC0gKHZvaWQp
c2VyaWFsaXplZFZhbHVlOihOU1N0cmluZyAqKXNlcmlhbGl6ZWRBcmc7CiAtICh2b2lkKW9wdGlv
bnNPYmplY3Q6KERPTURpY3Rpb25hcnkgKilvbyBvb286KERPTURpY3Rpb25hcnkgKilvb287CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9N
VGVzdE9iai5tbQppbmRleCBjODVjZGM4Mzc3NzFhNzRjMGFmZGVkYjZlMzY3ZDIyMjk1ZDEwNTdi
Li4zZGExNDkwN2NlOWE0ZTZkM2I2ZTAwODIxNmQwOTQxYmEyYjU1OTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgIkRPTVNWR0RvY3VtZW50SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIkRPTVNWR1BvaW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVN0eWxlU2hlZXRJ
bnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NVGVzdEVudW1UeXBlSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTVRlc3RPYmpJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NVGVzdE9iamVjdEFDb25zdHJ1Y3Rv
ckludGVybmFsLmgiCiAjaW1wb3J0ICJET01UZXN0T2JqZWN0QkNvbnN0cnVjdG9ySW50ZXJuYWwu
aCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbXBvcnQgIlNWR0RvY3VtZW50LmgiCiAjaW1wb3J0ICJT
VkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmYuaCIKICNpbXBvcnQgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgorI2ltcG9ydCAiVGVzdEVudW1UeXBlLmgiCiAjaW1wb3J0ICJUZXN0T2JqLmgiCiAjaW1w
b3J0ICJUZXN0T2JqZWN0QUNvbnN0cnVjdG9yLmgiCiAjaW1wb3J0ICJUZXN0T2JqZWN0QkNvbnN0
cnVjdG9yLmgiCkBAIC04MDMsNiArODA1LDEyIEBACiAgICAgcmV0dXJuIGtpdChXVEY6OmdldFB0
cihJTVBMLT5vYmpNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSkp
KTsKIH0KIAorLSAodm9pZCltZXRob2RXaXRoRW51bUFyZzooRE9NVGVzdEVudW1UeXBlICopZW51
bUFyZworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJ
TVBMLT5tZXRob2RXaXRoRW51bUFyZyhjb3JlKGVudW1BcmcpKTsKK30KKwogLSAoRE9NVGVzdE9i
aiAqKW1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3M6KE5TU3RyaW5nICopc3RyQXJn
IG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZwogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0T2JqLmlkbAppbmRleCBkM2Y2ZjJiOTg1M2I5NDNiYjRjYTRkZGRmZTYyYTE0M2M4
Y2VmMmM4Li4yZTI2NzBiNTQ5NjgxMGQzZWUyOTI3YmY4MzZjZGQ0NDhlYmEzZGUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC04
MSw2ICs4MSw3IEBAIGVudW0gVGVzdEVudW1UeXBlIHsgIiIsICJFbnVtVmFsdWUxIiwgIkVudW1W
YWx1ZTIiLCAiRW51bVZhbHVlMyIgfTsKICAgICB2b2lkIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhp
biBzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiBzZXF1ZW5jZUFyZyk7CiAgICAgc2VxdWVuY2U8U2Ny
aXB0UHJvZmlsZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoaW4gbG9uZyBsb25nQXJnKTsKIAor
ICAgIHZvaWQgbWV0aG9kV2l0aEVudW1BcmcoaW4gVGVzdEVudW1UeXBlIGVudW1BcmcpOwogICAg
IFRlc3RPYmogbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhpbiBET01TdHJpbmcg
c3RyQXJnLCBpbiBUZXN0T2JqIG9iakFyZykKICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggNzIwNWFlMTM2MDIxNTI4YjkzOWVlMWMxZmY3YmJiODYyODQ3OGJk
My4uYWZjNzUyMzEzM2VjZDAxMTYwYWZlYmI5MGE0YWNjY2E1OTVkYjEwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJWOFNWR1BvaW50LmgiCiAjaW5jbHVkZSAiVjhT
Y3JpcHRQcm9maWxlLmgiCiAjaW5jbHVkZSAiVjhUZXN0Q2FsbGJhY2suaCIKKyNpbmNsdWRlICJW
OFRlc3RFbnVtVHlwZS5oIgogI2luY2x1ZGUgIlY4VGVzdFN1Yk9iai5oIgogI2luY2x1ZGUgIlY4
YS5oIgogI2luY2x1ZGUgIlY4Yi5oIgpAQCAtMTg4MSw2ICsxODgyLDIxIEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VNZXRob2RDYWxsYmFjayhj
b25zdCB2ODo6QXJnCiAgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RSZXR1cm5p
bmdTZXF1ZW5jZU1ldGhvZChhcmdzKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RXaXRoRW51bUFyZ01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdo
QXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgVjhUUllDQVRDSF9GT1JfVjhT
VFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPD4sIGVudW1BcmcsIGFyZ3NbMF0pOworICAg
IGltcC0+bWV0aG9kV2l0aEVudW1BcmcoZW51bUFyZyk7CisgICAgcmV0dXJuIHY4VW5kZWZpbmVk
KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEVudW1BcmdN
ZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIHJldHVybiBU
ZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2QoYXJncyk7Cit9CisKIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKQEAgLTMzODMsNiArMzM5OSwxMiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJz
aQogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2ln
bmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwog
CisgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aEVudW1BcmcnCisgICAgY29uc3Qg
aW50IG1ldGhvZFdpdGhFbnVtQXJnQXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbWV0aG9kV2l0aEVudW1BcmdBcmd2W21ldGhvZFdpdGhFbnVtQXJnQXJnY10g
PSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RF
bnVtVHlwZTo6aW5mbykgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdp
dGhFbnVtQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhF
bnVtQXJnQXJnYywgbWV0aG9kV2l0aEVudW1BcmdBcmd2KTsKKyAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aEVudW1BcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aEVudW1BcmdNZXRob2RDYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aEVudW1BcmdTaWduYXR1cmUpKTsKKwogICAgIC8v
IEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MnCiAg
ICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjID0gMjsK
ICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJn
Y10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlw
ZSkgfTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>