<?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>74071</bug_id>
          
          <creation_ts>2011-12-08 02:14:07 -0800</creation_ts>
          <short_desc>[Chromium] Chromium should have EditorClientImpl::checkTextOfParagraph</short_desc>
          <delta_ts>2012-01-20 00:59:34 -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>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fishd</cc>
    
    <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>517269</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-08 02:14:07 -0800</bug_when>
    <thetext>Currently Chromium does not implement necessary methods to work with USE_UNIFIED_TEXT_CHECKING.
This should be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519035</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-11 23:16:13 -0800</bug_when>
    <thetext>Currently SpellChecker on Mac uses more sophisticated interface for spellchecking (requestTextOfParagraph).
If Windows and Linux have the same interface, the spellchecking code will be clearer, and easier to change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519038</commentid>
    <comment_count>2</comment_count>
      <attachid>118740</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-11 23:24:39 -0800</bug_when>
    <thetext>Created attachment 118740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519040</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-11 23:27:20 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519041</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-11 23:31:01 -0800</bug_when>
    <thetext>s/requestTextOfParagraph/checkTextOfParagraph/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519324</commentid>
    <comment_count>5</comment_count>
      <attachid>118740</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-12 10:36:16 -0800</bug_when>
    <thetext>Comment on attachment 118740
Patch

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

