<?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>123574</bug_id>
          
          <creation_ts>2013-10-31 09:23:26 -0700</creation_ts>
          <short_desc>Remove CachedTranscendentalFunction because caching math functions is an ugly idea</short_desc>
          <delta_ts>2013-10-31 12:18:56 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945540</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 09:23:26 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945543</commentid>
    <comment_count>1</comment_count>
      <attachid>215656</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 09:26:10 -0700</bug_when>
    <thetext>Created attachment 215656
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945545</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-31 09:27:31 -0700</bug_when>
    <thetext>Attachment 215656 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.h&apos;, u&apos;Source/JavaScriptCore/runtime/CachedTranscendentalFunction.h&apos;, u&apos;Source/JavaScriptCore/runtime/DateInstanceCache.h&apos;, u&apos;Source/JavaScriptCore/runtime/Intrinsic.h&apos;, u&apos;Source/JavaScriptCore/runtime/MathObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:566:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 1 in 16 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>945546</commentid>
    <comment_count>3</comment_count>
      <attachid>215656</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-10-31 09:36:32 -0700</bug_when>
    <thetext>Comment on attachment 215656
the patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:570
&gt; +            setConstant(node, jsNumber(sin(child.asNumber())));

Is this supposed to be cos?

&gt; Source/JavaScriptCore/runtime/DateInstanceCache.h:29
&gt; +#include &quot;JSCJSValue.h&quot;

Is this necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945548</commentid>
    <comment_count>4</comment_count>
      <attachid>215656</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2013-10-31 09:40:37 -0700</bug_when>
    <thetext>Comment on attachment 215656
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1485
&gt;          if (argumentCountIncludingThis == 1) { // Math.sqrt()

Remove/change the Math.sqrt() comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945627</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 12:14:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 215656 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215656&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:570
&gt; &gt; +            setConstant(node, jsNumber(sin(child.asNumber())));
&gt; 
&gt; Is this supposed to be cos?

Heh.  Good point.  I added a test.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/DateInstanceCache.h:29
&gt; &gt; +#include &quot;JSCJSValue.h&quot;
&gt; 
&gt; Is this necessary?

Yup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945629</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 12:14:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 215656 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGCSEPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/jit/JITOperations.h&apos;, u&apos;Source/JavaScriptCore/runtime/CachedTranscendentalFunction.h&apos;, u&apos;Source/JavaScriptCore/runtime/DateInstanceCache.h&apos;, u&apos;Source/JavaScriptCore/runtime/Intrinsic.h&apos;, u&apos;Source/JavaScriptCore/runtime/MathObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;]&quot; exit_code: 1
&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:566:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]

Fixed.

