<?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>22310</bug_id>
          
          <creation_ts>2008-11-17 07:59:38 -0800</creation_ts>
          <short_desc>Worker exceptions should be printed to console</short_desc>
          <delta_ts>2008-11-19 09:42:47 -0800</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>Mac</rep_platform>
          <op_sys>OS X 10.5</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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99030</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 07:59:38 -0800</bug_when>
    <thetext>Firefox forwards uncaught worker exceptions to worker.onerror. I&apos;m not sure if this behavior is desirable - for one, the current spec says that this event is just for loading errors. But we certainly should print them to console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99033</commentid>
    <comment_count>1</comment_count>
      <attachid>25215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 08:22:42 -0800</bug_when>
    <thetext>Created attachment 25215
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99051</commentid>
    <comment_count>2</comment_count>
      <attachid>25215</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-17 09:14:18 -0800</bug_when>
    <thetext>Comment on attachment 25215
proposed patch

&gt; +            UString errorMessage = exception-&gt;toString(exec);
&gt; +            JSObject* exceptionObject = exception-&gt;toObject(exec);
&gt; +            int lineNumber = exceptionObject-&gt;get(exec, Identifier(exec, &quot;line&quot;))-&gt;toInt32(exec);
&gt; +            UString exceptionSourceURL = exceptionObject-&gt;get(exec, Identifier(exec, &quot;sourceURL&quot;))-&gt;toString(exec);
&gt; +
&gt; +            scriptExecutionContext-&gt;reportException(errorMessage, lineNumber, exceptionSourceURL);

This seems like too much code to have here in line. I&apos;d like to see a helper function that does more of this work.

&gt; +            if (exec-&gt;hadException())
&gt; +                exec-&gt;clearException();

This if seems unnecessary. There&apos;s no reason to check for null before setting the value to null.

Also, I think it&apos;s OK for new code to get and clear exceptions in the JSGlobalObject without involving ExecState. The API to do it through ExecState is the &quot;old way&quot; in my opinion.

&gt; +        UString errorMessage = exception-&gt;toString(exec);
&gt; +        JSObject* exceptionObject = exception-&gt;toObject(exec);
&gt; +        int lineNumber = exceptionObject-&gt;get(exec, Identifier(exec, &quot;line&quot;))-&gt;toInt32(exec);
&gt; +        UString exceptionSourceURL = exceptionObject-&gt;get(exec, Identifier(exec, &quot;sourceURL&quot;))-&gt;toString(exec);
&gt; +
&gt; +        m_workerContext-&gt;thread()-&gt;messagingProxy()-&gt;postWorkerException(errorMessage, lineNumber, exceptionSourceURL);
&gt; +        exec-&gt;clearException();

Here&apos;s the same code repeated again. I think this validates my request/suggestion that this be in a helper function.

&gt; +        virtual void reportException(const String&amp; errorMessage, int lineNumber, const String&amp; sourceURL);

Instead of having a default that does nothing, perhaps it would be better to have this be a pure virtual function. The default empty version is only handy if we expect to derive classes that want to leave this out.

r=me as is -- please consider my suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99074</commentid>
    <comment_count>3</comment_count>
      <attachid>25221</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-17 11:06:16 -0800</bug_when>
    <thetext>Created attachment 25221
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99288</commentid>
    <comment_count>4</comment_count>
      <attachid>25215</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-19 00:38:25 -0800</bug_when>
    <thetext>Comment on attachment 25215
proposed patch

Clearing review flag to get the obsoleted patch out of commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99311</commentid>
    <comment_count>5</comment_count>
      <attachid>25221</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-19 09:00:10 -0800</bug_when>
    <thetext>Comment on attachment 25221
updated patch

&gt; -        Document::updateDocumentsRendering();
&gt; +        if (scriptExecutionContext-&gt;isDocument())
&gt; +            Document::updateDocumentsRendering();

Maybe this should be a virtual function on ScriptExecutionContext instead of a hard-coded rule at the callsite?

&gt;  #include &quot;WorkerContext.h&quot;
&gt; +#include &quot;WorkerMessagingProxy.h&quot;
&gt; +#include &quot;WorkerThread.h&quot;
&gt;  #include &lt;parser/SourceCode.h&gt;

Why are you adding these includes to WorkerScriptController.cpp?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99326</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-11-19 09:42:47 -0800</bug_when>
    <thetext>Committed revision 38595.