&gt; Source/WebKit/chromium/public/WebSpellCheckClient.h:44
&gt;  class WebSpellCheckClient {

By the way, it seems like WebSpellCheckClient is misnamed.  It should probably
be called WebTextChecker.  Such a renaming is out-of-scope for this patch, but
I just wanted to call attention to the issue.

&gt; Source/WebKit/chromium/public/WebSpellCheckClient.h:57
&gt; +    virtual void checkTextOfParagraph(const WebString&amp; text,

This appears to run synchronously, like spellCheck.  Should we have an asynchronous
version like requestCheckingOfText?  Also, what about the optionalSuggestions out-
param of spellCheck?  You don&apos;t need a way to provide suggestions with this new API?

It seems like WebSpellCheckClient is a bit of a mess :-(

&gt; Source/WebKit/chromium/public/WebTextChecking.h:31
&gt; +#ifndef WebTextChecking_h

nit: the file name should match the type name, so WebTextCheckingType.h would be better.

&gt; Source/WebKit/chromium/public/WebTextChecking.h:36
&gt; +enum WebTextCheckingType {

WebTextCheckingResult has a similar enum.  Presumably, that one should be deleted
in favor of this one?

&gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:769
&gt; +static void convertCheckingResult(const WebKit::WebTextCheckingResult&amp; webResult,

nit: please do not break up the flow of class method definitions with non-class method definitions.
please move static helper functions to the top of the file.

nit: you are already in the WebKit namespace, so no need for WebKit:: here.  also,
there is a &apos;using namespace WebCore&apos; at the top of the file, so no need for WebCore::
here either.

nit: consider putting a conversion operator from WebTextCheckingResult to TextCheckingResult
on WebTextCheckingResult in a #if WEBKIT_IMPLEMENTATION section.

&gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:793
&gt; +

perhaps you should assert that webMask is not 0 after this?  it seems like TextCheckingTypeMask
could have other bits set too.

&gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:795
&gt; +    m_webView-&gt;spellCheckClient()-&gt;checkTextOfParagraph(WebString(text, length), webMask, &amp;webResults);

do we need to concern ourselves with the cost of constructing the WebString here?
it seems like if we are doing a lot of spell checking that we might prefer to
avoid the heap allocation here.  have you measured this to see if it matters?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520007</commentid>
    <comment_count>6</comment_count>
      <attachid>118995</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-13 03:50:38 -0800</bug_when>
    <thetext>Created attachment 118995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520012</commentid>
    <comment_count>7</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-13 03:58:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 118740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118740&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSpellCheckClient.h:44
&gt; &gt;  class WebSpellCheckClient {
&gt; 
&gt; By the way, it seems like WebSpellCheckClient is misnamed.  It should probably
&gt; be called WebTextChecker.  Such a renaming is out-of-scope for this patch, but
&gt; I just wanted to call attention to the issue.

I&apos;ll do this another patch if necessary.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebSpellCheckClient.h:57
&gt; &gt; +    virtual void checkTextOfParagraph(const WebString&amp; text,
&gt; 
&gt; This appears to run synchronously, like spellCheck.  Should we have an asynchronous
&gt; version like requestCheckingOfText?  Also, what about the optionalSuggestions out-
&gt; param of spellCheck?  You don&apos;t need a way to provide suggestions with this new API?

I have a plan to add asynchronous version after this patch is landed.
I want to have the same interface WebCore::TextCheckerClient::checkTextOfParagraph. So optional suggestions is not mandatory. But we can specify adding auto correction list by WebTextCheckingTypeMask.

&gt; 
&gt; It seems like WebSpellCheckClient is a bit of a mess :-(
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextChecking.h:31
&gt; &gt; +#ifndef WebTextChecking_h
&gt; 
&gt; nit: the file name should match the type name, so WebTextCheckingType.h would be better.

Done.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextChecking.h:36
&gt; &gt; +enum WebTextCheckingType {
&gt; 
&gt; WebTextCheckingResult has a similar enum.  Presumably, that one should be deleted
&gt; in favor of this one?

Yeah, I want to keep WebTextCheckingType. So the previous enum should be removed. But removing it this time will break chromium build, so after this patch is landed, I&apos;ll change chromium code, then come back to WebKit to remove it.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:769
&gt; &gt; +static void convertCheckingResult(const WebKit::WebTextCheckingResult&amp; webResult,
&gt; 
&gt; nit: please do not break up the flow of class method definitions with non-class method definitions.
&gt; please move static helper functions to the top of the file.
&gt; 
&gt; nit: you are already in the WebKit namespace, so no need for WebKit:: here.  also,
&gt; there is a &apos;using namespace WebCore&apos; at the top of the file, so no need for WebCore::
&gt; here either.
&gt; 
&gt; nit: consider putting a conversion operator from WebTextCheckingResult to TextCheckingResult
&gt; on WebTextCheckingResult in a #if WEBKIT_IMPLEMENTATION section.

I&apos;ve added conversion operator.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:793
&gt; &gt; +
&gt; 
&gt; perhaps you should assert that webMask is not 0 after this?  it seems like TextCheckingTypeMask
&gt; could have other bits set too.

Done.

&gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:795
&gt; &gt; +    m_webView-&gt;spellCheckClient()-&gt;checkTextOfParagraph(WebString(text, length), webMask, &amp;webResults);
&gt; 
&gt; do we need to concern ourselves with the cost of constructing the WebString here?
&gt; it seems like if we are doing a lot of spell checking that we might prefer to
&gt; avoid the heap allocation here.  have you measured this to see if it matters?

Hmm... Currently SpellCheckClient uses WebString interface instead of UChar* and int. If it is important, we should change all the interface of SpellCheckClient, I guess. Currently it does not matter, I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520454</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-13 16:00:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; By the way, it seems like WebSpellCheckClient is misnamed.  It should probably
&gt; &gt; be called WebTextChecker.  Such a renaming is out-of-scope for this patch, but
&gt; &gt; I just wanted to call attention to the issue.
&gt; 
&gt; I&apos;ll do this another patch if necessary.

OK

&gt; &gt; This appears to run synchronously, like spellCheck.  Should we have an asynchronous
&gt; &gt; version like requestCheckingOfText?  Also, what about the optionalSuggestions out-
&gt; &gt; param of spellCheck?  You don&apos;t need a way to provide suggestions with this new API?
&gt; 
&gt; I have a plan to add asynchronous version after this patch is landed.
&gt; I want to have the same interface WebCore::TextCheckerClient::checkTextOfParagraph. So optional suggestions is not mandatory. But we can specify adding auto correction list by WebTextCheckingTypeMask.

OK


&gt; &gt; &gt; Source/WebKit/chromium/public/WebTextChecking.h:36
&gt; &gt; &gt; +enum WebTextCheckingType {
&gt; &gt; 
&gt; &gt; WebTextCheckingResult has a similar enum.  Presumably, that one should be deleted
&gt; &gt; in favor of this one?
&gt; 
&gt; Yeah, I want to keep WebTextCheckingType. So the previous enum should be removed. But removing it this time will break chromium build, so after this patch is landed, I&apos;ll change chromium code, then come back to WebKit to remove it.

OK


&gt; &gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:795
&gt; &gt; &gt; +    m_webView-&gt;spellCheckClient()-&gt;checkTextOfParagraph(WebString(text, length), webMask, &amp;webResults);
&gt; &gt; 
&gt; &gt; do we need to concern ourselves with the cost of constructing the WebString here?
&gt; &gt; it seems like if we are doing a lot of spell checking that we might prefer to
&gt; &gt; avoid the heap allocation here.  have you measured this to see if it matters?
&gt; 
&gt; Hmm... Currently SpellCheckClient uses WebString interface instead of UChar* and int. If it is important, we should change all the interface of SpellCheckClient, I guess. Currently it does not matter, I guess.

OK... perhaps this is just something worth investigating to see if it matters.
does not have to block this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520483</commentid>
    <comment_count>9</comment_count>
      <attachid>118995</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-13 16:52:56 -0800</bug_when>
    <thetext>Comment on attachment 118995
Patch

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

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:47
&gt; +struct WebGrammarDetail {

webkit API rule is to have one type definition per file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520550</commentid>
    <comment_count>10</comment_count>
      <attachid>119126</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-13 18:04:20 -0800</bug_when>
    <thetext>Created attachment 119126
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520558</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-13 18:11:33 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 118995 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=118995&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:47
&gt; &gt; +struct WebGrammarDetail {
&gt; 
&gt; webkit API rule is to have one type definition per file

Done. Thanks!!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>521565</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-14 18:38:58 -0800</bug_when>
    <thetext>Darin, could you look this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523139</commentid>
    <comment_count>13</comment_count>
      <attachid>119126</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-16 16:16:38 -0800</bug_when>
    <thetext>Comment on attachment 119126
Patch

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

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:48
&gt; +    // TODO(shinyak): Should be removed after we confirm Chromium does not use it.

nit: WebKit style is to use FIXME instead of TODO(user)

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:94
&gt; +    Error error; // TODO(shinyak): Should be removed after we confirm Chromium does not use it.

TODO(user) -&gt; FIXME

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:98
&gt; +    WebVector&lt;WebGrammarDetail&gt; details;

it seems like there is potentially a lot of copying of data here.  have you
considered transforming WebCore::GrammarDetail and WebCore::TextCheckingResult
to be reference counted so that we can just create WebPrivatePtr&lt;&gt;-style wrappers
for them at the API boundary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523611</commentid>
    <comment_count>14</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-18 18:19:58 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:98
&gt; &gt; +    WebVector&lt;WebGrammarDetail&gt; details;
&gt; 
&gt; it seems like there is potentially a lot of copying of data here.  have you
&gt; considered transforming WebCore::GrammarDetail and WebCore::TextCheckingResult
&gt; to be reference counted so that we can just create WebPrivatePtr&lt;&gt;-style wrappers
&gt; for them at the API boundary?

Darin,

I didn&apos;t know that... I think it should be better than the current implementation. I&apos;ll change the code to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523697</commentid>
    <comment_count>15</comment_count>
      <attachid>119809</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-18 21:12:39 -0800</bug_when>
    <thetext>Created attachment 119809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523698</commentid>
    <comment_count>16</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-18 21:14:37 -0800</bug_when>
    <thetext>Darin, 

&gt; I didn&apos;t know that... I think it should be better than the current implementation. I&apos;ll change the code to use it.

Since GrammarDetails is a value struct, so I decided not to make it RefCounted.
However, since currently we don&apos;t have a plan to use GrammarDetails for now, we have decided to omit it. I hope you to review it again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>523699</commentid>
    <comment_count>17</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-18 21:14:59 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 119126 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=119126&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:48
&gt; &gt; +    // TODO(shinyak): Should be removed after we confirm Chromium does not use it.
&gt; 
&gt; nit: WebKit style is to use FIXME instead of TODO(user)
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:94
&gt; &gt; +    Error error; // TODO(shinyak): Should be removed after we confirm Chromium does not use it.
&gt; 
&gt; TODO(user) -&gt; FIXME

There were DONE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538785</commentid>
    <comment_count>18</comment_count>
      <attachid>119809</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-19 10:12:49 -0800</bug_when>
    <thetext>Comment on attachment 119809
Patch

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

&gt; Source/WebKit/chromium/src/EditorClientImpl.cpp:770
&gt; +                                            WebCore::TextCheckingTypeMask mask,

nit: no need to mention WebCore:: or WTF:: in this .cpp file.  notice the using directive at the top of the file for WebCore, and the WTF headers have a using directive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538786</commentid>
    <comment_count>19</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-01-19 10:13:09 -0800</bug_when>
    <thetext>nit: you probably want to bump your copyrights to 2012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539245</commentid>
    <comment_count>20</comment_count>
      <attachid>123242</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-01-19 19:24:48 -0800</bug_when>
    <thetext>Created attachment 123242
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539335</commentid>
    <comment_count>21</comment_count>
      <attachid>123242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 00:59:28 -0800</bug_when>
    <thetext>Comment on attachment 123242
Patch for landing

Clearing flags on attachment: 123242

Committed r105491: &lt;http://trac.webkit.org/changeset/105491&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539336</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-20 00:59:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118740</attachid>
            <date>2011-12-11 23:24:39 -0800</date>
            <delta_ts>2011-12-13 03:50:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74071-20111212162438.patch</filename>
            <type>text/plain</type>
            <size>9494</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNTU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGZhZWIyNTM2ZWI5N2E0ZmY0YTg4YzM5MzJmM2ZkZjc5NjRjNjdkYjkuLjk4NTYzNjIwZDUxYmQz
MDI5ZjBkM2M4MmFiMWY5MjVkZjFkY2IxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTEtMTItMTEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENocm9taXVtIHNob3VsZCBoYXZlIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVsbGNoZWNrZXIgb24gTWFjIGhhcyBtb3JlIHNv
cGhpc3RpY2F0ZWQgaW50ZXJmYWNlIGZvciBzcGVsbGNoZWNraW5nIChjaGVja1RleHRPZlBhcmFn
cmFwaCkuCisgICAgICAgIElmIHRoZSBvdGhlciBwb3J0cyBoYXZlIHRoZSBzYW1lIGludGVyZmFj
ZSwgY29kZSBjYW4gYmUgY2xlYXJlciBhbmQgZWFzeSB0byBleHRlbmQuCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBzdWNoIGFuIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgYmUgZG9uZSBub3QgaW4gV2ViS2l0IGJ1dCBpbiBDaHJvbWl1bS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWxsQ2hl
Y2tDbGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgICBBIG5ldyBpbnRlcmZh
Y2UgZm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZy5o
OiBBZGRlZC4KKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAg
ICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0Ojpjb252ZXJ0Q2hl
Y2tpbmdSZXN1bHQpOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpjaGVja1Rl
eHRPZlBhcmFncmFwaCk6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKwogMjAx
MS0xMi0wOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gUmVtb3ZlIGZvcndhcmRpbmcgaGVhZGVycyBmb3IgV2ViTGF5ZXIgQVBJcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0Ns
aWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0NsaWVu
dC5oCmluZGV4IDQ1N2JkMTNjOTc5MjdiOTA5NjQ4ZGZiMTk1MWJmNjk1ZTRkODVkYTEuLmYxZTlh
YTNmNDI0ZjA3NTE0OWE1NDYwYTRhN2RiZjJlZjA1OGRkMTUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWxsQ2hlY2tDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50LmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpZm5kZWYgV2ViU3BlbGxDaGVja0NsaWVudF9oCiAjZGVmaW5lIFdlYlNwZWxsQ2hl
Y2tDbGllbnRfaAogCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAKQEAg
LTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmluZzsKIGNs
YXNzIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb247CitzdHJ1Y3QgV2ViVGV4dENoZWNraW5nUmVz
dWx0OwogCiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTUxLDYgKzUz
LDExIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1pc3NwZWxs
ZWRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtaXNzcGVsbGVkTGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+KiBv
cHRpb25hbFN1Z2dlc3Rpb25zKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBh
cmFncmFwaChjb25zdCBXZWJTdHJpbmcmIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYlRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+
KiByZXN1bHQpIHsgfQorCiAgICAgLy8gUmVxdWVzdHMgYXN5bmNocm9ub3VzIHNwZWxsaW5nIGFu
ZCBncmFtbWFyIGNoZWNraW5nLCB3aG9zZSByZXN1bHQgc2hvdWxkIGJlCiAgICAgLy8gcmV0dXJu
ZWQgYnkgcGFzc2VkIGNvbXBsZXRpb24gb2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Q2hlY2tpbmdPZlRleHQoY29uc3QgV2ViU3RyaW5nJiwgV2ViVGV4dENoZWNraW5nQ29tcGxldGlv
biopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4
dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tp
bmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Yzc3MmRiNTNlOWZhYTIwYjQzMzI1Zjg0MzBjNTQzZGIxMjAwZDRk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4
dENoZWNraW5nLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nX2gKKyNk
ZWZpbmUgV2ViVGV4dENoZWNraW5nX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0gV2Vi
VGV4dENoZWNraW5nVHlwZSB7CisgICAgV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nID0gMSA8
PCAxLAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyICA9IDEgPDwgMiwKK307CisKK3R5
cGVkZWYgdW5zaWduZWQgV2ViVGV4dENoZWNraW5nVHlwZU1hc2s7CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNz
ZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggMzYxMmRmZWRkNDk1N2ZlOWRhNzRhOGM4ZWI0M2U4
MTE0NWFmNzQ3ZS4uMDIxYTIxZjM2ZjBmMmY1NjkxZTY3OWQ1ZGVhYmE1ODIyMDc1Zjc2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5j
cHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VJbmZvLmgiCiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCisjaW5jbHVkZSAiVGV4dENo
ZWNraW5nLmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVk
ZSAiVXNlckNvbnRlbnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgpAQCAt
OTAsNiArOTEsNyBAQAogI2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90YVR5cGUuaCIKICNpbmNsdWRl
ICJXZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5Lmgi
CisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5n
UmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKQEAgLTQ1NSw2ICs0NTcsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkdl
b2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZSwgR2VvbAogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmcs
IERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JHcmFtbWFyLCBEb2N1bWVudE1hcmtlcjo6R3Jh
bW1hcik7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlw
ZVNwZWxsaW5nLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciwgVGV4dENoZWNraW5nVHlwZUdy
YW1tYXIpOworCiAjaWYgRU5BQkxFKFFVT1RBKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJTdG9yYWdlUXVvdGFFcnJvck5vdFN1cHBvcnRlZCwgTk9UX1NVUFBPUlRFRF9FUlIpOwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJTdG9yYWdlUXVvdGFFcnJvckFib3J0LCBB
Qk9SVF9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmNwcAppbmRleCA0NjY4NmE1NGY4YzA5YmRhYWMyNTExODIyNGEyZjdkMDFjODliYjg0Li4x
MjM0YTVhNGYxNGExYjlhYmJkYTJhYWYyOTJmZjcwNzA5NjM2NjdmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtNTcsNiArNTcsNyBA
QAogI2luY2x1ZGUgIldlYlNwZWxsQ2hlY2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZm
aW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oIgorI2lu
Y2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCkBAIC03NjUsNiArNzY2LDM5IEBAIHZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoLAogICAgICAgICAqYmFkR3JhbW1hckxlbmd0aCA9IDA7CiB9CiAKK3N0YXRpYyB2b2lk
IGNvbnZlcnRDaGVja2luZ1Jlc3VsdChjb25zdCBXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3Vs
dCYgd2ViUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6
OlRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0KQoreworICAgIGlmICh3ZWJSZXN1bHQuZXJyb3Ig
JiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmcpCisgICAgICAgIHJlc3VsdC50
eXBlID0gV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgIGlmICh3ZWJSZXN1
bHQuZXJyb3IgJiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hcikKKyAgICAgICAg
cmVzdWx0LnR5cGUgPSBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKworICAgIHJl
c3VsdC5sb2NhdGlvbiA9IHdlYlJlc3VsdC5wb3NpdGlvbjsKKyAgICByZXN1bHQubGVuZ3RoID0g
d2ViUmVzdWx0Lmxlbmd0aDsKK30KKwordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1h
c2sgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RG
OjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBp
ZiAoIW1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJUZXh0Q2hlY2tpbmdUeXBlTWFzayB3ZWJNYXNrID0gMDsKKyAgICBpZiAobWFzayAmIFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZykKKyAgICAgICAgd2ViTWFzayB8PSBXZWJUZXh0Q2hlY2tp
bmdUeXBlU3BlbGxpbmc7CisgICAgaWYgKG1hc2sgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikK
KyAgICAgICAgd2ViTWFzayB8PSBXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKworICAgIFdl
YlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHdlYlJlc3VsdHM7CisgICAgbV93ZWJWaWV3
LT5zcGVsbENoZWNrQ2xpZW50KCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKFdlYlN0cmluZyh0ZXh0
LCBsZW5ndGgpLCB3ZWJNYXNrLCAmd2ViUmVzdWx0cyk7CisKKyAgICByZXN1bHRzLnJlc2l6ZSh3
ZWJSZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZXN1bHRz
LnNpemUoKTsgKytpKQorICAgICAgICBjb252ZXJ0Q2hlY2tpbmdSZXN1bHQod2ViUmVzdWx0c1tp
XSwgcmVzdWx0c1tpXSk7Cit9CisKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFN0cmluZyYsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWls
JiBkZXRhaWwpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmgKaW5kZXggMzQyMzM0ZWQ3MjZkY2RhOGEyZGU4MGQxMmQ0M2E4NTk3MzM2MWU4NC4uY2Y3
MGZlNGE5NWM1Y2MxZWUxZmQ3MDIyMWRiMjVkMzBkNzFmNjkyMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMTA1LDYgKzEwNSw5IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8
V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIGJhZEdyYW1tYXJMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdUeXBlTWFz
ayBjaGVja2luZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
VEY6OlZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2
aXJ0dWFsIFdURjo6U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRX
b3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5n
VUlXaXRoR3JhbW1hclN0cmluZyhjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6Okdy
YW1tYXJEZXRhaWwmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNz
cGVsbGVkV29yZChjb25zdCBXVEY6OlN0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118995</attachid>
            <date>2011-12-13 03:50:38 -0800</date>
            <delta_ts>2011-12-13 18:04:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74071-20111213205036.patch</filename>
            <type>text/plain</type>
            <size>17367</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDhlNGEwNzA2MzE3MzM4YTc1M2VjNDZiZWUyODhhOWIwMWNlZmRjOTkuLmQ0MzhkYjIzNTVkMWI2
ODUyMmYwNTcxOGFmN2FhNWMyMzc4MmU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTEtMTItMTMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENocm9taXVtIHNob3VsZCBoYXZlIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVsbGNoZWNrZXIgb24gTWFjIGhhcyBtb3JlIHNv
cGhpc3RpY2F0ZWQgaW50ZXJmYWNlIGZvciBzcGVsbGNoZWNraW5nIChjaGVja1RleHRPZlBhcmFn
cmFwaCkuCisgICAgICAgIElmIHRoZSBvdGhlciBwb3J0cyBoYXZlIHRoZSBzYW1lIGludGVyZmFj
ZSwgY29kZSBjYW4gYmUgY2xlYXJlciBhbmQgZWFzeSB0byBleHRlbmQuCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBzdWNoIGFuIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgYmUgZG9uZSBub3QgaW4gV2ViS2l0IGJ1dCBpbiBDaHJvbWl1bS4KKworICAgICAgICBBbHNv
LCBjdXJyZW50bHkgV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgYW5kIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCBoYXZlIGRpZmZlcmVudCBmb3Jtcy4KKyAgICAgICAgVGhleSBzaG91
bGQgYmUgY29ycmVzcG9uZGluZyBhcHBhcmVudGx5LiBUaGlzIHBhdGNoIGludHJvZHVjZXMgc3Vj
aCBjb3JyZXNwb25kZW5jZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYlNwZWxsQ2hlY2tDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlbGxDaGVj
a0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAgIEEgbmV3IGludGVyZmFj
ZSBmb3Igc3BlbGxjaGVja2luZy4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVz
dWx0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRh
aWwpOgorICAgICAgICAgIEEgY29ycmVzcG9uZGluZyBzdHJ1Y3RvcmUgb2YgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbAorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRl
eHRDaGVja2luZ1Jlc3VsdCk6CisgICAgICAgICAgQ2hhbmdlZCBzbyB0aGF0IFdlYlRleHRDaGVj
a2luZ1Jlc3VsdCBjb3JyZXNwb25kcyB0byBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQuCisg
ICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1R5cGUuaDogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAg
ICAgQ29ycmVzcG9uZHMgdG8gV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZQorICAgICAgICAqIHNy
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFy
YWdyYXBoKToKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNy
Yy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaC4KKyAgICAgICAgKFdlYktpdDo6
V2ViR3JhbW1hckRldGFpbDo6b3BlcmF0b3IgR3JhbW1hckRldGFpbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6b3BlcmF0b3IgVGV4dENoZWNraW5nUmVzdWx0KToK
KwogMjAxMS0xMi0xMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBXZWJLaXQgY29kZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBhcHBseUNvbW1hbmQgZGlyZWN0bHkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA5YTgzZmJmZTUwMTMyMGUxYzhkODM2MTE1
ZWEwYTYzM2UyMzA4ZGM5Li5mMDE2NDM0ZjY4NmRkNDMxZjkxNDU1MmIzMjY3MTM5NjI3Y2Q3Yjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00NjgsNiArNDY4LDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWxsQ2hlY2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNwZWxsQ2hlY2tDbGllbnQuaAppbmRleCA0NTdiZDEzYzk3OTI3YjkwOTY0OGRmYjE5NTFiZjY5
NWU0ZDg1ZGExLi4zMDA1ZjI0OTA3NTY5MjlkMjVkOTk2Nzk1NzMxMjZiNDM4ZDM1NDQ5IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0NsaWVu
dC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFdlYlNwZWxsQ2hlY2tDbGllbnRfaAogI2Rl
ZmluZSBXZWJTcGVsbENoZWNrQ2xpZW50X2gKIAorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1R5
cGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJWZWN0b3IuaCIKIApAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjsKK3N0cnVj
dCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQgewog
cHVibGljOgpAQCAtNTEsNiArNTMsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgbWlzc3BlbGxlZE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQmIG1pc3NwZWxsZWRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
VmVjdG9yPFdlYlN0cmluZz4qIG9wdGlvbmFsU3VnZ2VzdGlvbnMpIHsgfQorCisgICAgLy8gVGhl
IGNsaWVudCBzaG91bGQgcGVyZm9ybSBzcGVsbC1jaGVja2luZyBvbiB0aGUgZ2l2ZW4gdGV4dC4g
VGhpcyBmdW5jdGlvbiB3aWxsCisgICAgLy8gZW51bWVyYXRlIGFsbCBtaXNzcGVsbGluZ3MgYXQg
b25jZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3Ry
aW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVGV4dENoZWNr
aW5nVHlwZU1hc2sgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpIHsgfQorCiAgICAgLy8g
UmVxdWVzdHMgYXN5bmNocm9ub3VzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5nLCB3aG9z
ZSByZXN1bHQgc2hvdWxkIGJlCiAgICAgLy8gcmV0dXJuZWQgYnkgcGFzc2VkIGNvbXBsZXRpb24g
b2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlRleHQoY29uc3QgV2Vi
U3RyaW5nJiwgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaAppbmRleCAw
MTBhYTFhYmZiNWI3ZmRiNzJhN2ExYjQ5OWY0NDgzZDM2NzIwNDgxLi44M2FkZDUzYTQ5ODc2MTNj
ZmM4MjAyZjQzZTdjZjFkMTlmYTliZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApAQCAtMzEsMjcgKzMxLDk1IEBA
CiAjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCiAjZGVmaW5lIFdlYlRleHRDaGVja2lu
Z1Jlc3VsdF9oCiAKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CitzdHJ1Y3QgR3JhbW1hckRldGFpbDsKK30KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKLS8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0IGNoZWNraW5nLgor
Ly8gR3JhbW1hciBkZXRhaWxzIG9mIFRleHRDaGVja2luZ1Jlc3VsdC4KK3N0cnVjdCBXZWJHcmFt
bWFyRGV0YWlsIHsKKyAgICBXZWJHcmFtbWFyRGV0YWlsKGludCBsb2NhdGlvbiA9IDAsCisgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gMCwKKyAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBndWVzc2VzID0gV2ViVmVjdG9yPFdlYlN0cmluZz4o
KSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdXNlckRlc2NyaXB0aW9u
ID0gV2ViU3RyaW5nKCkpCisgICAgICAgIDogbG9jYXRpb24obG9jYXRpb24pCisgICAgICAgICwg
bGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBndWVzc2VzKGd1ZXNzZXMpCisgICAgICAgICwgdXNl
ckRlc2NyaXB0aW9uKHVzZXJEZXNjcmlwdGlvbikKKyAgICB7CisgICAgfQorCisjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV2ViQ29yZTo6R3JhbW1hckRldGFpbCgpIGNv
bnN0OworI2VuZGlmCisKKyAgICBpbnQgbG9jYXRpb247CisgICAgaW50IGxlbmd0aDsKKyAgICBX
ZWJWZWN0b3I8V2ViU3RyaW5nPiBndWVzc2VzOworICAgIFdlYlN0cmluZyB1c2VyRGVzY3JpcHRp
b247Cit9OworCisvLyBBIHJlc3VsdCBvZiBUZXh0Q2hlY2tpbmcuIAogc3RydWN0IFdlYlRleHRD
aGVja2luZ1Jlc3VsdCB7CisgICAgLy8gVE9ETyhzaGlueWFrKTogU2hvdWxkIGJlIHJlbW92ZWQg
YWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgaXQuCiAgICAgZW51bSBFcnJv
ciB7CiAgICAgICAgIEVycm9yU3BlbGxpbmcgPSAxIDw8IDAsCiAgICAgICAgIEVycm9yR3JhbW1h
ciA9IDEgPDwgMQogICAgIH07CiAKLSAgICBleHBsaWNpdCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQo
RXJyb3IgZSA9IEVycm9yU3BlbGxpbmcsIGludCBwID0gMCwgaW50IGwgPSAwKSAKLSAgICAgICAg
OiBlcnJvcihlKQorCisgICAgZXhwbGljaXQgV2ViVGV4dENoZWNraW5nUmVzdWx0KEVycm9yIGUg
PSBFcnJvclNwZWxsaW5nLCBpbnQgcCA9IDAsIGludCBsID0gMCkKKyAgICAgICAgOiB0eXBlKFdl
YlRleHRDaGVja2luZ1R5cGVTcGVsbGluZykKKyAgICAgICAgLCBlcnJvcihlKQogICAgICAgICAs
IHBvc2l0aW9uKHApCisgICAgICAgICwgbG9jYXRpb24ocCkKICAgICAgICAgLCBsZW5ndGgobCkK
ICAgICB7CisgICAgICAgIGlmIChlICYgRXJyb3JTcGVsbGluZykKKyAgICAgICAgICAgIHR5cGUg
PSBXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYgKGUgJiBFcnJv
ckdyYW1tYXIpCisgICAgICAgICAgICB0eXBlID0gV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICB9CiAKLSAgICBFcnJvciBlcnJvcjsKLSAgICBpbnQgcG9zaXRpb247CisgICAgV2ViVGV4
dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGUgdHlwZSwgaW50IGxvY2F0aW9uLCBp
bnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2Vi
R3JhbW1hckRldGFpbD4mIGRldGFpbHMgPSBXZWJWZWN0b3I8V2ViR3JhbW1hckRldGFpbD4oKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiByZXBsYWNlbWVudCA9
IFdlYlN0cmluZygpKQorICAgICAgICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBlcnJvcihFcnJv
clNwZWxsaW5nKQorICAgICAgICAsIHBvc2l0aW9uKGxvY2F0aW9uKQorICAgICAgICAsIGxvY2F0
aW9uKGxvY2F0aW9uKQorICAgICAgICAsIGxlbmd0aChsZW5ndGgpCisgICAgICAgICwgZGV0YWls
cyhkZXRhaWxzKQorICAgICAgICAsIHJlcGxhY2VtZW50KHJlcGxhY2VtZW50KQorICAgIHsKKyAg
ICAgICAgaWYgKHR5cGUgJiBXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCisgICAgICAgICAg
ICBlcnJvciA9IEVycm9yU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYgKHR5cGUgJiBXZWJUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgICAgIGVycm9yID0gRXJyb3JHcmFtbWFyOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0KCkgY29uc3Q7CisjZW5kaWYKKworICAgIFdlYlRleHRDaGVja2lu
Z1R5cGUgdHlwZTsKKyAgICBFcnJvciBlcnJvcjsgLy8gVE9ETyhzaGlueWFrKTogU2hvdWxkIGJl
IHJlbW92ZWQgYWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgaXQuCisgICAg
aW50IHBvc2l0aW9uOyAvLyBUT0RPKHNoaW55YWspOiBTaG91bGQgYmUgcmVtb3ZlZCBhZnRlciB3
ZSBjb25maXJtIENocm9taXVtIGRvZXMgbm90IHVzZSBpdC4KKyAgICBpbnQgbG9jYXRpb247CiAg
ICAgaW50IGxlbmd0aDsKKyAgICBXZWJWZWN0b3I8V2ViR3JhbW1hckRldGFpbD4gZGV0YWlsczsK
KyAgICBXZWJTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2lu
Z1R5cGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1R5
cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iMjIxMzliY2Y1M2U1NGVhN2M0ZTM4Zjc1N2MxYmVhNGI1OTM3Y2M1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4
dENoZWNraW5nVHlwZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1R5
cGVfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdUeXBlX2gKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2VudW0gV2ViVGV4dENoZWNraW5nVHlwZSB7CisgICAgV2ViVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nID0gMSA8PCAxLAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyICA9IDEgPDwg
MiwKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBlTGluayA9IDEgPDwgNSwKKyAgICBXZWJUZXh0Q2hl
Y2tpbmdUeXBlUXVvdGUgPSAxIDw8IDYsCisgICAgV2ViVGV4dENoZWNraW5nVHlwZURhc2ggPSAx
IDw8IDcsCisgICAgV2ViVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LAorICAg
IFdlYlRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID0gMSA8PCA5LAorICAgIFdlYlRleHRDaGVj
a2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAxMAorfTsKKwordHlwZWRlZiB1bnNp
Z25lZCBXZWJUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0
Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGlu
Z0VudW1zLmNwcAppbmRleCA1YTNhZjQzMDFjNThmMGVhMmM5MjU0ZTZmMTM0YWIzYzYyMTdiYjZj
Li4yYzBjMDYyMDdmYjVjODlkZmJmMjNiMTBhOGYzZGQzMTFlMmRhN2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjAs
NiArNjAsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUluZm8u
aCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIK
ICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJVc2VyQ29u
dGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCkBAIC04OSw2ICs5MCw3
IEBACiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHRB
ZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIKKyNpbmNsdWRl
ICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0
LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAg
LTQ1NCw2ICs0NTYsMTUgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2Nh
dGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGUsIEdlb2wKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIp
OwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVTcGVs
bGluZywgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXIsIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZUxpbmss
IFRleHRDaGVja2luZ1R5cGVMaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
VGV4dENoZWNraW5nVHlwZVF1b3RlLCBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpOworQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlRGFzaCwgVGV4dENoZWNraW5n
VHlwZURhc2gpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdU
eXBlUmVwbGFjZW1lbnQsIFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCk7CitDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uLCBUZXh0Q2hl
Y2tpbmdUeXBlQ29ycmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRl
eHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBUZXh0Q2hlY2tpbmdUeXBlU2hvd0Nv
cnJlY3Rpb25QYW5lbCk7CisKICNpZiBFTkFCTEUoUVVPVEEpCiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYlN0b3JhZ2VRdW90YUVycm9yTm90U3VwcG9ydGVkLCBOT1RfU1VQUE9SVEVE
X0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlN0b3JhZ2VRdW90YUVycm9y
QWJvcnQsIEFCT1JUX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuY3BwCmluZGV4IDQ2Njg2YTU0ZjhjMDliZGFhYzI1MTE4MjI0YTJmN2QwMWM4
OWJiODQuLjQ5OGM4Y2Q5ZGU5OGM2ZGQxMmExNmQxMDZiZWI4ZmY1OWJjOGI2ZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC01Nyw2
ICs1Nyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgogI2luY2x1ZGUgIldl
YlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBs
LmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmll
d0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKQEAgLTc2NSw2ICs3NjYsMjIg
QEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hh
ciosIGludCBsZW5ndGgsCiAgICAgICAgICpiYWRHcmFtbWFyTGVuZ3RoID0gMDsKIH0KIAordm9p
ZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4
dCwgaW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6VGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBpZiAoIW1fd2ViVmlldy0+c3BlbGxDaGVja0Ns
aWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBlTWFzayB3
ZWJNYXNrID0gc3RhdGljX2Nhc3Q8V2ViVGV4dENoZWNraW5nVHlwZU1hc2s+KG1hc2spOworICAg
IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHdlYlJlc3VsdHM7CisgICAgbV93ZWJW
aWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKFdlYlN0cmluZyh0
ZXh0LCBsZW5ndGgpLCB3ZWJNYXNrLCAmd2ViUmVzdWx0cyk7CisKKyAgICByZXN1bHRzLnJlc2l6
ZSh3ZWJSZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZXN1
bHRzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHRzW2ldID0gd2ViUmVzdWx0c1tpXTsKK30K
Kwogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJp
bmcoY29uc3QgU3RyaW5nJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkKIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCAzNDIzMzRl
ZDcyNmRjZGE4YTJkZTgwZDEyZDQzYTg1OTczMzYxZTg0Li5jZjcwZmU0YTk1YzVjYzFlZTFmZDcw
MjIxZGIyNWQzMGQ3MWY2OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5oCkBAIC0xMDUsNiArMTA1LDkgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFtbWFyRGV0
YWlsPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogYmFkR3Jh
bW1hckxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQq
IGJhZEdyYW1tYXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFw
aChjb25zdCBVQ2hhciosIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6
OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJp
bmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdU
Rjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4
dENoZWNraW5nUmVzdWx0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTQyNjUyOWM2NTUzZmY1M2RkMmM1OGY1
MGZjYTI2Yjc1M2M4YTQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgorCisjaW5jbHVk
ZSAiVGV4dENoZWNrZXJDbGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitXZWJHcmFtbWFyRGV0YWlsOjpvcGVyYXRvciBHcmFtbWFyRGV0
YWlsKCkgY29uc3QKK3sKKyAgICBHcmFtbWFyRGV0YWlsIGRldGFpbDsKKyAgICBkZXRhaWwubG9j
YXRpb24gPSBsb2NhdGlvbjsKKyAgICBkZXRhaWwubGVuZ3RoID0gbGVuZ3RoOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZ3Vlc3Nlcy5zaXplKCk7ICsraSkKKyAgICAgICAgZGV0YWlsLmd1
ZXNzZXMuYXBwZW5kKGd1ZXNzZXNbaV0pOworICAgIGRldGFpbC51c2VyRGVzY3JpcHRpb24gPSB1
c2VyRGVzY3JpcHRpb247CisKKyAgICByZXR1cm4gZGV0YWlsOworfQorCitXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ6Om9wZXJhdG9yIFRleHRDaGVja2luZ1Jlc3VsdCgpIGNvbnN0Cit7CisgICAgVGV4
dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICByZXN1bHQudHlwZSA9IHN0YXRpY19jYXN0PFRl
eHRDaGVja2luZ1R5cGU+KHR5cGUpOworICAgIHJlc3VsdC5sb2NhdGlvbiA9IGxvY2F0aW9uOwor
ICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
ZXRhaWxzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuZGV0YWlscy5hcHBlbmQoZGV0YWls
c1tpXSk7CisgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gcmVwbGFjZW1lbnQ7CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119126</attachid>
            <date>2011-12-13 18:04:20 -0800</date>
            <delta_ts>2011-12-18 21:12:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74071-20111214110418.patch</filename>
            <type>text/plain</type>
            <size>22515</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyNzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDkzYTVlYzIxZjliZTg1ZTgzNTU2Mzc4YTM2YzRmMzUwNWZmMmRiNWEuLjMzZGZjYzEwNzBlYzMy
ODRhN2JmNmQ1NWUzNmIxYTM1MDcwMTM5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTEtMTItMTMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENocm9taXVtIHNob3VsZCBoYXZlIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVsbGNoZWNrZXIgb24gTWFjIGhhcyBtb3JlIHNv
cGhpc3RpY2F0ZWQgaW50ZXJmYWNlIGZvciBzcGVsbGNoZWNraW5nIChjaGVja1RleHRPZlBhcmFn
cmFwaCkuCisgICAgICAgIElmIHRoZSBvdGhlciBwb3J0cyBoYXZlIHRoZSBzYW1lIGludGVyZmFj
ZSwgY29kZSBjYW4gYmUgY2xlYXJlciBhbmQgZWFzeSB0byBleHRlbmQuCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBzdWNoIGFuIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgYmUgZG9uZSBub3QgaW4gV2ViS2l0IGJ1dCBpbiBDaHJvbWl1bS4KKworICAgICAgICBBbHNv
LCBjdXJyZW50bHkgV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgYW5kIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCBoYXZlIGRpZmZlcmVudCBmb3Jtcy4KKyAgICAgICAgVGhleSBzaG91
bGQgYmUgY29ycmVzcG9uZGluZyBhcHBhcmVudGx5LiBUaGlzIHBhdGNoIGludHJvZHVjZXMgc3Vj
aCBjb3JyZXNwb25kZW5jZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYkdyYW1tYXJEZXRhaWwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAgIChXZWJLaXQ6OldlYkdy
YW1tYXJEZXRhaWw6OldlYkdyYW1tYXJEZXRhaWwpOgorICAgICAgICAgIEEgY29ycmVzcG9uZGlu
ZyBzdHJ1Y3RvcmUgb2YgV2ViQ29yZTo6R3JhbW1hckRldGFpbAorICAgICAgICAqIHB1YmxpYy9X
ZWJTcGVsbENoZWNrQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGll
bnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgICBBIG5ldyBpbnRlcmZhY2UgZm9y
IHNwZWxsY2hlY2tpbmcuCisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRleHRDaGVja2lu
Z1Jlc3VsdCk6CisgICAgICAgICAgQ2hhbmdlZCBzbyB0aGF0IFdlYlRleHRDaGVja2luZ1Jlc3Vs
dCBjb3JyZXNwb25kcyB0byBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAgICog
cHVibGljL1dlYlRleHRDaGVja2luZ1R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAgICAgQ29ycmVz
cG9uZHMgdG8gV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZQorICAgICAgICAqIHNyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToK
KyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJHcmFt
bWFyRGV0YWlsLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAgIChXZWJLaXQ6OldlYkdyYW1tYXJEZXRh
aWw6Om9wZXJhdG9yIEdyYW1tYXJEZXRhaWwpOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tp
bmdSZXN1bHQuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5n
UmVzdWx0OjpvcGVyYXRvciBUZXh0Q2hlY2tpbmdSZXN1bHQpOgorCiAyMDExLTEyLTEzICBEYXZl
IE1pY2hhZWwgIDxkbWljaGFlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRXhwb3J0IFdlYkFy
cmF5QnVmZmVyOjpieXRlTGVuZ3RoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOWE4
M2ZiZmU1MDEzMjBlMWM4ZDgzNjExNWVhMGE2MzNlMjMwOGRjOS4uOWRhNDRkOTNjMjhjYWVjMmUy
YWE2N2VmMDA1OTZhNTEwY2Q2ODAyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAt
MTY1LDYgKzE2NSw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlci5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdl
b2xvY2F0aW9uUG9zaXRpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHbHlwaENh
Y2hlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR3JhbW1hckRldGFpbC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkhpc3RvcnlJdGVtLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViSURCQ2FsbGJhY2tzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
SURCQ3Vyc29yLmgnLApAQCAtNDY4LDYgKzQ2OSw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9V
c2VyTWVkaWFDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb25JbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1
bUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCcsCkBA
IC01NDEsNiArNTQzLDcgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9s
b2NhdGlvblBvc2l0aW9uLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHbHlwaENhY2hl
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJHcmFtbWFyRGV0YWlsLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViSGlzdG9yeUl0ZW0uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkhU
VFBCb2R5LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFt
bWFyRGV0YWlsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzFkYTNjYmNkZDQ0ZDgwZDUyNjllZWZlYmI3NmZlMmMy
ZTRlYTAzNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJHcmFtbWFyRGV0
YWlsX2gKKyNkZWZpbmUgV2ViR3JhbW1hckRldGFpbF9oCisKKyNpbmNsdWRlICJXZWJUZXh0Q2hl
Y2tpbmdUeXBlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViU3RyaW5nLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0cnVjdCBHcmFtbWFyRGV0YWlsOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworLy8gR3JhbW1hciBkZXRhaWxzIG9mIFRleHRDaGVja2luZ1Jlc3VsdC4K
K3N0cnVjdCBXZWJHcmFtbWFyRGV0YWlsIHsKKyAgICBXZWJHcmFtbWFyRGV0YWlsKGludCBsb2Nh
dGlvbiA9IDAsCisgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gMCwKKyAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJTdHJpbmc+JiBndWVzc2VzID0gV2ViVmVj
dG9yPFdlYlN0cmluZz4oKSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
dXNlckRlc2NyaXB0aW9uID0gV2ViU3RyaW5nKCkpCisgICAgICAgIDogbG9jYXRpb24obG9jYXRp
b24pCisgICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCBndWVzc2VzKGd1ZXNzZXMp
CisgICAgICAgICwgdXNlckRlc2NyaXB0aW9uKHVzZXJEZXNjcmlwdGlvbikKKyAgICB7CisgICAg
fQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3IgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBpbnQgbG9jYXRpb247CisgICAgaW50
IGxlbmd0aDsKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBndWVzc2VzOworICAgIFdlYlN0cmlu
ZyB1c2VyRGVzY3JpcHRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVsbENoZWNr
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVsbENoZWNrQ2xp
ZW50LmgKaW5kZXggNDU3YmQxM2M5NzkyN2I5MDk2NDhkZmIxOTUxYmY2OTVlNGQ4NWRhMS4uMzAw
NWYyNDkwNzU2OTI5ZDI1ZDk5Njc5NTczMTI2YjQzOGQzNTQ0OSAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0NsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWxsQ2hlY2tDbGllbnQuaApAQCAtMzEsNiAr
MzEsNyBAQAogI2lmbmRlZiBXZWJTcGVsbENoZWNrQ2xpZW50X2gKICNkZWZpbmUgV2ViU3BlbGxD
aGVja0NsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgi
CiAKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYlN0cmlu
ZzsKIGNsYXNzIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb247CitzdHJ1Y3QgV2ViVGV4dENoZWNr
aW5nUmVzdWx0OwogCiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTUx
LDYgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmIG1p
c3NwZWxsZWRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50JiBtaXNzcGVs
bGVkTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZlY3RvcjxXZWJTdHJp
bmc+KiBvcHRpb25hbFN1Z2dlc3Rpb25zKSB7IH0KKworICAgIC8vIFRoZSBjbGllbnQgc2hvdWxk
IHBlcmZvcm0gc3BlbGwtY2hlY2tpbmcgb24gdGhlIGdpdmVuIHRleHQuIFRoaXMgZnVuY3Rpb24g
d2lsbAorICAgIC8vIGVudW1lcmF0ZSBhbGwgbWlzc3BlbGxpbmdzIGF0IG9uY2UuCisgICAgdmly
dHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFdlYlN0cmluZyYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRleHRDaGVja2luZ1R5cGVNYXNrIG1h
c2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlZlY3RvcjxXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKSB7IH0KKwogICAgIC8vIFJlcXVlc3RzIGFzeW5j
aHJvbm91cyBzcGVsbGluZyBhbmQgZ3JhbW1hciBjaGVja2luZywgd2hvc2UgcmVzdWx0IHNob3Vs
ZCBiZQogICAgIC8vIHJldHVybmVkIGJ5IHBhc3NlZCBjb21wbGV0aW9uIG9iamVjdC4KICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZUZXh0KGNvbnN0IFdlYlN0cmluZyYsIFdlYlRl
eHRDaGVja2luZ0NvbXBsZXRpb24qKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKaW5kZXggMDEwYWExYWJmYjViN2Zk
YjcyYTdhMWI0OTlmNDQ4M2QzNjcyMDQ4MS4uYWEwNWVkYzU1NWZhZGJhNzVlM2E0MWMzMzMwMGJl
Y2E5MjBlMTQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dENoZWNraW5nUmVzdWx0LmgKQEAgLTMxLDI3ICszMSw3MiBAQAogI2lmbmRlZiBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHRfaAogI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAogCisj
aW5jbHVkZSAiV2ViR3JhbW1hckRldGFpbC5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1R5
cGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJTdHJpbmcuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworc3RydWN0IFRleHRDaGVja2luZ1Jlc3VsdDsKK30KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIC8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0IGNoZWNraW5nLgogc3RydWN0
IFdlYlRleHRDaGVja2luZ1Jlc3VsdCB7CisgICAgLy8gVE9ETyhzaGlueWFrKTogU2hvdWxkIGJl
IHJlbW92ZWQgYWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgaXQuCiAgICAg
ZW51bSBFcnJvciB7CiAgICAgICAgIEVycm9yU3BlbGxpbmcgPSAxIDw8IDAsCiAgICAgICAgIEVy
cm9yR3JhbW1hciA9IDEgPDwgMQogICAgIH07CiAKLSAgICBleHBsaWNpdCBXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQoRXJyb3IgZSA9IEVycm9yU3BlbGxpbmcsIGludCBwID0gMCwgaW50IGwgPSAwKSAK
LSAgICAgICAgOiBlcnJvcihlKQorCisgICAgZXhwbGljaXQgV2ViVGV4dENoZWNraW5nUmVzdWx0
KEVycm9yIGUgPSBFcnJvclNwZWxsaW5nLCBpbnQgcCA9IDAsIGludCBsID0gMCkKKyAgICAgICAg
OiB0eXBlKFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZykKKyAgICAgICAgLCBlcnJvcihlKQog
ICAgICAgICAsIHBvc2l0aW9uKHApCisgICAgICAgICwgbG9jYXRpb24ocCkKICAgICAgICAgLCBs
ZW5ndGgobCkKICAgICB7CisgICAgICAgIGlmIChlICYgRXJyb3JTcGVsbGluZykKKyAgICAgICAg
ICAgIHR5cGUgPSBXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYg
KGUgJiBFcnJvckdyYW1tYXIpCisgICAgICAgICAgICB0eXBlID0gV2ViVGV4dENoZWNraW5nVHlw
ZUdyYW1tYXI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKLSAgICBFcnJvciBlcnJvcjsKLSAgICBpbnQgcG9zaXRpb247Cisg
ICAgV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGUgdHlwZSwgaW50IGxv
Y2F0aW9uLCBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJW
ZWN0b3I8V2ViR3JhbW1hckRldGFpbD4mIGRldGFpbHMgPSBXZWJWZWN0b3I8V2ViR3JhbW1hckRl
dGFpbD4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiByZXBs
YWNlbWVudCA9IFdlYlN0cmluZygpKQorICAgICAgICA6IHR5cGUodHlwZSkKKyAgICAgICAgLCBl
cnJvcihFcnJvclNwZWxsaW5nKQorICAgICAgICAsIHBvc2l0aW9uKGxvY2F0aW9uKQorICAgICAg
ICAsIGxvY2F0aW9uKGxvY2F0aW9uKQorICAgICAgICAsIGxlbmd0aChsZW5ndGgpCisgICAgICAg
ICwgZGV0YWlscyhkZXRhaWxzKQorICAgICAgICAsIHJlcGxhY2VtZW50KHJlcGxhY2VtZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKHR5cGUgJiBXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCisg
ICAgICAgICAgICBlcnJvciA9IEVycm9yU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYgKHR5cGUg
JiBXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgICAgIGVycm9yID0gRXJyb3JH
cmFtbWFyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgb3BlcmF0b3Ig
V2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0KCkgY29uc3Q7CisjZW5kaWYKKworICAgIFdlYlRl
eHRDaGVja2luZ1R5cGUgdHlwZTsKKyAgICBFcnJvciBlcnJvcjsgLy8gVE9ETyhzaGlueWFrKTog
U2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2Ug
aXQuCisgICAgaW50IHBvc2l0aW9uOyAvLyBUT0RPKHNoaW55YWspOiBTaG91bGQgYmUgcmVtb3Zl
ZCBhZnRlciB3ZSBjb25maXJtIENocm9taXVtIGRvZXMgbm90IHVzZSBpdC4KKyAgICBpbnQgbG9j
YXRpb247CiAgICAgaW50IGxlbmd0aDsKKyAgICBXZWJWZWN0b3I8V2ViR3JhbW1hckRldGFpbD4g
ZGV0YWlsczsKKyAgICBXZWJTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHRDaGVja2luZ1R5cGUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRD
aGVja2luZ1R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjIxMzliY2Y1M2U1NGVhN2M0ZTM4Zjc1N2MxYmVh
NGI1OTM3Y2M1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGV4dENoZWNraW5nVHlwZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRD
aGVja2luZ1R5cGVfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdUeXBlX2gKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2VudW0gV2ViVGV4dENoZWNraW5nVHlwZSB7CisgICAgV2ViVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nID0gMSA8PCAxLAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFy
ICA9IDEgPDwgMiwKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBlTGluayA9IDEgPDwgNSwKKyAgICBX
ZWJUZXh0Q2hlY2tpbmdUeXBlUXVvdGUgPSAxIDw8IDYsCisgICAgV2ViVGV4dENoZWNraW5nVHlw
ZURhc2ggPSAxIDw8IDcsCisgICAgV2ViVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8
PCA4LAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID0gMSA8PCA5LAorICAgIFdl
YlRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAxMAorfTsKKwordHlw
ZWRlZiB1bnNpZ25lZCBXZWJUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCA1YTNhZjQzMDFjNThmMGVhMmM5MjU0ZTZmMTM0YWIz
YzYyMTdiYjZjLi4yYzBjMDYyMDdmYjVjODlkZmJmMjNiMTBhOGYzZGQzMTFlMmRhN2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNw
cApAQCAtNjAsNiArNjAsNyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUluZm8uaCIKICNpbmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJUZXh0Q2hl
Y2tpbmcuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRl
ICJVc2VyQ29udGVudFR5cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCkBAIC04
OSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUg
IldlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIK
KyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldlYlZp
ZXcuaCIKQEAgLTQ1NCw2ICs0NTYsMTUgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGUsIEdlb2wKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxs
aW5nLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6
OkdyYW1tYXIpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2lu
Z1R5cGVTcGVsbGluZywgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXIsIFRleHRDaGVja2luZ1R5
cGVHcmFtbWFyKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5n
VHlwZUxpbmssIFRleHRDaGVja2luZ1R5cGVMaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZVF1b3RlLCBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpOwor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlRGFzaCwgVGV4
dENoZWNraW5nVHlwZURhc2gpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0
Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQsIFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCk7CitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
LCBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYlRleHRDaGVja2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBUZXh0Q2hlY2tpbmdU
eXBlU2hvd0NvcnJlY3Rpb25QYW5lbCk7CisKICNpZiBFTkFCTEUoUVVPVEEpCiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYlN0b3JhZ2VRdW90YUVycm9yTm90U3VwcG9ydGVkLCBOT1Rf
U1VQUE9SVEVEX0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlN0b3JhZ2VR
dW90YUVycm9yQWJvcnQsIEFCT1JUX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDQ2Njg2YTU0ZjhjMDliZGFhYzI1MTE4MjI0
YTJmN2QwMWM4OWJiODQuLjQ5OGM4Y2Q5ZGU5OGM2ZGQxMmExNmQxMDZiZWI4ZmY1OWJjOGI2ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
CkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsLmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVk
ZSAiV2ViVmlld0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKQEAgLTc2NSw2
ICs3NjYsMjIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja0dyYW1tYXJPZlN0cmluZyhj
b25zdCBVQ2hhciosIGludCBsZW5ndGgsCiAgICAgICAgICpiYWRHcmFtbWFyTGVuZ3RoID0gMDsK
IH0KIAordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBV
Q2hhciogdGV4dCwgaW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV2ViQ29yZTo6VGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBpZiAoIW1fd2ViVmlldy0+c3Bl
bGxDaGVja0NsaWVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJUZXh0Q2hlY2tpbmdU
eXBlTWFzayB3ZWJNYXNrID0gc3RhdGljX2Nhc3Q8V2ViVGV4dENoZWNraW5nVHlwZU1hc2s+KG1h
c2spOworICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHdlYlJlc3VsdHM7Cisg
ICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50KCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKFdl
YlN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3ZWJNYXNrLCAmd2ViUmVzdWx0cyk7CisKKyAgICByZXN1
bHRzLnJlc2l6ZSh3ZWJSZXN1bHRzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB3ZWJSZXN1bHRzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHRzW2ldID0gd2ViUmVzdWx0
c1tpXTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdy
YW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRl
eCAzNDIzMzRlZDcyNmRjZGE4YTJkZTgwZDEyZDQzYTg1OTczMzYxZTg0Li5jZjcwZmU0YTk1YzVj
YzFlZTFmZDcwMjIxZGIyNWQzMGQ3MWY2OTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0xMDUsNiArMTA1LDkgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3JlOjpH
cmFtbWFyRGV0YWlsPiYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCogYmFkR3JhbW1hckxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRP
ZlBhcmFncmFwaChjb25zdCBVQ2hhciosIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5n
VHlwZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgV1RG
OjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3Qg
V1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFt
bWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFp
bCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3Jk
KGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFtbWFyRGV0YWlsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkdyYW1tYXJEZXRhaWwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJjMDBhODE2NzA0YmM4OWNjZGY2ZDJlZDg4
OTU1ZTdlMjViZmEyYTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFtbWFyRGV0YWlsLmNwcApAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkdyYW1tYXJEZXRhaWwuaCIKKworI2luY2x1ZGUgIlRleHRDaGVj
a2VyQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViR3JhbW1hckRldGFpbDo6b3BlcmF0b3IgR3JhbW1hckRldGFpbCgpIGNvbnN0
Cit7CisgICAgR3JhbW1hckRldGFpbCBkZXRhaWw7CisgICAgZGV0YWlsLmxvY2F0aW9uID0gbG9j
YXRpb247CisgICAgZGV0YWlsLmxlbmd0aCA9IGxlbmd0aDsKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGd1ZXNzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGRldGFpbC5ndWVzc2VzLmFwcGVu
ZChndWVzc2VzW2ldKTsKKyAgICBkZXRhaWwudXNlckRlc2NyaXB0aW9uID0gdXNlckRlc2NyaXB0
aW9uOworCisgICAgcmV0dXJuIGRldGFpbDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1
bHQuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nUmVzdWx0
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMjU4NDNiZTI0OWJiMjZkNzhkYTBhZjNjMTAzZjE0YTI5NmMxNWM2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENo
ZWNraW5nUmVzdWx0LmNwcApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgorCisjaW5jbHVkZSAiVGV4dENoZWNrZXJD
bGllbnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om9wZXJhdG9yIFRleHRDaGVja2luZ1Jlc3VsdCgp
IGNvbnN0Cit7CisgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICByZXN1bHQudHlw
ZSA9IHN0YXRpY19jYXN0PFRleHRDaGVja2luZ1R5cGU+KHR5cGUpOworICAgIHJlc3VsdC5sb2Nh
dGlvbiA9IGxvY2F0aW9uOworICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBkZXRhaWxzLnNpemUoKTsgKytpKQorICAgICAgICByZXN1bHQuZGV0
YWlscy5hcHBlbmQoZGV0YWlsc1tpXSk7CisgICAgcmVzdWx0LnJlcGxhY2VtZW50ID0gcmVwbGFj
ZW1lbnQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119809</attachid>
            <date>2011-12-18 21:12:39 -0800</date>
            <delta_ts>2012-01-19 19:24:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74071-20111219141238.patch</filename>
            <type>text/plain</type>
            <size>15826</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGU4OTljNjcyYmQxYWExNjZkYjJhNmJiOTA4ZjdmN2E3ZmU4ZjAyN2MuLjY1ZGEzNDM1OTU1ZjUw
NWU2MGIxNjdmYTI5MmVmMzk0ZDM3YmU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTEtMTItMTggIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENocm9taXVtIHNob3VsZCBoYXZlIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGVsbGNoZWNrZXIgb24gTWFjIGhhcyBtb3JlIHNv
cGhpc3RpY2F0ZWQgaW50ZXJmYWNlIGZvciBzcGVsbGNoZWNraW5nIChjaGVja1RleHRPZlBhcmFn
cmFwaCkuCisgICAgICAgIElmIHRoZSBvdGhlciBwb3J0cyBoYXZlIHRoZSBzYW1lIGludGVyZmFj
ZSwgY29kZSBjYW4gYmUgY2xlYXJlciBhbmQgZWFzeSB0byBleHRlbmQuCisgICAgICAgIFRoaXMg
cGF0Y2ggaW50cm9kdWNlcyBzdWNoIGFuIGludGVyZmFjZS4gVGhlIGltcGxlbWVudGF0aW9uIHdp
bGwgYmUgZG9uZSBub3QgaW4gV2ViS2l0IGJ1dCBpbiBDaHJvbWl1bS4KKworICAgICAgICBBbHNv
LCBjdXJyZW50bHkgV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgYW5kIFdlYkNvcmU6OlRl
eHRDaGVja2luZ1Jlc3VsdCBoYXZlIGRpZmZlcmVudCBmb3Jtcy4KKyAgICAgICAgVGhleSBzaG91
bGQgYmUgY29ycmVzcG9uZGluZyBhcHBhcmVudGx5LiBUaGlzIHBhdGNoIGludHJvZHVjZXMgc3Vj
aCBjb3JyZXNwb25kZW5jZS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVi
bGljL1dlYlNwZWxsQ2hlY2tDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViU3BlbGxDaGVj
a0NsaWVudDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgpOgorICAgICAgICAgIEEgbmV3IGludGVyZmFj
ZSBmb3Igc3BlbGxjaGVja2luZy4KKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVz
dWx0Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4dENo
ZWNraW5nUmVzdWx0KToKKyAgICAgICAgICBDaGFuZ2VkIHNvIHRoYXQgV2ViVGV4dENoZWNraW5n
UmVzdWx0IGNvcnJlc3BvbmRzIHRvIFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nVHlwZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaC4KKyAgICAgICAgKiBz
cmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHA6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpjaGVja1RleHRPZlBh
cmFncmFwaCk6CisgICAgICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBz
cmMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAgIChXZWJLaXQ6
OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6b3BlcmF0b3IgVGV4dENoZWNraW5nUmVzdWx0KToKKwog
MjAxMS0xMi0xOCAgSmFtZXMgS296aWFuc2tpICA8a296QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIEFkZCB3b3JsZElkIHBhcmFtZXRlciB0byBhbGxvd1NjcmlwdEV4dGVuc2lv
bigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZjY1ZmRjOTI5OGZhZDUxNzI3YjMw
ZmZkOTViMWE0NTNiMzc4YWM1Zi4uZDlmOWE5YTAyNDg5ZjNhMGQyNGYxNmM2OTA5OTBjMjI4ZmJh
NGZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtNDY3LDYgKzQ2Nyw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1ZpZGVvRnJhbWVDaHJvbWl1bUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1Zp
ZGVvRnJhbWVDaHJvbWl1bUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTcGVsbENoZWNrQ2xpZW50LmgKaW5kZXggNDU3YmQxM2M5NzkyN2I5MDk2NDhkZmIxOTUx
YmY2OTVlNGQ4NWRhMS4uMzAwNWYyNDkwNzU2OTI5ZDI1ZDk5Njc5NTczMTI2YjQzOGQzNTQ0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0Ns
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNwZWxsQ2hlY2tD
bGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRlZiBXZWJTcGVsbENoZWNrQ2xpZW50X2gK
ICNkZWZpbmUgV2ViU3BlbGxDaGVja0NsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tp
bmdUeXBlLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViVmVjdG9yLmgiCiAKQEAgLTM4LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlN0cmluZzsKIGNsYXNzIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb247Citz
dHJ1Y3QgV2ViVGV4dENoZWNraW5nUmVzdWx0OwogCiBjbGFzcyBXZWJTcGVsbENoZWNrQ2xpZW50
IHsKIHB1YmxpYzoKQEAgLTUxLDYgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50JiBtaXNzcGVsbGVkTGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYlZlY3RvcjxXZWJTdHJpbmc+KiBvcHRpb25hbFN1Z2dlc3Rpb25zKSB7IH0KKworICAgIC8v
IFRoZSBjbGllbnQgc2hvdWxkIHBlcmZvcm0gc3BlbGwtY2hlY2tpbmcgb24gdGhlIGdpdmVuIHRl
eHQuIFRoaXMgZnVuY3Rpb24gd2lsbAorICAgIC8vIGVudW1lcmF0ZSBhbGwgbWlzc3BlbGxpbmdz
IGF0IG9uY2UuCisgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFdl
YlN0cmluZyYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlRleHRD
aGVja2luZ1R5cGVNYXNrIG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+KiByZXN1bHRzKSB7IH0KKwogICAg
IC8vIFJlcXVlc3RzIGFzeW5jaHJvbm91cyBzcGVsbGluZyBhbmQgZ3JhbW1hciBjaGVja2luZywg
d2hvc2UgcmVzdWx0IHNob3VsZCBiZQogICAgIC8vIHJldHVybmVkIGJ5IHBhc3NlZCBjb21wbGV0
aW9uIG9iamVjdC4KICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZUZXh0KGNvbnN0
IFdlYlN0cmluZyYsIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb24qKSB7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKaW5k
ZXggMDEwYWExYWJmYjViN2ZkYjcyYTdhMWI0OTlmNDQ4M2QzNjcyMDQ4MS4uZGZkMDE4MWU1MjUy
ZDYwY2M0NTE1NzIyMzczYzM1ODdjYzAxODNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKQEAgLTMxLDI3ICszMSw2
NiBAQAogI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAogI2RlZmluZSBXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHRfaAogCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nVHlwZS5oIgogI2luY2x1
ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdHJ1Y3QgVGV4dENoZWNraW5nUmVzdWx0OworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Ly8gQSBjaGVja2VkIGVudHJ5IG9mIHRleHQgY2hlY2tpbmcuCiBzdHJ1Y3QgV2ViVGV4dENoZWNr
aW5nUmVzdWx0IHsKKyAgICAvLyBGSVhNRTogU2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgd2UgY29u
ZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgaXQuCiAgICAgZW51bSBFcnJvciB7CiAgICAgICAg
IEVycm9yU3BlbGxpbmcgPSAxIDw8IDAsCiAgICAgICAgIEVycm9yR3JhbW1hciA9IDEgPDwgMQog
ICAgIH07CiAKLSAgICBleHBsaWNpdCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoRXJyb3IgZSA9IEVy
cm9yU3BlbGxpbmcsIGludCBwID0gMCwgaW50IGwgPSAwKSAKLSAgICAgICAgOiBlcnJvcihlKQor
ICAgIGV4cGxpY2l0IFdlYlRleHRDaGVja2luZ1Jlc3VsdChFcnJvciBlID0gRXJyb3JTcGVsbGlu
ZywgaW50IHAgPSAwLCBpbnQgbCA9IDApCisgICAgICAgIDogdHlwZShXZWJUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmcpCisgICAgICAgICwgZXJyb3IoZSkKICAgICAgICAgLCBwb3NpdGlvbihwKQor
ICAgICAgICAsIGxvY2F0aW9uKHApCiAgICAgICAgICwgbGVuZ3RoKGwpCiAgICAgeworICAgICAg
ICBpZiAoZSAmIEVycm9yU3BlbGxpbmcpCisgICAgICAgICAgICB0eXBlID0gV2ViVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOworICAgICAgICBlbHNlIGlmIChlICYgRXJyb3JHcmFtbWFyKQorICAg
ICAgICAgICAgdHlwZSA9IFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAg
V2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1R5cGUgdHlwZSwgaW50IGxvY2F0
aW9uLCBpbnQgbGVuZ3RoLCBjb25zdCBXZWJTdHJpbmcmIHJlcGxhY2VtZW50ID0gV2ViU3RyaW5n
KCkpCisgICAgICAgIDogdHlwZSh0eXBlKQorICAgICAgICAsIGVycm9yKEVycm9yU3BlbGxpbmcp
CisgICAgICAgICwgcG9zaXRpb24obG9jYXRpb24pCisgICAgICAgICwgbG9jYXRpb24obG9jYXRp
b24pCisgICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKKyAgICAgICAgLCByZXBsYWNlbWVudChyZXBs
YWNlbWVudCkKKyAgICB7CisgICAgICAgIGlmICh0eXBlICYgV2ViVGV4dENoZWNraW5nVHlwZVNw
ZWxsaW5nKQorICAgICAgICAgICAgZXJyb3IgPSBFcnJvclNwZWxsaW5nOworICAgICAgICBlbHNl
IGlmICh0eXBlICYgV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpCisgICAgICAgICAgICBlcnJv
ciA9IEVycm9yR3JhbW1hcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgV0VCS0lUX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIEVycm9yIGVycm9yOwotICAgIGludCBwb3Np
dGlvbjsKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBvcGVyYXRvciBXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXN1bHQoKSBjb25zdDsKKyNlbmRpZgorCisgICAgV2ViVGV4dENoZWNraW5n
VHlwZSB0eXBlOworICAgIEVycm9yIGVycm9yOyAvLyBGSVhNRTogU2hvdWxkIGJlIHJlbW92ZWQg
YWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1bSBkb2VzIG5vdCB1c2UgaXQuCisgICAgaW50IHBvc2l0
aW9uOyAvLyBGSVhNRTogU2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgd2UgY29uZmlybSBDaHJvbWl1
bSBkb2VzIG5vdCB1c2UgaXQuCisgICAgaW50IGxvY2F0aW9uOwogICAgIGludCBsZW5ndGg7Cisg
ICAgV2ViU3RyaW5nIHJlcGxhY2VtZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdU
eXBlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdUeXBl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjIyMTM5YmNmNTNlNTRlYTdjNGUzOGY3NTdjMWJlYTRiNTkzN2NjNQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRD
aGVja2luZ1R5cGUuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdUeXBl
X2gKKyNkZWZpbmUgV2ViVGV4dENoZWNraW5nVHlwZV9oCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitlbnVtIFdlYlRleHRDaGVja2luZ1R5cGUgeworICAgIFdlYlRleHRDaGVja2luZ1R5cGVTcGVs
bGluZyA9IDEgPDwgMSwKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hciAgPSAxIDw8IDIs
CisgICAgV2ViVGV4dENoZWNraW5nVHlwZUxpbmsgPSAxIDw8IDUsCisgICAgV2ViVGV4dENoZWNr
aW5nVHlwZVF1b3RlID0gMSA8PCA2LAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVEYXNoID0gMSA8
PCA3LAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCA9IDEgPDwgOCwKKyAgICBX
ZWJUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiA9IDEgPDwgOSwKKyAgICBXZWJUZXh0Q2hlY2tp
bmdUeXBlU2hvd0NvcnJlY3Rpb25QYW5lbCA9IDEgPDwgMTAKK307CisKK3R5cGVkZWYgdW5zaWdu
ZWQgV2ViVGV4dENoZWNraW5nVHlwZU1hc2s7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKaW5kZXggNWEzYWY0MzAxYzU4ZjBlYTJjOTI1NGU2ZjEzNGFiM2M2MjE3YmI2Yy4u
MmMwYzA2MjA3ZmI1Yzg5ZGZiZjIzYjEwYThmM2RkMzExZTJkYTdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTYwLDYg
KzYwLDcgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VJbmZvLmgi
CiAjaW5jbHVkZSAiVGV4dEFmZmluaXR5LmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCiAj
aW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRl
bnRUeXBlcy5oIgogI2luY2x1ZGUgIlVzZXJTY3JpcHRUeXBlcy5oIgpAQCAtODksNiArOTAsNyBA
QAogI2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90YVR5cGUuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZm
aW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCisjaW5jbHVkZSAi
V2ViVGV4dENoZWNraW5nVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5o
IgogI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCkBAIC00
NTQsNiArNDU2LDE1IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRp
b25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlLCBHZW9sCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JTcGVsbGluZywgRG9jdW1l
bnRNYXJrZXI6OlNwZWxsaW5nKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4
dENoZWNraW5nUmVzdWx0OjpFcnJvckdyYW1tYXIsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsK
IAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcsIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyLCBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcik7
CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVMaW5rLCBU
ZXh0Q2hlY2tpbmdUeXBlTGluayk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRl
eHRDaGVja2luZ1R5cGVRdW90ZSwgVGV4dENoZWNraW5nVHlwZVF1b3RlKTsKK0NPTVBJTEVfQVNT
RVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZURhc2gsIFRleHRDaGVja2luZ1R5
cGVEYXNoKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50LCBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpOworQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbiwgVGV4dENoZWNr
aW5nVHlwZUNvcnJlY3Rpb24pOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0
Q2hlY2tpbmdUeXBlU2hvd0NvcnJlY3Rpb25QYW5lbCwgVGV4dENoZWNraW5nVHlwZVNob3dDb3Jy
ZWN0aW9uUGFuZWwpOworCiAjaWYgRU5BQkxFKFFVT1RBKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJTdG9yYWdlUXVvdGFFcnJvck5vdFN1cHBvcnRlZCwgTk9UX1NVUFBPUlRFRF9F
UlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJTdG9yYWdlUXVvdGFFcnJvckFi
b3J0LCBBQk9SVF9FUlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcAppbmRleCA1ZmEyMzc4NTIwMzE4YTdkNzVmOWFkMTJiNjdiNmNjZTU3ODBh
MzU3Li5kMDdlODRjODRkZmIyYjNhNTI4ODg3YjI4MjgxMzlmNjY2ZDk5MjA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtNTcsNiAr
NTcsNyBAQAogI2luY2x1ZGUgIldlYlNwZWxsQ2hlY2tDbGllbnQuaCIKICNpbmNsdWRlICJXZWJU
ZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5o
IgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlZpZXdD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogCkBAIC03NjUsNiArNzY2LDIyIEBA
IHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNoYXIq
LCBpbnQgbGVuZ3RoLAogICAgICAgICAqYmFkR3JhbW1hckxlbmd0aCA9IDA7CiB9CiAKK3ZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQs
IGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpCit7CisgICAgaWYgKCFtX3dlYlZpZXctPnNwZWxsQ2hlY2tDbGll
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViVGV4dENoZWNraW5nVHlwZU1hc2sgd2Vi
TWFzayA9IHN0YXRpY19jYXN0PFdlYlRleHRDaGVja2luZ1R5cGVNYXNrPihtYXNrKTsKKyAgICBX
ZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiB3ZWJSZXN1bHRzOworICAgIG1fd2ViVmll
dy0+c3BlbGxDaGVja0NsaWVudCgpLT5jaGVja1RleHRPZlBhcmFncmFwaChXZWJTdHJpbmcodGV4
dCwgbGVuZ3RoKSwgd2ViTWFzaywgJndlYlJlc3VsdHMpOworCisgICAgcmVzdWx0cy5yZXNpemUo
d2ViUmVzdWx0cy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViUmVzdWx0
cy5zaXplKCk7ICsraSkKKyAgICAgICAgcmVzdWx0c1tpXSA9IHdlYlJlc3VsdHNbaV07Cit9CisK
IHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5n
KGNvbnN0IFN0cmluZyYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHcmFtbWFyRGV0YWlsJiBkZXRhaWwpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKaW5kZXggMjMzNjk1Zjlm
MTdiZmZmMzgzYzMzNGQwY2QzNzgzZWFhMjU4Mzg2OS4uMmI1NzcxMDdjOTIzY2RlNDdiMDNmMWEz
ZDk0Y2JiMDk2NDUwMDRhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuaApAQCAtOTksNiArOTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGNoZWNrU3BlbGxpbmdPZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlz
c3BlbGxpbmdMb2NhdGlvbiwgaW50KiBtaXNzcGVsbGluZ0xlbmd0aCk7CiAgICAgdmlydHVhbCB2
b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgV1RGOjpW
ZWN0b3I8V2ViQ29yZTo6R3JhbW1hckRldGFpbD4mLAogICAgICAgICBpbnQqIGJhZEdyYW1tYXJM
b2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXZWJDb3JlOjpUZXh0Q2hl
Y2tpbmdUeXBlTWFzayBjaGVja2luZ1R5cGVzLAorICAgICAgICBXVEY6OlZlY3RvcjxXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5n
IGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3Ry
aW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmlu
Zyhjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhNaXNzcGVsbGVkV29yZChjb25zdCBX
VEY6OlN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRl
eHRDaGVja2luZ1Jlc3VsdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2ZkNGZhNzJhMWEyODRiMWE1MTEzYzNi
YzQyNDY0MDdlYWEzMjE0YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKKworI2luY2x1
ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVGV4dENoZWNraW5nUmVzdWx0OjpvcGVyYXRvciBUZXh0
Q2hlY2tpbmdSZXN1bHQoKSBjb25zdAoreworICAgIFRleHRDaGVja2luZ1Jlc3VsdCByZXN1bHQ7
CisgICAgcmVzdWx0LnR5cGUgPSBzdGF0aWNfY2FzdDxUZXh0Q2hlY2tpbmdUeXBlPih0eXBlKTsK
KyAgICByZXN1bHQubG9jYXRpb24gPSBsb2NhdGlvbjsKKyAgICByZXN1bHQubGVuZ3RoID0gbGVu
Z3RoOworICAgIHJlc3VsdC5yZXBsYWNlbWVudCA9IHJlcGxhY2VtZW50OworCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123242</attachid>
            <date>2012-01-19 19:24:48 -0800</date>
            <delta_ts>2012-01-20 00:59:28 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-74071-20120120122447.patch</filename>
            <type>text/plain</type>
            <size>16149</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDdjY2IwY2Q3MjI1ZjI1ZTBlZDllNmRmY2Y5ZjU3OTQwNWViYzhlNWIuLjEwNjJkZTE1NzlmOGZm
ZWQyY2U2MTg2NjhhNDFkYzE1ZmM4ZGYxOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzIgQEAKKzIwMTEtMTItMTggIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29v
Z2xlLmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIENocm9taXVtIHNob3VsZCBoYXZlIEVkaXRv
ckNsaWVudEltcGw6OmNoZWNrVGV4dE9mUGFyYWdyYXBoLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQwNzEKKworICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBGaXNoZXIuCisKKyAgICAgICAgU3BlbGxjaGVja2VyIG9uIE1hYyBoYXMgbW9yZSBzb3Bo
aXN0aWNhdGVkIGludGVyZmFjZSBmb3Igc3BlbGxjaGVja2luZyAoY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgpLgorICAgICAgICBJZiB0aGUgb3RoZXIgcG9ydHMgaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2Us
IGNvZGUgY2FuIGJlIGNsZWFyZXIgYW5kIGVhc3kgdG8gZXh0ZW5kLgorICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgc3VjaCBhbiBpbnRlcmZhY2UuIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxs
IGJlIGRvbmUgbm90IGluIFdlYktpdCBidXQgaW4gQ2hyb21pdW0uCisKKyAgICAgICAgQWxzbywg
Y3VycmVudGx5IFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0IGFuZCBXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdSZXN1bHQgaGF2ZSBkaWZmZXJlbnQgZm9ybXMuCisgICAgICAgIFRoZXkgc2hvdWxk
IGJlIGNvcnJlc3BvbmRpbmcgYXBwYXJlbnRseS4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHN1Y2gg
Y29ycmVzcG9uZGVuY2UuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1Ymxp
Yy9XZWJTcGVsbENoZWNrQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNwZWxsQ2hlY2tD
bGllbnQ6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAgICAgICAgICBBIG5ldyBpbnRlcmZhY2Ug
Zm9yIHNwZWxsY2hlY2tpbmcuCisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3Vs
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRleHRDaGVj
a2luZ1Jlc3VsdCk6CisgICAgICAgICAgQ2hhbmdlZCBzbyB0aGF0IFdlYlRleHRDaGVja2luZ1Jl
c3VsdCBjb3JyZXNwb25kcyB0byBXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQuCisgICAgICAg
ICogcHVibGljL1dlYlRleHRDaGVja2luZ1R5cGUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmguCisgICAgICAgICogc3Jj
L0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tUZXh0T2ZQYXJh
Z3JhcGgpOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oLgorICAgICAgICAoV2ViS2l0OjpX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om9wZXJhdG9yIFRleHRDaGVja2luZ1Jlc3VsdCk6CisKIDIw
MTItMDEtMTkgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFtjaHJvbWl1bV0gRHJhdyBndXR0ZXIgcXVhZHMgb3V0c2lkZSByb290IGNvbnRlbnQgbGF5ZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBjYzFmYzEzNzgwNmU0NzAxNjUxMWU4ZTVl
ZmI3YzNhMDFhZTc4ZWIyLi5lYmUxOGFiMDhiZmU4MGE1MWZhNWUyN2ZjZDJkZmIzYzI0MmNiZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00NzAsNiArNDcwLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1VzZXJNZWRpYUNsaWVudEltcGwuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
VmlkZW9GcmFtZUNocm9taXVtSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9G
cmFtZUNocm9taXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlNwZWxsQ2hlY2tDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNwZWxsQ2hlY2tDbGllbnQuaAppbmRleCA0NTdiZDEzYzk3OTI3YjkwOTY0OGRmYjE5NTFiZjY5
NWU0ZDg1ZGExLi4zMDA1ZjI0OTA3NTY5MjlkMjVkOTk2Nzk1NzMxMjZiNDM4ZDM1NDQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTcGVsbENoZWNrQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU3BlbGxDaGVja0NsaWVu
dC5oCkBAIC0zMSw2ICszMSw3IEBACiAjaWZuZGVmIFdlYlNwZWxsQ2hlY2tDbGllbnRfaAogI2Rl
ZmluZSBXZWJTcGVsbENoZWNrQ2xpZW50X2gKIAorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1R5
cGUuaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTdHJpbmcuaCIKICNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJWZWN0b3IuaCIKIApAQCAtMzgsNiArMzksNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
Y2xhc3MgV2ViU3RyaW5nOwogY2xhc3MgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjsKK3N0cnVj
dCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7CiAKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQgewog
cHVibGljOgpAQCAtNTEsNiArNTMsMTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCYgbWlzc3BlbGxlZE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQmIG1pc3NwZWxsZWRMZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
VmVjdG9yPFdlYlN0cmluZz4qIG9wdGlvbmFsU3VnZ2VzdGlvbnMpIHsgfQorCisgICAgLy8gVGhl
IGNsaWVudCBzaG91bGQgcGVyZm9ybSBzcGVsbC1jaGVja2luZyBvbiB0aGUgZ2l2ZW4gdGV4dC4g
VGhpcyBmdW5jdGlvbiB3aWxsCisgICAgLy8gZW51bWVyYXRlIGFsbCBtaXNzcGVsbGluZ3MgYXQg
b25jZS4KKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29uc3QgV2ViU3Ry
aW5nJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVGV4dENoZWNr
aW5nVHlwZU1hc2sgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
V2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4qIHJlc3VsdHMpIHsgfQorCiAgICAgLy8g
UmVxdWVzdHMgYXN5bmNocm9ub3VzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNraW5nLCB3aG9z
ZSByZXN1bHQgc2hvdWxkIGJlCiAgICAgLy8gcmV0dXJuZWQgYnkgcGFzc2VkIGNvbXBsZXRpb24g
b2JqZWN0LgogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlRleHQoY29uc3QgV2Vi
U3RyaW5nJiwgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopIHsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaAppbmRleCAw
MTBhYTFhYmZiNWI3ZmRiNzJhN2ExYjQ5OWY0NDgzZDM2NzIwNDgxLi5kZmQwMTgxZTUyNTJkNjBj
YzQ1MTU3MjIzNzNjMzU4N2NjMDE4M2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApAQCAtMzEsMjcgKzMxLDY2IEBA
CiAjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCiAjZGVmaW5lIFdlYlRleHRDaGVja2lu
Z1Jlc3VsdF9oCiAKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU3RyaW5nLmgiCisj
aW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3N0
cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBB
IGNoZWNrZWQgZW50cnkgb2YgdGV4dCBjaGVja2luZy4KIHN0cnVjdCBXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQgeworICAgIC8vIEZJWE1FOiBTaG91bGQgYmUgcmVtb3ZlZCBhZnRlciB3ZSBjb25maXJt
IENocm9taXVtIGRvZXMgbm90IHVzZSBpdC4KICAgICBlbnVtIEVycm9yIHsKICAgICAgICAgRXJy
b3JTcGVsbGluZyA9IDEgPDwgMCwKICAgICAgICAgRXJyb3JHcmFtbWFyID0gMSA8PCAxCiAgICAg
fTsKIAotICAgIGV4cGxpY2l0IFdlYlRleHRDaGVja2luZ1Jlc3VsdChFcnJvciBlID0gRXJyb3JT
cGVsbGluZywgaW50IHAgPSAwLCBpbnQgbCA9IDApIAotICAgICAgICA6IGVycm9yKGUpCisgICAg
ZXhwbGljaXQgV2ViVGV4dENoZWNraW5nUmVzdWx0KEVycm9yIGUgPSBFcnJvclNwZWxsaW5nLCBp
bnQgcCA9IDAsIGludCBsID0gMCkKKyAgICAgICAgOiB0eXBlKFdlYlRleHRDaGVja2luZ1R5cGVT
cGVsbGluZykKKyAgICAgICAgLCBlcnJvcihlKQogICAgICAgICAsIHBvc2l0aW9uKHApCisgICAg
ICAgICwgbG9jYXRpb24ocCkKICAgICAgICAgLCBsZW5ndGgobCkKICAgICB7CisgICAgICAgIGlm
IChlICYgRXJyb3JTcGVsbGluZykKKyAgICAgICAgICAgIHR5cGUgPSBXZWJUZXh0Q2hlY2tpbmdU
eXBlU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYgKGUgJiBFcnJvckdyYW1tYXIpCisgICAgICAg
ICAgICB0eXBlID0gV2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4dENoZWNraW5nVHlwZSB0eXBlLCBpbnQgbG9jYXRpb24s
IGludCBsZW5ndGgsIGNvbnN0IFdlYlN0cmluZyYgcmVwbGFjZW1lbnQgPSBXZWJTdHJpbmcoKSkK
KyAgICAgICAgOiB0eXBlKHR5cGUpCisgICAgICAgICwgZXJyb3IoRXJyb3JTcGVsbGluZykKKyAg
ICAgICAgLCBwb3NpdGlvbihsb2NhdGlvbikKKyAgICAgICAgLCBsb2NhdGlvbihsb2NhdGlvbikK
KyAgICAgICAgLCBsZW5ndGgobGVuZ3RoKQorICAgICAgICAsIHJlcGxhY2VtZW50KHJlcGxhY2Vt
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHR5cGUgJiBXZWJUZXh0Q2hlY2tpbmdUeXBlU3BlbGxp
bmcpCisgICAgICAgICAgICBlcnJvciA9IEVycm9yU3BlbGxpbmc7CisgICAgICAgIGVsc2UgaWYg
KHR5cGUgJiBXZWJUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgICAgIGVycm9yID0g
RXJyb3JHcmFtbWFyOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXRUJLSVRfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogCi0gICAgRXJyb3IgZXJyb3I7Ci0gICAgaW50IHBvc2l0aW9u
OworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIG9wZXJhdG9yIFdlYkNvcmU6OlRleHRD
aGVja2luZ1Jlc3VsdCgpIGNvbnN0OworI2VuZGlmCisKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBl
IHR5cGU7CisgICAgRXJyb3IgZXJyb3I7IC8vIEZJWE1FOiBTaG91bGQgYmUgcmVtb3ZlZCBhZnRl
ciB3ZSBjb25maXJtIENocm9taXVtIGRvZXMgbm90IHVzZSBpdC4KKyAgICBpbnQgcG9zaXRpb247
IC8vIEZJWE1FOiBTaG91bGQgYmUgcmVtb3ZlZCBhZnRlciB3ZSBjb25maXJtIENocm9taXVtIGRv
ZXMgbm90IHVzZSBpdC4KKyAgICBpbnQgbG9jYXRpb247CiAgICAgaW50IGxlbmd0aDsKKyAgICBX
ZWJTdHJpbmcgcmVwbGFjZW1lbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1R5cGUu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1R5cGUuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iMjIxMzliY2Y1M2U1NGVhN2M0ZTM4Zjc1N2MxYmVhNGI1OTM3Y2M1Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNr
aW5nVHlwZS5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1R5cGVfaAor
I2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdUeXBlX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gV2ViVGV4dENoZWNraW5nVHlwZSB7CisgICAgV2ViVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
ID0gMSA8PCAxLAorICAgIFdlYlRleHRDaGVja2luZ1R5cGVHcmFtbWFyICA9IDEgPDwgMiwKKyAg
ICBXZWJUZXh0Q2hlY2tpbmdUeXBlTGluayA9IDEgPDwgNSwKKyAgICBXZWJUZXh0Q2hlY2tpbmdU
eXBlUXVvdGUgPSAxIDw8IDYsCisgICAgV2ViVGV4dENoZWNraW5nVHlwZURhc2ggPSAxIDw8IDcs
CisgICAgV2ViVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50ID0gMSA8PCA4LAorICAgIFdlYlRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uID0gMSA8PCA5LAorICAgIFdlYlRleHRDaGVja2luZ1R5
cGVTaG93Q29ycmVjdGlvblBhbmVsID0gMSA8PCAxMAorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBX
ZWJUZXh0Q2hlY2tpbmdUeXBlTWFzazsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAppbmRleCA3NGJlMzBjNmNlZjBiZTRiYTdjZmQ1OWQwMzJmNGRlMmQ2MDE2ZGFiLi5hNDUx
Yjg4YTY1NjcwYjQ3MTQyYzNkYjllYWEwNjAwMTkyODQ4MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtNjEsNiArNjEs
NyBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUluZm8uaCIKICNp
bmNsdWRlICJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJUZXh0Q2hlY2tpbmcuaCIKICNpbmNs
dWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudFR5
cGVzLmgiCiAjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCkBAIC05MSw2ICs5Miw3IEBACiAj
aW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0
eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIKKyNpbmNsdWRlICJXZWJU
ZXh0Q2hlY2tpbmdUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAj
aW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTQ1NSw2
ICs0NTcsMTUgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2NhdGlvbkVy
cm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGUsIEdlb2wKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nLCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ6OkVycm9yR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOwogCitD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVTcGVsbGluZywg
VGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVGV4dENoZWNraW5nVHlwZUdyYW1tYXIsIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKTsKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nVHlwZUxpbmssIFRleHRD
aGVja2luZ1R5cGVMaW5rKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENo
ZWNraW5nVHlwZVF1b3RlLCBUZXh0Q2hlY2tpbmdUeXBlUXVvdGUpOworQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlRGFzaCwgVGV4dENoZWNraW5nVHlwZURh
c2gpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdUeXBlUmVw
bGFjZW1lbnQsIFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCk7CitDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uLCBUZXh0Q2hlY2tpbmdU
eXBlQ29ycmVjdGlvbik7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVj
a2luZ1R5cGVTaG93Q29ycmVjdGlvblBhbmVsLCBUZXh0Q2hlY2tpbmdUeXBlU2hvd0NvcnJlY3Rp
b25QYW5lbCk7CisKICNpZiBFTkFCTEUoUVVPVEEpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYlN0b3JhZ2VRdW90YUVycm9yTm90U3VwcG9ydGVkLCBOT1RfU1VQUE9SVEVEX0VSUik7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlN0b3JhZ2VRdW90YUVycm9yQWJvcnQs
IEFCT1JUX0VSUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwCmluZGV4IDVmYTIzNzg1MjAzMThhN2Q3NWY5YWQxMmI2N2I2Y2NlNTc4MGEzNTcu
LjA0YWE3MTllZDQ0YThhZDNkNTk3NzlmNmRlODE2ZWQyMGU2OWU3NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUsIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlLCBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01Nyw2ICs1
Nyw3IEBACiAjaW5jbHVkZSAiV2ViU3BlbGxDaGVja0NsaWVudC5oIgogI2luY2x1ZGUgIldlYlRl
eHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgi
CisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKQEAgLTc2NSw2ICs3NjYsMjIgQEAg
dm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBVQ2hhcios
IGludCBsZW5ndGgsCiAgICAgICAgICpiYWRHcmFtbWFyTGVuZ3RoID0gMDsKIH0KIAordm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpjaGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwg
aW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykK
K3sKKyAgICBpZiAoIW1fd2ViVmlldy0+c3BlbGxDaGVja0NsaWVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJUZXh0Q2hlY2tpbmdUeXBlTWFzayB3ZWJNYXNrID0gc3RhdGljX2Nhc3Q8
V2ViVGV4dENoZWNraW5nVHlwZU1hc2s+KG1hc2spOworICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ+IHdlYlJlc3VsdHM7CisgICAgbV93ZWJWaWV3LT5zcGVsbENoZWNrQ2xpZW50
KCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKFdlYlN0cmluZyh0ZXh0LCBsZW5ndGgpLCB3ZWJNYXNr
LCAmd2ViUmVzdWx0cyk7CisKKyAgICByZXN1bHRzLnJlc2l6ZSh3ZWJSZXN1bHRzLnNpemUoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJSZXN1bHRzLnNpemUoKTsgKytpKQorICAg
ICAgICByZXN1bHRzW2ldID0gd2ViUmVzdWx0c1tpXTsKK30KKwogdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjp1cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoY29uc3QgU3RyaW5nJiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdyYW1tYXJEZXRhaWwmIGRldGFpbCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCAyMzM2OTVmOWYxN2JmZmYzODNjMzM0ZDBjZDM3
ODNlYWEyNTgzODY5Li4yYjU3NzEwN2M5MjNjZGU0N2IwM2YxYTNkOTRjYmIwOTY0NTAwNGEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC05
OSw2ICs5OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tTcGVsbGluZ09mU3Ry
aW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVsbGluZ0xvY2F0aW9uLCBp
bnQqIG1pc3NwZWxsaW5nTGVuZ3RoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZT
dHJpbmcoY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBXVEY6OlZlY3RvcjxXZWJDb3JlOjpHcmFt
bWFyRGV0YWlsPiYsCiAgICAgICAgIGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdy
YW1tYXJMZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChjb25z
dCBVQ2hhciosIGludCBsZW5ndGgsIFdlYkNvcmU6OlRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNr
aW5nVHlwZXMsCisgICAgICAgIFdURjo6VmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdHMpOwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgV1RGOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKGNvbnN0IFdURjo6U3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jZmQ0ZmE3MmExYTI4NGIxYTUxMTNjM2JjNDI0NjQwN2VhYTMyMTRiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmNwcApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgorCisjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGll
bnQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om9wZXJhdG9yIFRleHRDaGVja2luZ1Jlc3VsdCgpIGNv
bnN0Cit7CisgICAgVGV4dENoZWNraW5nUmVzdWx0IHJlc3VsdDsKKyAgICByZXN1bHQudHlwZSA9
IHN0YXRpY19jYXN0PFRleHRDaGVja2luZ1R5cGU+KHR5cGUpOworICAgIHJlc3VsdC5sb2NhdGlv
biA9IGxvY2F0aW9uOworICAgIHJlc3VsdC5sZW5ndGggPSBsZW5ndGg7CisgICAgcmVzdWx0LnJl
cGxhY2VtZW50ID0gcmVwbGFjZW1lbnQ7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>