&gt; Total errors found: 1 in 16 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945630</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 12:14:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 215656 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215656&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1485
&gt; &gt;          if (argumentCountIncludingThis == 1) { // Math.sqrt()
&gt; 
&gt; Remove/change the Math.sqrt() comment

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945633</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-10-31 12:18:56 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/158384 and http://trac.webkit.org/changeset/158385</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215656</attachid>
            <date>2013-10-31 09:26:10 -0700</date>
            <delta_ts>2013-10-31 09:40:37 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25745</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU4MzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEzLTEwLTMxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24gYmVjYXVzZSBjYWNoaW5nIG1hdGgg
ZnVuY3Rpb25zIGlzIGFuIHVnbHkgaWRlYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIHBlcmZvcm1hbmNlLW5ldXRyYWwgYmVj
YXVzZSBJIGFsc28gbWFrZSBNYXRoLmNvcy9zaW4gaW50cmluc2ljLiBUaGlzIG1lYW5zIHRoYXQK
KyAgICAgICAgd2UgZ2FpbiB0aGUgIm92ZXJoZWFkIiBvZiBhY3R1YWxseSBjb21wdXRpbmcgc2lu
IGFuZCBjb3MgYnV0IHdlIGxvc2UgdGhlIG92ZXJoZWFkIG9mCisgICAgICAgIGdvaW5nIHRocm91
Z2ggdGhlIG5hdGl2ZSBjYWxsIHRodW5rcy4KKyAgICAgICAgCisgICAgICAgIENhY2hpbmcgdHJh
bnNjZW5kZW50YWwgZnVuY3Rpb25zIGlzIGEgcmVhbGx5IHVnbHkgaWRlYS4gSXQgd29ya3MgZm9y
IFN1blNwaWRlciBiZWNhdXNlCisgICAgICAgIHRoYXQgYmVuY2htYXJrIG1ha2VzIHZlcnkgcHJl
ZGljdGFibGUgY2FsbHMgaW50byBNYXRoLnNpbi4gQnV0IEkgZG9uJ3QgYmVsaWV2ZSB0aGF0IHRo
aXMKKyAgICAgICAgaXMgcmVwcmVzZW50YXRpdmUgb2YgYW55IGtpbmQgb2YgcmVhbGl0eSwgYW5k
IHNvIGZvciBzZW5zaWJsZSB1c2VzIG9mIE1hdGguc2luL2NvcyBhbGwKKyAgICAgICAgdGhhdCB0
aGlzIHdhcyBkb2luZyB3YXMgYWRkaW5nIG1vcmUgY2FsbCBvdmVyaGVhZCBhbmQgc29tZSBoYXNo
aW5nIG92ZXJoZWFkLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjo6OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcv
REZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QmFj
a3dhcmRzUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbnRyaW5zaWMpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToKKyAgICAgICAgKiBkZmcvREZHQ2xv
YmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRm
Zy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1
cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OmRvRG91YmxlVm90aW5nKToKKyAgICAgICAgKiBkZmcv
REZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgor
ICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogcnVudGltZS9DYWNo
ZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmg6IFJlbW92ZWQuCisgICAgICAgICogcnVudGltZS9E
YXRlSW5zdGFuY2VDYWNoZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50cmluc2ljLmg6CisgICAg
ICAgICogcnVudGltZS9NYXRoT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6TWF0aE9iamVjdDo6
ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjptYXRoUHJvdG9GdW5jQ29zKToKKyAgICAg
ICAgKEpTQzo6bWF0aFByb3RvRnVuY1Npbik6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDEzLTEwLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQXNz
ZXJ0aW9uIGZhaWx1cmUgaW4ganMvZG9tL2dsb2JhbC1jb25zdHJ1Y3RvcnMtYXR0cmlidXRlcy1k
ZWRpY2F0ZWQtd29ya2VyLmh0bWwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxNTgzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzc5LDcgKzc3OSw2
IEBACiAJCTg2ODgwRjFGMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODgw
RjFCMTQzMjhCQjkwMEIwOEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCAqLzsgfTsK
IAkJODY4ODBGNEQxNDM1M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODY4ODBGNEMxNDM1
M0IyMTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0aXZlSklUNjQuY3BwICovOyB9OwogCQk4Njg5MTZC
MDE1NUYyODYzMDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2ODkxNkE5MTU1RjI4NTQwMENCMkI5QSAvKiBQcml2
YXRlTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTg2OUQwNEFGMTE5M0I1NEQwMDgwMzQ3NSAvKiBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlE
MDRBRTExOTNCNTREMDA4MDM0NzUgLyogQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2OUVCQ0I3
MEU4QzZENEEwMDg3MjJDQyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NjlFQkNCNjBFOEM2RDRBMDA4NzIyQ0MgLyogUmVzdWx0
VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2QTkwRUQwMEVFN0Q1MUYwMEFCMzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QTkwRUNGMEVFN0Q1MUYwMEFC
MzUwRCAvKiBKSVRBcml0aG1ldGljLmNwcCAqLzsgfTsKIAkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkFERDE0MzBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMjAz
OSw3ICsyMDM4LDYgQEAKIAkJODY4ODBGMUIxNDMyOEJCOTAwQjA4RDQyIC8qIERGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHA7IHBhdGggPSBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2ODgwRjRDMTQzNTNCMjEwMEIw
OEQ0MiAvKiBERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IERGR1NwZWN1bGF0aXZlSklUNjQuY3BwOyBwYXRoID0gZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4Njg5MTZBOTE1
NUYyODU0MDBDQjJCOUEgLyogUHJpdmF0ZU5hbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUHJpdmF0ZU5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJODY5
RDA0QUUxMTkzQjU0RDAwODAzNDc1IC8qIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5j
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NjlFQkNCNjBFOEM2RDRBMDA4
NzIyQ0MgLyogUmVzdWx0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXN1bHRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ2MTU1NjQ1
MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyLmFzbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtLmFzbTsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0
NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc20uYXNtOyBuYW1lID0g
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbTsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIzMl82NC5hc207IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zMzAyLDcgKzMz
MDAsNiBAQAogCQkJCUJDNzk1MjM1MEUxNUVCNTYwMEE4OThBQiAvKiBCb29sZWFuUHJvdG90eXBl
LmggKi8sCiAJCQkJMEZCN0YzOEIxNUVEOEUzODAwRjE2N0IyIC8qIEJ1dHRlcmZseS5oICovLAog
CQkJCTBGQjdGMzhDMTVFRDhFMzgwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxpbmVzLmggKi8sCi0J
CQkJODY5RDA0QUUxMTkzQjU0RDAwODAzNDc1IC8qIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rp
b24uaCAqLywKIAkJCQlCQ0E2MkRGRTBFMjgyNjIzMDAwNEYzMEQgLyogQ2FsbERhdGEuY3BwICov
LAogCQkJCTE0NUM1MDdGMEQ5REY2M0IwMDg4RjZCOSAvKiBDYWxsRGF0YS5oICovLAogCQkJCUJD
NkFBQUU0MEUxRjQyNjUwMEFEODdEOCAvKiBDbGFzc0luZm8uaCAqLywKQEAgLTQxMzMsNyArNDEz
MCw2IEBACiAJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2OUEwNzIzMEVEMUNFMzMwMEYxRjY4MSAvKiBCeXRl
Y29kZUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY4MDIzRUExNjEzODMyQjAwQTBC
QTQ1IC8qIEJ5VmFsSW5mby5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODY5RDA0QUYxMTkzQjU0RDAw
ODAzNDc1IC8qIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMThDM0VEMEUxNkY1Q0QwMEIzNDQ2MCAvKiBDYWxsRGF0YS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQyOUQ4REUwRUQyMjA1QjAwQjg5NjE5IC8qIENhbGxGcmFtZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTdDMUVBRUYxNzk4N0FCNjAwMjk5REIyIC8qIENhbGxGcmFtZUlubGluZXMuaCBp
biBIZWFkZXJzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTU4MzQxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDI3IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEFyaXRoU3FydDogewogICAgICAgICBK
U1ZhbHVlIGNoaWxkID0gZm9yTm9kZShub2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKICAgICAgICAg
aWYgKGNoaWxkICYmIGNoaWxkLmlzTnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHNldENvbnN0YW50
KG5vZGUsIEpTVmFsdWUoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNOdW1iZXIoc3FydChjaGlsZC5hc051bWJlcigpKSkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKFNw
ZWNEb3VibGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgQXJp
dGhTaW46IHsKKyAgICAgICAgSlNWYWx1ZSBjaGlsZCA9IGZvck5vZGUobm9kZS0+Y2hpbGQxKCkp
LnZhbHVlKCk7CisgICAgICAgIGlmIChjaGlsZCAmJiBjaGlsZC5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICBzZXRDb25zdGFudChub2RlLCBqc051bWJlcihzaW4oY2hpbGQuYXNOdW1iZXIoKSkp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGZvck5vZGUobm9kZSku
c2V0VHlwZShTcGVjRG91YmxlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAgICAg
CisgICAgY2FzZSBBcml0aENvczogeworICAgICAgICBKU1ZhbHVlIGNoaWxkID0gZm9yTm9kZShu
b2RlLT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgaWYgKGNoaWxkICYmIGNoaWxkLmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgIHNldENvbnN0YW50KG5vZGUsIGpzTnVtYmVyKHNpbihjaGls
ZC5hc051bWJlcigpKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXRUeXBlKFNwZWNEb3VibGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNTgzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jh
Y2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODMsNiArMzgz
LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAg
ICAgCisgICAgICAgIC8vIE5vdGU6IEFyaXRoU3FydCwgQXJpdGhTaW4sIGFuZCBBcml0aENvcyBh
bmQgb3RoZXIgbWF0aCBpbnRyaW5zaWNzIGRvbid0IGhhdmUgc3BlY2lhbAorICAgICAgICAvLyBy
dWxlcyBpbiBoZXJlIGJlY2F1c2UgdGhleSBhcmUgYWx3YXlzIGZvbGxvd2VkIGJ5IFBoYW50b21z
IHRvIHNpZ25pZnkgdGhhdCBpZiB0aGUKKyAgICAgICAgLy8gbWV0aG9kIGNhbGwgc3BlY3VsYXRp
b24gZmFpbHMsIHRoZSBieXRlY29kZSBtYXkgdXNlIHRoZSBhcmd1bWVudHMgaW4gYXJiaXRyYXJ5
IHdheXMuCisgICAgICAgIC8vIFRoaXMgY29ycmVzcG9uZHMgdG8gdGhhdCBwb3NzaWJpbGl0eSBv
ZiBzb21lb25lIGRvaW5nIHNvbWV0aGluZyBsaWtlOgorICAgICAgICAvLyBNYXRoLnNpbiA9IGZ1
bmN0aW9uKHgpIHsgZG9BcmJpdHJhcnlUaGluZ3NUbyh4KTsgfQorICAgICAgICAgICAgCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBtZXJnZURlZmF1bHRGbGFncyhub2RlKTsKICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDE1ODM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDU0LDgg
KzE0NTQsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVNaW5NYXgoaW50IHJlCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi0vLyBGSVhNRTogV2UgZGVhZC1jb2RlLWVsaW1pbmF0ZSB1bnVz
ZWQgTWF0aCBpbnRyaW5zaWNzLCBidXQgdGhhdCdzIGludmFsaWQgYmVjYXVzZQotLy8gdGhleSBu
ZWVkIHRvIHBlcmZvcm0gdGhlIFRvTnVtYmVyIGNvbnZlcnNpb24sIHdoaWNoIGNhbiBoYXZlIHNp
ZGUtZWZmZWN0cy4KIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhpbnQgcmVz
dWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCiB7
CiAgICAgc3dpdGNoIChpbnRyaW5zaWMpIHsKQEAgLTE0ODEsMTcgKzE0NzksMzQgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKGludAogICAgIGNhc2UgTWF4SW50cmluc2lj
OgogICAgICAgICByZXR1cm4gaGFuZGxlTWluTWF4KHJlc3VsdE9wZXJhbmQsIEFyaXRoTWF4LCBy
ZWdpc3Rlck9mZnNldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwogICAgICAgICAKLSAg
ICBjYXNlIFNxcnRJbnRyaW5zaWM6IHsKKyAgICBjYXNlIFNxcnRJbnRyaW5zaWM6CisgICAgY2Fz
ZSBDb3NJbnRyaW5zaWM6CisgICAgY2FzZSBTaW5JbnRyaW5zaWM6IHsKICAgICAgICAgaWYgKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID09IDEpIHsgLy8gTWF0aC5zcXJ0KCkKICAgICAgICAg
ICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCksIGNvbnN0YW50TmFOKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlm
ICghTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSkKKyAgICAgICAg
c3dpdGNoIChpbnRyaW5zaWMpIHsKKyAgICAgICAgY2FzZSBTcXJ0SW50cmluc2ljOgorICAgICAg
ICAgICAgaWYgKCFNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c2V0KFZpcnR1YWxSZWdpc3RlcihyZXN1bHRPcGVyYW5kKSwgYWRkVG9HcmFwaChBcml0aFNxcnQs
IGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIENvc0lu
dHJpbnNpYzoKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVnaXN0ZXIocmVzdWx0T3BlcmFuZCks
IGFkZFRvR3JhcGgoQXJpdGhDb3MsIGdldCh2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudCgxLCBy
ZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIFNpbkludHJpbnNpYzoKKyAgICAgICAgICAgIHNldChWaXJ0dWFsUmVn
aXN0ZXIocmVzdWx0T3BlcmFuZCksIGFkZFRvR3JhcGgoQXJpdGhTaW4sIGdldCh2aXJ0dWFsUmVn
aXN0ZXJGb3JBcmd1bWVudCgxLCByZWdpc3Rlck9mZnNldCkpKSk7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICBzZXQoVmlydHVhbFJlZ2lzdGVyKHJlc3VsdE9wZXJhbmQpLCBhZGRUb0dyYXBoKEFy
aXRoU3FydCwgZ2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0
KSkpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAgICAgICAgIAog
ICAgIGNhc2UgQXJyYXlQdXNoSW50cmluc2ljOiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTU4MzQxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTksNiAr
MTA1OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQXJpdGhNaW46CiAgICAgICAgIGNhc2Ug
QXJpdGhNYXg6CiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OgorICAgICAgICBjYXNlIEFyaXRoU2lu
OgorICAgICAgICBjYXNlIEFyaXRoQ29zOgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJBdDoKICAg
ICAgICAgY2FzZSBTdHJpbmdDaGFyQ29kZUF0OgogICAgICAgICBjYXNlIElzVW5kZWZpbmVkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9u
IDE1ODM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw4IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEFyaXRoTWluOgogICAgIGNhc2UgQXJpdGhNYXg6CiAg
ICAgY2FzZSBBcml0aFNxcnQ6CisgICAgY2FzZSBBcml0aFNpbjoKKyAgICBjYXNlIEFyaXRoQ29z
OgogICAgIGNhc2UgR2V0U2NvcGU6CiAgICAgY2FzZSBTa2lwU2NvcGU6CiAgICAgY2FzZSBDaGVj
a0Z1bmN0aW9uOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCShyZXZpc2lvbiAxNTgzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzgsNyArMjc4LDkgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBBcml0aFNxcnQ6IHsKKyAgICAgICAgY2FzZSBBcml0aFNxcnQ6CisgICAgICAgIGNhc2Ug
QXJpdGhTaW46CisgICAgICAgIGNhc2UgQXJpdGhDb3M6IHsKICAgICAgICAgICAgIGZpeEVkZ2U8
TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24g
MTU4MzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIG1hY3JvKEFyaXRoTWluLCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RHZW5l
cmF0ZSkgXAogICAgIG1hY3JvKEFyaXRoTWF4LCBOb2RlUmVzdWx0TnVtYmVyIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIG1hY3JvKEFyaXRoU3FydCwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhBcml0aFNpbiwgTm9kZVJlc3VsdE51bWJlciB8IE5v
ZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhBcml0aENvcywgTm9kZVJlc3VsdE51bWJlciB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCiAgICAgLyogQWRkIG9mIHZhbHVlcyBtYXkgZWl0
aGVyIGJlIGFyaXRobWV0aWMsIG9yIHJlc3VsdCBpbiBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gKi9c
CiAgICAgbWFjcm8oVmFsdWVBZGQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlTWlnaHRDbG9iYmVyKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTU4MzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSw3ICszMjksOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEFyaXRoU3FydDogeworICAgICAgICBjYXNlIEFyaXRoU3FydDoKKyAgICAgICAgY2FzZSBB
cml0aFNpbjoKKyAgICAgICAgY2FzZSBBcml0aENvczogewogICAgICAgICAgICAgY2hhbmdlZCB8
PSBzZXRQcmVkaWN0aW9uKFNwZWNEb3VibGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTcxNCw2ICs3MTYsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQXJpdGhTcXJ0OgorICAgICAgICBjYXNlIEFyaXRo
Q29zOgorICAgICAgICBjYXNlIEFyaXRoU2luOgogICAgICAgICAgICAgbV9ncmFwaC52b3RlTm9k
ZShub2RlLT5jaGlsZDEoKSwgVm90ZURvdWJsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhl
Y3V0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRv
RXhlY3V0ZS5oCShyZXZpc2lvbiAxNTgzNDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NhZmVUb0V4ZWN1dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUwLDYgKzE1MCw4IEBAIGJv
b2wgc2FmZVRvRXhlY3V0ZShBYnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIEFyaXRoTWlu
OgogICAgIGNhc2UgQXJpdGhNYXg6CiAgICAgY2FzZSBBcml0aFNxcnQ6CisgICAgY2FzZSBBcml0
aFNpbjoKKyAgICBjYXNlIEFyaXRoQ29zOgogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNTgzNDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTgwLDYgKzI1ODAsMzAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBu
b2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEFyaXRoU2lu
OiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKKyAgICAgICAgRlBSUmVnIG9wMUZQUiA9IG9wMS5mcHIoKTsKKworICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOworICAgICAgICAKKyAgICAgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgY2FsbE9wZXJhdGlvbihzaW4sIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAg
ICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIGJyZWFrOworICAg
IH0KKworICAgIGNhc2UgQXJpdGhDb3M6IHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgb3AxRlBSID0gb3Ax
LmZwcigpOworCisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIAorICAgICAgICBG
UFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICBjYWxsT3BlcmF0aW9uKGNvcywgcmVzdWx0
LmZwcigpLCBvcDFGUFIpOworICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2Rl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBMb2dpY2FsTm90OgogICAgICAg
ICBjb21waWxlTG9naWNhbE5vdChub2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE1ODM0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTEzMyw2ICsxMTMzLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHMo
YXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlv
biwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihE
X0pJVE9wZXJhdGlvbl9EIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEpCisg
ICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50cyhhcmcxKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0REIG9wZXJhdGlvbiwg
RlBSUmVnIHJlc3VsdCwgRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQogICAgIHsKICAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHMoYXJnMSwgYXJnMik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMTU4MzQxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2
ICsxMjAsNyBAQCB0eXBlZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlCiB0eXBl
ZGVmIEpTQ2VsbCogSklUX09QRVJBVElPTiAoKkNfSklUT3BlcmF0aW9uX0VPWikoRXhlY1N0YXRl
KiwgSlNPYmplY3QqLCBpbnQzMl90KTsKIHR5cGVkZWYgSlNDZWxsKiBKSVRfT1BFUkFUSU9OICgq
Q19KSVRPcGVyYXRpb25fRVN0KShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqKTsKIHR5cGVkZWYgSlND
ZWxsKiBKSVRfT1BFUkFUSU9OICgqQ19KSVRPcGVyYXRpb25fRVopKEV4ZWNTdGF0ZSosIGludDMy
X3QpOwordHlwZWRlZiBkb3VibGUgSklUX09QRVJBVElPTiAoKkRfSklUT3BlcmF0aW9uX0QpKGRv
dWJsZSk7CiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFUSU9OICgqRF9KSVRPcGVyYXRpb25fREQp
KGRvdWJsZSwgZG91YmxlKTsKIHR5cGVkZWYgZG91YmxlIEpJVF9PUEVSQVRJT04gKCpEX0pJVE9w
ZXJhdGlvbl9aWikoaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIGRvdWJsZSBKSVRfT1BFUkFU
SU9OICgqRF9KSVRPcGVyYXRpb25fRUopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVudGFsRnVu
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWNo
ZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgJKHJldmlzaW9uIDE1ODM0MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb25f
aAotI2RlZmluZSBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uX2gKLQotI2luY2x1ZGUgIkpT
Q0pTVmFsdWUuaCIKLQotbmFtZXNwYWNlIEpTQyB7Ci0KLXR5cGVkZWYgZG91YmxlICgqVHJhbnNj
ZW5kZW50YWxGdW5jdGlvblB0cikoZG91YmxlKTsKLQotLy8gQ2FjaGVkVHJhbnNjZW5kZW50YWxG
dW5jdGlvbiBwcm92aWRlcyBhIGdlbmVyaWMgbWVjaGFuaXNtIHRvIGNhY2hlIHJlc3VsdHMKLS8v
IGZvciBwdXJlIGZ1bmN0aW9ucyB3aXRoIHRoZSBzaWduYXR1cmUgImRvdWJsZSBmdW5jKGRvdWJs
ZSkiLCBhbmQgd2hlcmUgTmFOCi0vLyBtYXBzIHRvIE5hTi4KLXRlbXBsYXRlPFRyYW5zY2VuZGVu
dGFsRnVuY3Rpb25QdHIgb3JpZ25hbEZ1bmN0aW9uPgotY2xhc3MgQ2FjaGVkVHJhbnNjZW5kZW50
YWxGdW5jdGlvbiB7Ci0gICAgc3RydWN0IENhY2hlRW50cnkgewotICAgICAgICBkb3VibGUgb3Bl
cmFuZDsKLSAgICAgICAgZG91YmxlIHJlc3VsdDsKLSAgICB9OwotCi1wdWJsaWM6Ci0gICAgQ2Fj
aGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbigpCi0gICAgICAgIDogbV9jYWNoZSgwKQotICAgIHsK
LSAgICB9Ci0KLSAgICB+Q2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbigpCi0gICAgewotICAg
ICAgICBpZiAobV9jYWNoZSkKLSAgICAgICAgICAgIGZhc3RGcmVlKG1fY2FjaGUpOwotICAgIH0K
LQotICAgIEpTVmFsdWUgb3BlcmF0b3IoKSAoZG91YmxlIG9wZXJhbmQpCi0gICAgewotICAgICAg
ICBpZiAoVU5MSUtFTFkoIW1fY2FjaGUpKQotICAgICAgICAgICAgaW5pdGlhbGl6ZSgpOwotICAg
ICAgICBDYWNoZUVudHJ5KiBlbnRyeSA9ICZtX2NhY2hlW2hhc2gob3BlcmFuZCldOwotCi0gICAg
ICAgIGlmIChlbnRyeS0+b3BlcmFuZCA9PSBvcGVyYW5kKQotICAgICAgICAgICAgcmV0dXJuIGpz
RG91YmxlTnVtYmVyKGVudHJ5LT5yZXN1bHQpOwotICAgICAgICBkb3VibGUgcmVzdWx0ID0gb3Jp
Z25hbEZ1bmN0aW9uKG9wZXJhbmQpOwotICAgICAgICBlbnRyeS0+b3BlcmFuZCA9IG9wZXJhbmQ7
Ci0gICAgICAgIGVudHJ5LT5yZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiBqc0RvdWJs
ZU51bWJlcihyZXN1bHQpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB2b2lkIGluaXRpYWxpemUo
KQotICAgIHsKLSAgICAgICAgLy8gTGF6aWx5IGFsbG9jYXRlIHRoZSB0YWJsZSwgcG9wdWxhdGUg
d2l0aCBOYU4tPk5hTiBtYXBwaW5nLgotICAgICAgICBtX2NhY2hlID0gc3RhdGljX2Nhc3Q8Q2Fj
aGVFbnRyeSo+KGZhc3RNYWxsb2Moc19jYWNoZVNpemUgKiBzaXplb2YoQ2FjaGVFbnRyeSkpKTsK
LSAgICAgICAgZm9yICh1bnNpZ25lZCB4ID0gMDsgeCA8IHNfY2FjaGVTaXplOyArK3gpIHsKLSAg
ICAgICAgICAgIG1fY2FjaGVbeF0ub3BlcmFuZCA9IFFOYU47Ci0gICAgICAgICAgICBtX2NhY2hl
W3hdLnJlc3VsdCA9IFFOYU47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgdW5zaWdu
ZWQgaGFzaChkb3VibGUgZCkKLSAgICB7Ci0gICAgICAgIHVuaW9uIGRvdWJsZUFuZFVJbnQ2NCB7
Ci0gICAgICAgICAgICBkb3VibGUgZDsKLSAgICAgICAgICAgIHVpbnQzMl90IGlzWzJdOwotICAg
ICAgICB9IHU7Ci0gICAgICAgIHUuZCA9IGQ7Ci0KLSAgICAgICAgdW5zaWduZWQgeCA9IHUuaXNb
MF0gXiB1LmlzWzFdOwotICAgICAgICB4ID0gKHggPj4gMjApIF4gKHggPj4gOCk7Ci0gICAgICAg
IHJldHVybiB4ICYgKHNfY2FjaGVTaXplIC0gMSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIHNfY2FjaGVTaXplID0gMHgxMDAwOwotICAgIENhY2hlRW50cnkqIG1fY2FjaGU7
Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVJbnN0YW5jZUNhY2hlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUluc3RhbmNlQ2Fj
aGUuaAkocmV2aXNpb24gMTU4MzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RGF0ZUluc3RhbmNlQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lm
bmRlZiBEYXRlSW5zdGFuY2VDYWNoZV9oCiAjZGVmaW5lIERhdGVJbnN0YW5jZUNhY2hlX2gKIAor
I2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRoLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZpeGVkQXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvSGFzaEZ1bmN0aW9ucy5oPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50cmluc2ljLmgJKHJldmlzaW9uIDE1
ODM0MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludHJpbnNpYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBAIGVudW0gSW50cmluc2ljIHsKICAgICBNaW5JbnRy
aW5zaWMsCiAgICAgTWF4SW50cmluc2ljLAogICAgIFNxcnRJbnRyaW5zaWMsCisgICAgU2luSW50
cmluc2ljLAorICAgIENvc0ludHJpbnNpYywKICAgICBBcnJheVB1c2hJbnRyaW5zaWMsCiAgICAg
QXJyYXlQb3BJbnRyaW5zaWMsCiAgICAgQ2hhckNvZGVBdEludHJpbnNpYywKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hdGhPYmplY3QuY3BwCShyZXZpc2lvbiAxNTgz
NDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNyBAQCB2b2lkIE1hdGhPYmplY3Q6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgCiAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImF0YW4iKSwgMSwgbWF0aFByb3Rv
RnVuY0FUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKICAgICBwdXREaXJl
Y3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50
aWZpZXIoJnZtLCAiYXRhbjIiKSwgMiwgbWF0aFByb3RvRnVuY0FUYW4yLCBOb0ludHJpbnNpYywg
RG9udEVudW0gfCBGdW5jdGlvbik7CiAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0
VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgImNlaWwiKSwgMSwg
bWF0aFByb3RvRnVuY0NlaWwsIENlaWxJbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwot
ICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9i
amVjdCwgSWRlbnRpZmllcigmdm0sICJjb3MiKSwgMSwgbWF0aFByb3RvRnVuY0NvcywgTm9JbnRy
aW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOworICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJjb3Mi
KSwgMSwgbWF0aFByb3RvRnVuY0NvcywgQ29zSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9u
KTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9i
YWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAiZXhwIiksIDEsIG1hdGhQcm90b0Z1bmNFeHAsIEV4
cEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7CiAgICAgcHV0RGlyZWN0TmF0aXZlRnVu
Y3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwg
ImZsb29yIiksIDEsIG1hdGhQcm90b0Z1bmNGbG9vciwgRmxvb3JJbnRyaW5zaWMsIERvbnRFbnVt
IHwgRnVuY3Rpb24pOwogICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRp
b24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmllcigmdm0sICJsb2ciKSwgMSwgbWF0aFByb3Rv
RnVuY0xvZywgTG9nSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKQEAgLTk0LDcgKzk0
LDcgQEAgdm9pZCBNYXRoT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIAogICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcigmdm0sICJwb3ciKSwgMiwgbWF0aFByb3RvRnVuY1BvdywgUG93SW50cmluc2ljLCBE
b250RW51bSB8IEZ1bmN0aW9uKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRU
cmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAicmFuZG9tIiksIDAs
IG1hdGhQcm90b0Z1bmNSYW5kb20sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsK
ICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxP
YmplY3QsIElkZW50aWZpZXIoJnZtLCAicm91bmQiKSwgMSwgbWF0aFByb3RvRnVuY1JvdW5kLCBS
b3VuZEludHJpbnNpYywgRG9udEVudW0gfCBGdW5jdGlvbik7Ci0gICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2
bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5jU2luLCBOb0ludHJpbnNpYywgRG9udEVudW0gfCBG
dW5jdGlvbik7CisgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb25XaXRob3V0VHJhbnNpdGlvbih2
bSwgZ2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyKCZ2bSwgInNpbiIpLCAxLCBtYXRoUHJvdG9GdW5j
U2luLCBTaW5JbnRyaW5zaWMsIERvbnRFbnVtIHwgRnVuY3Rpb24pOwogICAgIHB1dERpcmVjdE5h
dGl2ZUZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24odm0sIGdsb2JhbE9iamVjdCwgSWRlbnRpZmll
cigmdm0sICJzcXJ0IiksIDEsIG1hdGhQcm90b0Z1bmNTcXJ0LCBTcXJ0SW50cmluc2ljLCBEb250
RW51bSB8IEZ1bmN0aW9uKTsKICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFu
c2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElkZW50aWZpZXIoJnZtLCAidGFuIiksIDEsIG1hdGhQ
cm90b0Z1bmNUYW4sIE5vSW50cmluc2ljLCBEb250RW51bSB8IEZ1bmN0aW9uKTsKICAgICBwdXRE
aXJlY3ROYXRpdmVGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKHZtLCBnbG9iYWxPYmplY3QsIElk
ZW50aWZpZXIoJnZtLCAiaW11bCIpLCAxLCBtYXRoUHJvdG9GdW5jSU11bCwgSU11bEludHJpbnNp
YywgRG9udEVudW0gfCBGdW5jdGlvbik7CkBAIC0xMzYsNyArMTM2LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG1hdGhQcm90b0Z1bmNDb3MoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+dm0oKS5jYWNoZWRDb3MoZXhlYy0+YXJndW1lbnQoMCkudG9OdW1i
ZXIoZXhlYykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRG91YmxlTnVtYmVyKGNv
cyhleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBtYXRoUHJvdG9GdW5jRXhwKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTI1
MSw3ICsyNTEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVuY1NpbihFeGVjU3RhdGUq
IGV4ZWMpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLmNhY2hlZFNp
bihleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNEb3VibGVOdW1iZXIoc2luKGV4ZWMtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGV4
ZWMpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG1hdGhQcm90b0Z1bmNT
cXJ0KEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
cmV2aXNpb24gMTU4MzQxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAko
d29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogI2lmbmRlZiBWTV9oCiAjZGVmaW5lIFZN
X2gKIAotI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIK
ICNpbmNsdWRlICJIZWFwLmgiCkBAIC00MTksOSArNDE4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgVGhyZWFkSWRlbnRpZmllciBleGNsdXNpdmVUaHJlYWQ7CiAKLSAgICAgICAgQ2Fj
aGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbjxzdGQ6OnNpbj4gY2FjaGVkU2luOwotICAgICAgICBD
YWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uPHN0ZDo6Y29zPiBjYWNoZWRDb3M7Ci0KICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldERhdGVDYWNoZSgpOwogCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc3RhcnRTYW1wbGluZygpOwo=
</data>
<flag name="review"
          id="238434"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>