(In reply to comment #5)
&gt; Maybe this should be a virtual function on ScriptExecutionContext instead of a
&gt; hard-coded rule at the callsite?

It looks alien in this function in either case, I&apos;m not sure.

&gt; Why are you adding these includes to WorkerScriptController.cpp?

That&apos;s simply a leftover from an earlier iteration - but these includes are now in this file for other reasons!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25215</attachid>
            <date>2008-11-17 08:22:42 -0800</date>
            <delta_ts>2008-11-19 00:38:25 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>ReportExceptions.txt</filename>
            <type>text/plain</type>
            <size>12410</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODQ5MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMDgtMTEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxMAorICAgICAgICBX
b3JrZXIgZXhjZXB0aW9ucyBzaG91bGQgYmUgcHJpbnRlZCB0byBjb25zb2xlCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOiAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbik6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuY3BwOiAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVwb3J0RXhj
ZXB0aW9uKToKKyAgICAgICAgKiBkb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAg
ICAqIGRvbS9Xb3JrZXJDb250ZXh0LmNwcDogKFdlYkNvcmU6OldvcmtlckNvbnRleHQ6OnJlcG9y
dEV4Y2VwdGlvbik6CisgICAgICAgICogZG9tL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgQWRk
ZWQgYSByZXBvcnRFeGNlcHRpb24oKSBtZXRob2Qgb24gU2NyaXB0RXhlY3V0aW9uQ29udGV4dC4g
SXQgZm9yd2FyZHMgdGhlIGV4Y2VwdGlvbiBpbmZvCisgICAgICAgIHVwIHVudGlsIGl0IGZpbmRz
IGEgRG9jdW1lbnQgY29udGV4dCwgYW5kIHRoZW4gaXQgcHJpbnRzIGl0IHRvIGNvbnNvbGUuCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KTogRG9uJ3QgdGFsayB0
byBDb25zb2xlIGRpcmVjdGx5LCB1c2UKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
cmVwb3J0RXhjZXB0aW9uLiBBbHNvLCBmaXhlZCBhIGJ1ZyB3aGVyZSBEb2N1bWVudDo6dXBkYXRl
RG9jdW1lbnRzUmVuZGVyaW5nKCkKKyAgICAgICAgd291bGQgYmUgY2FsbGVkIGZyb20gd29ya2Vy
cy4KKyAgICAgICAgKFdlYkNvcmU6OkpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSk6IE1v
dmUgdmFyaWFibGUgZGVjbGFyYXRpb24gaW5zaWRlIGlmIGJsb2NrIGZvciBjbGFyaXR5LgorCisg
ICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6IChXZWJDb3Jl
OjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAgIFJlcG9ydCBleGNl
cHRpb25zIHRvIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisKKyAgICAgICAgKiBkb20vV29ya2Vy
TWVzc2FnaW5nUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVdvcmtlclRhc2s6
OnBlcmZvcm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV4Y2VwdGlvblRhc2s6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJFeGNlcHRpb25UYXNrOjpXb3JrZXJFeGNl
cHRpb25UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckV4Y2VwdGlvblRhc2s6OnBlcmZv
cm1UYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2luZ1Byb3h5Ojpwb3N0V29y
a2VyRXhjZXB0aW9uKToKKyAgICAgICAgKiBkb20vV29ya2VyTWVzc2FnaW5nUHJveHkuaDoKKyAg
ICAgICAgQWRkZWQgYSB0YXNrIGZvciBwb3N0aW5nIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbi4KKwog
MjAwOC0xMS0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDkgQEAg
dm9pZCBKU0Fic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbgogICAgIGlmICghc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0g
MDsKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAg
ICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2Jh
bE9iamVjdCk7Ci0gICAgICAgIGZyYW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAg
ICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpOwogICAgICAgICBpZiAo
IWZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAvLyBUaGUgd2luZG93IG11c3Qg
c3RpbGwgYmUgYWN0aXZlIGluIGl0cyBmcmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+LgpAQCAtMTE0LDEwICsxMTMsMTYgQEAgdm9pZCBKU0Fi
c3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbgogICAgICAgICBnbG9iYWxPYmplY3QtPnNl
dEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIAogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpIHsKLSAgICAgICAgICAgIGlmIChmcmFtZSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOyAv
LyBGSVhNRTogUmVwb3J0IGV4Y2VwdGlvbnMgaW4gbm9uLURvY3VtZW50IGNvbnRleHRzLgorICAg
ICAgICAgICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgICAg
ICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOworICAgICAgICAgICAgVVN0cmluZyBlcnJvck1l
c3NhZ2UgPSBleGNlcHRpb24tPnRvU3RyaW5nKGV4ZWMpOworICAgICAgICAgICAgSlNPYmplY3Qq
IGV4Y2VwdGlvbk9iamVjdCA9IGV4Y2VwdGlvbi0+dG9PYmplY3QoZXhlYyk7CisgICAgICAgICAg
ICBpbnQgbGluZU51bWJlciA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgImxpbmUiKSktPnRvSW50MzIoZXhlYyk7CisgICAgICAgICAgICBVU3RyaW5nIGV4Y2Vw
dGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVjdC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgInNvdXJjZVVSTCIpKS0+dG9TdHJpbmcoZXhlYyk7CisKKyAgICAgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnJlcG9ydEV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIs
IGV4Y2VwdGlvblNvdXJjZVVSTCk7CisgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGlmICghcmV0dmFsLT5pc1VuZGVmaW5lZE9yTnVsbCgpICYmIGV2
ZW50LT5zdG9yZXNSZXN1bHRBc1N0cmluZygpKQogICAgICAgICAgICAgICAgIGV2ZW50LT5zdG9y
ZVJlc3VsdChyZXR2YWwtPnRvU3RyaW5nKGV4ZWMpKTsKQEAgLTEyOCw3ICsxMzMsOCBAQCB2b2lk
IEpTQWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVuCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBEb2N1bWVudDo6dXBkYXRlRG9jdW1lbnRzUmVuZGVyaW5nKCk7Cisg
ICAgICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAg
ICAgICBEb2N1bWVudDo6dXBkYXRlRG9jdW1lbnRzUmVuZGVyaW5nKCk7CiAgICAgICAgIGRlcmVm
KCk7CiAgICAgfQogfQpAQCAtMjgwLDEwICsyODYsOSBAQCB2b2lkIEpTTGF6eUV2ZW50TGlzdGVu
ZXI6OnBhcnNlQ29kZSgpIGNvCiAgICAgaWYgKG1fcGFyc2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBGcmFtZSogZnJhbWUgPSAwOwogICAgIGlmIChnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpIHsKICAgICAgICAgSlNET01XaW5kb3cqIHdp
bmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oZ2xvYmFsT2JqZWN0KCkpOwotICAgICAg
ICBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgpOworICAgICAgICBGcmFtZSogZnJhbWUg
PSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgY2hlY2sgbmVlZGVkIGZvciBu
b24tRG9jdW1lbnQgY29udGV4dHM/CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvV29y
a2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsOCBAQAogCiAjaW5jbHVkZSAiSlNXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29y
a2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2luZ1Byb3h5LmgiCisjaW5jbHVk
ZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSA8cGFyc2VyL1NvdXJjZUNvZGUuaD4KICNpbmNs
dWRlIDxydW50aW1lL0NvbXBsZXRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0ludGVycHJldGVy
Lmg+CkBAIC03OCw5ICs4MCwxNiBAQCBKU1ZhbHVlKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpl
dmFsdWF0CiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxU
eXBlKCkgPT0gUmV0dXJuVmFsdWUpCiAgICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CiAKLSAg
ICAvLyBGSVhNRTogc2VuZCBleGNlcHRpb25zIHRvIGNvbnNvbGUuCi0gICAgaWYgKGNvbXAuY29t
cGxUeXBlKCkgPT0gVGhyb3cpCi0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJXNcbiIsIGNvbXAu
dmFsdWUoKS0+dG9TdHJpbmcoZXhlYykuVVRGOFN0cmluZygpLmNfc3RyKCkpOworICAgIGlmIChj
b21wLmNvbXBsVHlwZSgpID09IFRocm93KSB7CisgICAgICAgIEpTVmFsdWUqIGV4Y2VwdGlvbiA9
IGNvbXAudmFsdWUoKTsKKyAgICAgICAgVVN0cmluZyBlcnJvck1lc3NhZ2UgPSBleGNlcHRpb24t
PnRvU3RyaW5nKGV4ZWMpOworICAgICAgICBKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gZXhj
ZXB0aW9uLT50b09iamVjdChleGVjKTsKKyAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBleGNlcHRp
b25PYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpLT50b0ludDMyKGV4
ZWMpOworICAgICAgICBVU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS0+dG9TdHJpbmcoZXhl
Yyk7CisKKyAgICAgICAgbV93b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+bWVzc2FnaW5nUHJveHko
KS0+cG9zdFdvcmtlckV4Y2VwdGlvbihlcnJvck1lc3NhZ2UsIGxpbmVOdW1iZXIsIGV4Y2VwdGlv
blNvdXJjZVVSTCk7CisgICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7CisgICAgfQogICAg
IHJldHVybiBub1ZhbHVlKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDM4NDkwKQor
KysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkNhY2hlZENTU1N0eWxlU2hlZXQu
aCIKICNpbmNsdWRlICJDb21tZW50LmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUg
IkNvb2tpZUphci5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
RE9NV2luZG93LmgiCkBAIC00Mzg2LDQgKzQzODcsMTAgQEAgdm9pZCBEb2N1bWVudDo6cGFyc2VE
TlNQcmVmZXRjaENvbnRyb2xIZQogICAgIG1faGF2ZUV4cGxpY2l0bHlEaXNhYmxlZEROU1ByZWZl
dGNoID0gdHJ1ZTsKIH0KIAordm9pZCBEb2N1bWVudDo6cmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0
cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkwpCit7CisgICAgaWYgKERPTVdpbmRvdyogd2luZG93ID0gZG9tV2luZG93KCkpCisgICAgICAg
IHdpbmRvdy0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNz
YWdlTGV2ZWwsIGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3Miw2ICs3NzIsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBpbml0RE5TUHJlZmV0Y2goKTsKICAgICB2b2lkIHBhcnNlRE5TUHJlZmV0
Y2hDb250cm9sSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCisgICAgdmlydHVhbCB2b2lkIHJlcG9y
dEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogcHJvdGVjdGVkOgogICAgIERvY3VtZW50KEZyYW1l
KiwgYm9vbCBpc1hIVE1MKTsKIApJbmRleDogV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDYgKzc2LDEwIEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cHJvY2Vzc01lc3MKICAgICBwb3N0VGFzayhQcm9jZXNzTWVzc2FnZXNT
b29uVGFzazo6Y3JlYXRlKCkpOwogfQogCit2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJl
cG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmLCBpbnQsIGNvbnN0IFN0cmluZyYpCit7Cit9CisK
IHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cygp
CiB7CiAgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHByb3RlY3QodGhpcyk7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCShyZXZpc2lvbiAzODQ5MCkKKysr
IFdlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgY29uc3QgS1VSTCYg
dXJsKCkgY29uc3QgeyByZXR1cm4gdmlydHVhbFVSTCgpOyB9CiAKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgICAgICAvLyBBY3RpdmUgb2Jq
ZWN0cyBhcmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcu
IGJlY2F1c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52
b2tlZC4KICAgICAgICAgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogICAgICAgICB2b2lk
IGNyZWF0ZWRBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9p
bnRlcik7CkluZGV4OiBXZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJD
b3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTEg
QEAgS1VSTCBXb3JrZXJDb250ZXh0Ojpjb21wbGV0ZVVSTChjb25zdCBTdAogICAgIHJldHVybiBL
VVJMKG1fbG9jYXRpb24tPnVybCgpLCB1cmwpOwogfQogCit2b2lkIFdvcmtlckNvbnRleHQ6OnJl
cG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94
eSgpLT5wb3N0V29ya2VyRXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNl
VVJMKTsKK30KKwogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCiB7CiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RNZXNzYWdl
VG9Xb3JrZXJPYmplY3QobWVzc2FnZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiAz
ODQ5MCkKKysrIFdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjcsNiArNjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlclNjcmlwdENv
bnRyb2xsZXIqIHNjcmlwdCgpIHsgcmV0dXJuICZtX3NjcmlwdDsgfQogICAgICAgICBXb3JrZXJU
aHJlYWQqIHRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkOyB9CiAKKyAgICAgICAgdmlydHVhbCB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgICAgICB2aXJ0dWFsIFdvcmtl
ckNvbnRleHQqIHRvV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICB2
b2lkIHBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CkluZGV4OiBXZWJDb3JlL2Rv
bS9Xb3JrZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29y
a2VyTWVzc2FnaW5nUHJveHkuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL1dv
cmtlck1lc3NhZ2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBw
cml2YXRlOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBXb3JrZXIqIHdvcmtl
ck9iamVjdCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwogICAgICAgICBpZiAo
IXdvcmtlck9iamVjdCkKQEAgLTExMCw2ICsxMTAsMzIgQEAgcHJpdmF0ZToKICAgICBXb3JrZXJN
ZXNzYWdpbmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKK2NsYXNzIFdvcmtlckV4Y2Vw
dGlvblRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyRXhjZXB0aW9uVGFzaz4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlckV4Y2VwdGlv
blRhc2soZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgV29ya2VyRXhjZXB0aW9uVGFzayhjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorICAgICAgICA6IG1f
ZXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZS5jb3B5KCkpCisgICAgICAgICwgbV9saW5lTnVtYmVy
KGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9zb3VyY2VVUkwoc291cmNlVVJMLmNvcHkoKSkKKyAg
ICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZXBvcnRFeGNlcHRp
b24obV9lcnJvck1lc3NhZ2UsIG1fbGluZU51bWJlciwgbV9zb3VyY2VVUkwpOworICAgIH0KKwor
cHJpdmF0ZToKKyAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgaW50IG1fbGluZU51bWJl
cjsKKyAgICBTdHJpbmcgbV9zb3VyY2VVUkw7Cit9OworCiBjbGFzcyBXb3JrZXJDb250ZXh0RGVz
dHJveWVkVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaz4gY3Jl
YXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKQEAgLTE2Miw2ICsxODgs
MTEgQEAgdm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUbwogICAgICAgICBt
X3F1ZXVlZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRl
KG1lc3NhZ2UpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFdvcmtlckV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9z
dFRhc2soV29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJl
ciwgc291cmNlVVJMKSk7Cit9CisKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRo
cmVhZENyZWF0ZWQoUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IHdvcmtlclRocmVhZCkKIHsKICAg
ICBtX3dvcmtlclRocmVhZCA9IHdvcmtlclRocmVhZDsKSW5kZXg6IFdlYkNvcmUvZG9tL1dvcmtl
ck1lc3NhZ2luZ1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyTWVzc2Fn
aW5nUHJveHkuaAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdp
bmdQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKTsKIAorICAgICAgICB2b2lkIHBvc3RXb3JrZXJFeGNlcHRpb24o
Y29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCk7CisKICAgICAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQ
dHI8V29ya2VyVGhyZWFkPik7CiAgICAgICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7
CiAgICAgICAgIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25221</attachid>
            <date>2008-11-17 11:06:16 -0800</date>
            <delta_ts>2008-11-19 09:00:10 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>ReportExceptions.txt</filename>
            <type>text/plain</type>
            <size>24038</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzODUxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMDgtMTEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjMxMAorICAgICAgICBX
b3JrZXIgZXhjZXB0aW9ucyBzaG91bGQgYmUgcHJpbnRlZCB0byBjb25zb2xlCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOiAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlcG9ydEV4Y2VwdGlvbik6
CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaDoKKyAgICAgICAgKiBkb20vV29ya2VyQ29udGV4dC5jcHA6IChXZWJDb3JlOjpX
b3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICAqIGRvbS9Xb3JrZXJDb250
ZXh0Lmg6CisgICAgICAgIEFkZGVkIGEgcmVwb3J0RXhjZXB0aW9uKCkgbWV0aG9kIG9uIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuIEl0IGZvcndhcmRzIHRoZSBleGNlcHRpb24gaW5mbworICAgICAg
ICB1cCB1bnRpbCBpdCBmaW5kcyBhIERvY3VtZW50IGNvbnRleHQsIGFuZCB0aGVuIGl0IHByaW50
cyBpdCB0byBjb25zb2xlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudCk6IERvbid0IHRhbGsgdG8gQ29uc29sZSBkaXJlY3RseSwgdXNlCisgICAgICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ6OnJlcG9ydEV4Y2VwdGlvbi4gQWxzbywgZml4ZWQgYSBidWcgd2hl
cmUgRG9jdW1lbnQ6OnVwZGF0ZURvY3VtZW50c1JlbmRlcmluZygpCisgICAgICAgIGNvdWxkIGJl
IGNhbGxlZCBmcm9tIHdvcmtlcnMuCisgICAgICAgIChXZWJDb3JlOjpKU0xhenlFdmVudExpc3Rl
bmVyOjpwYXJzZUNvZGUpOiBNb3ZlIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluc2lkZSBpZiBibG9j
ayBmb3IgY2xhcml0eS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOiAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgor
ICAgICAgICBSZXBvcnQgZXhjZXB0aW9ucyB0byBTY3JpcHRFeGVjdXRpb25Db250ZXh0LgorCisg
ICAgICAgICogZG9tL1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VXb3JrZXJUYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJFeGNlcHRpb25UYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXhjZXB0
aW9uVGFzazo6V29ya2VyRXhjZXB0aW9uVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJF
eGNlcHRpb25UYXNrOjpwZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNz
YWdpbmdQcm94eTo6cG9zdFdvcmtlckV4Y2VwdGlvbik6CisgICAgICAgICogZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5Lmg6CisgICAgICAgIEFkZGVkIGEgdGFzayBmb3IgcG9zdGluZyBleGNlcHRp
b24gaW5mb3JtYXRpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OnJlcG9ydEN1cnJlbnRFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5oOgorICAgICAgICBBZGRlZCBoZWxwZXIgbWV0aG9kcyBmb3IgcmVwb3J0aW5nIGV4Y2Vw
dGlvbnMgdmlhIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuCisKKyAgICAgICAgKiBwYWdlL0NvbnNv
bGUuY3BwOgorICAgICAgICAqIHBhZ2UvQ29uc29sZS5oOgorICAgICAgICBSZW1vdmVkIG1ldGhv
ZHMgZm9yIGRpcmVjdGx5IHJlcG9ydGluZyBleGNlcHRpb25zIHRvIGNvbnNvbGUuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2s6OmhhbmRsZUV2
ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21TUUxU
cmFuc2FjdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Wb2lkQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1
bGVkQWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbToKKyAgICAgICAgKFdl
YkNvcmU6OmFkZEV4Y2VwdGlvblRvQ29uc29sZSk6CisgICAgICAgIFN3aXRjaCB0byBKU0RPTUJp
bmRpbmcgbWV0aG9kcyBmb3IgcmVwb3J0aW5nIGV4Y2VwdGlvbnMuCisKIDIwMDgtMTEtMTcgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
YW0gV2VpbmlnLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2
LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suaCIKIAotI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCiAj
aW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmgiCkBAIC03OSw3ICs3
OCw3IEBAIHZvaWQgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmUKICAgICBnbG9i
YWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKICAgICAKICAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVw
b3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlv
bihleGVjKTsKICAgICAgICAgcmFpc2VkRXhjZXB0aW9uID0gdHJ1ZTsKICAgICB9CiB9CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrLmNwcAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYs
NiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmgiCiAKLSNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiQ1N0cmluZy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSlNQb3NpdGlvbkVycm9yLmgiCkBAIC03
OSw3ICs3OCw3IEBAIHZvaWQgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmQKICAg
ICBnbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKICAgICAKICAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNl
cHRpb24oZXhlYyk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5j
cHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0
YXRlbWVudENhbGxiYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2lu
Y2x1ZGUgIkpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCIKIAogI2luY2x1ZGUgIkNTdHJp
bmcuaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCkBAIC04NCw3ICs4
Myw3IEBAIHZvaWQgSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjazo6aGFuZGwKICAgICBnbG9i
YWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKICAgICAgICAgCiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNl
cHRpb24oZXhlYyk7CiAgICAgICAgIAogICAgICAgICByYWlzZWRFeGNlcHRpb24gPSB0cnVlOwog
ICAgIH0KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiQ29u
c29sZS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgpAQCAtOTAsNyArODksNyBAQCBib29sIEpTQ3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6CiAgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91
dENoZWNrKCk7CiAgICAgICAgIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewotICAg
ICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0
aW9uKGV4ZWMpOworICAgICAgICByZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwogICAgICAg
ICAgICAgCiAgICAgICAgIC8vIFRoZSBzcGVjIHNheXM6CiAgICAgICAgIC8vICJJZiB0aGUgZXJy
b3IgY2FsbGJhY2sgcmV0dXJucyBmYWxzZSwgdGhlbiBtb3ZlIG9uIHRvIHRoZSBuZXh0IHN0YXRl
bWVudC4uLiIKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlv
bkNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrLmgiCiAKICNpbmNsdWRlICJDU3RyaW5nLmgiCi0jaW5jbHVkZSAiQ29uc29sZS5oIgog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMTI5LDcgKzEyOCw3IEBAIHZvaWQgSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNh
bGxiYWNrOjpoYW4KICAgICBnbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKICAgICAg
ICAgCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgIG1fZGF0YS0+ZnJh
bWUoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVj
KTsKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKICAgICAgICAgCiAgICAg
ICAgIHJhaXNlZEV4Y2VwdGlvbiA9IHRydWU7CiAgICAgfQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFj
ay5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMw
LDYgQEAKICNpbmNsdWRlICJKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5oIgog
CiAjaW5jbHVkZSAiQ1N0cmluZy5oIgotI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJE
T01XaW5kb3cuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKQEAgLTgzLDcgKzgyLDcgQEAgYm9vbCBKU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JD
YWxsYmFjawogICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOwogICAgICAgICAK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIG1fZnJhbWUtPmRvbVdpbmRv
dygpLT5jb25zb2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIHJl
cG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAgICAgICAgIAogICAgIERvY3VtZW50Ojp1cGRh
dGVEb2N1bWVudHNSZW5kZXJpbmcoKTsKICAgICAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCIKIAogI2luY2x1
ZGUgIkNTdHJpbmcuaCIKLSNpbmNsdWRlICJDb25zb2xlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgpA
QCAtODIsNyArODEsNyBAQCB2b2lkIEpTQ3VzdG9tVm9pZENhbGxiYWNrOjpoYW5kbGVFdmVudCgp
CiAgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CiAgICAgICAgIAogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNv
bnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgcmVwb3J0Q3Vy
cmVudEV4Y2VwdGlvbihleGVjKTsKICAgICAgICAgCiAgICAgRG9jdW1lbnQ6OnVwZGF0ZURvY3Vt
ZW50c1JlbmRlcmluZygpOwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
NSw3ICsxMDUsNyBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hCiAK
ICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlv
bihleGVjKTsKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKICAgICBlbHNl
IHsKICAgICAgICAgaWYgKCFyZXR2YWwtPmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgICAg
ICByZXN1bHQgPSByZXR2YWwtPnRvU3RyaW5nKGV4ZWMpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMSw2ICs0MDEsMjUgQEAgVVN0
cmluZyB2YWx1ZVRvU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbAogICAgIHJldHVybiB2YWx1ZS0+
dG9TdHJpbmcoZXhlYyk7CiB9CiAKK3ZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlKiBleGNlcHRpb24pCit7CisgICAgVVN0cmluZyBlcnJvck1lc3NhZ2Ug
PSBleGNlcHRpb24tPnRvU3RyaW5nKGV4ZWMpOworICAgIEpTT2JqZWN0KiBleGNlcHRpb25PYmpl
Y3QgPSBleGNlcHRpb24tPnRvT2JqZWN0KGV4ZWMpOworICAgIGludCBsaW5lTnVtYmVyID0gZXhj
ZXB0aW9uT2JqZWN0LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibGluZSIpKS0+dG9JbnQz
MihleGVjKTsKKyAgICBVU3RyaW5nIGV4Y2VwdGlvblNvdXJjZVVSTCA9IGV4Y2VwdGlvbk9iamVj
dC0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgInNvdXJjZVVSTCIpKS0+dG9TdHJpbmcoZXhl
Yyk7CisgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKKworICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5yZXBvcnRFeGNlcHRpb24oZXJyb3JN
ZXNzYWdlLCBsaW5lTnVtYmVyLCBleGNlcHRpb25Tb3VyY2VVUkwpOworfQorCit2b2lkIHJlcG9y
dEN1cnJlbnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSog
ZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7CisgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24o
KTsKKyAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKK30KKwogdm9pZCBzZXRE
T01FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBFeGNlcHRpb25Db2RlIGVjKQogewogICAgIGlm
ICghZWMgfHwgZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDYgKzE0Niw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgIGNvbnN0IEpTQzo6SGFzaFRhYmxlKiBnZXRIYXNoVGFibGVGb3JHbG9iYWxE
YXRhKEpTQzo6SlNHbG9iYWxEYXRhJiwgY29uc3QgSlNDOjpIYXNoVGFibGUqIHN0YXRpY1RhYmxl
KTsKIAorICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1Zh
bHVlKiBleGNlcHRpb24pOworICAgIHZvaWQgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihKU0M6OkV4
ZWNTdGF0ZSopOworCiAgICAgLy8gQ29udmVydCBhIERPTSBpbXBsZW1lbnRhdGlvbiBleGNlcHRp
b24gY29kZSBpbnRvIGEgSmF2YVNjcmlwdCBleGNlcHRpb24gaW4gdGhlIGV4ZWN1dGlvbiBzdGF0
ZS4KICAgICB2b2lkIHNldERPTUV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEV4Y2VwdGlvbkNv
ZGUpOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCShyZXZp
c2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjEsMTAgKzYxLDkgQEAgdm9pZCBKU0Fic3RyYWN0RXZlbnRMaXN0
ZW5lcjo6aGFuZGxlRXZlbgogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRnJhbWUqIGZyYW1lID0gMDsKICAgICBpZiAoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpKSB7CiAgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cg
PSBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGZyYW1l
ID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRv
dy0+aW1wbCgpLT5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAvLyBUaGUgd2luZG93IG11c3Qgc3RpbGwgYmUgYWN0aXZlIGluIGl0cyBm
cmFtZS4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5MjE+
LgpAQCAtMTEzLDEyICsxMTIsOSBAQCB2b2lkIEpTQWJzdHJhY3RFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVuCiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVu
dCk7CiAKLSAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7Ci0gICAgICAgICAgICBp
ZiAoZnJhbWUpCi0gICAgICAgICAgICAgICAgZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCkt
PnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsgLy8gRklYTUU6IFJlcG9ydCBleGNlcHRp
b25zIGluIG5vbi1Eb2N1bWVudCBjb250ZXh0cy4KLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2Vw
dGlvbihleGVjKTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXJldHZhbC0+aXNV
bmRlZmluZWRPck51bGwoKSAmJiBldmVudC0+c3RvcmVzUmVzdWx0QXNTdHJpbmcoKSkKICAgICAg
ICAgICAgICAgICBldmVudC0+c3RvcmVSZXN1bHQocmV0dmFsLT50b1N0cmluZyhleGVjKSk7CiAg
ICAgICAgICAgICBpZiAobV9pc0lubGluZSkgewpAQCAtMTI4LDcgKzEyNCw4IEBAIHZvaWQgSlNB
YnN0cmFjdEV2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW4KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIERvY3VtZW50Ojp1cGRhdGVEb2N1bWVudHNSZW5kZXJpbmcoKTsKKyAgICAg
ICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgICAg
IERvY3VtZW50Ojp1cGRhdGVEb2N1bWVudHNSZW5kZXJpbmcoKTsKICAgICAgICAgZGVyZWYoKTsK
ICAgICB9CiB9CkBAIC0yODAsMTAgKzI3Nyw5IEBAIHZvaWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6
cGFyc2VDb2RlKCkgY28KICAgICBpZiAobV9wYXJzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgaWYgKGdsb2JhbE9iamVjdCgpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSkgewogICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93
ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihnbG9iYWxPYmplY3QoKSk7Ci0gICAgICAgIGZy
YW1lID0gd2luZG93LT5pbXBsKCktPmZyYW1lKCk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHdp
bmRvdy0+aW1wbCgpLT5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBjaGVjayBuZWVkZWQgZm9yIG5vbi1E
b2N1bWVudCBjb250ZXh0cz8KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlv
bi5jcHAJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMSArMjQsMTEgQEAKICNpbmNsdWRlICJT
Y2hlZHVsZWRBY3Rpb24uaCIKIAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKLSNpbmNsdWRlICJDb25z
b2xlLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoSlNET01XaW5kbwogICAgICAgICAgICAg
Y2FsbChleGVjLCBtX2Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHdpbmRvd1NoZWxsLCBh
cmdzKTsKICAgICAgICAgICAgIHdpbmRvdy0+c3RvcFRpbWVvdXRDaGVjaygpOwogICAgICAgICAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5kb21X
aW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAg
ICAgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CiAgICAgICAgIH0KICAgICB9
IGVsc2UKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KG1fY29kZSk7Cklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDM4
NDkwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIEpTVmFsdWUqIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnMKICAgICB9CiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBUaHJvdykK
LSAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0RXhjZXB0aW9u
KGV4ZWMsIGNvbXAudmFsdWUoKSk7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBjb21w
LnZhbHVlKCkpOwogCiAgICAgbV9zb3VyY2VVUkwgPSBzYXZlZFNvdXJjZVVSTDsKICAgICByZXR1
cm4gbm9WYWx1ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDggKzMwLDEx
IEBACiAKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU1dvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJDb250ZXh0LmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnaW5nUHJveHkuaCIKKyNpbmNs
dWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDxwYXJzZXIvU291cmNlQ29kZS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSW50ZXJwcmV0
ZXIuaD4KQEAgLTc4LDkgKzgxLDggQEAgSlNWYWx1ZSogV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6
ZXZhbHVhdAogICAgIGlmIChjb21wLmNvbXBsVHlwZSgpID09IE5vcm1hbCB8fCBjb21wLmNvbXBs
VHlwZSgpID09IFJldHVyblZhbHVlKQogICAgICAgICByZXR1cm4gY29tcC52YWx1ZSgpOwogCi0g
ICAgLy8gRklYTUU6IHNlbmQgZXhjZXB0aW9ucyB0byBjb25zb2xlLgogICAgIGlmIChjb21wLmNv
bXBsVHlwZSgpID09IFRocm93KQotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzXG4iLCBjb21w
LnZhbHVlKCktPnRvU3RyaW5nKGV4ZWMpLlVURjhTdHJpbmcoKS5jX3N0cigpKTsKKyAgICAgICAg
cmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGNvbXAudmFsdWUoKSk7CiAgICAgcmV0dXJuIG5vVmFsdWUo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCShy
ZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3JpcHRPYmplY3Qu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHZvaWQgYWRkRXhjZXB0
aW9uVG9Db25zb2xlKEV4ZWNTdAogICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2lu
ZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiAgICAgaWYgKCF3aW5kb3cgfHwgIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgd2luZG93LT5pbXBsKCkt
PmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICByZXBvcnRDdXJy
ZW50RXhjZXB0aW9uKGV4ZWMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNs
dWRlICJDYWNoZWRDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiQ29tbWVudC5oIgorI2luY2x1
ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKICNpbmNsdWRlICJET01JbXBs
ZW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgpAQCAtNDM4Niw0ICs0Mzg3LDEw
IEBAIHZvaWQgRG9jdW1lbnQ6OnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGUKICAgICBtX2hhdmVF
eHBsaWNpdGx5RGlzYWJsZWRETlNQcmVmZXRjaCA9IHRydWU7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6
OnJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIGlmIChET01XaW5kb3cqIHdpbmRv
dyA9IGRvbVdpbmRvdygpKQorICAgICAgICB3aW5kb3ctPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShK
U01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBlcnJvck1lc3NhZ2UsIGxpbmVOdW1i
ZXIsIHNvdXJjZVVSTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC03NzIsNiArNzcyLDggQEAgcHVibGljOgogICAgIHZvaWQgaW5pdEROU1ByZWZldGNoKCk7
CiAgICAgdm9pZCBwYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihjb25zdCBTdHJpbmcmKTsK
IAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CisKIHByb3Rl
Y3RlZDoKICAgICBEb2N1bWVudChGcmFtZSosIGJvb2wgaXNYSFRNTCk7CiAKSW5kZXg6IFdlYkNv
cmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgJKHJldmlzaW9uIDM4NDkwKQorKysgV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25z
dCB7IHJldHVybiB2aXJ0dWFsVVJMKCk7IH0KIAorICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0
RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKwogICAgICAgICAvLyBBY3RpdmUgb2JqZWN0cyBh
cmUgbm90IGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW4gaWYgaW5hY2Nlc3NpYmxlLCBlLmcuIGJlY2F1
c2UgdGhlaXIgYWN0aXZpdHkgbWF5IHJlc3VsdCBpbiBjYWxsYmFja3MgYmVpbmcgaW52b2tlZC4K
ICAgICAgICAgdm9pZCBzdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogICAgICAgICB2b2lkIGNyZWF0
ZWRBY3RpdmVET01PYmplY3QoQWN0aXZlRE9NT2JqZWN0Kiwgdm9pZCogdXBjYXN0UG9pbnRlcik7
CkluZGV4OiBXZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Xb3JrZXJDb250ZXh0LmNwcAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2Rv
bS9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsMTEgQEAgS1VS
TCBXb3JrZXJDb250ZXh0Ojpjb21wbGV0ZVVSTChjb25zdCBTdAogICAgIHJldHVybiBLVVJMKG1f
bG9jYXRpb24tPnVybCgpLCB1cmwpOwogfQogCit2b2lkIFdvcmtlckNvbnRleHQ6OnJlcG9ydEV4
Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMKQoreworICAgIG1fdGhyZWFkLT5tZXNzYWdpbmdQcm94eSgpLT5w
b3N0V29ya2VyRXhjZXB0aW9uKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMKTsK
K30KKwogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7CiAgICAgbV90aHJlYWQtPm1lc3NhZ2luZ1Byb3h5KCktPnBvc3RNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QobWVzc2FnZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Xb3JrZXJDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyQ29udGV4dC5oCShyZXZpc2lvbiAzODQ5MCkK
KysrIFdlYkNvcmUvZG9tL1dvcmtlckNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiAr
NjcsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdvcmtlclNjcmlwdENvbnRyb2xs
ZXIqIHNjcmlwdCgpIHsgcmV0dXJuICZtX3NjcmlwdDsgfQogICAgICAgICBXb3JrZXJUaHJlYWQq
IHRocmVhZCgpIHsgcmV0dXJuIG1fdGhyZWFkOyB9CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
cG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKKwogICAgICAgICB2aXJ0dWFsIFdvcmtlckNvbnRl
eHQqIHRvV29ya2VyQ29udGV4dCgpIHsgcmV0dXJuIHRoaXM7IH0KIAogICAgICAgICB2b2lkIHBv
c3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Xb3Jr
ZXJNZXNzYWdpbmdQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyTWVz
c2FnaW5nUHJveHkuY3BwCShyZXZpc2lvbiAzODQ5MCkKKysrIFdlYkNvcmUvZG9tL1dvcmtlck1l
c3NhZ2luZ1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBAQCBwcml2YXRl
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopCiAgICAgewogICAgICAgICBXb3JrZXIqIHdvcmtlck9iamVj
dCA9IG1fbWVzc2FnaW5nUHJveHktPndvcmtlck9iamVjdCgpOwogICAgICAgICBpZiAoIXdvcmtl
ck9iamVjdCkKQEAgLTExMCw2ICsxMTAsMzIgQEAgcHJpdmF0ZToKICAgICBXb3JrZXJNZXNzYWdp
bmdQcm94eSogbV9tZXNzYWdpbmdQcm94eTsKIH07CiAKK2NsYXNzIFdvcmtlckV4Y2VwdGlvblRh
c2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V29ya2VyRXhjZXB0aW9uVGFzaz4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
CisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdvcmtlckV4Y2VwdGlvblRhc2so
ZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpKTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgV29ya2VyRXhjZXB0aW9uVGFzayhjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQorICAgICAgICA6IG1fZXJyb3JN
ZXNzYWdlKGVycm9yTWVzc2FnZS5jb3B5KCkpCisgICAgICAgICwgbV9saW5lTnVtYmVyKGxpbmVO
dW1iZXIpCisgICAgICAgICwgbV9zb3VyY2VVUkwoc291cmNlVVJMLmNvcHkoKSkKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQpCisgICAgeworICAgICAgICBjb250ZXh0LT5yZXBvcnRFeGNlcHRpb24obV9l
cnJvck1lc3NhZ2UsIG1fbGluZU51bWJlciwgbV9zb3VyY2VVUkwpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CisgICAgaW50IG1fbGluZU51bWJlcjsKKyAg
ICBTdHJpbmcgbV9zb3VyY2VVUkw7Cit9OworCiBjbGFzcyBXb3JrZXJDb250ZXh0RGVzdHJveWVk
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaz4gY3JlYXRlKFdv
cmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKQEAgLTE2Miw2ICsxODgsMTEgQEAg
dm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdE1lc3NhZ2VUbwogICAgICAgICBtX3F1ZXVl
ZEVhcmx5VGFza3MuYXBwZW5kKE1lc3NhZ2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKG1lc3Nh
Z2UpKTsKIH0KIAordm9pZCBXb3JrZXJNZXNzYWdpbmdQcm94eTo6cG9zdFdvcmtlckV4Y2VwdGlv
bihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQoreworICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2so
V29ya2VyRXhjZXB0aW9uVGFzazo6Y3JlYXRlKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291
cmNlVVJMKSk7Cit9CisKIHZvaWQgV29ya2VyTWVzc2FnaW5nUHJveHk6OndvcmtlclRocmVhZENy
ZWF0ZWQoUGFzc1JlZlB0cjxXb3JrZXJUaHJlYWQ+IHdvcmtlclRocmVhZCkKIHsKICAgICBtX3dv
cmtlclRocmVhZCA9IHdvcmtlclRocmVhZDsKSW5kZXg6IFdlYkNvcmUvZG9tL1dvcmtlck1lc3Nh
Z2luZ1Byb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV29ya2VyTWVzc2FnaW5nUHJv
eHkuaAkocmV2aXNpb24gMzg0OTApCisrKyBXZWJDb3JlL2RvbS9Xb3JrZXJNZXNzYWdpbmdQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSk7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKIAorICAgICAgICB2b2lkIHBvc3RXb3JrZXJFeGNlcHRpb24oY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTCk7CisKICAgICAgICAgdm9pZCB3b3JrZXJUaHJlYWRDcmVhdGVkKFBhc3NSZWZQdHI8V29y
a2VyVGhyZWFkPik7CiAgICAgICAgIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CiAgICAg
ICAgIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZCgpOwpJbmRleDogV2ViQ29yZS9wYWdlL0Nv
bnNvbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db25zb2xlLmNwcAkocmV2aXNp
b24gMzg0OTApCisrKyBXZWJDb3JlL3BhZ2UvQ29uc29sZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ0MSwyNCArNDQxLDYgQEAgdm9pZCBDb25zb2xlOjp3YXJuKEV4ZWNTdGF0ZSogZXhlYywgY29u
cwogICAgIHByaW50VG9TdGFuZGFyZE91dChXYXJuaW5nTWVzc2FnZUxldmVsLCBleGVjLCBhcmdz
LCB1cmwpOwogfQogCi12b2lkIENvbnNvbGU6OnJlcG9ydEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIGV4Y2VwdGlvbikKLXsKLSAgICBVU3RyaW5nIGVycm9yTWVzc2FnZSA9IGV4
Y2VwdGlvbi0+dG9TdHJpbmcoZXhlYyk7Ci0gICAgSlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9
IGV4Y2VwdGlvbi0+dG9PYmplY3QoZXhlYyk7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBleGNlcHRp
b25PYmplY3QtPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJsaW5lIikpLT50b0ludDMyKGV4
ZWMpOwotICAgIFVTdHJpbmcgZXhjZXB0aW9uU291cmNlVVJMID0gZXhjZXB0aW9uT2JqZWN0LT5n
ZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic291cmNlVVJMIikpLT50b1N0cmluZyhleGVjKTsK
LSAgICBhZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGVycm9y
TWVzc2FnZSwgbGluZU51bWJlciwgZXhjZXB0aW9uU291cmNlVVJMKTsKLSAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIGV4ZWMtPmNsZWFyRXhjZXB0aW9uKCk7Ci19Ci0KLXZv
aWQgQ29uc29sZTo6cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0g
ICAgSlNWYWx1ZSogZXhjZXB0aW9uID0gZXhlYy0+ZXhjZXB0aW9uKCk7Ci0gICAgZXhlYy0+Y2xl
YXJFeGNlcHRpb24oKTsKLSAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKLX0K
LQogc3RhdGljIGJvb2wgcHJpbnRFeGNlcHRpb25zID0gZmFsc2U7CiAKIGJvb2wgQ29uc29sZTo6
c2hvdWxkUHJpbnRFeGNlcHRpb25zKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db25zb2xlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAkocmV2aXNpb24gMzg0OTApCisrKyBX
ZWJDb3JlL3BhZ2UvQ29uc29sZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw5ICs5Myw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBncm91cChKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IEpTQzo6QXJnTGlzdCYpOwogICAgICAgICB2b2lkIGdyb3VwRW5kKCk7CiAKLSAgICAgICAg
dm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUqKTsKLSAg
ICAgICAgdm9pZCByZXBvcnRDdXJyZW50RXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7Ci0KICAg
ICAgICAgc3RhdGljIGJvb2wgc2hvdWxkUHJpbnRFeGNlcHRpb25zKCk7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHNldFNob3VsZFByaW50RXhjZXB0aW9ucyhib29sKTsKIAo=
</data>
<flag name="review"
          id="11648"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>