<?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>81345</bug_id>
          
          <creation_ts>2012-03-16 06:28:01 -0700</creation_ts>
          <short_desc>IDLParser.pm should support sequence&lt;T&gt; type</short_desc>
          <delta_ts>2012-03-16 20:15:03 -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>
          
          <blocked>80696</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>code.vineet</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580449</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-16 06:28:01 -0700</bug_when>
    <thetext>Currently IDLParser.pm cannot understand sequence&lt;T&gt; type. We should support it. This is a preparing patch for fixing 80696.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580459</commentid>
    <comment_count>1</comment_count>
      <attachid>132270</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-16 06:36:54 -0700</bug_when>
    <thetext>Created attachment 132270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580462</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 06:39:58 -0700</bug_when>
    <thetext>Attachment 132270 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h:154:  Extra space before )  [whitespace/parens] [2]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:63:  &quot;webkit/WebKitDOMsequence&lt;ScriptProfile&quot; already included at Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:62  [build/include] [4]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:175:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:188:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:819:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:832:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 6 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580463</commentid>
    <comment_count>3</comment_count>
      <attachid>132270</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-16 06:39:59 -0700</bug_when>
    <thetext>Comment on attachment 132270
Patch

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

&gt; Source/WebCore/bindings/scripts/IDLStructure.pm:106
&gt; +our $interfaceSelector = &apos;interface\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|]*)&apos;;

It took me one hour to notice this change...:-) Maybe it is time to refactor the IDL parser to a recursive parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580479</commentid>
    <comment_count>4</comment_count>
      <attachid>132270</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 06:56:40 -0700</bug_when>
    <thetext>Comment on attachment 132270
Patch

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

I suspect you need to update the CodeGenerator pm files to do something sane with this type.  Maybe the way we handle Foo[] is a good example to build from there?

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:46
&gt; +#include &quot;JSsequence&lt;ScriptProfile&gt;.h&quot;

This looks pretty broken.

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp:55
&gt; +#include &quot;V8sequence&lt;ScriptProfile&gt;.h&quot;

