<?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>122239</bug_id>
          
          <creation_ts>2013-10-02 14:02:37 -0700</creation_ts>
          <short_desc>IDL parser should remove a leading &quot;_&quot; from identifier names</short_desc>
          <delta_ts>2013-10-02 16:32:40 -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>Tools / Tests</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="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>935538</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-02 14:02:37 -0700</bug_when>
    <thetext>According the the WebIDL spec [1]:

... the identifier is the value of the identifier token with any single leading U+005F LOW LINE (&quot;_&quot;) character (underscore) removed.

Note
A leading &quot;_&quot; is used to escape an identifier from looking like a reserved word so that, for example, an interface named “interface” can be defined. The leading &quot;_&quot; is dropped to unescape the identifier.


http://www.w3.org/TR/WebIDL/#idl-names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935541</commentid>
    <comment_count>1</comment_count>
      <attachid>213198</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-02 14:14:05 -0700</bug_when>
    <thetext>Created attachment 213198
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935542</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-02 14:16:43 -0700</bug_when>
    <thetext>Attachment 213198 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/WebCore/bindings/scripts/IDLParser.pm&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.symbols&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestException.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestInterface.idl&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h:63:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h:68:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h:212:  The parameter name &quot;a&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp:213:  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: 4 in 14 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>935558</commentid>
    <comment_count>3</comment_count>
      <attachid>213198</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-10-02 14:45:44 -0700</bug_when>
    <thetext>Comment on attachment 213198
Proposed patch

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

&gt; Source/WebCore/bindings/scripts/IDLParser.pm:318
&gt; +sub identifierRemoveNullablePrefix
&gt; +{
&gt; +    my $type = shift;
&gt; +    $type =~ s/\_// if $type =~ /^\_/;
&gt; +    return $type;
&gt; +}
&gt; +

A regexp seems heavy handed here.  How about just:

my $type = shift;
return substr($type, 0, 1) == &quot;_&quot; ? substr($type, 1) : $type;

If you want to leave in the regexp, we should just do:

my $type = shift;
return $type =~ s/^\_//;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935603</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-10-02 16:32:27 -0700</bug_when>
    <thetext>Committed r156808: https://trac.webkit.org/r156808</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213198</attachid>
            <date>2013-10-02 14:14:05 -0700</date>
            <delta_ts>2013-10-02 16:32:40 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>reserved_idl_words_4.txt</filename>
            <type>text/plain</type>
            <size>28983</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1Njc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEzLTEwLTAyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIElETCBwYXJzZXIgc2hv
dWxkIHJlbW92ZSBhIGxlYWRpbmcgIl8iIGZyb20gaWRlbnRpZmllciBuYW1lcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMjM5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB1cGRh
dGVkIGJpbmRpbmdzIHRlc3RzIGFuZCByZXN1bHRzLgorCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG06CisgICAgICAgIChpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVm
aXgpOiBSZW1vdmUgbGVhZGluZyAiXyIuCisgICAgICAgIChwYXJzZUludGVyZmFjZSk6IENhbGwg
aWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4LgorICAgICAgICAocGFyc2VFeGNlcHRpb24p
OiBEaXR0by4KKyAgICAgICAgKHBhcnNlRW51bSk6IERpdHRvLgorICAgICAgICAocGFyc2VDb25z
dCk6IERpdHRvLgorICAgICAgICAocGFyc2VBdHRyaWJ1dGVSZXN0KTogRGl0dG8uCisgICAgICAg
IChwYXJzZU9wZXJhdGlvblJlc3QpOiBEaXR0by4KKyAgICAgICAgKHBhcnNlT3B0aW9uYWxPclJl
cXVpcmVkQXJndW1lbnQpOiBEaXR0by4KKyAgICAgICAgKHBhcnNlRXhjZXB0aW9uRmllbGQpOiBE
aXR0by4KKyAgICAgICAgKHBhcnNlTm9uQW55VHlwZSk6IERpdHRvLgorCisgICAgICAgIFVwZGF0
ZSB0ZXN0cyBhbmQgcmVzdWx0cy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQ
L1dlYkRPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLnN5bWJvbHM6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0T2JqLm1tOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RXhjZXB0
aW9uLmlkbDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5p
ZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorCiAyMDEz
LTEwLTAyICBCZW5qYW1pbiBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBDbGVhbiB1cCBtb3JlIDxzdHlsZSBzY29wZWQ+IGZyb20gc3R5bGUgcmVzb2x1dGlvbgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExQYXJzZXIucG0JKHJldmlz
aW9uIDE1NjY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMUGFyc2Vy
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNiArMzA5LDEzIEBAIHN1YiB0eXBlUmVtb3ZlTnVs
bGFibGVTdWZmaXgKICAgICByZXR1cm4gJHR5cGU7CiB9CiAKK3N1YiBpZGVudGlmaWVyUmVtb3Zl
TnVsbGFibGVQcmVmaXgKK3sKKyAgICBteSAkdHlwZSA9IHNoaWZ0OworICAgICR0eXBlID1+IHMv
XF8vLyBpZiAkdHlwZSA9fiAvXlxfLzsKKyAgICByZXR1cm4gJHR5cGU7Cit9CisKIG15ICRuZXh0
QXR0cmlidXRlXzEgPSAnXihhdHRyaWJ1dGV8aW5oZXJpdHxyZWFkb25seSkkJzsKIG15ICRuZXh0
UHJpbWl0aXZlVHlwZV8xID0gJ14oaW50fGxvbmd8c2hvcnR8dW5zaWduZWQpJCc7CiBteSAkbmV4
dFByaW1pdGl2ZVR5cGVfMiA9ICdeKGRvdWJsZXxmbG9hdHx1bnJlc3RyaWN0ZWQpJCc7CkBAIC00
OTYsNyArNTAzLDcgQEAgc3ViIHBhcnNlSW50ZXJmYWNlCiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiaW50ZXJmYWNlIiwgX19MSU5FX18pOwogICAg
ICAgICBteSAkaW50ZXJmYWNlTmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAg
ICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJGludGVyZmFjZU5hbWVUb2tlbiwgSWRlbnRpZmllclRv
a2VuKTsKLSAgICAgICAgJGludGVyZmFjZS0+bmFtZSgkaW50ZXJmYWNlTmFtZVRva2VuLT52YWx1
ZSgpKTsKKyAgICAgICAgJGludGVyZmFjZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQ
cmVmaXgoJGludGVyZmFjZU5hbWVUb2tlbi0+dmFsdWUoKSkpOwogICAgICAgICBteSAkcGFyZW50
cyA9ICRzZWxmLT5wYXJzZUluaGVyaXRhbmNlKCk7CiAgICAgICAgICRpbnRlcmZhY2UtPnBhcmVu
dHMoJHBhcmVudHMpOwogICAgICAgICAkaW50ZXJmYWNlLT5wYXJlbnQoJHBhcmVudHMtPlswXSk7
CkBAIC02OTYsNyArNzAzLDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uCiAgICAgICAgICRzZWxmLT5h
c3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZXhjZXB0aW9uIiwgX19MSU5FX18p
OwogICAgICAgICBteSAkZXhjZXB0aW9uTmFtZVRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAg
ICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJGV4Y2VwdGlvbk5hbWVUb2tlbiwgSWRlbnRp
ZmllclRva2VuKTsKLSAgICAgICAgJGludGVyZmFjZS0+bmFtZSgkZXhjZXB0aW9uTmFtZVRva2Vu
LT52YWx1ZSgpKTsKKyAgICAgICAgJGludGVyZmFjZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVs
bGFibGVQcmVmaXgoJGV4Y2VwdGlvbk5hbWVUb2tlbi0+dmFsdWUoKSkpOwogICAgICAgICAkaW50
ZXJmYWNlLT5pc0V4Y2VwdGlvbigxKTsKICAgICAgICAgbXkgJHBhcmVudHMgPSAkc2VsZi0+cGFy
c2VJbmhlcml0YW5jZSgpOwogICAgICAgICAkaW50ZXJmYWNlLT5wYXJlbnRzKCRwYXJlbnRzKTsK
QEAgLTc2MCw3ICs3NjcsNyBAQCBzdWIgcGFyc2VFbnVtCiAgICAgICAgICRzZWxmLT5hc3NlcnRU
b2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiZW51bSIsIF9fTElORV9fKTsKICAgICAgICAg
bXkgJGVudW1OYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsKICAgICAgICAgJHNlbGYtPmFz
c2VydFRva2VuVHlwZSgkZW51bU5hbWVUb2tlbiwgSWRlbnRpZmllclRva2VuKTsKLSAgICAgICAg
JGVudW0tPm5hbWUoJGVudW1OYW1lVG9rZW4tPnZhbHVlKCkpOworICAgICAgICAkZW51bS0+bmFt
ZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJGVudW1OYW1lVG9rZW4tPnZhbHVlKCkp
KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICJ7
IiwgX19MSU5FX18pOwogICAgICAgICBwdXNoKEB7JGVudW0tPnZhbHVlc30sIEB7JHNlbGYtPnBh
cnNlRW51bVZhbHVlTGlzdCgpfSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAifSIsIF9fTElORV9fKTsKQEAgLTg3NCw3ICs4ODEsNyBAQCBzdWIg
cGFyc2VDb25zdAogICAgICAgICAkbmV3RGF0YU5vZGUtPnR5cGUoJHNlbGYtPnBhcnNlQ29uc3RU
eXBlKCkpOwogICAgICAgICBteSAkY29uc3ROYW1lVG9rZW4gPSAkc2VsZi0+Z2V0VG9rZW4oKTsK
ICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVHlwZSgkY29uc3ROYW1lVG9rZW4sIElkZW50aWZp
ZXJUb2tlbik7Ci0gICAgICAgICRuZXdEYXRhTm9kZS0+bmFtZSgkY29uc3ROYW1lVG9rZW4tPnZh
bHVlKCkpOworICAgICAgICAkbmV3RGF0YU5vZGUtPm5hbWUoaWRlbnRpZmllclJlbW92ZU51bGxh
YmxlUHJlZml4KCRjb25zdE5hbWVUb2tlbi0+dmFsdWUoKSkpOwogICAgICAgICAkc2VsZi0+YXNz
ZXJ0VG9rZW5WYWx1ZSgkc2VsZi0+Z2V0VG9rZW4oKSwgIj0iLCBfX0xJTkVfXyk7CiAgICAgICAg
ICRuZXdEYXRhTm9kZS0+dmFsdWUoJHNlbGYtPnBhcnNlQ29uc3RWYWx1ZSgpKTsKICAgICAgICAg
JHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICI7IiwgX19MSU5FX18p
OwpAQCAtMTE1Niw3ICsxMTYzLDcgQEAgc3ViIHBhcnNlQXR0cmlidXRlUmVzdAogICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5
cGUpKTsKICAgICAgICAgbXkgJHRva2VuID0gJHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRz
ZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRva2VuLCBJZGVudGlmaWVyVG9rZW4pOwotICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZSgkdG9rZW4tPnZhbHVlKCkpOworICAgICAgICAk
bmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVm
aXgoJHRva2VuLT52YWx1ZSgpKSk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRz
ZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElORV9fKTsKICAgICAgICAgIyBDdXN0b21Db25zdHJ1
Y3RvciBtYXkgYWxzbyBiZSB1c2VkIG9uIGF0dHJpYnV0ZXMuCiAgICAgICAgIGlmIChkZWZpbmVk
ICRleHRlbmRlZEF0dHJpYnV0ZUxpc3QtPnsiQ3VzdG9tQ29uc3RydWN0b3JzIn0pIHsKQEAgLTEz
NDIsNyArMTM0OSw3IEBAIHN1YiBwYXJzZU9wZXJhdGlvblJlc3QKICAgICAgICAgbXkgJG5ld0Rh
dGFOb2RlID0gZG9tRnVuY3Rpb24tPm5ldygpOwogICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25h
dHVyZShkb21TaWduYXR1cmUtPm5ldygpKTsKICAgICAgICAgbXkgJG5hbWUgPSAkc2VsZi0+cGFy
c2VPcHRpb25hbElkZW50aWZpZXIoKTsKLSAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUt
Pm5hbWUoJG5hbWUpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFtZShpZGVu
dGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJG5hbWUpKTsKICAgICAgICAgJHNlbGYtPmFzc2Vy
dFRva2VuVmFsdWUoJHNlbGYtPmdldFRva2VuKCksICIoIiwgJG5hbWUsIF9fTElORV9fKTsKICAg
ICAgICAgcHVzaChAeyRuZXdEYXRhTm9kZS0+cGFyYW1ldGVyc30sIEB7JHNlbGYtPnBhcnNlQXJn
dW1lbnRMaXN0KCl9KTsKICAgICAgICAgJHNlbGYtPmFzc2VydFRva2VuVmFsdWUoJHNlbGYtPmdl
dFRva2VuKCksICIpIiwgX19MSU5FX18pOwpAQCAtMTQyNyw3ICsxNDM0LDcgQEAgc3ViIHBhcnNl
T3B0aW9uYWxPclJlcXVpcmVkQXJndW1lbnQKICAgICAgICAgICAgICRwYXJhbURhdGFOb2RlLT5p
c051bGxhYmxlKDApOwogICAgICAgICB9CiAgICAgICAgICMgUmVtb3ZlIGFsbCAiPyIgaWYgZXhp
c3RzLCBlLmcuICJvYmplY3Q/W10/IiAtPiAib2JqZWN0W10iLgotICAgICAgICAkcGFyYW1EYXRh
Tm9kZS0+dHlwZSh0eXBlUmVtb3ZlTnVsbGFibGVTdWZmaXgoJHR5cGUpKTsKKyAgICAgICAgJHBh
cmFtRGF0YU5vZGUtPnR5cGUoaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KHR5cGVSZW1v
dmVOdWxsYWJsZVN1ZmZpeCgkdHlwZSkpKTsKICAgICAgICAgJHBhcmFtRGF0YU5vZGUtPmlzT3B0
aW9uYWwoMSk7CiAgICAgICAgICRwYXJhbURhdGFOb2RlLT5uYW1lKCRzZWxmLT5wYXJzZUFyZ3Vt
ZW50TmFtZSgpKTsKICAgICAgICAgJHNlbGYtPnBhcnNlRGVmYXVsdCgpOwpAQCAtMTUwNCw3ICsx
NTExLDcgQEAgc3ViIHBhcnNlRXhjZXB0aW9uRmllbGQKICAgICAgICAgJG5ld0RhdGFOb2RlLT5z
aWduYXR1cmUtPnR5cGUoJHNlbGYtPnBhcnNlVHlwZSgpKTsKICAgICAgICAgbXkgJHRva2VuID0g
JHNlbGYtPmdldFRva2VuKCk7CiAgICAgICAgICRzZWxmLT5hc3NlcnRUb2tlblR5cGUoJHRva2Vu
LCBJZGVudGlmaWVyVG9rZW4pOwotICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFt
ZSgkdG9rZW4tPnZhbHVlKCkpOworICAgICAgICAkbmV3RGF0YU5vZGUtPnNpZ25hdHVyZS0+bmFt
ZShpZGVudGlmaWVyUmVtb3ZlTnVsbGFibGVQcmVmaXgoJHRva2VuLT52YWx1ZSgpKSk7CiAgICAg
ICAgICRzZWxmLT5hc3NlcnRUb2tlblZhbHVlKCRzZWxmLT5nZXRUb2tlbigpLCAiOyIsIF9fTElO
RV9fKTsKICAgICAgICAgJG5ld0RhdGFOb2RlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cygkZXh0ZW5kZWRBdHRyaWJ1dGVMaXN0KTsKICAgICAgICAgcmV0dXJuICRuZXdEYXRhTm9kZTsK
QEAgLTE4NzYsNyArMTg4Myw3IEBAIHN1YiBwYXJzZU5vbkFueVR5cGUKICAgICAgICAgcmV0dXJu
ICJEYXRlIiAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgoKTsKICAgICB9CiAgICAgaWYgKCRuZXh0
LT50eXBlKCkgPT0gSWRlbnRpZmllclRva2VuIHx8ICRuZXh0LT52YWx1ZSgpIGVxICI6OiIpIHsK
LSAgICAgICAgbXkgJG5hbWUgPSAkc2VsZi0+cGFyc2VTY29wZWROYW1lKCk7CisgICAgICAgIG15
ICRuYW1lID0gaWRlbnRpZmllclJlbW92ZU51bGxhYmxlUHJlZml4KCRzZWxmLT5wYXJzZVNjb3Bl
ZE5hbWUoKSk7CiAgICAgICAgIHJldHVybiAkbmFtZSAuICRzZWxmLT5wYXJzZVR5cGVTdWZmaXgo
KTsKICAgICB9CiAgICAgJHNlbGYtPmFzc2VydFVuZXhwZWN0ZWRUb2tlbigkbmV4dC0+dmFsdWUo
KSwgX19MSU5FX18pOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RFeGNlcHRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RXhjZXB0aW9uLmlkbAkocmV2aXNpb24gMTU2NjUwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RFeGNlcHRpb24uaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwzICsyOCw4IEBACiBleGNlcHRpb24gVGVzdEV4Y2VwdGlvbiB7CiAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiB9OworCisvLyBJZGVudGlmaWVy
cyB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLCB3aGljaCBzaG91bGQgYmUgcmVtb3ZlZC4KK2V4
Y2VwdGlvbiBfYXR0cmlidXRlIHsKKyAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgX3Jl
YWRvbmx5OworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0SW50ZXJmYWNlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdEludGVyZmFjZS5pZGwJKHJldmlzaW9uIDE1NjY1MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0SW50ZXJmYWNlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsMyArNDIsNyBAQAogCiBUZXN0SW50ZXJmYWNlIGltcGxlbWVudHMgVGVz
dEltcGxlbWVudHM7CiAKK1sKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCitdIGludGVy
ZmFjZSBfcmVhZG9ubHkgeworfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9UZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDE1NjY1MCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsOSBAQAogCiBlbnVtIFRlc3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIs
ICJFbnVtVmFsdWUyIiwgIkVudW1WYWx1ZTMiIH07CiAKKy8vIExlYWRpbmcgdW5kZXJzY29yZSBv
biBhbiBlbnVtIHNob3VsZCBiZSByZW1vdmVkLgorZW51bSBfb3B0aW9uYWwgeyAiIiwgIk9wdGlv
bmFsVmFsdWUxIiwgIk9wdGlvbmFsVmFsdWUyIiwgIk9wdGlvbmFsVmFsdWUzIiB9OworCiBbCiAg
ICAgQ29uc3RydWN0b3IoVGVzdENhbGxiYWNrIHRlc3RDYWxsYmFjayksCiAgICAgSW50ZXJmYWNl
TmFtZT1UZXN0T2JqZWN0CkBAIC0yNjQsNiArMjY3LDEyIEBAIGVudW0gVGVzdEVudW1UeXBlIHsg
IiIsICJFbnVtVmFsdWUxIiwgIkUKICAgICBhdHRyaWJ1dGUgbG9uZz8gbnVsbGFibGVMb25nU2V0
dGFibGVBdHRyaWJ1dGU7CiAKICAgICBbR2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUg
bG9uZz8gbnVsbGFibGVTdHJpbmdWYWx1ZTsKKworICAgIC8vIElkZW50aWZpZXJzIHdpdGggYSBs
ZWFkaW5nIHVuZGVyc2NvcmUsIHdoaWNoIHNob3VsZCBiZSByZW1vdmVkLgorICAgIGNvbnN0IHVu
c2lnbmVkIHNob3J0ICAgICAgICAgICAgICAgX3JlYWRvbmx5ID0gMDsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nICAgICAgIF9hdHRyaWJ1dGU7CisgICAgYXR0cmlidXRlIF9vcHRp
b25hbCAgICAgICAgICAgICAgICBhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZTsKKyAgICB2
b2lkIF9hbnkoZmxvYXQgYSwgbG9uZyBiKTsKIH07CiAKIC8vIFRoZSBmb2xsb3dpbmcgY29tbWVu
dCBzaG91bGQgbm90IGdlbmVyYXRlIGFueSBjb2RlLgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouY3Bw
CShyZXZpc2lvbiAxNTY2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvQ1BQL1dlYkRPTVRlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjUsNiArNzY1LDE0
IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6c2V0TnVsbGFibGVTdHJpbmdWYWwKICAgICBpbXBsKCkt
PnNldE51bGxhYmxlU3RyaW5nVmFsdWUobmV3TnVsbGFibGVTdHJpbmdWYWx1ZSk7CiB9CiAKK1dl
YkRPTVN0cmluZyBXZWJET01UZXN0T2JqOjphdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NU3RyaW5nKCk7CisKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8Y29uc3QgV1RGOjpTdHJpbmcmPihpbXBsKCktPmF0dHJpYnV0ZSgpKTsKK30KKwog
dm9pZCBXZWJET01UZXN0T2JqOjp2b2lkTWV0aG9kKCkKIHsKICAgICBpZiAoIWltcGwoKSkKQEAg
LTExMjEsNiArMTEyOSwxNCBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnZhcmlhZGljTm9kZU1ldGhv
ZChjCiAgICAgaW1wbCgpLT52YXJpYWRpY05vZGVNZXRob2QodG9XZWJDb3JlKGhlYWQpLCB0b1dl
YkNvcmUodGFpbCkpOwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6OmFueShmbG9hdCBhLCBpbnQg
YikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5h
bnkoYSwgYik7Cit9CisKIFdlYkNvcmU6OlRlc3RPYmoqIHRvV2ViQ29yZShjb25zdCBXZWJET01U
ZXN0T2JqJiB3cmFwcGVyKQogewogICAgIHJldHVybiB3cmFwcGVyLmltcGwoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2Vi
RE9NVGVzdE9iai5oCShyZXZpc2lvbiAxNTY2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtNjUs
NyArNjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIFdFQkRPTV9DT05TVF9WQUxVRV8xMiA9IDB4MDEs
CiAgICAgICAgIFdFQkRPTV9DT05TVF9WQUxVRV8xMyA9IDBYMjAsCiAgICAgICAgIFdFQkRPTV9D
T05TVF9WQUxVRV8xNCA9IDB4MWFiYywKLSAgICAgICAgV0VCRE9NX0NPTlNUX0pBVkFTQ1JJUFQg
PSAxNQorICAgICAgICBXRUJET01fQ09OU1RfSkFWQVNDUklQVCA9IDE1LAorICAgICAgICBXRUJE
T01fcmVhZG9ubHkgPSAwCiAgICAgfTsKIAogICAgIGludCByZWFkT25seUxvbmdBdHRyKCkgY29u
c3Q7CkBAIC0xNTUsNiArMTU2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TnVsbGFibGVMb25n
U2V0dGFibGVBdHRyaWJ1dGUoaW50KTsKICAgICBpbnQgbnVsbGFibGVTdHJpbmdWYWx1ZSgpIGNv
bnN0OwogICAgIHZvaWQgc2V0TnVsbGFibGVTdHJpbmdWYWx1ZShpbnQpOworICAgIFdlYkRPTVN0
cmluZyBhdHRyaWJ1dGUoKSBjb25zdDsKIAogICAgIHZvaWQgdm9pZE1ldGhvZCgpOwogICAgIHZv
aWQgdm9pZE1ldGhvZFdpdGhBcmdzKGludCBsb25nQXJnLCBjb25zdCBXZWJET01TdHJpbmcmIHN0
ckFyZywgY29uc3QgV2ViRE9NVGVzdE9iaiYgb2JqQXJnKTsKQEAgLTIwNyw2ICsyMDksNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCB2YXJpYWRpY1N0cmluZ01ldGhvZChjb25zdCBXZWJET01TdHJpbmcm
IGhlYWQsIGNvbnN0IFdlYkRPTVN0cmluZyYgdGFpbCk7CiAgICAgdm9pZCB2YXJpYWRpY0RvdWJs
ZU1ldGhvZChkb3VibGUgaGVhZCwgZG91YmxlIHRhaWwpOwogICAgIHZvaWQgdmFyaWFkaWNOb2Rl
TWV0aG9kKGNvbnN0IFdlYkRPTU5vZGUmIGhlYWQsIGNvbnN0IFdlYkRPTU5vZGUmIHRhaWwpOwor
ICAgIHZvaWQgYW55KGZsb2F0IGEsIGludCBiKTsKIAogICAgIFdlYkNvcmU6OlRlc3RPYmoqIGlt
cGwoKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAJKHJl
dmlzaW9uIDE1NjY1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9H
T2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMx
LDcgQEAgZW51bSB7CiAgICAgUFJPUF9OVUxMQUJMRV9TVFJJTkdfQVRUUklCVVRFLAogICAgIFBS
T1BfTlVMTEFCTEVfTE9OR19TRVRUQUJMRV9BVFRSSUJVVEUsCiAgICAgUFJPUF9OVUxMQUJMRV9T
VFJJTkdfVkFMVUUsCisgICAgUFJPUF9BVFRSSUJVVEUsCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfZG9tX3Rlc3Rfb2JqX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKQEAgLTU2MSw2ICs1NjIs
MTAgQEAgc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcAogICAgICAgICBn
X3ZhbHVlX3NldF9sb25nKHZhbHVlLCBjb3JlU2VsZi0+bnVsbGFibGVTdHJpbmdWYWx1ZShpc051
bGwsIGVjKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfQVRUUklCVVRF
OiB7CisgICAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJp
bmcoY29yZVNlbGYtPmF0dHJpYnV0ZSgpKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTEyNyw2ICsxMTMyLDE2
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfY2xhc3NfaW4KICAgICAgICAgICAg
IEdfTUlOTE9ORywgR19NQVhMT05HLCAwLAogICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURX
UklURSkpOwogCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAg
Z29iamVjdENsYXNzLAorICAgICAgICBQUk9QX0FUVFJJQlVURSwKKyAgICAgICAgZ19wYXJhbV9z
cGVjX3N0cmluZygKKyAgICAgICAgICAgICJhdHRyaWJ1dGUiLAorICAgICAgICAgICAgIlRlc3RP
Ymo6YXR0cmlidXRlIiwKKyAgICAgICAgICAgICJyZWFkLW9ubHkgZ2NoYXIqIFRlc3RPYmo6YXR0
cmlidXRlIiwKKyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURB
QkxFKSk7CisKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial9pbml0KFdlYktp
dERPTVRlc3RPYmoqIHJlcXVlc3QpCkBAIC0xNjUwLDYgKzE2NjUsMTQgQEAgdm9pZCB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3ZhcmlhZGljX25vZGVfbQogICAgIGl0ZW0tPnZhcmlhZGljTm9kZU1ldGhv
ZChjb252ZXJ0ZWRIZWFkLCBjb252ZXJ0ZWRUYWlsKTsKIH0KIAordm9pZCB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX2FueShXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBnZmxvYXQgYSwgZ2xvbmcgYikKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBXZWJDb3JlOjpUZXN0
T2JqKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGl0ZW0tPmFueShhLCBiKTsKK30K
KwogZ2xvbmcgd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X2xvbmdfYXR0cihXZWJL
aXRET01UZXN0T2JqKiBzZWxmKQogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0
ZSBzdGF0ZTsKQEAgLTI1ODgsMyArMjYxMSwxMiBAQCB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X251bGxhYmxlX3N0CiAgICAgaXRlbS0+c2V0TnVsbGFibGVTdHJpbmdWYWx1ZSh2YWx1ZSk7
CiB9CiAKK2djaGFyKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9hdHRyaWJ1dGUoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX09CSihzZWxm
KSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRvVVRGOFN0cmluZyhpdGVtLT5hdHRyaWJ1dGUo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaAkocmV2aXNpb24gMTU2NjUwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC01
NDMsNiArNTQzLDE3IEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X29ial92YXJp
YWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01Ob2RlKiBo
ZWFkLCBXZWJLaXRET01Ob2RlKiB0YWlsKTsKIAogLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2FueToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAYTogQSAjZ2Zsb2F0Cisg
KiBAYjogQSAjZ2xvbmcKKyAqCisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21f
dGVzdF9vYmpfYW55KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIGdmbG9hdCBhLCBnbG9uZyBiKTsK
KworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9yZWFkX29ubHlfbG9uZ19hdHRyOgog
ICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKICAqCkBAIC0xNTExLDYgKzE1MjIsMTYgQEAg
d2Via2l0X2RvbV90ZXN0X29ial9nZXRfbnVsbGFibGVfc3RyaW5nXwogV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9udWxsYWJsZV9zdHJpbmdfdmFsdWUoV2ViS2l0RE9N
VGVzdE9iaiogc2VsZiwgZ2xvbmcgdmFsdWUpOwogCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9v
YmpfZ2V0X2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICog
UmV0dXJuczoKKyAqCisqKi8KK1dFQktJVF9BUEkgZ2NoYXIqCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2dldF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CisKIEdfRU5EX0RFQ0xTCiAK
ICNlbmRpZiAvKiBXZWJLaXRET01UZXN0T2JqX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouc3ltYm9scwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9X
ZWJLaXRET01UZXN0T2JqLnN5bWJvbHMJKHJldmlzaW9uIDE1NjY1MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouc3ltYm9s
cwkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBXZWJLaXRET01ib29sKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3N0cmljCiB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfc3Ry
aW5nX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiwgY29uc3QgZ2NoYXIqLCBjb25zdCBnY2hhciop
CiB2b2lkIHdlYmtpdF9kb21fdGVzdF9vYmpfdmFyaWFkaWNfZG91YmxlX21ldGhvZChXZWJLaXRE
T01UZXN0T2JqKiwgZ2RvdWJsZSwgZ2RvdWJsZSkKIHZvaWQgd2Via2l0X2RvbV90ZXN0X29ial92
YXJpYWRpY19ub2RlX21ldGhvZChXZWJLaXRET01UZXN0T2JqKiwgV2ViS2l0RE9NTm9kZSosIFdl
YktpdERPTU5vZGUqKQordm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2FueShXZWJLaXRET01UZXN0
T2JqKiwgZ2Zsb2F0LCBnbG9uZykKIGdsb25nIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3JlYWRf
b25seV9sb25nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiopCiBnY2hhciogd2Via2l0X2RvbV90ZXN0
X29ial9nZXRfcmVhZF9vbmx5X3N0cmluZ19hdHRyKFdlYktpdERPTVRlc3RPYmoqKQogV2ViS2l0
RE9NVGVzdE9iaiogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfcmVhZF9vbmx5X3Rlc3Rfb2JqX2F0
dHIoV2ViS2l0RE9NVGVzdE9iaiopCkBAIC0xNDAsMyArMTQxLDQgQEAgZ2xvbmcgd2Via2l0X2Rv
bV90ZXN0X29ial9nZXRfbnVsbGFibGVfbAogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9u
dWxsYWJsZV9sb25nX3NldHRhYmxlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiwgZ2xvbmcp
CiBnbG9uZyB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9udWxsYWJsZV9zdHJpbmdfdmFsdWUoV2Vi
S2l0RE9NVGVzdE9iaiosIEdFcnJvcioqKQogdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF9u
dWxsYWJsZV9zdHJpbmdfdmFsdWUoV2ViS2l0RE9NVGVzdE9iaiosIGdsb25nKQorZ2NoYXIqIHdl
YmtpdF9kb21fdGVzdF9vYmpfZ2V0X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouY3BwCShyZXZpc2lvbiAxNTY2NTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDExICsx
NTIsMTMgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialRhYgogICAgIHsg
Im51bGxhYmxlU3RyaW5nQXR0cmlidXRlIiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJp
bnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpOdWxsYWJsZVN0cmluZ0F0dHJpYnV0ZSksIChpbnRwdHJfdCkwIH0sCiAgICAgeyAi
bnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCBOb0ludHJpbnNpYywg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RP
YmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSB9LAogICAgIHsgIm51bGxhYmxlU3RyaW5nVmFs
dWUiLCBEb250RGVsZXRlLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlKSwgKGlu
dHB0cl90KXNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUgfSwKKyAgICB7ICJhdHRyaWJ1
dGUiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakF0dHJpYnV0ZSksIChp
bnRwdHJfdCkwIH0sCisgICAgeyAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiLCBEb250
RGVsZXRlLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSksIChp
bnRwdHJfdClzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSB9LAogICAg
IHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29u
c3RydWN0b3IpLCAoaW50cHRyX3QpMCB9LAogICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIDAsIDAg
fQogfTsKIAotc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpUYWJsZSA9IHsgMjY1LCAy
NTUsIEpTVGVzdE9ialRhYmxlVmFsdWVzLCAwIH07CitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpT
VGVzdE9ialRhYmxlID0geyAyNjYsIDI1NSwgSlNUZXN0T2JqVGFibGVWYWx1ZXMsIDAgfTsKIC8q
IEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCiAKIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQpAQCAtMTc2LDYgKzE3OCw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpDb24KICAgICB7ICJDT05T
VF9WQUxVRV8xMyIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1Rf
VkFMVUVfMTMpLCAoaW50cHRyX3QpMCB9LAogICAgIHsgIkNPTlNUX1ZBTFVFXzE0IiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDT05TVF9WQUxVRV8xNCksIChpbnRwdHJf
dCkwIH0sCiAgICAgeyAiQ09OU1RfSkFWQVNDUklQVCIsIERvbnREZWxldGUgfCBSZWFkT25seSwg
Tm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVCksIChpbnRwdHJfdCkwIH0sCisgICAgeyAi
cmVhZG9ubHkiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9ialJlYWRvbmx5
KSwgKGludHB0cl90KTAgfSwKICAgICB7ICJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5
TG9uZ0F0dHIpLCAoaW50cHRyX3QpMCB9LAogICAgIHsgInN0YXRpY1N0cmluZ0F0dHIiLCBEb250
RGVsZXRlLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpLCAoaW50
cHRyX3Qpc2V0SlNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyIH0sCiAgICAgeyAi
VGVzdFN1Yk9iaiIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3Ry
dWN0b3JUZXN0U3ViT2JqKSwgKGludHB0cl90KTAgfSwKQEAgLTE5MCw3ICsxOTMsNyBAQCBzdGF0
aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uCiAgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgMCwgMCB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9iakNvbnN0
cnVjdG9yVGFibGUgPSB7IDM4LCAzMSwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlcywg
MCB9Oworc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlID0g
eyAzOSwgMzEsIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsIDAgfTsKIAogI2lmIEVO
QUJMRShDb25kaXRpb24xKQogQ09NUElMRV9BU1NFUlQoMCA9PSBUZXN0T2JqOjpDT05ESVRJT05B
TF9DT05TVCwgVGVzdE9iakVudW1DT05ESVRJT05BTF9DT05TVElzV3JvbmdVc2VEb05vdENoZWNr
Q29uc3RhbnRzKTsKQEAgLTIwNyw2ICsyMTAsNyBAQCBDT01QSUxFX0FTU0VSVCgweDAxID09IFRl
c3RPYmo6OkNPTlNUX1ZBCiBDT01QSUxFX0FTU0VSVCgwWDIwID09IFRlc3RPYmo6OkNPTlNUX1ZB
TFVFXzEzLCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzEzSXNXcm9uZ1VzZURvTm90Q2hlY2tDb25z
dGFudHMpOwogQ09NUElMRV9BU1NFUlQoMHgxYWJjID09IFRlc3RPYmo6OkNPTlNUX1ZBTFVFXzE0
LCBUZXN0T2JqRW51bUNPTlNUX1ZBTFVFXzE0SXNXcm9uZ1VzZURvTm90Q2hlY2tDb25zdGFudHMp
OwogQ09NUElMRV9BU1NFUlQoMTUgPT0gVGVzdE9iajo6Q09OU1RfSU1QTCwgVGVzdE9iakVudW1D
T05TVF9JTVBMSXNXcm9uZ1VzZURvTm90Q2hlY2tDb25zdGFudHMpOworQ09NUElMRV9BU1NFUlQo
MCA9PSBUZXN0T2JqOjpyZWFkb25seSwgVGVzdE9iakVudW1yZWFkb25seUlzV3JvbmdVc2VEb05v
dENoZWNrQ29uc3RhbnRzKTsKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RP
YmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T2JqKEV4ZWNTdGF0ZSogZXhlYykKIHsKQEAg
LTI2NSw2ICsyNjksNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqUHJv
CiAgICAgeyAiQ09OU1RfVkFMVUVfMTMiLCBEb250RGVsZXRlIHwgUmVhZE9ubHksIE5vSW50cmlu
c2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpz
VGVzdE9iakNPTlNUX1ZBTFVFXzEzKSwgKGludHB0cl90KTAgfSwKICAgICB7ICJDT05TVF9WQUxV
RV8xNCIsIERvbnREZWxldGUgfCBSZWFkT25seSwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ09OU1RfVkFMVUVf
MTQpLCAoaW50cHRyX3QpMCB9LAogICAgIHsgIkNPTlNUX0pBVkFTQ1JJUFQiLCBEb250RGVsZXRl
IHwgUmVhZE9ubHksIE5vSW50cmluc2ljLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNPTlNUX0pBVkFTQ1JJUFQpLCAoaW50cHRyX3Qp
MCB9LAorICAgIHsgInJlYWRvbmx5IiwgRG9udERlbGV0ZSB8IFJlYWRPbmx5LCBOb0ludHJpbnNp
YywgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpSZWFkb25seSksIChpbnRwdHJfdCkwIH0sCiAgICAgeyAidm9pZE1ldGhvZCIsIERvbnRE
ZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0
PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QpLCAo
aW50cHRyX3QpMCB9LAogICAgIHsgInZvaWRNZXRob2RXaXRoQXJncyIsIERvbnREZWxldGUgfCBK
U0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyksIChp
bnRwdHJfdCkzIH0sCiAgICAgeyAiYnl0ZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QpLCAoaW50cHRyX3QpMCB9LApAQCAt
MzMyLDYgKzMzNyw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm8K
ICAgICB7ICJ2YXJpYWRpY1N0cmluZ01ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKSwgKGludHB0cl90KTIg
fSwKICAgICB7ICJ2YXJpYWRpY0RvdWJsZU1ldGhvZCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0
aW9uLCBOb0ludHJpbnNpYywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKSwgKGludHB0cl90
KTIgfSwKICAgICB7ICJ2YXJpYWRpY05vZGVNZXRob2QiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgTm9JbnRyaW5zaWMsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4o
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QpLCAoaW50cHRyX3Qp
MiB9LAorICAgIHsgImFueSIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNp
YywgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkFueSksIChpbnRwdHJfdCkyIH0sCiAgICAgeyAwLCAwLCBOb0ludHJpbnNpYywg
MCwgMCB9CiB9OwogCkBAIC0xMDgxLDYgKzEwODcsMjYgQEAgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxs
YWJsZVN0cmluZ1ZhbHVlKEV4ZQogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgUHJvcGVydHlOYW1lKQoreworICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFz
ZSkpOworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbC0+YXR0cmlidXRlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgc2xvdEJhc2UsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBVTlVT
RURfUEFSQU0oZXhlYyk7CisgICAgVGVzdE9iaiogaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwtPmF0dHJp
YnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKwog
SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xv
dEJhc2UsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGRvbU9iamVjdCA9IGpzQ2Fz
dDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAtMTcyNCw2ICsxNzUwLDIwIEBA
IHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZShFeGUKIH0KIAogCit2b2lkIHNl
dEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3RPYmoqPih0
aGlzT2JqZWN0KTsKKyAgICBUZXN0T2JqKiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOworICAg
IGNvbnN0IFN0cmluZyBuYXRpdmVWYWx1ZSh2YWx1ZS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IHZh
bHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG5hdGl2ZVZhbHVlICE9ICIiICYmIG5h
dGl2ZVZhbHVlICE9ICJPcHRpb25hbFZhbHVlMSIgJiYgbmF0aXZlVmFsdWUgIT0gIk9wdGlvbmFs
VmFsdWUyIiAmJiBuYXRpdmVWYWx1ZSAhPSAiT3B0aW9uYWxWYWx1ZTMiKQorICAgICAgICByZXR1
cm47CisgICAgaW1wbC0+c2V0QXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUobmF0aXZlVmFs
dWUpOworfQorCisKIEpTVmFsdWUgSlNUZXN0T2JqOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
Z2xvYmFsT2JqZWN0KSk7CkBAIC0zMTQyLDYgKzMxODIsMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25BbnkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRz
KEpTVGVzdE9iajo6aW5mbygpKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVzdE9iaio+KGFzT2Jq
ZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhp
cywgSlNUZXN0T2JqOjppbmZvKCkpOworICAgIFRlc3RPYmoqIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIGZsb2F0IGEoZXhlYy0+YXJndW1lbnQoMCkudG9GbG9hdChleGVjKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIGludCBiKHRvSW50MzIoZXhlYywgZXhlYy0+YXJndW1lbnQoMSks
IE5vcm1hbENvbnZlcnNpb24pKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+YW55
KGEsIGIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisK
IHZvaWQgSlNUZXN0T2JqOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgSlNUZXN0T2JqKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE9i
aio+KGNlbGwpOwpAQCAtMzIzNCw2ICszMjk0LDEyIEBAIEpTVmFsdWUganNUZXN0T2JqQ09OU1Rf
SkFWQVNDUklQVChFeGVjU3QKICAgICByZXR1cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50Pigx
NSkpOwogfQogCitKU1ZhbHVlIGpzVGVzdE9ialJlYWRvbmx5KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICByZXR1
cm4ganNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50PigwKSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc09ic2VydmFibGUoSlNUZXN0T2JqKiBqc1Rlc3RPYmopCiB7CiAgICAgaWYgKGpzVGVzdE9i
ai0+aGFzQ3VzdG9tUHJvcGVydGllcygpKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkocmV2aXNpb24gMTU2NjUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2QoSlNDOjpFeGVjU3RhdGUq
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y05vZGVNZXRob2QoSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFueShKU0M6OkV4ZWNTdGF0ZSopOwog
Ly8gQXR0cmlidXRlcwogCiBKU0M6OkpTVmFsdWUganNUZXN0T2JqUmVhZE9ubHlMb25nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwpAQCAtMzYz
LDYgKzM2NCw5IEBAIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWIKIHZv
aWQgc2V0SlNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpOdWxsYWJsZVN0cmluZ1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiB2b2lkIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6
UHJvcGVydHlOYW1lKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOwordm9pZCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwogSlNDOjpKU1ZhbHVl
IGpzVGVzdE9iakNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CiAvLyBDb25zdGFudHMKIApAQCAtMzgxLDYgKzM4NSw3IEBAIEpTQzo6
SlNWYWx1ZSBqc1Rlc3RPYmpDT05TVF9WQUxVRV8xMihKU0MKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpDT05TVF9WQUxVRV8xMyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwogSlNDOjpKU1ZhbHVlIGpzVGVzdE9iakNPTlNUX1ZBTFVFXzE0KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBKU0M6OkpTVmFsdWUg
anNUZXN0T2JqQ09OU1RfSkFWQVNDUklQVChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialJlYWRvbmx5KEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdE9iai5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAkocmV2aXNpb24gMTU2NjUwKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw4IEBAIGVudW0gewogICAgIERPTV9DT05TVF9WQUxV
RV8xMiA9IDB4MDEsCiAgICAgRE9NX0NPTlNUX1ZBTFVFXzEzID0gMFgyMCwKICAgICBET01fQ09O
U1RfVkFMVUVfMTQgPSAweDFhYmMsCi0gICAgRE9NX0NPTlNUX0pBVkFTQ1JJUFQgPSAxNQorICAg
IERPTV9DT05TVF9KQVZBU0NSSVBUID0gMTUsCisgICAgRE9NX3JlYWRvbmx5ID0gMAogfTsKIAog
QGludGVyZmFjZSBET01UZXN0T2JqIDogRE9NT2JqZWN0CkBAIC0xMjMsNiArMTI0LDcgQEAgZW51
bSB7CiBAcHJvcGVydHkocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICpudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZTsKIEBwcm9wZXJ0eSBpbnQgbnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGU7CiBA
cHJvcGVydHkgaW50IG51bGxhYmxlU3RyaW5nVmFsdWU7CitAcHJvcGVydHkocmVhZG9ubHksIGNv
cHkpIE5TU3RyaW5nICphdHRyaWJ1dGU7CiAKIC0gKHZvaWQpdm9pZE1ldGhvZDsKIC0gKHZvaWQp
dm9pZE1ldGhvZFdpdGhBcmdzOihpbnQpbG9uZ0FyZyBzdHJBcmc6KE5TU3RyaW5nICopc3RyQXJn
IG9iakFyZzooRE9NVGVzdE9iaiAqKW9iakFyZzsKQEAgLTE4OCw2ICsxOTAsNyBAQCBlbnVtIHsK
IC0gKHZvaWQpdmFyaWFkaWNTdHJpbmdNZXRob2Q6KE5TU3RyaW5nICopaGVhZCB0YWlsOihOU1N0
cmluZyAqKXRhaWw7CiAtICh2b2lkKXZhcmlhZGljRG91YmxlTWV0aG9kOihkb3VibGUpaGVhZCB0
YWlsOihkb3VibGUpdGFpbDsKIC0gKHZvaWQpdmFyaWFkaWNOb2RlTWV0aG9kOihET01Ob2RlICop
aGVhZCB0YWlsOihET01Ob2RlICopdGFpbDsKKy0gKHZvaWQpYW55OihmbG9hdClhIGI6KGludCli
OwogQGVuZAogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQkocmV2aXNpb24gMTU2NjUwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzk5LDYgKzc5OSwxMiBAQCAtICh2b2lkKXNldE51bGxhYmxl
U3RyaW5nVmFsdWU6KGludCluZXdOCiAgICAgSU1QTC0+c2V0TnVsbGFibGVTdHJpbmdWYWx1ZShu
ZXdOdWxsYWJsZVN0cmluZ1ZhbHVlKTsKIH0KIAorLSAoTlNTdHJpbmcgKilhdHRyaWJ1dGUKK3sK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElN
UEwtPmF0dHJpYnV0ZSgpOworfQorCiAtICh2b2lkKXZvaWRNZXRob2QKIHsKICAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CkBAIC0xMTY0LDYgKzExNzAsMTIgQEAgLSAo
dm9pZCl2YXJpYWRpY05vZGVNZXRob2Q6KERPTU5vZGUgKiloZQogICAgIElNUEwtPnZhcmlhZGlj
Tm9kZU1ldGhvZChjb3JlKGhlYWQpLCBjb3JlKHRhaWwpKTsKIH0KIAorLSAodm9pZClhbnk6KGZs
b2F0KWEgYjooaW50KWIKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3Rh
dGU7CisgICAgSU1QTC0+YW55KGEsIGIpOworfQorCiBAZW5kCiAKIFdlYkNvcmU6OlRlc3RPYmoq
IGNvcmUoRE9NVGVzdE9iaiAqd3JhcHBlcikK
</data>

          </attachment>
      

    </bug>

</bugzilla>