This too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580480</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 06:57:03 -0700</bug_when>
    <thetext>I see.  You&apos;re just going to do the code generation parts later....   Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580481</commentid>
    <comment_count>6</comment_count>
      <attachid>132270</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-16 06:57:49 -0700</bug_when>
    <thetext>Comment on attachment 132270
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/IDLStructure.pm:106
&gt;&gt; +our $interfaceSelector = &apos;interface\s*((?:&apos; . $extendedAttributeSyntax . &apos; )?)(&apos; . $idlIdNs . &apos;*)\s*(?::(\s*[^{]*))?{([-a-zA-Z0-9_&quot;=\s(),;:\[\]&lt;&gt;&amp;\|]*)&apos;;
&gt; 
&gt; It took me one hour to notice this change...:-) Maybe it is time to refactor the IDL parser to a recursive parser.

We have a recursive version in Python, but I&apos;m not sure we want to re-write everything in Python...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580483</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-16 06:58:23 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; I see.  You&apos;re just going to do the code generation parts later....   Ok.

Yes, I was just asked to fix the parser side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580485</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-16 07:01:32 -0700</bug_when>
    <thetext>Committed r111004: &lt;http://trac.webkit.org/changeset/111004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581235</commentid>
    <comment_count>9</comment_count>
    <who name="Vineet Chaudhary (vineetc)">code.vineet</who>
    <bug_when>2012-03-16 20:15:03 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; I see.  You&apos;re just going to do the code generation parts later....   Ok.
&gt; 
&gt; Yes, I was just asked to fix the parser side.

Thank you haraken for the fix.
I am to provide codegenerator fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132270</attachid>
            <date>2012-03-16 06:36:54 -0700</date>
            <delta_ts>2012-03-16 06:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81345-20120316223652.patch</filename>
            <type>text/plain</type>
            <size>34812</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwOTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU0ZDkyZTdkNjE2YWMy
YzExNmI2ZDAyYTBmMzkxM2YyOTAxZjJiMS4uNjNlYTE4ODQwOTMzZTdmZWJiZDQ1YTE3ZWVlMjc4
NWZjZjg4MjgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTAzLTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBUaGUgSURMIHBhcnNl
ciBzaG91bGQgc3VwcG9ydCBzZXF1ZW5jZTxUPiB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIElETCBwYXJzZXIg
c3VwcG9ydCBzZXF1ZW5jZTxUPiB0eXBlLgorICAgICAgICBUaGlzIHBhdGNoIGp1c3QgbWFrZXMg
c2VxdWVuY2U8VD4gcGFyc2VhYmxlLCBhbmQgdGhlIGdlbmVyYXRlZCBjb2RlCisgICAgICAgIGZv
ciBzZXF1ZW5jZTxUPiBpcyB3cm9uZy4gVGhpcyBpc3N1ZSB3aWxsIGJlIHNvb24gZml4ZWQgaW4g
YnVnIDgwNjk2LgorICAgICAgICBUaGlzIGlzIGEgcHJlcGFyaW5nIHBhdGNoIGZvciBidWcgODA2
OTYuCisKKyAgICAgICAgVGVzdDogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFkZGVkIHRlc3Rz
IGZvciBzZXF1ZW5jZTxUPi4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMU3RydWN0
dXJlLnBtOiBVcGRhdGVkIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIHN1cHBvcnQgc2VxdWVu
Y2U8VD4uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RP
YmouY3BwOiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHRzLgorICAgICAgICAoV2Vi
RE9NVGVzdE9iajo6c2VxdWVuY2VBdHRyKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OnNldFNl
cXVlbmNlQXR0cik6CisgICAgICAgIChXZWJET01UZXN0T2JqOjptZXRob2RXaXRoU2VxdWVuY2VB
cmcpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3Bw
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9zZXF1ZW5jZV9hcmcp
OgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfcmV0dXJuaW5nX3NlcXVlbmNl
KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3NlcXVlbmNlX2F0dHIpOgorICAg
ICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfc2VxdWVuY2VfYXR0cik6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2NsYXNzX2luaXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqU2VxdWVuY2VBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialNl
cXVlbmNlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmg6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbToKKyAgICAgICAgKC1bRE9N
VGVzdE9iaiBzZXF1ZW5jZUF0dHJdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiBzZXRTZXF1ZW5j
ZUF0dHI6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogbWV0aG9kV2l0aFNlcXVlbmNlQXJnOl0p
OgorICAgICAgICAoLVtET01UZXN0T2JqIG1ldGhvZFJldHVybmluZ1NlcXVlbmNlOl0pOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9iakludGVybmFsOjpzZXF1ZW5jZUF0dHJBdHRyR2V0dGVyKToKKyAgICAg
ICAgKFRlc3RPYmpJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6
OnNlcXVlbmNlQXR0ckF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVy
bmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0
ZSk6CisKIDIwMTItMDMtMTUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtSZWZhY3RvcmluZ10gUmVuYW1lIFN0cmluZ0J1aWxkZXIgdmFyaWFibGVzIGlu
IE1hcmt1cEFjY3VtdWxhdG9yLntoLGNwcH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMU3RydWN0dXJlLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0KaW5kZXggNjNmNDA5MGU5ZDU1YTU2YWVkYmQ2ZTY0NDli
NDllODAzZjM5ODFhZC4uNzc1ZDk3NWYxOTNjYWZkNmYwNmNiNzI5MmM0N2QzMjY1ODZlM2VkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUu
cG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExTdHJ1Y3R1cmUucG0K
QEAgLTg4LDcgKzg4LDcgQEAgb3VyICRjb25zdFZhbHVlID0gJygiW14iXHJcbl0qIil8KDBbeFhd
W2EtZkEtRjAtOV0rKXwoLT9bMC05XSopJzsKIG91ciAkaWRsRGF0YVR5cGUgPSAnW2EtekEtWjAt
OVwgXSc7ICAgIyBHZW5lcmljIGRhdGEgdHlwZSBpZGVudGlmaWVyCiAKICMgTWFnaWMgSURMIHBh
cnNpbmcgcmVndWxhciBleHByZXNzaW9ucwotbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzooPzp1
bnNpZ25lZCApPyg/OmludHxzaG9ydHwoPzpsb25nICk/bG9uZyl8KD86JGlkbElkTnMqKSkoPzpc
XFtcXF0pPykiOworbXkgJHN1cHBvcnRlZFR5cGVzID0gIigoPzooPzp1bnNpZ25lZCApPyg/Omlu
dHxzaG9ydHwoPzpsb25nICk/bG9uZyl8KD86JGlkbElkTnMqKSkoPzpcXFtcXF18PCg/OiRpZGxJ
ZE5zKik+KT8pIjsKIAogIyBTcGVjaWFsIElETCBub3RhdGlvbnMuIFRoaXMgcmVndWxhciBleHBy
ZXNzaW9uIGV4dHJhY3RzIHRoZSBzdHJpbmcgYmV0d2VlbiB0aGUgZmlyc3QgWyBhbmQgaXRzIGNv
cnJlc3BvbmRpbmcgXS4KIG91ciAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggPSBxci9cW1teXFtc
XV0qKD86KD8/eyRJRExTdHJ1Y3R1cmU6OmV4dGVuZGVkQXR0cmlidXRlU3ludGF4fSlbXlxbXF1d
KikqXF0veDsgIyBVc2VkIGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzCkBAIC0xMDMsNyArMTAzLDcg
QEAgb3VyICRzZXR0ZXJSYWlzZXNTZWxlY3RvciA9ICdcYnNldHRlclxzK3JhaXNlc1xzKlwoKCcg
LiAkaWRsSWROc0xpc3QgLiAnKilccypcKScKIAogb3VyICR0eXBlTmFtZXNwYWNlU2VsZWN0b3Ig
PSAnKCg/OicgLiAkaWRsSWQgLiAnKjo6KSopXHMqKCcgLiAkaWRsRGF0YVR5cGUgLiAnKiknOwog
Ci1vdXIgJGludGVyZmFjZVNlbGVjdG9yID0gJ2ludGVyZmFjZVxzKigoPzonIC4gJGV4dGVuZGVk
QXR0cmlidXRlU3ludGF4IC4gJyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntd
KikpP3soWy1hLXpBLVowLTlfIj1ccygpLDs6XFtcXSZcfF0qKSc7CitvdXIgJGludGVyZmFjZVNl
bGVjdG9yID0gJ2ludGVyZmFjZVxzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4g
JyApPykoJyAuICRpZGxJZE5zIC4gJyopXHMqKD86OihccypbXntdKikpP3soWy1hLXpBLVowLTlf
Ij1ccygpLDs6XFtcXTw+Jlx8XSopJzsKIG91ciAkaW50ZXJmYWNlTWV0aG9kU2VsZWN0b3IgPSAn
XHMqKCg/OicgLiAkZXh0ZW5kZWRBdHRyaWJ1dGVTeW50YXggLiAnICk/KShzdGF0aWNccyspPycg
LiAkc3VwcG9ydGVkVHlwZXMgLiAnXHMqKCcgLiAkaWRsSWROcyAuICcqKVxzKlwoXHMqKFthLXpB
LVowLTk6XHMsPVxbXF1dKiknOwogb3VyICRpbnRlcmZhY2VQYXJhbWV0ZXJTZWxlY3RvciA9ICco
aW58b3V0KVxzKigoPzonIC4gJGV4dGVuZGVkQXR0cmlidXRlU3ludGF4IC4gJyApPyknIC4gJHN1
cHBvcnRlZFR5cGVzIC4gJ1xzKignIC4gJGlkbElkTnMgLiAnKiknOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmNwcAppbmRleCAyZmJjMzkzYTAwNzUyZjdiNGJlOTY5YzM3NTNiMDAzMWMyZmZlMDkwLi5iMTQ2
OTdkZTBkOTEyMjU4MzUwNWI2NTljNjM5ZjZiZWY0MTc2NDQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHAKQEAgLTQwLDYgKzQwLDggQEAKICNpbmNsdWRlICJXZWJET01jLmgiCiAjaW5jbHVkZSAiV2Vi
RE9NZC5oIgogI2luY2x1ZGUgIldlYkRPTWUuaCIKKyNpbmNsdWRlICJXZWJET01zZXF1ZW5jZS5o
IgorI2luY2x1ZGUgIldlYkRPTXNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+LmgiCiAjaW5jbHVkZSAi
V2ViRXhjZXB0aW9uSGFuZGxlci5oIgogI2luY2x1ZGUgIldlYk5hdGl2ZUV2ZW50TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJhLmgiCkBAIC00OCw2ICs1MCw4IEBACiAjaW5jbHVkZSAiYy5oIgogI2lu
Y2x1ZGUgImQuaCIKICNpbmNsdWRlICJlLmgiCisjaW5jbHVkZSAic2VxdWVuY2UuaCIKKyNpbmNs
dWRlICJzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPi5oIgogI2luY2x1ZGUgInd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC0yMzMsNiArMjM3LDIyIEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6c2V0VGVzdE9iakF0
dHIoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3VGVzdE9iakF0dHIpCiAgICAgaW1wbCgpLT5zZXRU
ZXN0T2JqQXR0cih0b1dlYkNvcmUobmV3VGVzdE9iakF0dHIpKTsKIH0KIAorV2ViRE9Nc2VxdWVu
Y2U8U2NyaXB0UHJvZmlsZT4gV2ViRE9NVGVzdE9iajo6c2VxdWVuY2VBdHRyKCkgY29uc3QKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTXNlcXVlbmNlPFNjcmlwdFBy
b2ZpbGU+KCk7CisKKyAgICByZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT5zZXF1
ZW5jZUF0dHIoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFNlcXVlbmNlQXR0cihj
b25zdCBXZWJET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiYgbmV3U2VxdWVuY2VBdHRyKQorewor
ICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPnNldFNlcXVl
bmNlQXR0cih0b1dlYkNvcmUobmV3U2VxdWVuY2VBdHRyKSk7Cit9CisKIFdlYkRPTVRlc3RPYmog
V2ViRE9NVGVzdE9iajo6WE1MT2JqQXR0cigpIGNvbnN0CiB7CiAgICAgaWYgKCFpbXBsKCkpCkBA
IC02NzcsNiArNjk3LDIyIEBAIFdlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6b2JqTWV0aG9k
V2l0aEFyZ3MoaW50IGludEFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzCiAgICAgcmV0dXJuIHRv
V2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJB
cmcsIHRvV2ViQ29yZShvYmpBcmcpKSkpOwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6Om1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZyhjb25zdCBXZWJET01zZXF1ZW5jZSYgKQoreworICAgIGlmICghaW1w
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPm1ldGhvZFdpdGhTZXF1ZW5jZUFy
Zyh0b1dlYkNvcmUoKSk7Cit9CisKK1dlYkRPTXNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+IFdlYkRP
TVRlc3RPYmo6Om1ldGhvZFJldHVybmluZ1NlcXVlbmNlKGludCBpbnRBcmcpCit7CisgICAgaWYg
KCFpbXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPigp
OworCisgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+bWV0aG9kUmV0dXJu
aW5nU2VxdWVuY2UoaW50QXJnKSkpOworfQorCiBXZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6
Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoY29uc3QgV2ViRE9NU3RyaW5nJiBz
dHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RPYmomIG9iakFyZykKIHsKICAgICBpZiAoIWltcGwoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9X
ZWJET01UZXN0T2JqLmgKaW5kZXggZjQ2ZjliZTQyNWRlNGM2ZTE5ZDRjNDAwYjlkNDcwOWJjNmE1
YjkxMC4uMzhjM2M2MjEzMTM1MTJlOThhN2EyZTg3OTk1OGUxNGRlZmQyNjY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0T2JqLmgKQEAgLTQzLDYgKzQzLDggQEAgY2xhc3MgV2ViRE9NYm9vbDsKIGNsYXNzIFdlYkRP
TWM7CiBjbGFzcyBXZWJET01kOwogY2xhc3MgV2ViRE9NZTsKK2NsYXNzIFdlYkRPTXNlcXVlbmNl
OworY2xhc3MgV2ViRE9Nc2VxdWVuY2U8U2NyaXB0UHJvZmlsZT47CiAKIGNsYXNzIFdlYkRPTVRl
c3RPYmogOiBwdWJsaWMgV2ViRE9NT2JqZWN0IHsKIHB1YmxpYzoKQEAgLTg3LDYgKzg5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2V0U3RyaW5nQXR0cihjb25zdCBXZWJET01TdHJpbmcmKTsKICAg
ICBXZWJET01UZXN0T2JqIHRlc3RPYmpBdHRyKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRUZXN0T2Jq
QXR0cihjb25zdCBXZWJET01UZXN0T2JqJik7CisgICAgV2ViRE9Nc2VxdWVuY2U8U2NyaXB0UHJv
ZmlsZT4gc2VxdWVuY2VBdHRyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTZXF1ZW5jZUF0dHIoY29u
c3QgV2ViRE9Nc2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4mKTsKICAgICBXZWJET01UZXN0T2JqIFhN
TE9iakF0dHIoKSBjb25zdDsKICAgICB2b2lkIHNldFhNTE9iakF0dHIoY29uc3QgV2ViRE9NVGVz
dE9iaiYpOwogICAgIGJvb2wgY3JlYXRlKCkgY29uc3Q7CkBAIC0xNDcsNiArMTUxLDggQEAgcHVi
bGljOgogICAgIGludCBpbnRNZXRob2RXaXRoQXJncyhpbnQgaW50QXJnLCBjb25zdCBXZWJET01T
dHJpbmcmIHN0ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKICAgICBXZWJET01U
ZXN0T2JqIG9iak1ldGhvZCgpOwogICAgIFdlYkRPTVRlc3RPYmogb2JqTWV0aG9kV2l0aEFyZ3Mo
aW50IGludEFyZywgY29uc3QgV2ViRE9NU3RyaW5nJiBzdHJBcmcsIGNvbnN0IFdlYkRPTVRlc3RP
YmomIG9iakFyZyk7CisgICAgdm9pZCBtZXRob2RXaXRoU2VxdWVuY2VBcmcoY29uc3QgV2ViRE9N
c2VxdWVuY2UmICk7CisgICAgV2ViRE9Nc2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4gbWV0aG9kUmV0
dXJuaW5nU2VxdWVuY2UoaW50IGludEFyZyk7CiAgICAgV2ViRE9NVGVzdE9iaiBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKGNvbnN0IFdlYkRPTVN0cmluZyYgc3RyQXJnLCBjb25z
dCBXZWJET01UZXN0T2JqJiBvYmpBcmcpOwogICAgIHZvaWQgc2VyaWFsaXplZFZhbHVlKGNvbnN0
IFdlYkRPTVN0cmluZyYgc2VyaWFsaXplZEFyZyk7CiAgICAgdm9pZCBpZGJLZXkoY29uc3QgV2Vi
RE9NSURCS2V5JiBrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAppbmRleCBh
NmQwMTY4YzQ3MzNjMTdmM2M5M2QxZjFiZGY1ZWEwNTYwNGUyYjVjLi5hYjNhOWJkY2VjNWY5YTg5
ZGRmZGIyM2FhM2Q4ZTdjYTliZTMyMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2Jq
LmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYktpdERPTUJpbmRpbmcuaCIKICNp
bmNsdWRlICJib29sLmgiCiAjaW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgi
CisjaW5jbHVkZSAic2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4uaCIKICNpbmNsdWRlICJ3ZWJraXQv
V2ViS2l0RE9NRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01EaWN0aW9u
YXJ5UHJpdmF0ZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01Eb2N1bWVudC5oIgpAQCAt
NTcsNiArNTgsMTAgQEAKICNpbmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NZFByaXZhdGUuaCIKICNp
bmNsdWRlICJ3ZWJraXQvV2ViS2l0RE9NZS5oIgogI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01l
UHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdC9XZWJLaXRET01zZXF1ZW5jZS5oIgorI2luY2x1
ZGUgIndlYmtpdC9XZWJLaXRET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPi5oIgorI2luY2x1ZGUg
IndlYmtpdC9XZWJLaXRET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPlByaXZhdGUuaCIKKyNpbmNs
dWRlICJ3ZWJraXQvV2ViS2l0RE9Nc2VxdWVuY2VQcml2YXRlLmgiCiAjaW5jbHVkZSAid2Via2l0
ZGVmaW5lcy5oIgogI2luY2x1ZGUgIndlYmtpdGdsb2JhbHNwcml2YXRlLmgiCiAjaW5jbHVkZSAi
d2Via2l0bWFyc2hhbC5oIgpAQCAtMTU5LDYgKzE2NCwzMiBAQCB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X29ial9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGludF9h
cmcsCiAgICAgcmV0dXJuIHJlczsKIH0KIAordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9tZXRo
b2Rfd2l0aF9zZXF1ZW5jZV9hcmcoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9Nc2Vx
dWVuY2UqICkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpT
TWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9
IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKCk7CisgICAgV2ViQ29y
ZTo6c2VxdWVuY2UgKiBjb252ZXJ0ZWRfID0gTlVMTDsKKyAgICBpZiAoICE9IE5VTEwpIHsKKyAg
ICAgICAgY29udmVydGVkXyA9IFdlYktpdDo6Y29yZSgpOworICAgICAgICBnX3JldHVybl9pZl9m
YWlsKGNvbnZlcnRlZF8pOworICAgIH0KKyAgICBpdGVtLT5tZXRob2RXaXRoU2VxdWVuY2VBcmco
Y29udmVydGVkXyk7Cit9CisKK1dlYktpdERPTXNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+Kgord2Vi
a2l0X2RvbV90ZXN0X29ial9tZXRob2RfcmV0dXJuaW5nX3NlcXVlbmNlKFdlYktpdERPTVRlc3RP
YmoqIHNlbGYsIGdsb25nIGludF9hcmcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoc2Vs
ZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdl
YkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4+IGdfcmVzID0gV1RGOjpnZXRQdHIo
aXRlbS0+bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoaW50X2FyZykpOworICAgIFdlYktpdERPTXNl
cXVlbmNlPFNjcmlwdFByb2ZpbGU+KiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7Cisg
ICAgcmV0dXJuIHJlczsKK30KKwogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9v
YmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5kX3Rocm93cyhXZWJLaXRET01UZXN0
T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyX2FyZywgV2ViS2l0RE9NVGVzdE9iaiogb2JqX2Fy
ZywgR0Vycm9yICoqZXJyb3IpCiB7CkBAIC03NzksNiArODEwLDMyIEBAIHdlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3Rlc3Rfb2JqX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
VGVzdE9iaioKICAgICBpdGVtLT5zZXRUZXN0T2JqQXR0cihjb252ZXJ0ZWRfdmFsdWUpOwogfQog
CitXZWJLaXRET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPioKK3dlYmtpdF9kb21fdGVzdF9vYmpf
Z2V0X3NlcXVlbmNlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2Vs
Zik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPj4gZ19y
ZXMgPSBXVEY6OmdldFB0cihpdGVtLT5zZXF1ZW5jZUF0dHIoKSk7CisgICAgV2ViS2l0RE9Nc2Vx
dWVuY2U8U2NyaXB0UHJvZmlsZT4qIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKKyAg
ICByZXR1cm4gcmVzOworfQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9zZXF1ZW5j
ZV9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTXNlcXVlbmNlPFNjcmlwdFBy
b2ZpbGU+KiB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlbGYpOworICAgIFdlYkNv
cmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKHZhbHVlKTsK
KyAgICBXZWJDb3JlOjpzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiAqIGNvbnZlcnRlZF92YWx1ZSA9
IE5VTEw7CisgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgY29udmVydGVkX3ZhbHVl
ID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252ZXJ0
ZWRfdmFsdWUpOworICAgIH0KKyAgICBpdGVtLT5zZXRTZXF1ZW5jZUF0dHIoY29udmVydGVkX3Zh
bHVlKTsKK30KKwogV2ViS2l0RE9NVGVzdE9iaioKIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3ht
bF9vYmpfYXR0cihXZWJLaXRET01UZXN0T2JqKiBzZWxmKQogewpAQCAtMTUzOCw2ICsxNTk1LDcg
QEAgZW51bSB7CiAgICAgUFJPUF9VTlNJR05FRF9MT05HX0xPTkdfQVRUUiwKICAgICBQUk9QX1NU
UklOR19BVFRSLAogICAgIFBST1BfVEVTVF9PQkpfQVRUUiwKKyAgICBQUk9QX1NFUVVFTkNFX0FU
VFIsCiAgICAgUFJPUF9YTUxfT0JKX0FUVFIsCiAgICAgUFJPUF9DUkVBVEUsCiAgICAgUFJPUF9S
RUZMRUNURURfU1RSSU5HX0FUVFIsCkBAIC0xNzk3LDYgKzE4NTUsMTIgQEAgc3RhdGljIHZvaWQg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wX2lkLCBHVmEKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6Omtp
dChwdHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9TRVFV
RU5DRV9BVFRSOgorICAgIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OnNlcXVlbmNlPFNjcmlw
dFByb2ZpbGU+PiBwdHIgPSBjb3JlU2VsZi0+c2VxdWVuY2VBdHRyKCk7CisgICAgICAgIGdfdmFs
dWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICBjYXNlIFBST1BfWE1MX09CSl9BVFRSOgogICAgIHsKICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9IGNvcmVTZWxmLT54bWxPYmpBdHRyKCk7CkBA
IC0yMDg5LDYgKzIxNTMsMTMgQEAgR19NQVhVSU5UNjQsIC8qIG1pbiAqLwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQ
RV9ET01fVEVTVF9PQkosIC8qIGdvYmplY3QgdHlwZSAqLwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdS
SVRFKSk7CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1NFUVVFTkNFX0FUVFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0
KCJzZXF1ZW5jZS1hdHRyIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfc2VxdWVuY2UtYXR0ciIs
IC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRlICBXZWJLaXRET01zZXF1ZW5j
ZTxTY3JpcHRQcm9maWxlPiogVGVzdE9iai5zZXF1ZW5jZS1hdHRyIiwgLyogbG9uZ2VyIC0gY291
bGQgZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RP
TV9TRVFVRU5DRTxTQ1JJUFRfUFJPRklMRT4sIC8qIGdvYmplY3QgdHlwZSAqLworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
UEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShn
b2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1hN
TF9PQkpfQVRUUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1f
c3BlY19vYmplY3QoInhtbC1vYmotYXR0ciIsIC8qIG5hbWUgKi8KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3htbC1v
YmotYXR0ciIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0
T2JqLmgKaW5kZXggYzRkMjBjNjJiNDEyZmUwNGQ1OGY4YjNlYzYzM2NmMTkyOTgxNzBiMy4uYmIz
Njc3OTIxOGU1NTM5ZGVmMDg4NDQ3NWRmYTg4MGJjYWQyYTgwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3RPYmouaApAQCAtMTE2LDYgKzExNiwyOCBAQCBXRUJLSVRfQVBJIFdlYktpdERPTVRl
c3RPYmoqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX29ial9tZXRob2Rfd2l0aF9hcmdzKFdlYktpdERP
TVRlc3RPYmoqIHNlbGYsIGdsb25nIGludF9hcmcsIGNvbnN0IGdjaGFyKiBzdHJfYXJnLCBXZWJL
aXRET01UZXN0T2JqKiBvYmpfYXJnKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21l
dGhvZF93aXRoX3NlcXVlbmNlX2FyZzoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisg
KiBAOiBBICNXZWJLaXRET01zZXF1ZW5jZQorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJL
SVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfc2VxdWVuY2VfYXJn
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTXNlcXVlbmNlKiApOworCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3JldHVybmluZ19zZXF1ZW5jZToKKyAqIEBzZWxm
OiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAaW50X2FyZzogQSAjZ2xvbmcKKyAqCisgKiBSZXR1
cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTXNlcXVl
bmNlPFNjcmlwdFByb2ZpbGU+Kgord2Via2l0X2RvbV90ZXN0X29ial9tZXRob2RfcmV0dXJuaW5n
X3NlcXVlbmNlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIGludF9hcmcpOworCisvKioK
ICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3RoYXRfcmVxdWlyZXNfYWxsX2FyZ3NfYW5k
X3Rocm93czoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKiBAc3RyX2FyZzogQSAj
Z2NoYXIKQEAgLTY3NSw2ICs2OTcsMjcgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF90ZXN0X29ial9hdHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERP
TVRlc3RPYmoqIHZhbHVlKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zZXF1
ZW5jZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5z
OiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTXNlcXVlbmNl
PFNjcmlwdFByb2ZpbGU+Kgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2VxdWVuY2VfYXR0cihX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3Nl
dF9zZXF1ZW5jZV9hdHRyOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqIEB2YWx1
ZTogQSAjV2ViS2l0RE9Nc2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4KKyAqCisgKiBSZXR1cm5zOiAo
dHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVz
dF9vYmpfc2V0X3NlcXVlbmNlX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9N
c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4qIHZhbHVlKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2dldF94bWxfb2JqX2F0dHI6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagog
ICoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAKaW5kZXggOTQ1NTE5MTQzNmRmMDk2NjI2MmRkZjc0OWQxMDA2YTIzM2ZlMWM1
YS4uYzA1MWMyNTcyMGQ2MTc4YmY4YmZkMzMyMDU0OWRmZDk2NmQyYjJlNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAK
QEAgLTQyLDYgKzQyLDggQEAKICNpbmNsdWRlICJKU2QuaCIKICNpbmNsdWRlICJKU2UuaCIKICNp
bmNsdWRlICJKU2ludC5oIgorI2luY2x1ZGUgIkpTc2VxdWVuY2UuaCIKKyNpbmNsdWRlICJKU3Nl
cXVlbmNlPFNjcmlwdFByb2ZpbGU+LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlNW
R0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgiCkBAIC01
MSw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiVGVzdE9iai5oIgogI2luY2x1ZGUgImJvb2wuaCIKKyNpbmNsdWRlICJzZXF1ZW5jZTxTY3Jp
cHRQcm9maWxlPi5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50
aW1lL0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgpAQCAtODYsNiArODksNyBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAg
ICAgeyAidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xv
bmdBdHRyKSwgKGludHB0cl90KXNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyLCBOb0lu
dHJpbnNpYyB9LAogICAgIHsgInN0cmluZ0F0dHIiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialN0cmluZ0F0dHIp
LCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU3RyaW5nQXR0ciwgTm9JbnRyaW5zaWMgfSwKICAgICB7
ICJ0ZXN0T2JqQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqVGVzdE9iakF0dHIpLCAoaW50cHRyX3Qpc2V0
SlNUZXN0T2JqVGVzdE9iakF0dHIsIE5vSW50cmluc2ljIH0sCisgICAgeyAic2VxdWVuY2VBdHRy
IiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jPihqc1Rlc3RPYmpTZXF1ZW5jZUF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqU2Vx
dWVuY2VBdHRyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIlhNTE9iakF0dHIiLCBEb250RGVsZXRl
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVz
dE9ialhNTE9iakF0dHIpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqWE1MT2JqQXR0ciwgTm9JbnRy
aW5zaWMgfSwKICAgICB7ICJjcmVhdGUiLCBEb250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNyZWF0ZSksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpDcmVhdGUsIE5vSW50cmluc2ljIH0sCiAgICAgeyAicmVmbGVjdGVkU3Ry
aW5nQXR0ciIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0ciksIChpbnRwdHJfdClz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyLCBOb0ludHJpbnNpYyB9LApAQCAtMjUxLDYg
KzI1NSw4IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVU
YWJsZVZhbHVlc1tdID0KICAgICB7ICJpbnRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBK
U0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uSW50TWV0aG9kV2l0aEFyZ3MpLCAoaW50cHRyX3QpMywgTm9J
bnRyaW5zaWMgfSwKICAgICB7ICJvYmpNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlv
biwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsg
Im9iak1ldGhvZFdpdGhBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
YmpNZXRob2RXaXRoQXJncyksIChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIm1l
dGhvZFdpdGhTZXF1ZW5jZUFyZyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aFNlcXVlbmNlQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCisgICAg
eyAibWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKSwgKGludHB0cl90KTEsIE5vSW50cmluc2lj
IH0sCiAgICAgeyAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyksIChpbnRwdHJfdCkyLCBOb0ludHJpbnNpYyB9LAogICAgIHsgInNlcmlhbGl6ZWRWYWx1
ZSIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlKSwg
KGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAiaWRiS2V5IiwgRG9udERlbGV0ZSB8
IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25JZGJLZXkpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMg
fSwKQEAgLTQ2Niw2ICs0NzIsMTYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXIKIH0KIAogCitK
U1ZhbHVlIGpzVGVzdE9ialNlcXVlbmNlQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2Fz
dGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPnNlcXVlbmNlQXR0cigp
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdChzbG90QmFzZSkpOwpAQCAtOTQ1LDYgKzk2MSwxNCBAQCB2b2lkIHNldEpTVGVzdE9i
alRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdQogfQogCiAKK3ZvaWQgc2V0SlNUZXN0T2JqU2VxdWVuY2VBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7Cisg
ICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBs
KCkpOworICAgIGltcGwtPnNldFNlcXVlbmNlQXR0cih0b3NlcXVlbmNlPFNjcmlwdFByb2ZpbGU+
KHZhbHVlKSk7Cit9CisKKwogdm9pZCBzZXRKU1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CkBA
IC0xMzY4LDYgKzEzOTIsNDEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4ZWNTdGEKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmcoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1
ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwor
ICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19p
bmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRo
aXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOb3QgZW5v
dWdoIGFyZ3VtZW50cyIpKTsKKyAgICBzZXF1ZW5jZSogKHRvc2VxdWVuY2UoTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKKyAgICBpbXBsLT5tZXRob2RXaXRoU2VxdWVuY2VBcmcoKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kUmV0dXJuaW5nU2VxdWVu
Y2UoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNf
aW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNW
YWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVz
dE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+
KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKKyAgICBpbnQgaW50QXJnKE1BWUJFX01JU1NJTkdf
UEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9JbnQzMihleGVjKSk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhl
YywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPm1ldGhvZFJl
dHVybmluZ1NlcXVlbmNlKGludEFyZykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCAyODQxOWVjYTExYWQzNjI1MGFkOWEzZmY5NWUyNWM1MGJiYTBiNmEzLi45MzFh
NDAwZDIxNjZjNzEyMjJkNDU4MTJiNzdjZGEzMWEwODExYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0xNTgsNiAr
MTU4LDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uSW50TWV0aG9kKEpTQzo6RXhlY1MKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkludE1ldGhvZFdpdGhBcmdzKEpT
Qzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1l
dGhvZFdpdGhBcmdzKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmco
SlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFJldHVybmluZ1NlcXVlbmNlKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbklkYktleShK
U0M6OkV4ZWNTdGF0ZSopOwpAQCAtMjMxLDYgKzIzMyw4IEBAIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6Oklk
ZW50CiB2b2lkIHNldEpTVGVzdE9ialN0cmluZ0F0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CiB2b2lkIHNldEpTVGVzdE9ialRlc3RPYmpBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09i
amVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqU2VxdWVuY2VBdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsK
K3ZvaWQgc2V0SlNUZXN0T2JqU2VxdWVuY2VBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09i
amVjdCosIEpTQzo6SlNWYWx1ZSk7CiBKU0M6OkpTVmFsdWUganNUZXN0T2JqWE1MT2JqQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CiB2
b2lkIHNldEpTVGVzdE9ialhNTE9iakF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0
KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTVmFsdWUsIGNvbnN0IEpTQzo6SWRlbnRpZmllciYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5o
CmluZGV4IDhmZDM0MWU1YzNkZjI3ZjQwM2JiNjVmYmFlYWMyMWE3MzU2ZDk5NzIuLjNmNDVlN2Uz
ZWU4NDIxZWU1N2M0YTVlNjIwMTVkNjAwNGZkMWEwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTQzLDYg
KzQzLDggQEAKIEBjbGFzcyBET01jOwogQGNsYXNzIERPTWQ7CiBAY2xhc3MgRE9NZTsKK0BjbGFz
cyBET01zZXF1ZW5jZTsKK0BjbGFzcyBET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPjsKIEBjbGFz
cyBOU1N0cmluZzsKIEBwcm90b2NvbCBET01FdmVudExpc3RlbmVyOwogCkBAIC04Miw2ICs4NCw4
IEBAIGVudW0gewogLSAodm9pZClzZXRTdHJpbmdBdHRyOihOU1N0cmluZyAqKW5ld1N0cmluZ0F0
dHI7CiAtIChET01UZXN0T2JqICopdGVzdE9iakF0dHI7CiAtICh2b2lkKXNldFRlc3RPYmpBdHRy
OihET01UZXN0T2JqICopbmV3VGVzdE9iakF0dHI7CistIChET01zZXF1ZW5jZTxTY3JpcHRQcm9m
aWxlPiAqKXNlcXVlbmNlQXR0cjsKKy0gKHZvaWQpc2V0U2VxdWVuY2VBdHRyOihET01zZXF1ZW5j
ZTxTY3JpcHRQcm9maWxlPiAqKW5ld1NlcXVlbmNlQXR0cjsKIC0gKERPTVRlc3RPYmogKilYTUxP
YmpBdHRyOwogLSAodm9pZClzZXRYTUxPYmpBdHRyOihET01UZXN0T2JqICopbmV3WE1MT2JqQXR0
cjsKIC0gKEJPT0wpY3JlYXRlOwpAQCAtMTcxLDYgKzE3NSw4IEBAIGVudW0gewogLSAoaW50KWlu
dE1ldGhvZFdpdGhBcmdzOihpbnQpaW50QXJnIHN0ckFyZzooTlNTdHJpbmcgKilzdHJBcmcgb2Jq
QXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAoRE9NVGVzdE9iaiAqKW9iak1ldGhvZDsKIC0g
KERPTVRlc3RPYmogKilvYmpNZXRob2RXaXRoQXJnczooaW50KWludEFyZyBzdHJBcmc6KE5TU3Ry
aW5nICopc3RyQXJnIG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKKy0gKHZvaWQpbWV0aG9k
V2l0aFNlcXVlbmNlQXJnOihET01zZXF1ZW5jZSAqKTsKKy0gKERPTXNlcXVlbmNlPFNjcmlwdFBy
b2ZpbGU+ICopbWV0aG9kUmV0dXJuaW5nU2VxdWVuY2U6KGludClpbnRBcmc7CiAtIChET01UZXN0
T2JqICopbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93czooTlNTdHJpbmcgKilzdHJB
cmcgb2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnOwogLSAodm9pZClzZXJpYWxpemVkVmFsdWU6
KE5TU3RyaW5nICopc2VyaWFsaXplZEFyZzsKIC0gKHZvaWQpaWRiS2V5OihET01JREJLZXkgKilr
ZXk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09i
akMvRE9NVGVzdE9iai5tbQppbmRleCBhMTZhNzJlZWQ5OTEzMmNmYWIwZTNiMDA5YmYzMzBiYWE3
NTkwNjQxLi5jZGQyNWU3NDQ5ZmQxN2VlY2JhNWI5YmJjMGE0ZTEyMmRkOGNkMDk5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2Jq
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RPYmoubW0KQEAgLTUwLDYgKzUwLDggQEAKICNpbXBvcnQgIkRPTWNJbnRlcm5hbC5oIgogI2lt
cG9ydCAiRE9NZEludGVybmFsLmgiCiAjaW1wb3J0ICJET01lSW50ZXJuYWwuaCIKKyNpbXBvcnQg
IkRPTXNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTXNlcXVl
bmNlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRpY3Rpb25hcnkuaCIKICNpbXBvcnQgIkRvY3VtZW50
LmgiCiAjaW1wb3J0ICJFdmVudExpc3RlbmVyLmgiCkBAIC03NSw2ICs3Nyw4IEBACiAjaW1wb3J0
ICJjLmgiCiAjaW1wb3J0ICJkLmgiCiAjaW1wb3J0ICJlLmgiCisjaW1wb3J0ICJzZXF1ZW5jZS5o
IgorI2ltcG9ydCAic2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4uaCIKICNpbXBvcnQgPHd0Zi9HZXRQ
dHIuaD4KIAogI2RlZmluZSBJTVBMIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViQ29yZTo6VGVzdE9iaio+
KF9pbnRlcm5hbCkKQEAgLTIwMiw2ICsyMDYsMjAgQEAKICAgICBJTVBMLT5zZXRUZXN0T2JqQXR0
cihjb3JlKG5ld1Rlc3RPYmpBdHRyKSk7CiB9CiAKKy0gKERPTXNlcXVlbmNlPFNjcmlwdFByb2Zp
bGU+ICopc2VxdWVuY2VBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+c2VxdWVuY2VBdHRyKCkp
KTsKK30KKworLSAodm9pZClzZXRTZXF1ZW5jZUF0dHI6KERPTXNlcXVlbmNlPFNjcmlwdFByb2Zp
bGU+ICopbmV3U2VxdWVuY2VBdHRyCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdTZXF1ZW5jZUF0dHIpOworCisgICAgSU1QTC0+c2V0
U2VxdWVuY2VBdHRyKGNvcmUobmV3U2VxdWVuY2VBdHRyKSk7Cit9CisKIC0gKERPTVRlc3RPYmog
KilYTUxPYmpBdHRyCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwpAQCAtNzMxLDYgKzc0OSwxOCBAQAogICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+
b2JqTWV0aG9kV2l0aEFyZ3MoaW50QXJnLCBzdHJBcmcsIGNvcmUob2JqQXJnKSkpKTsKIH0KIAor
LSAodm9pZCltZXRob2RXaXRoU2VxdWVuY2VBcmc6KERPTXNlcXVlbmNlICopCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwtPm1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyhjb3JlKCkpOworfQorCistIChET01zZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiAq
KW1ldGhvZFJldHVybmluZ1NlcXVlbmNlOihpbnQpaW50QXJnCit7CisgICAgV2ViQ29yZTo6SlNN
YWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1Q
TC0+bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UoaW50QXJnKSkpOworfQorCiAtIChET01UZXN0T2Jq
ICopbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93czooTlNTdHJpbmcgKilzdHJBcmcg
b2JqQXJnOihET01UZXN0T2JqICopb2JqQXJnCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDlkYzdlZDBlNTFlYzdhNjJjMmNmNTE3NmVlZDA1MDZhMzE1
N2ZkMWQuLmE0MDNiNWE5YzBhY2Q3OGUxYWNhNWNjODc5ZDkxYjllYzliY2EwYjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKQEAgLTQ1
LDYgKzQ1LDcgQEAgbW9kdWxlIHRlc3QgewogICAgICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBsb25nICAgICAgIHVuc2lnbmVkTG9uZ0xvbmdBdHRyOwogICAgICAgICBhdHRyaWJ1dGUgRE9N
U3RyaW5nICAgICAgICAgICAgICAgIHN0cmluZ0F0dHI7CiAgICAgICAgIGF0dHJpYnV0ZSBUZXN0
T2JqICAgICAgICAgICAgICAgICAgdGVzdE9iakF0dHI7CisgICAgICAgIGF0dHJpYnV0ZSBzZXF1
ZW5jZTxTY3JpcHRQcm9maWxlPiAgc2VxdWVuY2VBdHRyOwogCiAgICAgICAgIEpTLCBWOAogICAg
ICAgICAvLyBXS191Y2ZpcnN0LCBXS19sY2ZpcnN0IGV4Y2VwdGlvbmFsIGNhc2VzLgpAQCAtNzAs
NiArNzEsOSBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFRlc3RPYmogb2JqTWV0aG9kKCk7CiAg
ICAgICAgIFRlc3RPYmogb2JqTWV0aG9kV2l0aEFyZ3MoaW4gbG9uZyBpbnRBcmcsIGluIERPTVN0
cmluZyBzdHJBcmcsIGluIFRlc3RPYmogb2JqQXJnKTsKIAorICAgICAgICB2b2lkIG1ldGhvZFdp
dGhTZXF1ZW5jZUFyZyhpbiBzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPiBzZXF1ZW5jZUFyZyk7Cisg
ICAgICAgIHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlKGlu
IGxvbmcgaW50QXJnKTsKKwogICAgICAgICBUZXN0T2JqIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3MoaW4gRE9NU3RyaW5nIHN0ckFyZywgaW4gVGVzdE9iaiBvYmpBcmcpCiAgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAwMjMxNzg4NzAw
MGM2NjU1NGRjMDdhZDBlYTNjNzI2MmJlZTgzYTNlLi5hYjljYjA2YTgzNzcxNTM1MDQxN2UzNzVi
N2Q1MzFmZDc1ODMwOWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtNTEsNiArNTEsOCBAQAogI2luY2x1ZGUg
IlY4ZC5oIgogI2luY2x1ZGUgIlY4ZS5oIgogI2luY2x1ZGUgIlY4aW50LmgiCisjaW5jbHVkZSAi
VjhzZXF1ZW5jZS5oIgorI2luY2x1ZGUgIlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT4uaCIKICNp
bmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0yMTcsNiArMjE5LDIyIEBAIHN0YXRpYyB2b2lkIHRlc3RP
YmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1CiAgICAgcmV0dXJuOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNl
cXVlbmNlQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5zZXF1
ZW5jZUF0dHIuX2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT5zZXF1ZW5jZUF0dHIoKSk7Cit9
CisKK3N0YXRpYyB2b2lkIHNlcXVlbmNlQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmouc2VxdWVuY2VBdHRyLl9z
ZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOworICAgIHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+KiB2ID0gVjhzZXF1ZW5jZTxTY3JpcHRQ
cm9maWxlPjo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhzZXF1ZW5jZTxTY3JpcHRQcm9maWxlPjo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBp
bXAtPnNldFNlcXVlbmNlQXR0cihXVEY6OmdldFB0cih2KSk7CisgICAgcmV0dXJuOworfQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IElOQ19TVEFUUygiRE9NLlRlc3RPYmouWE1MT2JqQXR0ci5fZ2V0Iik7CkBAIC0xMDM1LDYgKzEw
NTMsMjcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRoQXJnc0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gdG9WOChpbXAtPm9i
ak1ldGhvZFdpdGhBcmdzKGludEFyZywgc3RyQXJnLCBvYmpBcmcpKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9k
V2l0aFNlcXVlbmNlQXJnIik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiLCBWOFByb3h5OjpUeXBlRXJy
b3IpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgRVhDRVBUSU9OX0JMT0NLKHNlcXVlbmNlKiwgLCBWOHNlcXVlbmNlOjpIYXNJbnN0
YW5jZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQp
KSA/IFY4c2VxdWVuY2U6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSkpIDogMCk7
CisgICAgaW1wLT5tZXRob2RXaXRoU2VxdWVuY2VBcmcoKTsKKyAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9k
UmV0dXJuaW5nU2VxdWVuY2VDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorewor
ICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoubWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UiKTsKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6OlR5cGVFcnJvcik7CisgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFWENFUFRJT05fQkxP
Q0soaW50LCBpbnRBcmcsIHRvSW50MzIoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMCwg
RGVmYXVsdElzVW5kZWZpbmVkKSkpOworICAgIHJldHVybiB0b1Y4KGltcC0+bWV0aG9kUmV0dXJu
aW5nU2VxdWVuY2UoaW50QXJnKSk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzIik7CkBAIC0xNzYxLDYgKzE4MDAsOCBAQCBzdGF0aWMgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICB7InN0cmluZ0F0dHIi
LCBUZXN0T2JqSW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6
OnN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3Rlc3RPYmpBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJ0ZXN0
T2JqQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyLCBUZXN0T2Jq
SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8g
QXR0cmlidXRlICdzZXF1ZW5jZUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykK
KyAgICB7InNlcXVlbmNlQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6c2VxdWVuY2VBdHRyQXR0ckdl
dHRlciwgVGVzdE9iakludGVybmFsOjpzZXF1ZW5jZUF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ1hNTE9iakF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKICAgICB7IlhNTE9iakF0dHIiLCBUZXN0T2JqSW50ZXJuYWw6OlhNTE9iakF0
dHJBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVyLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2NyZWF0ZScgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQpAQCAtMTg2MSw2ICsxOTAyLDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRD
YWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJ2b2lkTWV0aG9kIiwgVGVzdE9i
akludGVybmFsOjp2b2lkTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsiaW50TWV0aG9kIiwgVGVzdE9i
akludGVybmFsOjppbnRNZXRob2RDYWxsYmFja30sCiAgICAgeyJvYmpNZXRob2QiLCBUZXN0T2Jq
SW50ZXJuYWw6Om9iak1ldGhvZENhbGxiYWNrfSwKKyAgICB7Im1ldGhvZFJldHVybmluZ1NlcXVl
bmNlIiwgVGVzdE9iakludGVybmFsOjptZXRob2RSZXR1cm5pbmdTZXF1ZW5jZUNhbGxiYWNrfSwK
ICAgICB7InNlcmlhbGl6ZWRWYWx1ZSIsIFRlc3RPYmpJbnRlcm5hbDo6c2VyaWFsaXplZFZhbHVl
Q2FsbGJhY2t9LAogICAgIHsiaWRiS2V5IiwgVGVzdE9iakludGVybmFsOjppZGJLZXlDYWxsYmFj
a30sCiAgICAgeyJvcHRpb25zT2JqZWN0IiwgVGVzdE9iakludGVybmFsOjpvcHRpb25zT2JqZWN0
Q2FsbGJhY2t9LApAQCAtMjAwNCw2ICsyMDQ2LDEyIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNp
CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBvYmpNZXRob2RXaXRoQXJnc1NpZ25hdHVy
ZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBvYmpNZXRob2RXaXRoQXJnc0FyZ2MsIG9iak1l
dGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoIm9iak1l
dGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9iakludGVybmFs
OjpvYmpNZXRob2RXaXRoQXJnc0NhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgb2Jq
TWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKIAorICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21l
dGhvZFdpdGhTZXF1ZW5jZUFyZycKKyAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJn
QXJnYyA9IDE7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJndlttZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhzZXF1ZW5j
ZTo6R2V0UmF3VGVtcGxhdGUoKSB9OworICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0
aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOworICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZ0NhbGxiYWNrLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKSwgbWV0aG9kV2l0aFNlcXVlbmNl
QXJnU2lnbmF0dXJlKSk7CisKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzJwogICAgIGNvbnN0IGludCBtZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJnYyA9IDI7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ3ZbbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKCkgfTsK
</data>
<flag name="review"
          id="135875"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>