<?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>44678</bug_id>
          
          <creation_ts>2010-08-26 05:33:59 -0700</creation_ts>
          <short_desc>[v8] More correct and faster error handling when converting v8 objects to various WebCore strings</short_desc>
          <delta_ts>2010-09-02 05:29:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="anton muhin">antonm</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dumi</cc>
    
    <cc>eric</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269832</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-26 05:33:59 -0700</bug_when>
    <thetext>[v8] More correct and faster error handling when converting v8 objects to various WebCore strings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269838</commentid>
    <comment_count>1</comment_count>
      <attachid>65550</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-26 05:48:36 -0700</bug_when>
    <thetext>Created attachment 65550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270333</commentid>
    <comment_count>2</comment_count>
      <attachid>65550</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-26 23:28:56 -0700</bug_when>
    <thetext>Comment on attachment 65550
Patch

Aside from the comment below, this looks reasonable.  I&apos;m a bit too tired to think it through entirely though, so I&apos;m leaving it r? for now.

WebCore/bindings/v8/V8Binding.cpp:375
 +      static AtomicString lowNumbers[kLowNumbers + 1];
Is this threadsafe?  What if a worker and a normal document both use the number 42?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270447</commentid>
    <comment_count>3</comment_count>
      <attachid>65706</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-27 05:51:44 -0700</bug_when>
    <thetext>Created attachment 65706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270448</commentid>
    <comment_count>4</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-27 05:52:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65550 [details])
&gt; Aside from the comment below, this looks reasonable.  I&apos;m a bit too tired to think it through entirely though, so I&apos;m leaving it r? for now.
&gt; 
&gt; WebCore/bindings/v8/V8Binding.cpp:375
&gt;  +      static AtomicString lowNumbers[kLowNumbers + 1];
&gt; Is this threadsafe?  What if a worker and a normal document both use the number 42?

Good catch.  I don&apos;t think it&apos;s thread safe.  However AFAIK we are still single threaded.  So I&apos;ve added an ASSERT on top of the function with some clarification.  Do you think it&apos;s enough for now?  And are you fine with the wording?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271518</commentid>
    <comment_count>5</comment_count>
      <attachid>65706</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-30 11:30:13 -0700</bug_when>
    <thetext>Comment on attachment 65706
Patch

&gt; WebCore/bindings/v8/V8Binding.cpp:377
&gt; +    // Most numbers used are &lt;= 100. Even if they aren&apos;t used there&apos;s very little in using the space.
very little cost?  Seems we&apos;re missing a word here.

&gt; WebCore/bindings/v8/V8Binding.cpp:379
&gt; +    static AtomicString lowNumbers[kLowNumbers + 1];
Shouldn&apos;t we use DECLARE_STATIC_LOCAL here?

&gt; WebCore/bindings/v8/V8Binding.cpp:384
&gt; +            AtomicString valueString = AtomicString(String::number(value));
Is there an advantage to using atomic strings here?  It seems like you&apos;re already doing the atomization.

&gt; WebCore/bindings/v8/V8Binding.cpp:397
&gt; +        int32ToWebCoreString(object-&gt;Int32Value());
Why don&apos;t we use the return value here?  Is this code tested???

&gt; WebCore/bindings/v8/V8Binding.h:218
&gt; +        operator AtomicString() { return toString&lt;AtomicString&gt;(); }
I think we&apos;d be better off if we had explicit conversion operators.  In general, WebKit frown on these implicit operators.

&gt; WebCore/bindings/v8/custom/V8DeviceMotionEventCustom.cpp:114
&gt; +    STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter&lt;&gt;, type, args[0]);
Why this particular callsite?  Is this the only custom one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271524</commentid>
    <comment_count>6</comment_count>
      <attachid>65934</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-30 11:43:39 -0700</bug_when>
    <thetext>Created attachment 65934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271532</commentid>
    <comment_count>7</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-30 11:50:46 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 65706 [details])
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:377
&gt; &gt; +    // Most numbers used are &lt;= 100. Even if they aren&apos;t used there&apos;s very little in using the space.
&gt; very little cost?  Seems we&apos;re missing a word here.

Added &apos;cost&apos;

&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:379
&gt; &gt; +    static AtomicString lowNumbers[kLowNumbers + 1];
&gt; Shouldn&apos;t we use DECLARE_STATIC_LOCAL here?

Adam, the code was copied verbatim.  Could we postpone this DECLARE_STATIC_LOCAL for a next commit?  I&apos;d like to minimize changes to the code which existed before my change.

&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:384
&gt; &gt; +            AtomicString valueString = AtomicString(String::number(value));
&gt; Is there an advantage to using atomic strings here?  It seems like you&apos;re already doing the atomization.

I think yes, as AtomicString to String conversion is cheaper then conversion back if I understand it correctly.  Again, I don&apos;t change this code.

&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.cpp:397
&gt; &gt; +        int32ToWebCoreString(object-&gt;Int32Value());
&gt; Why don&apos;t we use the return value here?  Is this code tested???

Very good catch, thank you very much.  Alas, it&apos;s not obvious how to test it: it&apos;s only an optimization: we fall through to heavyweight toString conversion which would do the trick anyway.

&gt; 
&gt; &gt; WebCore/bindings/v8/V8Binding.h:218
&gt; &gt; +        operator AtomicString() { return toString&lt;AtomicString&gt;(); }
&gt; I think we&apos;d be better off if we had explicit conversion operators.  In general, WebKit frown on these implicit operators.

Those operators are crucial to solve the following problem: some WebCore DOM methods take Strings and some AtomicStrings.  Alas, in IDL there is no such information (we used to have AtomicHint).  So we need to find the best conversion method and those C++ operators fit very nicely.  I drafted a solution with metaprogramming (using SFINAE to find out exact argument type), but it&apos;s more verbose and rumors have it VC used to be weak in templates with pointers-to-members parameters (just read it, didn&apos;t check if it&apos;s indeed the case).

&gt; 
&gt; &gt; WebCore/bindings/v8/custom/V8DeviceMotionEventCustom.cpp:114
&gt; &gt; +    STRING_TO_V8PARAMETER_EXCEPTION_BLOCK(V8Parameter&lt;&gt;, type, args[0]);
&gt; Why this particular callsite?  Is this the only custom one?

Yes.  I double checked and found another one.  I&apos;ll have to check again before I submit it.  BTW, if in review you could ask people to use the macro when converting parameters, that would be most appreciated.

Thank you very much for a next round of comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271543</commentid>
    <comment_count>8</comment_count>
      <attachid>65934</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-30 12:01:32 -0700</bug_when>
    <thetext>Comment on attachment 65934
Patch

Thanks.

&gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3333
&gt; +      my $macro = &quot;STRING_TO_V8PARAMETER_EXCEPTION_BLOCK&quot;;
four-space indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271969</commentid>
    <comment_count>9</comment_count>
      <attachid>66018</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-31 00:45:29 -0700</bug_when>
    <thetext>Created attachment 66018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272011</commentid>
    <comment_count>10</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-08-31 03:19:23 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 65934 [details])
&gt; Thanks.
&gt; 
&gt; &gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3333
&gt; &gt; +      my $macro = &quot;STRING_TO_V8PARAMETER_EXCEPTION_BLOCK&quot;;
&gt; four-space indent.

Sorry, Adam, what do you mean?  Is it Perl statement which requires additional indentation or generated C++ string?  Apparently both are fine: perl&apos;s at right indent and C++ doesn&apos;t require indentation---it&apos;s indented at call site.

Anyway, if I manage to submit it before you reply, I&apos;ll fix it in a separate change.

And many thanks for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272266</commentid>
    <comment_count>11</comment_count>
      <attachid>66018</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-31 12:09:55 -0700</bug_when>
    <thetext>Comment on attachment 66018
Patch

&gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3339
&gt; +    if ($signature-&gt;type eq &quot;DOMString&quot;) {
&gt; +      my $macro = &quot;STRING_TO_V8PARAMETER_EXCEPTION_BLOCK&quot;;
&gt; +      $macro .= &quot;_$suffix&quot; if $suffix;
&gt; +      return &quot;$macro($nativeType, $variableName, $value);&quot;
&gt; +    } else {
&gt; +      # Don&apos;t know how to properly check for conversion exceptions when $parameter-&gt;type is &quot;DOMUserData&quot;
&gt; +      return &quot;$nativeType $variableName($value, true);&quot;;
&gt; +    }
Notice that the contents of the if are only indented with two spaces instead of four.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272278</commentid>
    <comment_count>12</comment_count>
      <attachid>66018</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-31 12:35:45 -0700</bug_when>
    <thetext>Comment on attachment 66018
Patch

Clearing flags on attachment: 66018

Committed r66521: &lt;http://trac.webkit.org/changeset/66521&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272279</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-31 12:35:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272282</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-31 12:43:11 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66521 might have broken Chromium Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272302</commentid>
    <comment_count>15</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-31 13:10:54 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; http://trac.webkit.org/changeset/66521 might have broken Chromium Linux Release

This broke the chromium compile:

third_party/WebKit/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.cpp: In static member function ‘static v8::Handle&lt;v8::Value&gt; WebCore::V8DeviceOrientationEvent::initDeviceOrientationEventCallback(const v8::Arguments&amp;)’:
third_party/WebKit/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:72:error: expected primary-expression before ‘,’ token
third_party/WebKit/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:72:error: ‘type’ was not declared in this scope
third_party/WebKit/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.cpp:72:error: ‘STRING_TO_V8PARAMETER_EXCEPTION_BLOCK’ was not declared in this scope
make: *** [out/Release/obj.target/webcore_remaining/third_party/WebKit/WebCore/bindings/v8/custom/V8DeviceOrientationEventCustom.o] Error 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272306</commentid>
    <comment_count>16</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-31 13:15:02 -0700</bug_when>
    <thetext>Looks like you didn&apos;t update the custom bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272355</commentid>
    <comment_count>17</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-31 14:06:49 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Looks like you didn&apos;t update the custom bindings.

I have a compile fix coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272377</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-08-31 14:31:51 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66530</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272704</commentid>
    <comment_count>19</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-01 02:18:16 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 66018 [details])
&gt; &gt; WebCore/bindings/scripts/CodeGeneratorV8.pm:3339
&gt; &gt; +    if ($signature-&gt;type eq &quot;DOMString&quot;) {
&gt; &gt; +      my $macro = &quot;STRING_TO_V8PARAMETER_EXCEPTION_BLOCK&quot;;
&gt; &gt; +      $macro .= &quot;_$suffix&quot; if $suffix;
&gt; &gt; +      return &quot;$macro($nativeType, $variableName, $value);&quot;
&gt; &gt; +    } else {
&gt; &gt; +      # Don&apos;t know how to properly check for conversion exceptions when $parameter-&gt;type is &quot;DOMUserData&quot;
&gt; &gt; +      return &quot;$nativeType $variableName($value, true);&quot;;
&gt; &gt; +    }
&gt; Notice that the contents of the if are only indented with two spaces instead of four.

Sorry, didn&apos;t notice that.  Fixing ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272705</commentid>
    <comment_count>20</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-01 02:18:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; http://trac.webkit.org/changeset/66530

Thank you very much, Tony.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272794</commentid>
    <comment_count>21</comment_count>
      <attachid>66209</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-01 07:20:20 -0700</bug_when>
    <thetext>Created attachment 66209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272869</commentid>
    <comment_count>22</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-09-01 10:10:17 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=66209) [details]
&gt; Patch

It&apos;s ok to commit whitespace changes like this without review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272870</commentid>
    <comment_count>23</comment_count>
      <attachid>66209</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-01 10:11:04 -0700</bug_when>
    <thetext>Comment on attachment 66209
Patch

thanks a lot, Tony</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273315</commentid>
    <comment_count>24</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2010-09-02 04:02:14 -0700</bug_when>
    <thetext>to kick cq.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273353</commentid>
    <comment_count>25</comment_count>
      <attachid>66209</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 05:29:26 -0700</bug_when>
    <thetext>Comment on attachment 66209
Patch

Clearing flags on attachment: 66209

Committed r66664: &lt;http://trac.webkit.org/changeset/66664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273354</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-09-02 05:29:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65550</attachid>
            <date>2010-08-26 05:48:36 -0700</date>
            <delta_ts>2010-08-27 05:51:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44678-20100826164834.patch</filename>
            <type>text/plain</type>
            <size>14263</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA2OTNhYjQwZWQwZWU1ZWUxMzdlMDc5NTBhNzUwOTZlYjc3MjcxYS4uNzM5MmQ3NjJhNjMyYTc5
NTQ0MzBhYTZiYTlmZTdkNzllYmI0OWM1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wOC0yNiAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFt2OF0gTW9yZSBjb3JyZWN0IGFuZCBmYXN0ZXIgZXJy
b3IgaGFuZGxpbmcgd2hlbiBjb252ZXJ0aW5nIHY4IG9iamVjdHMgdG8gdmFyaW91cyBXZWJDb3Jl
IHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ0Njc4CisKKyAgICAgICAgU3BsaXQgdjggb2JqZWN0IGNvbnZlcnNpb24gaW50byB0d28gcGhh
c2U6IDFzdCwgd2hpY2ggY2FuIHRocm93IGFuIGV4Y2VwdGlvbiwgYW5kCisgICAgICAgIDJuZCwg
d2hpY2ggbXVzdCBhbHdheXMgc3VjY2VlZC4gIFRoYXQgYWxsb3dzIHRvIHJlcG9ydCBjb3JyZWN0
bHkgdGhlIGNhc2Ugd2hlbiBleGNlcHRpb24KKyAgICAgICAgaGFwcGVucy4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnQzMlRvV2ViQ29yZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjp2OE5vblN0cmluZ1ZhbHVlVG9XZWJDb3JlU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6b3BlcmF0b3IgU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6VjhQYXJhbWV0ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJC
YXNlOjpvYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpzZXRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjp0b1N0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6OjpwcmVwYXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2sp
OgorCiAyMDEwLTA4LTI2ICBHaXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFz
LmluPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTY4MzhjYTJlYmVmYzBjMzFm
MmM3YTcyZDVhYjYyMDE4ZGM3NzMzMy4uNzM1N2I3ZjI1Y2I0ZGNiMTg2MmViNWFiMGYyN2VkZmQw
YjU0YzdjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC03NjIsOCArNzYyLDExIEBAIEVORAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCR1c2VF
eGNlcHRpb25zKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRu
YXRpdmVUeXBlIHYgPSAiKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIk
Z2V0dGVyU3RyaW5nO1xuIik7CisgICAgICAgICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBh
cmFtZXRlci8pIHsKKyAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAi
IC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlw
ZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9
ICRnZXR0ZXJTdHJpbmc7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIEdlbmVyYXRlU2V0RE9NRXhjZXB0aW9uKCIgICAgIikpOwogICAgICAg
ICAgICAgJHJlc3VsdCA9ICJ2IjsKICAgICAgICAgICAgICRyZXN1bHQgLj0gIi5yZWxlYXNlKCki
IGlmIChJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsKQEAgLTgzMCw2ICs4MzMsOCBAQCBzdWIg
R2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCisgICAgJGltcGxJbmNsdWRlc3siVjhC
aW5kaW5nTWFjcm9zLmgifSA9IDE7CisKICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwpAQCAt
ODkwLDcgKzg5NSwxMiBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gIiAuIEpTVmFsdWVU
b05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpIC4gIjtcbiIpOworICAgICAg
ICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFs
dWUiKTsKKyAgICAgICAgaWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CisgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0
ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkdmFsdWUsICJWT0lE
IikgLiAiXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkdmFsdWU7XG4iKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIG15ICRyZXN1bHQgPSAidiI7CkBAIC0xMjM2LDEzICsxMjQ2LDcgQEAgRU5ECiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOwogICAgICAgICB9
IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAgbXkg
JHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIs
IEJhc2ljVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpID8gICIke3BhcmFtZXRlck5h
bWV9T2siIDogdW5kZWYpOwotICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRpbmdNYWNy
b3MuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJh
bWV0ZXJOYW1lLCAkdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICMgRG9uJ3Qga25vdyBob3cgdG8gcHJvcGVybHkgY2hlY2sgZm9yIGNvbnZlcnNpb24g
ZXhjZXB0aW9ucyB3aGVuICRwYXJhbWV0ZXItPnR5cGUgaXMgIkRPTVVzZXJEYXRhIgotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFt
ZXRlck5hbWUgPSAkdmFsdWU7XG4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0
ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nTWFjcm9zLmgi
fSA9IDE7CiAgICAgICAgICAgICAjIEZvciBmdW5jdGlvbnMgd2l0aCAiU3RyaWN0VHlwZUNoZWNr
aW5nIiwgaWYgYW4gaW5wdXQgcGFyYW1ldGVyJ3MgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2ln
bmF0dXJlLApAQCAtMzMxNiw2ICszMzIwLDI1IEBAIHN1YiBHZXRDYWxsYmFja0NsYXNzTmFtZQog
ICAgIHJldHVybiAiVjgkaW50ZXJmYWNlTmFtZSI7CiB9CiAKK3N1YiBDb252ZXJ0VG9WOFBhcmFt
ZXRlcgoreworICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKKyAgICBteSAkbmF0aXZlVHlwZSA9
IHNoaWZ0OworICAgIG15ICR2YXJpYWJsZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkdmFsdWUgPSBz
aGlmdDsKKyAgICBteSAkc3VmZml4ID0gc2hpZnQ7CisKKyAgICBkaWUgIldyb25nIG5hdGl2ZSB0
eXBlIHBhc3NlZDogJG5hdGl2ZVR5cGUiIHVubGVzcyAkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1l
dGVyLzsKKyAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAg
bXkgJG1hY3JvID0gIlNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0siOworICAg
ICAgJG1hY3JvIC49ICJfJHN1ZmZpeCIgaWYgJHN1ZmZpeDsKKyAgICAgIHJldHVybiAiJG1hY3Jv
KCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUpOyIKKyAgICB9IGVsc2UgeworICAg
ICAgIyBEb24ndCBrbm93IGhvdyB0byBwcm9wZXJseSBjaGVjayBmb3IgY29udmVyc2lvbiBleGNl
cHRpb25zIHdoZW4gJHBhcmFtZXRlci0+dHlwZSBpcyAiRE9NVXNlckRhdGEiCisgICAgICByZXR1
cm4gIiRuYXRpdmVUeXBlICR2YXJpYWJsZU5hbWUoJHZhbHVlLCB0cnVlKTsiOworICAgIH0KK30K
Kwogc3ViIERlYnVnUHJpbnQKIHsKICAgICBteSAkb3V0cHV0ID0gc2hpZnQ7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKaW5kZXggMzc5OWNkYmY3MjM0ZDc3ZTg2OTUzZTUxMTlmYWNkYWQyYjU2
NGIzZS4uOWQ3OWM3YmZhNTFhMTg3MTg2NTE4ZmQ2NTAwODE1NWQ0OTIyNGUyNyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzY4LDI3ICszNjgsMjkgQEAgU3RyaW5nVHlwZSB2OFN0
cmluZ1RvV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBFeHRl
cm5hbE1vZGUKIHRlbXBsYXRlIFN0cmluZyB2OFN0cmluZ1RvV2ViQ29yZVN0cmluZzxTdHJpbmc+
KHY4OjpIYW5kbGU8djg6OlN0cmluZz4sIEV4dGVybmFsTW9kZSk7CiB0ZW1wbGF0ZSBBdG9taWNT
dHJpbmcgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmc8QXRvbWljU3RyaW5nPih2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+LCBFeHRlcm5hbE1vZGUpOwogCitTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmco
aW50IHZhbHVlKQoreworICAgIC8vIE1vc3QgbnVtYmVycyB1c2VkIGFyZSA8PSAxMDAuIEV2ZW4g
aWYgdGhleSBhcmVuJ3QgdXNlZCB0aGVyZSdzIHZlcnkgbGl0dGxlIGluIHVzaW5nIHRoZSBzcGFj
ZS4KKyAgICBjb25zdCBpbnQga0xvd051bWJlcnMgPSAxMDA7CisgICAgc3RhdGljIEF0b21pY1N0
cmluZyBsb3dOdW1iZXJzW2tMb3dOdW1iZXJzICsgMV07CisgICAgU3RyaW5nIHdlYkNvcmVTdHJp
bmc7CisgICAgaWYgKDAgPD0gdmFsdWUgJiYgdmFsdWUgPD0ga0xvd051bWJlcnMpIHsKKyAgICAg
ICAgd2ViQ29yZVN0cmluZyA9IGxvd051bWJlcnNbdmFsdWVdOworICAgICAgICBpZiAoIXdlYkNv
cmVTdHJpbmcpIHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyB2YWx1ZVN0cmluZyA9IEF0b21p
Y1N0cmluZyhTdHJpbmc6Om51bWJlcih2YWx1ZSkpOworICAgICAgICAgICAgbG93TnVtYmVyc1t2
YWx1ZV0gPSB2YWx1ZVN0cmluZzsKKyAgICAgICAgICAgIHdlYkNvcmVTdHJpbmcgPSB2YWx1ZVN0
cmluZzsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICB3ZWJDb3JlU3RyaW5nID0gU3Ry
aW5nOjpudW1iZXIodmFsdWUpOworICAgIHJldHVybiB3ZWJDb3JlU3RyaW5nOworfQogCiBTdHJp
bmcgdjhOb25TdHJpbmdWYWx1ZVRvV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b2JqZWN0KQogewogICAgIEFTU0VSVCghb2JqZWN0LT5Jc1N0cmluZygpKTsKLSAgICBpZiAob2Jq
ZWN0LT5Jc0ludDMyKCkpIHsKLSAgICAgICAgaW50IHZhbHVlID0gb2JqZWN0LT5JbnQzMlZhbHVl
KCk7Ci0gICAgICAgIC8vIE1vc3QgbnVtYmVycyB1c2VkIGFyZSA8PSAxMDAuIEV2ZW4gaWYgdGhl
eSBhcmVuJ3QgdXNlZCB0aGVyZSdzIHZlcnkgbGl0dGxlIGluIHVzaW5nIHRoZSBzcGFjZS4KLSAg
ICAgICAgY29uc3QgaW50IGtMb3dOdW1iZXJzID0gMTAwOwotICAgICAgICBzdGF0aWMgQXRvbWlj
U3RyaW5nIGxvd051bWJlcnNba0xvd051bWJlcnMgKyAxXTsKLSAgICAgICAgU3RyaW5nIHdlYkNv
cmVTdHJpbmc7Ci0gICAgICAgIGlmICgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IGtMb3dOdW1iZXJz
KSB7Ci0gICAgICAgICAgICB3ZWJDb3JlU3RyaW5nID0gbG93TnVtYmVyc1t2YWx1ZV07Ci0gICAg
ICAgICAgICBpZiAoIXdlYkNvcmVTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBBdG9taWNTdHJp
bmcgdmFsdWVTdHJpbmcgPSBBdG9taWNTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKLSAg
ICAgICAgICAgICAgICBsb3dOdW1iZXJzW3ZhbHVlXSA9IHZhbHVlU3RyaW5nOwotICAgICAgICAg
ICAgICAgIHdlYkNvcmVTdHJpbmcgPSB2YWx1ZVN0cmluZzsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICB3ZWJDb3JlU3RyaW5nID0gU3RyaW5nOjpudW1iZXIodmFs
dWUpOwotICAgICAgICByZXR1cm4gd2ViQ29yZVN0cmluZzsKLSAgICB9CisgICAgaWYgKG9iamVj
dC0+SXNJbnQzMigpKQorICAgICAgICBpbnQzMlRvV2ViQ29yZVN0cmluZyhvYmplY3QtPkludDMy
VmFsdWUoKSk7CiAKICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CiAgICAgdjg6OkhhbmRsZTx2ODo6
U3RyaW5nPiB2OFN0cmluZyA9IG9iamVjdC0+VG9TdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCmluZGV4IDA4N2MxMjgzY2M3NDliNjg4ODcxMzMxZmIyOGNhOTg2OWQ0YzEzMTkuLjU4OTg5
ZWQ4Y2Q1NDM4MDk1NGE5NzQ1ZGUxZjcwODI1ZDk4ODlmYjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaApAQCAtMjEwLDYgKzIxMCw2MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OlN0cmluZz4gZ2V0VG9TdHJpbmdOYW1lKCk7CiAgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRvU3RyaW5nVGVtcGxhdGUoKTsKIAorICAgIFN0
cmluZyBpbnQzMlRvV2ViQ29yZVN0cmluZyhpbnQgdmFsdWUpOworCisgICAgY2xhc3MgVjhQYXJh
bWV0ZXJCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIG9wZXJhdG9yIFN0cmluZygpIHsgcmV0
dXJuIHRvU3RyaW5nPFN0cmluZz4oKTsgfQorICAgICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmco
KSB7IHJldHVybiB0b1N0cmluZzxBdG9taWNTdHJpbmc+KCk7IH0KKworICAgIHByb3RlY3RlZDoK
KyAgICAgICAgVjhQYXJhbWV0ZXJCYXNlKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCkgOiBt
X3Y4T2JqZWN0KG9iamVjdCksIG1fbW9kZShFeHRlcm5hbGl6ZSksIG1fc3RyaW5nKCkgeyB9CisK
KyAgICAgICAgYm9vbCBwcmVwYXJlQmFzZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkobV92OE9iamVjdC0+SXNTdHJpbmcoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgICAgIGlmIChMSUtFTFkobV92OE9iamVjdC0+SXNJbnQzMigpKSkgewor
ICAgICAgICAgICAgICAgIHNldFN0cmluZyhpbnQzMlRvV2ViQ29yZVN0cmluZyhtX3Y4T2JqZWN0
LT5JbnQzMlZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgbV9tb2RlID0gRG9Ob3RFeHRlcm5hbGl6ZTsKKyAgICAgICAg
ICAgIHY4OjpUcnlDYXRjaCBibG9jazsKKyAgICAgICAgICAgIG1fdjhPYmplY3QgPSBtX3Y4T2Jq
ZWN0LT5Ub1N0cmluZygpOworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGFu
IGV4Y2VwdGlvbiBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUg
b2JqZWN0LgorICAgICAgICAgICAgaWYgKGJsb2NrLkhhc0NhdWdodCgpKSB7CisgICAgICAgICAg
ICAgICAgYmxvY2suUmVUaHJvdygpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QoKSB7IHJldHVybiBtX3Y4T2JqZWN0OyB9
CisKKyAgICAgICAgdm9pZCBzZXRTdHJpbmcoU3RyaW5nIHN0cmluZykKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9zdHJpbmcgPSBzdHJpbmc7CisgICAgICAgICAgICBtX3Y4T2JqZWN0LkNsZWFy
KCk7IC8vIFRvIHNpZ25hbCB0aGF0IFN0cmluZyBpcyByZWFkeS4KKyAgICAgICAgfQorCisgICAg
IHByaXZhdGU6CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG1fdjhPYmplY3Q7CisgICAg
ICAgIEV4dGVybmFsTW9kZSBtX21vZGU7CisgICAgICAgIFN0cmluZyBtX3N0cmluZzsKKworICAg
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU3RyaW5nVHlwZT4KKyAgICAgICAgU3RyaW5nVHlwZSB0b1N0
cmluZygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChMSUtFTFkoIW1fdjhPYmplY3QuSXNF
bXB0eSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmc8
U3RyaW5nVHlwZT4obV92OE9iamVjdC5Bczx2ODo6U3RyaW5nPigpLCBtX21vZGUpOworCisgICAg
ICAgICAgICByZXR1cm4gU3RyaW5nVHlwZShtX3N0cmluZyk7CisgICAgICAgIH0KKyAgICB9Owor
CiAgICAgLy8gVjhQYXJhbWV0ZXIgaXMgYW4gYWRhcHRlciBjbGFzcyB0aGF0IGNvbnZlcnRzIFY4
IHZhbHVlcyB0byBTdHJpbmdzCiAgICAgLy8gb3IgQXRvbWljU3RyaW5ncyBhcyBhcHByb3ByaWF0
ZSwgdXNpbmcgbXVsdGlwbGUgdHlwZWNhc3Qgb3BlcmF0b3JzLgogICAgIGVudW0gVjhQYXJhbWV0
ZXJNb2RlIHsKQEAgLTIxOCwyMiArMjczLDM4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrCiAgICAgfTsKICAgICB0ZW1wbGF0ZSA8VjhQYXJh
bWV0ZXJNb2RlIE1PREUgPSBEZWZhdWx0TW9kZT4KLSAgICBjbGFzcyBWOFBhcmFtZXRlciB7Cisg
ICAgY2xhc3MgVjhQYXJhbWV0ZXI6IHB1YmxpYyBWOFBhcmFtZXRlckJhc2UgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVjhQYXJhbWV0ZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0ID0gdjg6
OkxvY2FsPHY4OjpWYWx1ZT4oKSkgOiBtX3Y4T2JqZWN0KG9iamVjdCkgeyB9Ci0gICAgICAgIG9w
ZXJhdG9yIFN0cmluZygpOwotICAgICAgICBvcGVyYXRvciBBdG9taWNTdHJpbmcoKTsKLSAgICBw
cml2YXRlOgotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtX3Y4T2JqZWN0OworICAgICAg
ICBWOFBhcmFtZXRlcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QpIDogVjhQYXJhbWV0ZXJC
YXNlKG9iamVjdCkgeyB9CisgICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+
IG9iamVjdCwgYm9vbCkgOiBWOFBhcmFtZXRlckJhc2Uob2JqZWN0KSB7IHByZXBhcmUoKTsgfQor
CisgICAgICAgIGJvb2wgcHJlcGFyZSgpOwogICAgIH07CiAKLSAgICB0ZW1wbGF0ZTw+IGlubGlu
ZSBWOFBhcmFtZXRlcjxEZWZhdWx0TW9kZT46Om9wZXJhdG9yIFN0cmluZygpIHsgcmV0dXJuIHRv
V2ViQ29yZVN0cmluZyhtX3Y4T2JqZWN0KTsgfQotICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFy
YW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNv
cmVTdHJpbmdXaXRoTnVsbENoZWNrKG1fdjhPYmplY3QpOyB9Ci0gICAgdGVtcGxhdGU8PiBpbmxp
bmUgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6b3BlcmF0b3IgU3RyaW5n
KCkgeyByZXR1cm4gdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxPclVuZGVmaW5lZENoZWNrKG1fdjhP
YmplY3QpOyB9CisgICAgdGVtcGxhdGU8PiBpbmxpbmUgYm9vbCBWOFBhcmFtZXRlcjxEZWZhdWx0
TW9kZT46OnByZXBhcmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6
cHJlcGFyZUJhc2UoKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFy
YW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpwcmVwYXJlKCkKKyAgICB7CisgICAgICAgIGlmIChvYmpl
Y3QoKS0+SXNOdWxsKCkpIHsKKyAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogCi0gICAgdGVtcGxhdGU8PiBpbmxpbmUg
VjhQYXJhbWV0ZXI8RGVmYXVsdE1vZGU+OjpvcGVyYXRvciBBdG9taWNTdHJpbmcoKSB7IHJldHVy
biB2OFZhbHVlVG9BdG9taWNXZWJDb3JlU3RyaW5nKG1fdjhPYmplY3QpOyB9Ci0gICAgdGVtcGxh
dGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46Om9wZXJhdG9yIEF0b21pY1N0
cmluZygpIHsgcmV0dXJuIHRvQXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92OE9i
amVjdCk7IH0KLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2s+OjpvcGVyYXRvciBBdG9taWNTdHJpbmcoKSB7IHJldHVybiB0b0F0b21pY1dl
YkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKG1fdjhPYmplY3QpOyB9CisgICAgICAgIHJldHVybiBW
OFBhcmFtZXRlckJhc2U6OnByZXBhcmVCYXNlKCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8PiBp
bmxpbmUgYm9vbCBWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+OjpwcmVwYXJl
KCkKKyAgICB7CisgICAgICAgIGlmIChvYmplY3QoKS0+SXNOdWxsKCkgfHwgb2JqZWN0KCktPklz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIHNldFN0cmluZyhTdHJpbmcoKSk7CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBWOFBhcmFtZXRl
ckJhc2U6OnByZXBhcmVCYXNlKCk7CisgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKaW5kZXggYjU2
OWIxMGYwNTk2YTI0YTRkZWU1ZWEzNGUxZjQyY2I2Y2ZhYmQyMS4uYWQwMmMzZTYxOWM3MzU0NzI2
Y2YwNGZlOGMwMzJkNTljZmI2Yzc4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhCaW5kaW5nTWFjcm9zLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhCaW5kaW5nTWFjcm9zLmgKQEAgLTM4LDEyICszOCwxMSBAQAogICAgIH0KIAogI2RlZmluZSBT
VFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKHR5cGUsIHZhciwgdmFsdWUpIFwK
LSAgICB0eXBlIHZhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2OFZhbHVl
ID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2Nr
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh2YWx1ZSkt
PlRvU3RyaW5nKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBpZiAoYmxvY2suSGFzQ2F1Z2h0KCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgIHJldHVybiBibG9jay5SZVRocm93KCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIHZhciA9IHY4VmFsdWU7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KKyAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCF2YXIucHJl
cGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisjZGVmaW5lIFNUUklOR19UT19WOFBBUkFNRVRF
Ul9FWENFUFRJT05fQkxPQ0tfVk9JRCh0eXBlLCB2YXIsIHZhbHVlKSBcCisgICAgdHlwZSB2YXIo
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgaWYgKCF2YXIucHJlcGFyZSgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5kZXggMzk2
OTJiNmJmZjU3MTFmZGQ3ODgyMmUxZjI3NzRiZTE1ODM2NzY5OC4uNjdmMjdjNTY5NTQ0ODhhOGVk
YWJkYjEzY2RkMGQyYTdjYjViZGY3MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkRldmljZU1vdGlvbkRhdGEuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAK
ICNpbmNsdWRlIDx2OC5oPgpAQCAtMTEwLDcgKzExMSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERldmljZU1vdGlvbkV2ZW50OjppbnRlcnZhbEFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2
ODo6CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmlj
ZU1vdGlvbkV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBE
ZXZpY2VNb3Rpb25FdmVudCogaW1wID0gVjhEZXZpY2VNb3Rpb25FdmVudDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7Ci0gICAgVjhQYXJhbWV0ZXI8PiB0eXBlID0gYXJnc1swXTsKKyAgICBTVFJJ
TkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5cGUsIGFy
Z3NbMF0pOwogICAgIGJvb2wgYnViYmxlcyA9IGFyZ3NbMV0tPkJvb2xlYW5WYWx1ZSgpOwogICAg
IGJvb2wgY2FuY2VsYWJsZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwogICAgIC8vIElmIGFu
eSBvZiB0aGUgcGFyYW1ldGVycyBhcmUgbnVsbCBvciB1bmRlZmluZWQsIG1hcmsgdGhlbSBhcyBu
b3QgcHJvdmlkZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65706</attachid>
            <date>2010-08-27 05:51:44 -0700</date>
            <delta_ts>2010-08-30 11:43:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44678-20100827165142.patch</filename>
            <type>text/plain</type>
            <size>14423</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA2OTNhYjQwZWQwZWU1ZWUxMzdlMDc5NTBhNzUwOTZlYjc3MjcxYS4uNzM5MmQ3NjJhNjMyYTc5
NTQ0MzBhYTZiYTlmZTdkNzllYmI0OWM1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMC0wOC0yNiAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFt2OF0gTW9yZSBjb3JyZWN0IGFuZCBmYXN0ZXIgZXJy
b3IgaGFuZGxpbmcgd2hlbiBjb252ZXJ0aW5nIHY4IG9iamVjdHMgdG8gdmFyaW91cyBXZWJDb3Jl
IHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ0Njc4CisKKyAgICAgICAgU3BsaXQgdjggb2JqZWN0IGNvbnZlcnNpb24gaW50byB0d28gcGhh
c2U6IDFzdCwgd2hpY2ggY2FuIHRocm93IGFuIGV4Y2VwdGlvbiwgYW5kCisgICAgICAgIDJuZCwg
d2hpY2ggbXVzdCBhbHdheXMgc3VjY2VlZC4gIFRoYXQgYWxsb3dzIHRvIHJlcG9ydCBjb3JyZWN0
bHkgdGhlIGNhc2Ugd2hlbiBleGNlcHRpb24KKyAgICAgICAgaGFwcGVucy4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnQzMlRvV2ViQ29yZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjp2OE5vblN0cmluZ1ZhbHVlVG9XZWJDb3JlU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6b3BlcmF0b3IgU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6VjhQYXJhbWV0ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJC
YXNlOjpvYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpzZXRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjp0b1N0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6OjpwcmVwYXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2sp
OgorCiAyMDEwLTA4LTI2ICBHaXJpc2ggUmFtYWtyaXNobmFuICA8Z2lyaXNoQGZvcndhcmRiaWFz
LmluPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNTY4MzhjYTJlYmVmYzBjMzFm
MmM3YTcyZDVhYjYyMDE4ZGM3NzMzMy4uNzM1N2I3ZjI1Y2I0ZGNiMTg2MmViNWFiMGYyN2VkZmQw
YjU0YzdjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC03NjIsOCArNzYyLDExIEBAIEVORAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCR1c2VF
eGNlcHRpb25zKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICRu
YXRpdmVUeXBlIHYgPSAiKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIk
Z2V0dGVyU3RyaW5nO1xuIik7CisgICAgICAgICAgICBpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBh
cmFtZXRlci8pIHsKKyAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAi
IC4gQ29udmVydFRvVjhQYXJhbWV0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlw
ZSwgInYiLCAkZ2V0dGVyU3RyaW5nKSAuICI7XG4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgdiA9
ICRnZXR0ZXJTdHJpbmc7XG4iKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsIEdlbmVyYXRlU2V0RE9NRXhjZXB0aW9uKCIgICAgIikpOwogICAgICAg
ICAgICAgJHJlc3VsdCA9ICJ2IjsKICAgICAgICAgICAgICRyZXN1bHQgLj0gIi5yZWxlYXNlKCki
IGlmIChJc1JlZlB0clR5cGUoJHJldHVyblR5cGUpKTsKQEAgLTgzMCw2ICs4MzMsOCBAQCBzdWIg
R2VuZXJhdGVOb3JtYWxBdHRyU2V0dGVyCiAgICAgbXkgJGltcGxDbGFzc05hbWUgPSBzaGlmdDsK
ICAgICBteSAkaW50ZXJmYWNlTmFtZSA9IHNoaWZ0OwogCisgICAgJGltcGxJbmNsdWRlc3siVjhC
aW5kaW5nTWFjcm9zLmgifSA9IDE7CisKICAgICBteSAkYXR0ckV4dCA9ICRhdHRyaWJ1dGUtPnNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzOwogCiAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gR2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlLT5zaWduYXR1cmUpOwpAQCAt
ODkwLDcgKzg5NSwxMiBAQCBFTkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgICAgIHJldHVybjtcbiIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gIiAuIEpTVmFsdWVU
b05hdGl2ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsICJ2YWx1ZSIpIC4gIjtcbiIpOworICAgICAg
ICBteSAkdmFsdWUgPSBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFs
dWUiKTsKKyAgICAgICAgaWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CisgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAiIC4gQ29udmVydFRvVjhQYXJhbWV0
ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAkbmF0aXZlVHlwZSwgInYiLCAkdmFsdWUsICJWT0lE
IikgLiAiXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkdmFsdWU7XG4iKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIG15ICRyZXN1bHQgPSAidiI7CkBAIC0xMjM2LDEzICsxMjQ2LDcgQEAgRU5ECiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIH1cbiIpOwogICAgICAgICB9
IGVsc2lmICgkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLykgewogICAgICAgICAgICAgbXkg
JHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRwYXJhbWV0ZXIsICJhcmdzWyRwYXJhbUluZGV4XSIs
IEJhc2ljVHlwZUNhbkZhaWxDb252ZXJzaW9uKCRwYXJhbWV0ZXIpID8gICIke3BhcmFtZXRlck5h
bWV9T2siIDogdW5kZWYpOwotICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJWOEJpbmRpbmdNYWNy
b3MuaCJ9ID0gMTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
IFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soJG5hdGl2ZVR5cGUsICRwYXJh
bWV0ZXJOYW1lLCAkdmFsdWUpO1xuIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICMgRG9uJ3Qga25vdyBob3cgdG8gcHJvcGVybHkgY2hlY2sgZm9yIGNvbnZlcnNpb24g
ZXhjZXB0aW9ucyB3aGVuICRwYXJhbWV0ZXItPnR5cGUgaXMgIkRPTVVzZXJEYXRhIgotICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5cGUgJHBhcmFt
ZXRlck5hbWUgPSAkdmFsdWU7XG4iKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRwYXJhbWV0
ZXIsICRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKSAuICJcbiIpOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siVjhCaW5kaW5nTWFjcm9zLmgi
fSA9IDE7CiAgICAgICAgICAgICAjIEZvciBmdW5jdGlvbnMgd2l0aCAiU3RyaWN0VHlwZUNoZWNr
aW5nIiwgaWYgYW4gaW5wdXQgcGFyYW1ldGVyJ3MgdHlwZSBkb2VzIG5vdCBtYXRjaCB0aGUgc2ln
bmF0dXJlLApAQCAtMzMxNiw2ICszMzIwLDI1IEBAIHN1YiBHZXRDYWxsYmFja0NsYXNzTmFtZQog
ICAgIHJldHVybiAiVjgkaW50ZXJmYWNlTmFtZSI7CiB9CiAKK3N1YiBDb252ZXJ0VG9WOFBhcmFt
ZXRlcgoreworICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKKyAgICBteSAkbmF0aXZlVHlwZSA9
IHNoaWZ0OworICAgIG15ICR2YXJpYWJsZU5hbWUgPSBzaGlmdDsKKyAgICBteSAkdmFsdWUgPSBz
aGlmdDsKKyAgICBteSAkc3VmZml4ID0gc2hpZnQ7CisKKyAgICBkaWUgIldyb25nIG5hdGl2ZSB0
eXBlIHBhc3NlZDogJG5hdGl2ZVR5cGUiIHVubGVzcyAkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1l
dGVyLzsKKyAgICBpZiAoJHNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgeworICAgICAg
bXkgJG1hY3JvID0gIlNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0siOworICAg
ICAgJG1hY3JvIC49ICJfJHN1ZmZpeCIgaWYgJHN1ZmZpeDsKKyAgICAgIHJldHVybiAiJG1hY3Jv
KCRuYXRpdmVUeXBlLCAkdmFyaWFibGVOYW1lLCAkdmFsdWUpOyIKKyAgICB9IGVsc2UgeworICAg
ICAgIyBEb24ndCBrbm93IGhvdyB0byBwcm9wZXJseSBjaGVjayBmb3IgY29udmVyc2lvbiBleGNl
cHRpb25zIHdoZW4gJHBhcmFtZXRlci0+dHlwZSBpcyAiRE9NVXNlckRhdGEiCisgICAgICByZXR1
cm4gIiRuYXRpdmVUeXBlICR2YXJpYWJsZU5hbWUoJHZhbHVlLCB0cnVlKTsiOworICAgIH0KK30K
Kwogc3ViIERlYnVnUHJpbnQKIHsKICAgICBteSAkb3V0cHV0ID0gc2hpZnQ7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5jcHAKaW5kZXggMzc5OWNkYmY3MjM0ZDc3ZTg2OTUzZTUxMTlmYWNkYWQyYjU2
NGIzZS4uZDIxNTFiYWE0YjlkNjMxMjI0MWE5MjY2ZmYxMDA2OWFmN2U2OGQ3NyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzY4LDI3ICszNjgsMzMgQEAgU3RyaW5nVHlwZSB2OFN0
cmluZ1RvV2ViQ29yZVN0cmluZyh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nLCBFeHRl
cm5hbE1vZGUKIHRlbXBsYXRlIFN0cmluZyB2OFN0cmluZ1RvV2ViQ29yZVN0cmluZzxTdHJpbmc+
KHY4OjpIYW5kbGU8djg6OlN0cmluZz4sIEV4dGVybmFsTW9kZSk7CiB0ZW1wbGF0ZSBBdG9taWNT
dHJpbmcgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmc8QXRvbWljU3RyaW5nPih2ODo6SGFuZGxlPHY4
OjpTdHJpbmc+LCBFeHRlcm5hbE1vZGUpOwogCitTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmco
aW50IHZhbHVlKQoreworICAgIC8vIENhY2hpbmcgb2Ygc21hbGwgc3RyaW5ncyBiZWxvdyBpcyBu
b3QgdGhyZWFkIHNhZmU6IG5ld2x5IGNvbnN0cnVjdGVkIEF0b21pY1N0cmluZworICAgIC8vIGFy
ZSBub3Qgc2FmZWx5IHB1Ymxpc2hlZC4KKyAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7
CisKKyAgICAvLyBNb3N0IG51bWJlcnMgdXNlZCBhcmUgPD0gMTAwLiBFdmVuIGlmIHRoZXkgYXJl
bid0IHVzZWQgdGhlcmUncyB2ZXJ5IGxpdHRsZSBpbiB1c2luZyB0aGUgc3BhY2UuCisgICAgY29u
c3QgaW50IGtMb3dOdW1iZXJzID0gMTAwOworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbG93TnVt
YmVyc1trTG93TnVtYmVycyArIDFdOworICAgIFN0cmluZyB3ZWJDb3JlU3RyaW5nOworICAgIGlm
ICgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IGtMb3dOdW1iZXJzKSB7CisgICAgICAgIHdlYkNvcmVT
dHJpbmcgPSBsb3dOdW1iZXJzW3ZhbHVlXTsKKyAgICAgICAgaWYgKCF3ZWJDb3JlU3RyaW5nKSB7
CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWVTdHJpbmcgPSBBdG9taWNTdHJpbmcoU3Ry
aW5nOjpudW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAgIGxvd051bWJlcnNbdmFsdWVdID0gdmFs
dWVTdHJpbmc7CisgICAgICAgICAgICB3ZWJDb3JlU3RyaW5nID0gdmFsdWVTdHJpbmc7CisgICAg
ICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgd2ViQ29yZVN0cmluZyA9IFN0cmluZzo6bnVtYmVy
KHZhbHVlKTsKKyAgICByZXR1cm4gd2ViQ29yZVN0cmluZzsKK30KIAogU3RyaW5nIHY4Tm9uU3Ry
aW5nVmFsdWVUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iamVjdCkKIHsK
ICAgICBBU1NFUlQoIW9iamVjdC0+SXNTdHJpbmcoKSk7Ci0gICAgaWYgKG9iamVjdC0+SXNJbnQz
MigpKSB7Ci0gICAgICAgIGludCB2YWx1ZSA9IG9iamVjdC0+SW50MzJWYWx1ZSgpOwotICAgICAg
ICAvLyBNb3N0IG51bWJlcnMgdXNlZCBhcmUgPD0gMTAwLiBFdmVuIGlmIHRoZXkgYXJlbid0IHVz
ZWQgdGhlcmUncyB2ZXJ5IGxpdHRsZSBpbiB1c2luZyB0aGUgc3BhY2UuCi0gICAgICAgIGNvbnN0
IGludCBrTG93TnVtYmVycyA9IDEwMDsKLSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyBsb3dO
dW1iZXJzW2tMb3dOdW1iZXJzICsgMV07Ci0gICAgICAgIFN0cmluZyB3ZWJDb3JlU3RyaW5nOwot
ICAgICAgICBpZiAoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSBrTG93TnVtYmVycykgewotICAgICAg
ICAgICAgd2ViQ29yZVN0cmluZyA9IGxvd051bWJlcnNbdmFsdWVdOwotICAgICAgICAgICAgaWYg
KCF3ZWJDb3JlU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlU3Ry
aW5nID0gQXRvbWljU3RyaW5nKFN0cmluZzo6bnVtYmVyKHZhbHVlKSk7Ci0gICAgICAgICAgICAg
ICAgbG93TnVtYmVyc1t2YWx1ZV0gPSB2YWx1ZVN0cmluZzsKLSAgICAgICAgICAgICAgICB3ZWJD
b3JlU3RyaW5nID0gdmFsdWVTdHJpbmc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgd2ViQ29yZVN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIHdlYkNvcmVTdHJpbmc7Ci0gICAgfQorICAgIGlmIChvYmplY3QtPklzSW50MzIo
KSkKKyAgICAgICAgaW50MzJUb1dlYkNvcmVTdHJpbmcob2JqZWN0LT5JbnQzMlZhbHVlKCkpOwog
CiAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOwogICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gdjhT
dHJpbmcgPSBvYmplY3QtPlRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4QmluZGluZy5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAw
ODdjMTI4M2NjNzQ5YjY4ODg3MTMzMWZiMjhjYTk4NjlkNGMxMzE5Li41ODk4OWVkOGNkNTQzODA5
NTRhOTc0NWRlMWY3MDgyNWQ5ODg5ZmI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4QmluZGluZy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTIx
MCw2ICsyMTAsNjEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpTdHJpbmc+IGdldFRvU3RyaW5nTmFtZSgpOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCk7CiAKKyAgICBTdHJpbmcgaW50MzJU
b1dlYkNvcmVTdHJpbmcoaW50IHZhbHVlKTsKKworICAgIGNsYXNzIFY4UGFyYW1ldGVyQmFzZSB7
CisgICAgcHVibGljOgorICAgICAgICBvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1N0cmlu
ZzxTdHJpbmc+KCk7IH0KKyAgICAgICAgb3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4g
dG9TdHJpbmc8QXRvbWljU3RyaW5nPigpOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIFY4
UGFyYW1ldGVyQmFzZSh2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QpIDogbV92OE9iamVjdChv
YmplY3QpLCBtX21vZGUoRXh0ZXJuYWxpemUpLCBtX3N0cmluZygpIHsgfQorCisgICAgICAgIGJv
b2wgcHJlcGFyZUJhc2UoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKG1fdjhP
YmplY3QtPklzU3RyaW5nKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICBpZiAoTElLRUxZKG1fdjhPYmplY3QtPklzSW50MzIoKSkpIHsKKyAgICAgICAgICAg
ICAgICBzZXRTdHJpbmcoaW50MzJUb1dlYkNvcmVTdHJpbmcobV92OE9iamVjdC0+SW50MzJWYWx1
ZSgpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIG1fbW9kZSA9IERvTm90RXh0ZXJuYWxpemU7CisgICAgICAgICAgICB2ODo6VHJ5
Q2F0Y2ggYmxvY2s7CisgICAgICAgICAgICBtX3Y4T2JqZWN0ID0gbV92OE9iamVjdC0+VG9TdHJp
bmcoKTsKKyAgICAgICAgICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRpb24g
aXMgdGhyb3duIGFzIHBhcnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24gdGhlIG9iamVjdC4KKyAg
ICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkgeworICAgICAgICAgICAgICAgIGJsb2Nr
LlJlVGhyb3coKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gb2JqZWN0KCkgeyByZXR1cm4gbV92OE9iamVjdDsgfQorCisgICAgICAg
IHZvaWQgc2V0U3RyaW5nKFN0cmluZyBzdHJpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
c3RyaW5nID0gc3RyaW5nOworICAgICAgICAgICAgbV92OE9iamVjdC5DbGVhcigpOyAvLyBUbyBz
aWduYWwgdGhhdCBTdHJpbmcgaXMgcmVhZHkuCisgICAgICAgIH0KKworICAgICBwcml2YXRlOgor
ICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBtX3Y4T2JqZWN0OworICAgICAgICBFeHRlcm5h
bE1vZGUgbV9tb2RlOworICAgICAgICBTdHJpbmcgbV9zdHJpbmc7CisKKyAgICAgICAgdGVtcGxh
dGUgPGNsYXNzIFN0cmluZ1R5cGU+CisgICAgICAgIFN0cmluZ1R5cGUgdG9TdHJpbmcoKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoTElLRUxZKCFtX3Y4T2JqZWN0LklzRW1wdHkoKSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nPFN0cmluZ1R5cGU+
KG1fdjhPYmplY3QuQXM8djg6OlN0cmluZz4oKSwgbV9tb2RlKTsKKworICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ1R5cGUobV9zdHJpbmcpOworICAgICAgICB9CisgICAgfTsKKwogICAgIC8vIFY4
UGFyYW1ldGVyIGlzIGFuIGFkYXB0ZXIgY2xhc3MgdGhhdCBjb252ZXJ0cyBWOCB2YWx1ZXMgdG8g
U3RyaW5ncwogICAgIC8vIG9yIEF0b21pY1N0cmluZ3MgYXMgYXBwcm9wcmlhdGUsIHVzaW5nIG11
bHRpcGxlIHR5cGVjYXN0IG9wZXJhdG9ycy4KICAgICBlbnVtIFY4UGFyYW1ldGVyTW9kZSB7CkBA
IC0yMTgsMjIgKzI3MywzOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdpdGhVbmRl
ZmluZWRPck51bGxDaGVjawogICAgIH07CiAgICAgdGVtcGxhdGUgPFY4UGFyYW1ldGVyTW9kZSBN
T0RFID0gRGVmYXVsdE1vZGU+Ci0gICAgY2xhc3MgVjhQYXJhbWV0ZXIgeworICAgIGNsYXNzIFY4
UGFyYW1ldGVyOiBwdWJsaWMgVjhQYXJhbWV0ZXJCYXNlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCA9IHY4OjpMb2NhbDx2ODo6
VmFsdWU+KCkpIDogbV92OE9iamVjdChvYmplY3QpIHsgfQotICAgICAgICBvcGVyYXRvciBTdHJp
bmcoKTsKLSAgICAgICAgb3BlcmF0b3IgQXRvbWljU3RyaW5nKCk7Ci0gICAgcHJpdmF0ZToKLSAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbV92OE9iamVjdDsKKyAgICAgICAgVjhQYXJhbWV0
ZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0KSA6IFY4UGFyYW1ldGVyQmFzZShvYmplY3Qp
IHsgfQorICAgICAgICBWOFBhcmFtZXRlcih2ODo6TG9jYWw8djg6OlZhbHVlPiBvYmplY3QsIGJv
b2wpIDogVjhQYXJhbWV0ZXJCYXNlKG9iamVjdCkgeyBwcmVwYXJlKCk7IH0KKworICAgICAgICBi
b29sIHByZXBhcmUoKTsKICAgICB9OwogCi0gICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0
ZXI8RGVmYXVsdE1vZGU+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJp
bmcobV92OE9iamVjdCk7IH0KLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRo
TnVsbENoZWNrPjo6b3BlcmF0b3IgU3RyaW5nKCkgeyByZXR1cm4gdG9XZWJDb3JlU3RyaW5nV2l0
aE51bGxDaGVjayhtX3Y4T2JqZWN0KTsgfQotICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1l
dGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz46Om9wZXJhdG9yIFN0cmluZygpIHsgcmV0dXJu
IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsT3JVbmRlZmluZWRDaGVjayhtX3Y4T2JqZWN0KTsgfQor
ICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8RGVmYXVsdE1vZGU+OjpwcmVw
YXJlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBWOFBhcmFtZXRlckJhc2U6OnByZXBhcmVCYXNl
KCk7CisgICAgfQorCisgICAgdGVtcGxhdGU8PiBpbmxpbmUgYm9vbCBWOFBhcmFtZXRlcjxXaXRo
TnVsbENoZWNrPjo6cHJlcGFyZSgpCisgICAgeworICAgICAgICBpZiAob2JqZWN0KCktPklzTnVs
bCgpKSB7CisgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KIAotICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1ldGVy
PERlZmF1bHRNb2RlPjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdjhWYWx1ZVRv
QXRvbWljV2ViQ29yZVN0cmluZyhtX3Y4T2JqZWN0KTsgfQotICAgIHRlbXBsYXRlPD4gaW5saW5l
IFY4UGFyYW1ldGVyPFdpdGhOdWxsQ2hlY2s+OjpvcGVyYXRvciBBdG9taWNTdHJpbmcoKSB7IHJl
dHVybiB0b0F0b21pY1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKG1fdjhPYmplY3QpOyB9Ci0g
ICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNr
Pjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdG9BdG9taWNXZWJDb3JlU3RyaW5n
V2l0aE51bGxDaGVjayhtX3Y4T2JqZWN0KTsgfQorICAgICAgICByZXR1cm4gVjhQYXJhbWV0ZXJC
YXNlOjpwcmVwYXJlQmFzZSgpOworICAgIH0KKworICAgIHRlbXBsYXRlPD4gaW5saW5lIGJvb2wg
VjhQYXJhbWV0ZXI8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPjo6cHJlcGFyZSgpCisgICAgewor
ICAgICAgICBpZiAob2JqZWN0KCktPklzTnVsbCgpIHx8IG9iamVjdCgpLT5Jc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgICAgICBzZXRTdHJpbmcoU3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVjhQYXJhbWV0ZXJCYXNlOjpwcmVw
YXJlQmFzZSgpOworICAgIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01hY3Jvcy5oCmluZGV4IGI1NjliMTBmMDU5NmEy
NGE0ZGVlNWVhMzRlMWY0MmNiNmNmYWJkMjEuLmFkMDJjM2U2MTljNzM1NDcyNmNmMDRmZThjMDMy
ZDU5Y2ZiNmM3OGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Qmlu
ZGluZ01hY3Jvcy5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmluZGluZ01h
Y3Jvcy5oCkBAIC0zOCwxMiArMzgsMTEgQEAKICAgICB9CiAKICNkZWZpbmUgU1RSSU5HX1RPX1Y4
UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DSyh0eXBlLCB2YXIsIHZhbHVlKSBcCi0gICAgdHlwZSB2
YXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdjhWYWx1ZSA9ICh2YWx1ZSk7
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHY4OjpUcnlDYXRjaCBibG9jazsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodmFsdWUpLT5Ub1N0cmluZygp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGJsb2Nr
Lkhhc0NhdWdodCgpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICByZXR1cm4gYmxvY2suUmVUaHJvdygpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAotICAgICAgICB2YXIgPSB2OFZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICB9CisgICAgdHlwZSB2YXIodmFsdWUpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghdmFyLnByZXBhcmUoKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKKworI2RlZmluZSBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9O
X0JMT0NLX1ZPSUQodHlwZSwgdmFyLCB2YWx1ZSkgXAorICAgIHR5cGUgdmFyKHZhbHVlKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICgh
dmFyLnByZXBhcmUoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCmluZGV4IDM5NjkyYjZiZmY1NzEx
ZmRkNzg4MjJlMWYyNzc0YmUxNTgzNjc2OTguLjY3ZjI3YzU2OTU0NDg4YThlZGFiZGIxM2NkZDBk
MmE3Y2I1YmRmNzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2
aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJEZXZpY2VNb3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVk
ZSAiVjhCaW5kaW5nTWFjcm9zLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5oIgogCiAjaW5jbHVkZSA8
djguaD4KQEAgLTExMCw3ICsxMTEsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VN
b3Rpb25FdmVudDo6aW50ZXJ2YWxBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6Ogogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rpb25FdmVu
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgRGV2aWNlTW90aW9u
RXZlbnQqIGltcCA9IFY4RGV2aWNlTW90aW9uRXZlbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwotICAgIFY4UGFyYW1ldGVyPD4gdHlwZSA9IGFyZ3NbMF07CisgICAgU1RSSU5HX1RPX1Y4UEFS
QU1FVEVSX0VYQ0VQVElPTl9CTE9DSyhWOFBhcmFtZXRlcjw+LCB0eXBlLCBhcmdzWzBdKTsKICAg
ICBib29sIGJ1YmJsZXMgPSBhcmdzWzFdLT5Cb29sZWFuVmFsdWUoKTsKICAgICBib29sIGNhbmNl
bGFibGUgPSBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKTsKICAgICAvLyBJZiBhbnkgb2YgdGhlIHBh
cmFtZXRlcnMgYXJlIG51bGwgb3IgdW5kZWZpbmVkLCBtYXJrIHRoZW0gYXMgbm90IHByb3ZpZGVk
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65934</attachid>
            <date>2010-08-30 11:43:39 -0700</date>
            <delta_ts>2010-08-31 00:45:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44678-20100830224337.patch</filename>
            <type>text/plain</type>
            <size>15531</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzA2OTNhYjQwZWQwZWU1ZWUxMzdlMDc5NTBhNzUwOTZlYjc3MjcxYS4uYzhkMmY4MWM5MWJmNjNj
YjE0ZmJiYzhkMTg2MTJmMDkxM2UwMDZhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wOC0yNiAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFt2OF0gTW9yZSBjb3JyZWN0IGFuZCBmYXN0ZXIgZXJy
b3IgaGFuZGxpbmcgd2hlbiBjb252ZXJ0aW5nIHY4IG9iamVjdHMgdG8gdmFyaW91cyBXZWJDb3Jl
IHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQ0Njc4CisKKyAgICAgICAgU3BsaXQgdjggb2JqZWN0IGNvbnZlcnNpb24gaW50byB0d28gcGhh
c2U6IDFzdCwgd2hpY2ggY2FuIHRocm93IGFuIGV4Y2VwdGlvbiwgYW5kCisgICAgICAgIDJuZCwg
d2hpY2ggbXVzdCBhbHdheXMgc3VjY2VlZC4gIFRoYXQgYWxsb3dzIHRvIHJlcG9ydCBjb3JyZWN0
bHkgdGhlIGNhc2Ugd2hlbiBleGNlcHRpb24KKyAgICAgICAgaGFwcGVucy4KKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbnQzMlRvV2ViQ29yZVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjp2OE5vblN0cmluZ1ZhbHVlVG9XZWJDb3JlU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6b3BlcmF0b3IgU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
UGFyYW1ldGVyQmFzZTo6VjhQYXJhbWV0ZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGFy
YW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJC
YXNlOjpvYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjpzZXRTdHJp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0ZXJCYXNlOjp0b1N0cmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6OjpwcmVwYXJlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmg6CisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERldmljZU1vdGlvbkV2ZW50Q2FsbGJhY2sp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2NzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2
aWNlT3JpZW50YXRpb25FdmVudENhbGxiYWNrKToKKwogMjAxMC0wOC0yNiAgR2lyaXNoIFJhbWFr
cmlzaG5hbiAgPGdpcmlzaEBmb3J3YXJkYmlhcy5pbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDU2ODM4Y2EyZWJlZmMwYzMxZjJjN2E3MmQ1YWI2MjAxOGRjNzczMzMuLjczNTdi
N2YyNWNiNGRjYjE4NjJlYjVhYjBmMjdlZGZkMGI1NGM3Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNzYyLDggKzc2MiwxMSBAQCBFTkQKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gIik7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiJGdldHRlclN0cmluZztcbiIpOworICAgICAgICAg
ICAgaWYgKCRuYXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CisgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykgLiAiO1xu
Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dERlY2xzLCAiICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERP
TUV4Y2VwdGlvbigiICAgICIpKTsKICAgICAgICAgICAgICRyZXN1bHQgPSAidiI7CiAgICAgICAg
ICAgICAkcmVzdWx0IC49ICIucmVsZWFzZSgpIiBpZiAoSXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBl
KSk7CkBAIC04MzAsNiArODMzLDggQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogICAg
IG15ICRpbXBsQ2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlm
dDsKIAorICAgICRpbXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOworCiAgICAg
bXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsK
IAogICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKQEAgLTg5MCw3ICs4OTUsMTIgQEAgRU5ECiAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAg
JG5hdGl2ZVR5cGUgdiA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LCAidmFsdWUiKSAuICI7XG4iKTsKKyAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZl
KCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgIGlmICgkbmF0aXZlVHlw
ZSA9fiAvXlY4UGFyYW1ldGVyLykgeworICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMs
ICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5h
dGl2ZVR5cGUsICJ2IiwgJHZhbHVlLCAiVk9JRCIpIC4gIlxuIik7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0g
JHZhbHVlO1xuIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBteSAkcmVzdWx0ID0gInYiOwpA
QCAtMTIzNiwxMyArMTI0Niw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRE
ZWNscywgIiAgICB9XG4iKTsKICAgICAgICAgfSBlbHNpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBh
cmFtZXRlci8pIHsKICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFy
YW1ldGVyLCAiYXJnc1skcGFyYW1JbmRleF0iLCBCYXNpY1R5cGVDYW5GYWlsQ29udmVyc2lvbigk
cGFyYW1ldGVyKSA/ICAiJHtwYXJhbWV0ZXJOYW1lfU9rIiA6IHVuZGVmKTsKLSAgICAgICAgICAg
IGlmICgkcGFyYW1ldGVyLT50eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAg
JGltcGxJbmNsdWRlc3siVjhCaW5kaW5nTWFjcm9zLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBU
SU9OX0JMT0NLKCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKTtcbiIpOwotICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAjIERvbid0IGtub3cgaG93IHRvIHBy
b3Blcmx5IGNoZWNrIGZvciBjb252ZXJzaW9uIGV4Y2VwdGlvbnMgd2hlbiAkcGFyYW1ldGVyLT50
eXBlIGlzICJET01Vc2VyRGF0YSIKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gJHZhbHVlO1xuIik7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBD
b252ZXJ0VG9WOFBhcmFtZXRlcigkcGFyYW1ldGVyLCAkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5h
bWUsICR2YWx1ZSkgLiAiXG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBGb3IgZnVu
Y3Rpb25zIHdpdGggIlN0cmljdFR5cGVDaGVja2luZyIsIGlmIGFuIGlucHV0IHBhcmFtZXRlcidz
IHR5cGUgZG9lcyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSwKQEAgLTMzMTYsNiArMzMyMCwyNSBA
QCBzdWIgR2V0Q2FsbGJhY2tDbGFzc05hbWUKICAgICByZXR1cm4gIlY4JGludGVyZmFjZU5hbWUi
OwogfQogCitzdWIgQ29udmVydFRvVjhQYXJhbWV0ZXIKK3sKKyAgICBteSAkc2lnbmF0dXJlID0g
c2hpZnQ7CisgICAgbXkgJG5hdGl2ZVR5cGUgPSBzaGlmdDsKKyAgICBteSAkdmFyaWFibGVOYW1l
ID0gc2hpZnQ7CisgICAgbXkgJHZhbHVlID0gc2hpZnQ7CisgICAgbXkgJHN1ZmZpeCA9IHNoaWZ0
OworCisgICAgZGllICJXcm9uZyBuYXRpdmUgdHlwZSBwYXNzZWQ6ICRuYXRpdmVUeXBlIiB1bmxl
c3MgJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci87CisgICAgaWYgKCRzaWduYXR1cmUtPnR5
cGUgZXEgIkRPTVN0cmluZyIpIHsKKyAgICAgIG15ICRtYWNybyA9ICJTVFJJTkdfVE9fVjhQQVJB
TUVURVJfRVhDRVBUSU9OX0JMT0NLIjsKKyAgICAgICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRz
dWZmaXg7CisgICAgICByZXR1cm4gIiRtYWNybygkbmF0aXZlVHlwZSwgJHZhcmlhYmxlTmFtZSwg
JHZhbHVlKTsiCisgICAgfSBlbHNlIHsKKyAgICAgICMgRG9uJ3Qga25vdyBob3cgdG8gcHJvcGVy
bHkgY2hlY2sgZm9yIGNvbnZlcnNpb24gZXhjZXB0aW9ucyB3aGVuICRwYXJhbWV0ZXItPnR5cGUg
aXMgIkRPTVVzZXJEYXRhIgorICAgICAgcmV0dXJuICIkbmF0aXZlVHlwZSAkdmFyaWFibGVOYW1l
KCR2YWx1ZSwgdHJ1ZSk7IjsKKyAgICB9Cit9CisKIHN1YiBEZWJ1Z1ByaW50CiB7CiAgICAgbXkg
JG91dHB1dCA9IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDM3OTljZGJm
NzIzNGQ3N2U4Njk1M2U1MTE5ZmFjZGFkMmI1NjRiM2UuLjczNGUwN2I0Y2FlMzNlOTEyODJmN2Fj
ZTlmYzlhYjE5ZDgzNzQ3NmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5k
aW5nLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTM2OCwy
NyArMzY4LDMzIEBAIFN0cmluZ1R5cGUgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiB2OFN0cmluZywgRXh0ZXJuYWxNb2RlCiB0ZW1wbGF0ZSBTdHJpbmcgdjhT
dHJpbmdUb1dlYkNvcmVTdHJpbmc8U3RyaW5nPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBFeHRl
cm5hbE1vZGUpOwogdGVtcGxhdGUgQXRvbWljU3RyaW5nIHY4U3RyaW5nVG9XZWJDb3JlU3RyaW5n
PEF0b21pY1N0cmluZz4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgRXh0ZXJuYWxNb2RlKTsKIAor
U3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nKGludCB2YWx1ZSkKK3sKKyAgICAvLyBDYWNoaW5n
IG9mIHNtYWxsIHN0cmluZ3MgYmVsb3cgaXMgbm90IHRocmVhZCBzYWZlOiBuZXdseSBjb25zdHJ1
Y3RlZCBBdG9taWNTdHJpbmcKKyAgICAvLyBhcmUgbm90IHNhZmVseSBwdWJsaXNoZWQuCisgICAg
QVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gTW9zdCBudW1iZXJzIHVzZWQg
YXJlIDw9IDEwMC4gRXZlbiBpZiB0aGV5IGFyZW4ndCB1c2VkIHRoZXJlJ3MgdmVyeSBsaXR0bGUg
Y29zdCBpbiB1c2luZyB0aGUgc3BhY2UuCisgICAgY29uc3QgaW50IGtMb3dOdW1iZXJzID0gMTAw
OworICAgIHN0YXRpYyBBdG9taWNTdHJpbmcgbG93TnVtYmVyc1trTG93TnVtYmVycyArIDFdOwor
ICAgIFN0cmluZyB3ZWJDb3JlU3RyaW5nOworICAgIGlmICgwIDw9IHZhbHVlICYmIHZhbHVlIDw9
IGtMb3dOdW1iZXJzKSB7CisgICAgICAgIHdlYkNvcmVTdHJpbmcgPSBsb3dOdW1iZXJzW3ZhbHVl
XTsKKyAgICAgICAgaWYgKCF3ZWJDb3JlU3RyaW5nKSB7CisgICAgICAgICAgICBBdG9taWNTdHJp
bmcgdmFsdWVTdHJpbmcgPSBBdG9taWNTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKKyAg
ICAgICAgICAgIGxvd051bWJlcnNbdmFsdWVdID0gdmFsdWVTdHJpbmc7CisgICAgICAgICAgICB3
ZWJDb3JlU3RyaW5nID0gdmFsdWVTdHJpbmc7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAg
ICAgd2ViQ29yZVN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICByZXR1cm4gd2Vi
Q29yZVN0cmluZzsKK30KIAogU3RyaW5nIHY4Tm9uU3RyaW5nVmFsdWVUb1dlYkNvcmVTdHJpbmco
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iamVjdCkKIHsKICAgICBBU1NFUlQoIW9iamVjdC0+SXNT
dHJpbmcoKSk7Ci0gICAgaWYgKG9iamVjdC0+SXNJbnQzMigpKSB7Ci0gICAgICAgIGludCB2YWx1
ZSA9IG9iamVjdC0+SW50MzJWYWx1ZSgpOwotICAgICAgICAvLyBNb3N0IG51bWJlcnMgdXNlZCBh
cmUgPD0gMTAwLiBFdmVuIGlmIHRoZXkgYXJlbid0IHVzZWQgdGhlcmUncyB2ZXJ5IGxpdHRsZSBp
biB1c2luZyB0aGUgc3BhY2UuCi0gICAgICAgIGNvbnN0IGludCBrTG93TnVtYmVycyA9IDEwMDsK
LSAgICAgICAgc3RhdGljIEF0b21pY1N0cmluZyBsb3dOdW1iZXJzW2tMb3dOdW1iZXJzICsgMV07
Ci0gICAgICAgIFN0cmluZyB3ZWJDb3JlU3RyaW5nOwotICAgICAgICBpZiAoMCA8PSB2YWx1ZSAm
JiB2YWx1ZSA8PSBrTG93TnVtYmVycykgewotICAgICAgICAgICAgd2ViQ29yZVN0cmluZyA9IGxv
d051bWJlcnNbdmFsdWVdOwotICAgICAgICAgICAgaWYgKCF3ZWJDb3JlU3RyaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgQXRvbWljU3RyaW5nIHZhbHVlU3RyaW5nID0gQXRvbWljU3RyaW5nKFN0cmlu
Zzo6bnVtYmVyKHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgbG93TnVtYmVyc1t2YWx1ZV0gPSB2
YWx1ZVN0cmluZzsKLSAgICAgICAgICAgICAgICB3ZWJDb3JlU3RyaW5nID0gdmFsdWVTdHJpbmc7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgd2ViQ29yZVN0cmlu
ZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHdlYkNvcmVTdHJpbmc7
Ci0gICAgfQorICAgIGlmIChvYmplY3QtPklzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGludDMy
VG9XZWJDb3JlU3RyaW5nKG9iamVjdC0+SW50MzJWYWx1ZSgpKTsKIAogICAgIHY4OjpUcnlDYXRj
aCBibG9jazsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nID0gb2JqZWN0LT5U
b1N0cmluZygpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMDg3YzEyODNjYzc0OWI2ODg4
NzEzMzFmYjI4Y2E5ODY5ZDRjMTMxOS4uNTg5ODllZDhjZDU0MzgwOTU0YTk3NDVkZTFmNzA4MjVk
OTg4OWZiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0yMTAsNiArMjEwLDYxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBnZXRUb1N0
cmluZ05hbWUoKTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0
VG9TdHJpbmdUZW1wbGF0ZSgpOwogCisgICAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nKGlu
dCB2YWx1ZSk7CisKKyAgICBjbGFzcyBWOFBhcmFtZXRlckJhc2UgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgb3BlcmF0b3IgU3RyaW5nKCkgeyByZXR1cm4gdG9TdHJpbmc8U3RyaW5nPigpOyB9Cisg
ICAgICAgIG9wZXJhdG9yIEF0b21pY1N0cmluZygpIHsgcmV0dXJuIHRvU3RyaW5nPEF0b21pY1N0
cmluZz4oKTsgfQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBWOFBhcmFtZXRlckJhc2Uodjg6
OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0KSA6IG1fdjhPYmplY3Qob2JqZWN0KSwgbV9tb2RlKEV4
dGVybmFsaXplKSwgbV9zdHJpbmcoKSB7IH0KKworICAgICAgICBib29sIHByZXBhcmVCYXNlKCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJS0VMWShtX3Y4T2JqZWN0LT5Jc1N0cmluZygp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKExJS0VM
WShtX3Y4T2JqZWN0LT5Jc0ludDMyKCkpKSB7CisgICAgICAgICAgICAgICAgc2V0U3RyaW5nKGlu
dDMyVG9XZWJDb3JlU3RyaW5nKG1fdjhPYmplY3QtPkludDMyVmFsdWUoKSkpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX21vZGUg
PSBEb05vdEV4dGVybmFsaXplOworICAgICAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOworICAg
ICAgICAgICAgbV92OE9iamVjdCA9IG1fdjhPYmplY3QtPlRvU3RyaW5nKCk7CisgICAgICAgICAg
ICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93biBhcyBwYXJ0
IG9mIGludm9raW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCisgICAgICAgICAgICBpZiAoYmxv
Y2suSGFzQ2F1Z2h0KCkpIHsKKyAgICAgICAgICAgICAgICBibG9jay5SZVRocm93KCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9i
amVjdCgpIHsgcmV0dXJuIG1fdjhPYmplY3Q7IH0KKworICAgICAgICB2b2lkIHNldFN0cmluZyhT
dHJpbmcgc3RyaW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsK
KyAgICAgICAgICAgIG1fdjhPYmplY3QuQ2xlYXIoKTsgLy8gVG8gc2lnbmFsIHRoYXQgU3RyaW5n
IGlzIHJlYWR5LgorICAgICAgICB9CisKKyAgICAgcHJpdmF0ZToKKyAgICAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gbV92OE9iamVjdDsKKyAgICAgICAgRXh0ZXJuYWxNb2RlIG1fbW9kZTsKKyAg
ICAgICAgU3RyaW5nIG1fc3RyaW5nOworCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmdU
eXBlPgorICAgICAgICBTdHJpbmdUeXBlIHRvU3RyaW5nKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKExJS0VMWSghbV92OE9iamVjdC5Jc0VtcHR5KCkpKQorICAgICAgICAgICAgICAgIHJl
dHVybiB2OFN0cmluZ1RvV2ViQ29yZVN0cmluZzxTdHJpbmdUeXBlPihtX3Y4T2JqZWN0LkFzPHY4
OjpTdHJpbmc+KCksIG1fbW9kZSk7CisKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdUeXBlKG1f
c3RyaW5nKTsKKyAgICAgICAgfQorICAgIH07CisKICAgICAvLyBWOFBhcmFtZXRlciBpcyBhbiBh
ZGFwdGVyIGNsYXNzIHRoYXQgY29udmVydHMgVjggdmFsdWVzIHRvIFN0cmluZ3MKICAgICAvLyBv
ciBBdG9taWNTdHJpbmdzIGFzIGFwcHJvcHJpYXRlLCB1c2luZyBtdWx0aXBsZSB0eXBlY2FzdCBv
cGVyYXRvcnMuCiAgICAgZW51bSBWOFBhcmFtZXRlck1vZGUgewpAQCAtMjE4LDIyICsyNzMsMzgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2sK
ICAgICB9OwogICAgIHRlbXBsYXRlIDxWOFBhcmFtZXRlck1vZGUgTU9ERSA9IERlZmF1bHRNb2Rl
PgotICAgIGNsYXNzIFY4UGFyYW1ldGVyIHsKKyAgICBjbGFzcyBWOFBhcmFtZXRlcjogcHVibGlj
IFY4UGFyYW1ldGVyQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBWOFBhcmFtZXRlcih2ODo6
TG9jYWw8djg6OlZhbHVlPiBvYmplY3QgPSB2ODo6TG9jYWw8djg6OlZhbHVlPigpKSA6IG1fdjhP
YmplY3Qob2JqZWN0KSB7IH0KLSAgICAgICAgb3BlcmF0b3IgU3RyaW5nKCk7Ci0gICAgICAgIG9w
ZXJhdG9yIEF0b21pY1N0cmluZygpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IG1fdjhPYmplY3Q7CisgICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6
VmFsdWU+IG9iamVjdCkgOiBWOFBhcmFtZXRlckJhc2Uob2JqZWN0KSB7IH0KKyAgICAgICAgVjhQ
YXJhbWV0ZXIodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBib29sKSA6IFY4UGFyYW1ldGVy
QmFzZShvYmplY3QpIHsgcHJlcGFyZSgpOyB9CisKKyAgICAgICAgYm9vbCBwcmVwYXJlKCk7CiAg
ICAgfTsKIAotICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1ldGVyPERlZmF1bHRNb2RlPjo6
b3BlcmF0b3IgU3RyaW5nKCkgeyByZXR1cm4gdG9XZWJDb3JlU3RyaW5nKG1fdjhPYmplY3QpOyB9
Ci0gICAgdGVtcGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46Om9wZXJh
dG9yIFN0cmluZygpIHsgcmV0dXJuIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92OE9i
amVjdCk7IH0KLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVk
T3JOdWxsQ2hlY2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJpbmdX
aXRoTnVsbE9yVW5kZWZpbmVkQ2hlY2sobV92OE9iamVjdCk7IH0KKyAgICB0ZW1wbGF0ZTw+IGlu
bGluZSBib29sIFY4UGFyYW1ldGVyPERlZmF1bHRNb2RlPjo6cHJlcGFyZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gVjhQYXJhbWV0ZXJCYXNlOjpwcmVwYXJlQmFzZSgpOworICAgIH0KKworICAg
IHRlbXBsYXRlPD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46OnByZXBh
cmUoKQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdCgpLT5Jc051bGwoKSkgeworICAgICAgICAg
ICAgc2V0U3RyaW5nKFN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICB9CiAKLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxEZWZhdWx0TW9kZT46Om9w
ZXJhdG9yIEF0b21pY1N0cmluZygpIHsgcmV0dXJuIHY4VmFsdWVUb0F0b21pY1dlYkNvcmVTdHJp
bmcobV92OE9iamVjdCk7IH0KLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRo
TnVsbENoZWNrPjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdG9BdG9taWNXZWJD
b3JlU3RyaW5nV2l0aE51bGxDaGVjayhtX3Y4T2JqZWN0KTsgfQotICAgIHRlbXBsYXRlPD4gaW5s
aW5lIFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz46Om9wZXJhdG9yIEF0b21p
Y1N0cmluZygpIHsgcmV0dXJuIHRvQXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92
OE9iamVjdCk7IH0KKyAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2Uo
KTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhV
bmRlZmluZWRPck51bGxDaGVjaz46OnByZXBhcmUoKQorICAgIHsKKyAgICAgICAgaWYgKG9iamVj
dCgpLT5Jc051bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAg
c2V0U3RyaW5nKFN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UoKTsKKyAgICB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhCaW5kaW5nTWFjcm9zLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEJpbmRpbmdNYWNyb3MuaAppbmRleCBiNTY5YjEwZjA1OTZhMjRhNGRlZTVlYTM0ZTFmNDJj
YjZjZmFiZDIxLi5hZDAyYzNlNjE5YzczNTQ3MjZjZjA0ZmU4YzAzMmQ1OWNmYjZjNzhiIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaApAQCAtMzgsMTIg
KzM4LDExIEBACiAgICAgfQogCiAjZGVmaW5lIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJ
T05fQkxPQ0sodHlwZSwgdmFyLCB2YWx1ZSkgXAotICAgIHR5cGUgdmFyOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHY4VmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAg
XAotICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgKHZhbHVlKS0+VG9TdHJpbmcoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIGJsb2Nr
LlJlVGhyb3coKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFyID0g
djhWYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
fQorICAgIHR5cGUgdmFyKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICBpZiAoIXZhci5wcmVwYXJlKCkpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisK
KyNkZWZpbmUgU1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKHR5cGUs
IHZhciwgdmFsdWUpIFwKKyAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXZhci5wcmVwYXJlKCkpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rp
b25FdmVudEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1v
dGlvbkV2ZW50Q3VzdG9tLmNwcAppbmRleCAzOTY5MmI2YmZmNTcxMWZkZDc4ODIyZTFmMjc3NGJl
MTU4MzY3Njk4Li42N2YyN2M1Njk1NDQ4OGE4ZWRhYmRiMTNjZGQwZDJhN2NiNWJkZjcyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2
ZW50Q3VzdG9tLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9u
RGF0YS5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jv
cy5oIgogI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogI2luY2x1ZGUgPHY4Lmg+CkBAIC0xMTAsNyAr
MTExLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmludGVy
dmFsQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERldmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERl
dmljZU1vdGlvbkV2ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFBhcmFtZXRl
cjw+IHR5cGUgPSBhcmdzWzBdOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05f
QkxPQ0soVjhQYXJhbWV0ZXI8PiwgdHlwZSwgYXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0g
YXJnc1sxXS0+Qm9vbGVhblZhbHVlKCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+
Qm9vbGVhblZhbHVlKCk7CiAgICAgLy8gSWYgYW55IG9mIHRoZSBwYXJhbWV0ZXJzIGFyZSBudWxs
IG9yIHVuZGVmaW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IDI2Y2M2Y2MzMGI1YTNlM2EyM2M4Mjk1YmU5NzlmMmJkYTRkOWNiODQu
LjBmZWU0ZDE3NmZkYTk2Njg3YzA1MDI2OWM4M2YyYmI0OWE5Y2M5ODggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2
ZW50Q3VzdG9tLmNwcApAQCAtNjksNyArNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpnYW1tYUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2OAog
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmlj
ZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIERldmljZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlT3JpZW50YXRpb25FdmVu
dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhQYXJhbWV0ZXI8PiB0eXBlID0gYXJn
c1swXTsKKyAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1l
dGVyPD4sIHR5cGUsIGFyZ3NbMF0pOwogICAgIGJvb2wgYnViYmxlcyA9IGFyZ3NbMV0tPkJvb2xl
YW5WYWx1ZSgpOwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgp
OwogICAgIC8vIElmIGFscGhhLCBiZXRhIG9yIGdhbW1hIGFyZSBudWxsIG9yIHVuZGVmaW5lZCwg
bWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66018</attachid>
            <date>2010-08-31 00:45:29 -0700</date>
            <delta_ts>2010-09-01 07:20:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44678-20100831114527.patch</filename>
            <type>text/plain</type>
            <size>15522</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzlkMWUyYTZlZWYxOTcyMTc2NDk2YmM3NTA5OTgzZTQ0ZGI5NGUzNC4uOTIyYjViZDVhZGJhY2U5
NjA2MGEzNWZlYjA5MmVmODZjYjIyNDU0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wOC0yNiAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCisKKyAgICAgICAgW3Y4XSBNb3JlIGNvcnJlY3QgYW5kIGZhc3RlciBlcnJvciBo
YW5kbGluZyB3aGVuIGNvbnZlcnRpbmcgdjggb2JqZWN0cyB0byB2YXJpb3VzIFdlYkNvcmUgc3Ry
aW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2
NzgKKworICAgICAgICBTcGxpdCB2OCBvYmplY3QgY29udmVyc2lvbiBpbnRvIHR3byBwaGFzZTog
MXN0LCB3aGljaCBjYW4gdGhyb3cgYW4gZXhjZXB0aW9uLCBhbmQKKyAgICAgICAgMm5kLCB3aGlj
aCBtdXN0IGFsd2F5cyBzdWNjZWVkLiAgVGhhdCBhbGxvd3MgdG8gcmVwb3J0IGNvcnJlY3RseSB0
aGUgY2FzZSB3aGVuIGV4Y2VwdGlvbgorICAgICAgICBoYXBwZW5zLgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludDMyVG9XZWJDb3JlU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OnY4Tm9uU3RyaW5nVmFsdWVUb1dlYkNvcmVTdHJpbmcpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJh
bWV0ZXJCYXNlOjpvcGVyYXRvciBTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0
ZXJCYXNlOjpvcGVyYXRvciBBdG9taWNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJh
bWV0ZXJCYXNlOjpWOFBhcmFtZXRlckJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQYXJhbWV0
ZXJCYXNlOjpwcmVwYXJlQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBhcmFtZXRlckJhc2U6
Om9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOFBhcmFtZXRlckJhc2U6OnNldFN0cmluZyk6
CisgICAgICAgIChXZWJDb3JlOjpWOFBhcmFtZXRlckJhc2U6OnRvU3RyaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6Oik6CisgICAgICAgIChXZWJDb3JlOjo6OnByZXBhcmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayk6Cisg
ICAgICAgICogYmluZGluZ3MvdjgvY3N0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VP
cmllbnRhdGlvbkV2ZW50Q2FsbGJhY2spOgorCiAyMDEwLTA4LTMwICBBbGVqYW5kcm8gRy4gQ2Fz
dHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2Jp
bnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDU2ODM4Y2EyZWJlZmMwYzMxZjJjN2E3MmQ1YWI2MjAxOGRjNzczMzMuLjczNTdiN2YyNWNiNGRj
YjE4NjJlYjVhYjBmMjdlZGZkMGI1NGM3Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNzYyLDggKzc2MiwxMSBAQCBFTkQKICAgICAgICAgfQog
CiAgICAgICAgIGlmICgkdXNlRXhjZXB0aW9ucykgewotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gIik7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiJGdldHRlclN0cmluZztcbiIpOworICAgICAgICAgICAgaWYgKCRu
YXRpdmVUeXBlID1+IC9eVjhQYXJhbWV0ZXIvKSB7CisgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgIiAuIENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRyaWJ1dGUtPnNp
Z25hdHVyZSwgJG5hdGl2ZVR5cGUsICJ2IiwgJGdldHRlclN0cmluZykgLiAiO1xuIik7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAi
ICAgICRuYXRpdmVUeXBlIHYgPSAkZ2V0dGVyU3RyaW5nO1xuIik7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlv
bigiICAgICIpKTsKICAgICAgICAgICAgICRyZXN1bHQgPSAidiI7CiAgICAgICAgICAgICAkcmVz
dWx0IC49ICIucmVsZWFzZSgpIiBpZiAoSXNSZWZQdHJUeXBlKCRyZXR1cm5UeXBlKSk7CkBAIC04
MzAsNiArODMzLDggQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogICAgIG15ICRpbXBs
Q2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAorICAg
ICRpbXBsSW5jbHVkZXN7IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOworCiAgICAgbXkgJGF0dHJF
eHQgPSAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKIAogICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKQEAgLTg5MCw3ICs4OTUsMTIgQEAgRU5ECiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgJG5hdGl2ZVR5
cGUgdiA9ICIgLiBKU1ZhbHVlVG9OYXRpdmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAidmFsdWUi
KSAuICI7XG4iKTsKKyAgICAgICAgbXkgJHZhbHVlID0gSlNWYWx1ZVRvTmF0aXZlKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZSwgInZhbHVlIik7CisgICAgICAgIGlmICgkbmF0aXZlVHlwZSA9fiAvXlY4
UGFyYW1ldGVyLykgeworICAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgIiAu
IENvbnZlcnRUb1Y4UGFyYW1ldGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgJG5hdGl2ZVR5cGUs
ICJ2IiwgJHZhbHVlLCAiVk9JRCIpIC4gIlxuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAkbmF0aXZlVHlwZSB2ID0gJHZhbHVlO1xu
Iik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBteSAkcmVzdWx0ID0gInYiOwpAQCAtMTIzNiwx
MyArMTI0Niw3IEBAIEVORAogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICB9XG4iKTsKICAgICAgICAgfSBlbHNpZiAoJG5hdGl2ZVR5cGUgPX4gL15WOFBhcmFtZXRlci8p
IHsKICAgICAgICAgICAgIG15ICR2YWx1ZSA9IEpTVmFsdWVUb05hdGl2ZSgkcGFyYW1ldGVyLCAi
YXJnc1skcGFyYW1JbmRleF0iLCBCYXNpY1R5cGVDYW5GYWlsQ29udmVyc2lvbigkcGFyYW1ldGVy
KSA/ICAiJHtwYXJhbWV0ZXJOYW1lfU9rIiA6IHVuZGVmKTsKLSAgICAgICAgICAgIGlmICgkcGFy
YW1ldGVyLT50eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siVjhCaW5kaW5nTWFjcm9zLmgifSA9IDE7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnREZWNscywgIiAgICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NL
KCRuYXRpdmVUeXBlLCAkcGFyYW1ldGVyTmFtZSwgJHZhbHVlKTtcbiIpOwotICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAjIERvbid0IGtub3cgaG93IHRvIHByb3Blcmx5IGNo
ZWNrIGZvciBjb252ZXJzaW9uIGV4Y2VwdGlvbnMgd2hlbiAkcGFyYW1ldGVyLT50eXBlIGlzICJE
T01Vc2VyRGF0YSIKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAg
ICRuYXRpdmVUeXBlICRwYXJhbWV0ZXJOYW1lID0gJHZhbHVlO1xuIik7Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICIgLiBDb252ZXJ0VG9W
OFBhcmFtZXRlcigkcGFyYW1ldGVyLCAkbmF0aXZlVHlwZSwgJHBhcmFtZXRlck5hbWUsICR2YWx1
ZSkgLiAiXG4iKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7
IlY4QmluZGluZ01hY3Jvcy5oIn0gPSAxOwogICAgICAgICAgICAgIyBGb3IgZnVuY3Rpb25zIHdp
dGggIlN0cmljdFR5cGVDaGVja2luZyIsIGlmIGFuIGlucHV0IHBhcmFtZXRlcidzIHR5cGUgZG9l
cyBub3QgbWF0Y2ggdGhlIHNpZ25hdHVyZSwKQEAgLTMzMTYsNiArMzMyMCwyNSBAQCBzdWIgR2V0
Q2FsbGJhY2tDbGFzc05hbWUKICAgICByZXR1cm4gIlY4JGludGVyZmFjZU5hbWUiOwogfQogCitz
dWIgQ29udmVydFRvVjhQYXJhbWV0ZXIKK3sKKyAgICBteSAkc2lnbmF0dXJlID0gc2hpZnQ7Cisg
ICAgbXkgJG5hdGl2ZVR5cGUgPSBzaGlmdDsKKyAgICBteSAkdmFyaWFibGVOYW1lID0gc2hpZnQ7
CisgICAgbXkgJHZhbHVlID0gc2hpZnQ7CisgICAgbXkgJHN1ZmZpeCA9IHNoaWZ0OworCisgICAg
ZGllICJXcm9uZyBuYXRpdmUgdHlwZSBwYXNzZWQ6ICRuYXRpdmVUeXBlIiB1bmxlc3MgJG5hdGl2
ZVR5cGUgPX4gL15WOFBhcmFtZXRlci87CisgICAgaWYgKCRzaWduYXR1cmUtPnR5cGUgZXEgIkRP
TVN0cmluZyIpIHsKKyAgICAgIG15ICRtYWNybyA9ICJTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhD
RVBUSU9OX0JMT0NLIjsKKyAgICAgICRtYWNybyAuPSAiXyRzdWZmaXgiIGlmICRzdWZmaXg7Cisg
ICAgICByZXR1cm4gIiRtYWNybygkbmF0aXZlVHlwZSwgJHZhcmlhYmxlTmFtZSwgJHZhbHVlKTsi
CisgICAgfSBlbHNlIHsKKyAgICAgICMgRG9uJ3Qga25vdyBob3cgdG8gcHJvcGVybHkgY2hlY2sg
Zm9yIGNvbnZlcnNpb24gZXhjZXB0aW9ucyB3aGVuICRwYXJhbWV0ZXItPnR5cGUgaXMgIkRPTVVz
ZXJEYXRhIgorICAgICAgcmV0dXJuICIkbmF0aXZlVHlwZSAkdmFyaWFibGVOYW1lKCR2YWx1ZSwg
dHJ1ZSk7IjsKKyAgICB9Cit9CisKIHN1YiBEZWJ1Z1ByaW50CiB7CiAgICAgbXkgJG91dHB1dCA9
IHNoaWZ0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDM3OTljZGJmNzIzNGQ3N2U4
Njk1M2U1MTE5ZmFjZGFkMmI1NjRiM2UuLjczNGUwN2I0Y2FlMzNlOTEyODJmN2FjZTlmYzlhYjE5
ZDgzNzQ3NmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTM2OCwyNyArMzY4LDMz
IEBAIFN0cmluZ1R5cGUgdjhTdHJpbmdUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiB2OFN0cmluZywgRXh0ZXJuYWxNb2RlCiB0ZW1wbGF0ZSBTdHJpbmcgdjhTdHJpbmdUb1dl
YkNvcmVTdHJpbmc8U3RyaW5nPih2ODo6SGFuZGxlPHY4OjpTdHJpbmc+LCBFeHRlcm5hbE1vZGUp
OwogdGVtcGxhdGUgQXRvbWljU3RyaW5nIHY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nPEF0b21pY1N0
cmluZz4odjg6OkhhbmRsZTx2ODo6U3RyaW5nPiwgRXh0ZXJuYWxNb2RlKTsKIAorU3RyaW5nIGlu
dDMyVG9XZWJDb3JlU3RyaW5nKGludCB2YWx1ZSkKK3sKKyAgICAvLyBDYWNoaW5nIG9mIHNtYWxs
IHN0cmluZ3MgYmVsb3cgaXMgbm90IHRocmVhZCBzYWZlOiBuZXdseSBjb25zdHJ1Y3RlZCBBdG9t
aWNTdHJpbmcKKyAgICAvLyBhcmUgbm90IHNhZmVseSBwdWJsaXNoZWQuCisgICAgQVNTRVJUKFdU
Rjo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gTW9zdCBudW1iZXJzIHVzZWQgYXJlIDw9IDEw
MC4gRXZlbiBpZiB0aGV5IGFyZW4ndCB1c2VkIHRoZXJlJ3MgdmVyeSBsaXR0bGUgY29zdCBpbiB1
c2luZyB0aGUgc3BhY2UuCisgICAgY29uc3QgaW50IGtMb3dOdW1iZXJzID0gMTAwOworICAgIHN0
YXRpYyBBdG9taWNTdHJpbmcgbG93TnVtYmVyc1trTG93TnVtYmVycyArIDFdOworICAgIFN0cmlu
ZyB3ZWJDb3JlU3RyaW5nOworICAgIGlmICgwIDw9IHZhbHVlICYmIHZhbHVlIDw9IGtMb3dOdW1i
ZXJzKSB7CisgICAgICAgIHdlYkNvcmVTdHJpbmcgPSBsb3dOdW1iZXJzW3ZhbHVlXTsKKyAgICAg
ICAgaWYgKCF3ZWJDb3JlU3RyaW5nKSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgdmFsdWVT
dHJpbmcgPSBBdG9taWNTdHJpbmcoU3RyaW5nOjpudW1iZXIodmFsdWUpKTsKKyAgICAgICAgICAg
IGxvd051bWJlcnNbdmFsdWVdID0gdmFsdWVTdHJpbmc7CisgICAgICAgICAgICB3ZWJDb3JlU3Ry
aW5nID0gdmFsdWVTdHJpbmc7CisgICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgd2ViQ29y
ZVN0cmluZyA9IFN0cmluZzo6bnVtYmVyKHZhbHVlKTsKKyAgICByZXR1cm4gd2ViQ29yZVN0cmlu
ZzsKK30KIAogU3RyaW5nIHY4Tm9uU3RyaW5nVmFsdWVUb1dlYkNvcmVTdHJpbmcodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG9iamVjdCkKIHsKICAgICBBU1NFUlQoIW9iamVjdC0+SXNTdHJpbmcoKSk7
Ci0gICAgaWYgKG9iamVjdC0+SXNJbnQzMigpKSB7Ci0gICAgICAgIGludCB2YWx1ZSA9IG9iamVj
dC0+SW50MzJWYWx1ZSgpOwotICAgICAgICAvLyBNb3N0IG51bWJlcnMgdXNlZCBhcmUgPD0gMTAw
LiBFdmVuIGlmIHRoZXkgYXJlbid0IHVzZWQgdGhlcmUncyB2ZXJ5IGxpdHRsZSBpbiB1c2luZyB0
aGUgc3BhY2UuCi0gICAgICAgIGNvbnN0IGludCBrTG93TnVtYmVycyA9IDEwMDsKLSAgICAgICAg
c3RhdGljIEF0b21pY1N0cmluZyBsb3dOdW1iZXJzW2tMb3dOdW1iZXJzICsgMV07Ci0gICAgICAg
IFN0cmluZyB3ZWJDb3JlU3RyaW5nOwotICAgICAgICBpZiAoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8
PSBrTG93TnVtYmVycykgewotICAgICAgICAgICAgd2ViQ29yZVN0cmluZyA9IGxvd051bWJlcnNb
dmFsdWVdOwotICAgICAgICAgICAgaWYgKCF3ZWJDb3JlU3RyaW5nKSB7Ci0gICAgICAgICAgICAg
ICAgQXRvbWljU3RyaW5nIHZhbHVlU3RyaW5nID0gQXRvbWljU3RyaW5nKFN0cmluZzo6bnVtYmVy
KHZhbHVlKSk7Ci0gICAgICAgICAgICAgICAgbG93TnVtYmVyc1t2YWx1ZV0gPSB2YWx1ZVN0cmlu
ZzsKLSAgICAgICAgICAgICAgICB3ZWJDb3JlU3RyaW5nID0gdmFsdWVTdHJpbmc7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgd2ViQ29yZVN0cmluZyA9IFN0cmlu
Zzo6bnVtYmVyKHZhbHVlKTsKLSAgICAgICAgcmV0dXJuIHdlYkNvcmVTdHJpbmc7Ci0gICAgfQor
ICAgIGlmIChvYmplY3QtPklzSW50MzIoKSkKKyAgICAgICAgcmV0dXJuIGludDMyVG9XZWJDb3Jl
U3RyaW5nKG9iamVjdC0+SW50MzJWYWx1ZSgpKTsKIAogICAgIHY4OjpUcnlDYXRjaCBibG9jazsK
ICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHY4U3RyaW5nID0gb2JqZWN0LT5Ub1N0cmluZygp
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggMDg3YzEyODNjYzc0OWI2ODg4NzEzMzFmYjI4
Y2E5ODY5ZDRjMTMxOS4uNTg5ODllZDhjZDU0MzgwOTU0YTk3NDVkZTFmNzA4MjVkOTg4OWZiNCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0yMTAsNiArMjEwLDYxIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBnZXRUb1N0cmluZ05hbWUo
KTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpOwogCisgICAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nKGludCB2YWx1ZSk7
CisKKyAgICBjbGFzcyBWOFBhcmFtZXRlckJhc2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgb3Bl
cmF0b3IgU3RyaW5nKCkgeyByZXR1cm4gdG9TdHJpbmc8U3RyaW5nPigpOyB9CisgICAgICAgIG9w
ZXJhdG9yIEF0b21pY1N0cmluZygpIHsgcmV0dXJuIHRvU3RyaW5nPEF0b21pY1N0cmluZz4oKTsg
fQorCisgICAgcHJvdGVjdGVkOgorICAgICAgICBWOFBhcmFtZXRlckJhc2Uodjg6OkxvY2FsPHY4
OjpWYWx1ZT4gb2JqZWN0KSA6IG1fdjhPYmplY3Qob2JqZWN0KSwgbV9tb2RlKEV4dGVybmFsaXpl
KSwgbV9zdHJpbmcoKSB7IH0KKworICAgICAgICBib29sIHByZXBhcmVCYXNlKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKExJS0VMWShtX3Y4T2JqZWN0LT5Jc1N0cmluZygpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKExJS0VMWShtX3Y4T2Jq
ZWN0LT5Jc0ludDMyKCkpKSB7CisgICAgICAgICAgICAgICAgc2V0U3RyaW5nKGludDMyVG9XZWJD
b3JlU3RyaW5nKG1fdjhPYmplY3QtPkludDMyVmFsdWUoKSkpOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtX21vZGUgPSBEb05vdEV4
dGVybmFsaXplOworICAgICAgICAgICAgdjg6OlRyeUNhdGNoIGJsb2NrOworICAgICAgICAgICAg
bV92OE9iamVjdCA9IG1fdjhPYmplY3QtPlRvU3RyaW5nKCk7CisgICAgICAgICAgICAvLyBIYW5k
bGUgdGhlIGNhc2Ugd2hlcmUgYW4gZXhjZXB0aW9uIGlzIHRocm93biBhcyBwYXJ0IG9mIGludm9r
aW5nIHRvU3RyaW5nIG9uIHRoZSBvYmplY3QuCisgICAgICAgICAgICBpZiAoYmxvY2suSGFzQ2F1
Z2h0KCkpIHsKKyAgICAgICAgICAgICAgICBibG9jay5SZVRocm93KCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCgpIHsg
cmV0dXJuIG1fdjhPYmplY3Q7IH0KKworICAgICAgICB2b2lkIHNldFN0cmluZyhTdHJpbmcgc3Ry
aW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0cmluZyA9IHN0cmluZzsKKyAgICAgICAg
ICAgIG1fdjhPYmplY3QuQ2xlYXIoKTsgLy8gVG8gc2lnbmFsIHRoYXQgU3RyaW5nIGlzIHJlYWR5
LgorICAgICAgICB9CisKKyAgICAgcHJpdmF0ZToKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gbV92OE9iamVjdDsKKyAgICAgICAgRXh0ZXJuYWxNb2RlIG1fbW9kZTsKKyAgICAgICAgU3Ry
aW5nIG1fc3RyaW5nOworCisgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBTdHJpbmdUeXBlPgorICAg
ICAgICBTdHJpbmdUeXBlIHRvU3RyaW5nKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKExJ
S0VMWSghbV92OE9iamVjdC5Jc0VtcHR5KCkpKQorICAgICAgICAgICAgICAgIHJldHVybiB2OFN0
cmluZ1RvV2ViQ29yZVN0cmluZzxTdHJpbmdUeXBlPihtX3Y4T2JqZWN0LkFzPHY4OjpTdHJpbmc+
KCksIG1fbW9kZSk7CisKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdUeXBlKG1fc3RyaW5nKTsK
KyAgICAgICAgfQorICAgIH07CisKICAgICAvLyBWOFBhcmFtZXRlciBpcyBhbiBhZGFwdGVyIGNs
YXNzIHRoYXQgY29udmVydHMgVjggdmFsdWVzIHRvIFN0cmluZ3MKICAgICAvLyBvciBBdG9taWNT
dHJpbmdzIGFzIGFwcHJvcHJpYXRlLCB1c2luZyBtdWx0aXBsZSB0eXBlY2FzdCBvcGVyYXRvcnMu
CiAgICAgZW51bSBWOFBhcmFtZXRlck1vZGUgewpAQCAtMjE4LDIyICsyNzMsMzggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2sKICAgICB9Owog
ICAgIHRlbXBsYXRlIDxWOFBhcmFtZXRlck1vZGUgTU9ERSA9IERlZmF1bHRNb2RlPgotICAgIGNs
YXNzIFY4UGFyYW1ldGVyIHsKKyAgICBjbGFzcyBWOFBhcmFtZXRlcjogcHVibGljIFY4UGFyYW1l
dGVyQmFzZSB7CiAgICAgcHVibGljOgotICAgICAgICBWOFBhcmFtZXRlcih2ODo6TG9jYWw8djg6
OlZhbHVlPiBvYmplY3QgPSB2ODo6TG9jYWw8djg6OlZhbHVlPigpKSA6IG1fdjhPYmplY3Qob2Jq
ZWN0KSB7IH0KLSAgICAgICAgb3BlcmF0b3IgU3RyaW5nKCk7Ci0gICAgICAgIG9wZXJhdG9yIEF0
b21pY1N0cmluZygpOwotICAgIHByaXZhdGU6Ci0gICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IG1fdjhPYmplY3Q7CisgICAgICAgIFY4UGFyYW1ldGVyKHY4OjpMb2NhbDx2ODo6VmFsdWU+IG9i
amVjdCkgOiBWOFBhcmFtZXRlckJhc2Uob2JqZWN0KSB7IH0KKyAgICAgICAgVjhQYXJhbWV0ZXIo
djg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBib29sKSA6IFY4UGFyYW1ldGVyQmFzZShvYmpl
Y3QpIHsgcHJlcGFyZSgpOyB9CisKKyAgICAgICAgYm9vbCBwcmVwYXJlKCk7CiAgICAgfTsKIAot
ICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFyYW1ldGVyPERlZmF1bHRNb2RlPjo6b3BlcmF0b3Ig
U3RyaW5nKCkgeyByZXR1cm4gdG9XZWJDb3JlU3RyaW5nKG1fdjhPYmplY3QpOyB9Ci0gICAgdGVt
cGxhdGU8PiBpbmxpbmUgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46Om9wZXJhdG9yIFN0cmlu
ZygpIHsgcmV0dXJuIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92OE9iamVjdCk7IH0K
LSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2s+OjpvcGVyYXRvciBTdHJpbmcoKSB7IHJldHVybiB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbE9y
VW5kZWZpbmVkQ2hlY2sobV92OE9iamVjdCk7IH0KKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29s
IFY4UGFyYW1ldGVyPERlZmF1bHRNb2RlPjo6cHJlcGFyZSgpCisgICAgeworICAgICAgICByZXR1
cm4gVjhQYXJhbWV0ZXJCYXNlOjpwcmVwYXJlQmFzZSgpOworICAgIH0KKworICAgIHRlbXBsYXRl
PD4gaW5saW5lIGJvb2wgVjhQYXJhbWV0ZXI8V2l0aE51bGxDaGVjaz46OnByZXBhcmUoKQorICAg
IHsKKyAgICAgICAgaWYgKG9iamVjdCgpLT5Jc051bGwoKSkgeworICAgICAgICAgICAgc2V0U3Ry
aW5nKFN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAKLSAg
ICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxEZWZhdWx0TW9kZT46Om9wZXJhdG9yIEF0
b21pY1N0cmluZygpIHsgcmV0dXJuIHY4VmFsdWVUb0F0b21pY1dlYkNvcmVTdHJpbmcobV92OE9i
amVjdCk7IH0KLSAgICB0ZW1wbGF0ZTw+IGlubGluZSBWOFBhcmFtZXRlcjxXaXRoTnVsbENoZWNr
Pjo6b3BlcmF0b3IgQXRvbWljU3RyaW5nKCkgeyByZXR1cm4gdG9BdG9taWNXZWJDb3JlU3RyaW5n
V2l0aE51bGxDaGVjayhtX3Y4T2JqZWN0KTsgfQotICAgIHRlbXBsYXRlPD4gaW5saW5lIFY4UGFy
YW1ldGVyPFdpdGhVbmRlZmluZWRPck51bGxDaGVjaz46Om9wZXJhdG9yIEF0b21pY1N0cmluZygp
IHsgcmV0dXJuIHRvQXRvbWljV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobV92OE9iamVjdCk7
IH0KKyAgICAgICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UoKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZTw+IGlubGluZSBib29sIFY4UGFyYW1ldGVyPFdpdGhVbmRlZmluZWRP
ck51bGxDaGVjaz46OnByZXBhcmUoKQorICAgIHsKKyAgICAgICAgaWYgKG9iamVjdCgpLT5Jc051
bGwoKSB8fCBvYmplY3QoKS0+SXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAgc2V0U3RyaW5n
KFN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgcmV0dXJuIFY4UGFyYW1ldGVyQmFzZTo6cHJlcGFyZUJhc2UoKTsKKyAgICB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhCaW5kaW5nTWFjcm9zLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRp
bmdNYWNyb3MuaAppbmRleCBiNTY5YjEwZjA1OTZhMjRhNGRlZTVlYTM0ZTFmNDJjYjZjZmFiZDIx
Li5hZDAyYzNlNjE5YzczNTQ3MjZjZjA0ZmU4YzAzMmQ1OWNmYjZjNzhiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaAorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEJpbmRpbmdNYWNyb3MuaApAQCAtMzgsMTIgKzM4LDExIEBA
CiAgICAgfQogCiAjZGVmaW5lIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0so
dHlwZSwgdmFyLCB2YWx1ZSkgXAotICAgIHR5cGUgdmFyOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHY4VmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgXAotICAgICAg
ICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgKHZhbHVlKS0+VG9TdHJpbmcoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIGJsb2NrLlJlVGhyb3co
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdmFyID0gdjhWYWx1ZTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQorICAgIHR5
cGUgdmFyKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBpZiAoIXZhci5wcmVwYXJlKCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyNkZWZpbmUg
U1RSSU5HX1RPX1Y4UEFSQU1FVEVSX0VYQ0VQVElPTl9CTE9DS19WT0lEKHR5cGUsIHZhciwgdmFs
dWUpIFwKKyAgICB0eXBlIHZhcih2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIXZhci5wcmVwYXJlKCkpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1
c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50
Q3VzdG9tLmNwcAppbmRleCAzOTY5MmI2YmZmNTcxMWZkZDc4ODIyZTFmMjc3NGJlMTU4MzY3Njk4
Li42N2YyN2M1Njk1NDQ4OGE4ZWRhYmRiMTNjZGQwZDJhN2NiNWJkZjcyIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9tLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiRGV2aWNlTW90aW9uRGF0YS5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgogI2lu
Y2x1ZGUgIlY4UHJveHkuaCIKIAogI2luY2x1ZGUgPHY4Lmg+CkBAIC0xMTAsNyArMTExLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmludGVydmFsQWNjZXNz
b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjoKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1v
dGlvbkV2ZW50Ojppbml0RGV2aWNlTW90aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIERldmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU1vdGlv
bkV2ZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFBhcmFtZXRlcjw+IHR5cGUg
PSBhcmdzWzBdOworICAgIFNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0soVjhQ
YXJhbWV0ZXI8PiwgdHlwZSwgYXJnc1swXSk7CiAgICAgYm9vbCBidWJibGVzID0gYXJnc1sxXS0+
Qm9vbGVhblZhbHVlKCk7CiAgICAgYm9vbCBjYW5jZWxhYmxlID0gYXJnc1syXS0+Qm9vbGVhblZh
bHVlKCk7CiAgICAgLy8gSWYgYW55IG9mIHRoZSBwYXJhbWV0ZXJzIGFyZSBudWxsIG9yIHVuZGVm
aW5lZCwgbWFyayB0aGVtIGFzIG5vdCBwcm92aWRlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3Bw
CmluZGV4IDI2Y2M2Y2MzMGI1YTNlM2EyM2M4Mjk1YmU5NzlmMmJkYTRkOWNiODQuLjBmZWU0ZDE3
NmZkYTk2Njg3YzA1MDI2OWM4M2YyYmI0OWE5Y2M5ODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlT3JpZW50YXRpb25FdmVudEN1c3RvbS5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9t
LmNwcApAQCAtNjksNyArNjksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZXZpY2VPcmll
bnRhdGlvbkV2ZW50OjpnYW1tYUFjY2Vzc29yR2V0dGVyKHY4OjpMb2NhbDx2OAogdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0
aW9uRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERldmlj
ZU9yaWVudGF0aW9uRXZlbnQqIGltcCA9IFY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhQYXJhbWV0ZXI8PiB0eXBlID0gYXJnc1swXTsKKyAg
ICBTVFJJTkdfVE9fVjhQQVJBTUVURVJfRVhDRVBUSU9OX0JMT0NLKFY4UGFyYW1ldGVyPD4sIHR5
cGUsIGFyZ3NbMF0pOwogICAgIGJvb2wgYnViYmxlcyA9IGFyZ3NbMV0tPkJvb2xlYW5WYWx1ZSgp
OwogICAgIGJvb2wgY2FuY2VsYWJsZSA9IGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwogICAgIC8v
IElmIGFscGhhLCBiZXRhIG9yIGdhbW1hIGFyZSBudWxsIG9yIHVuZGVmaW5lZCwgbWFyayB0aGVt
IGFzIG5vdCBwcm92aWRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66209</attachid>
            <date>2010-09-01 07:20:20 -0700</date>
            <delta_ts>2010-09-02 05:29:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44678-20100901182019.patch</filename>
            <type>text/plain</type>
            <size>1693</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTQyZjlkYTc4ZWRhZjljM2MyYjFkYzRmMGFhYjFiOWRlNWM0YWRmYi4uZDk2ZWExNWMyNTc2YmQ3
MjUxYWQ0ZmM0YWUwOTU5OTRmNDEyNTkxYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wOS0wMSAgQW50
b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBpbmRlbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0Njc4CisKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKwogMjAxMC0wOS0wMSAgTmlrb2xhcyBa
aW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
aXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvclY4LnBtIGIvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQppbmRleCA3MzU3YjdmMjVjYjRkY2IxODYyZWI1YWIwZjI3ZWRmZDBiNTRjN2NkLi45OTE5ZDRl
MTIwOWMyNzAyZmVkOWRiMzNiMzg0ODgxNmY4ODE3YWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMzMzAsMTIgKzMzMzAsMTIgQEAgc3ViIENv
bnZlcnRUb1Y4UGFyYW1ldGVyCiAKICAgICBkaWUgIldyb25nIG5hdGl2ZSB0eXBlIHBhc3NlZDog
JG5hdGl2ZVR5cGUiIHVubGVzcyAkbmF0aXZlVHlwZSA9fiAvXlY4UGFyYW1ldGVyLzsKICAgICBp
ZiAoJHNpZ25hdHVyZS0+dHlwZSBlcSAiRE9NU3RyaW5nIikgewotICAgICAgbXkgJG1hY3JvID0g
IlNUUklOR19UT19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0siOwotICAgICAgJG1hY3JvIC49
ICJfJHN1ZmZpeCIgaWYgJHN1ZmZpeDsKLSAgICAgIHJldHVybiAiJG1hY3JvKCRuYXRpdmVUeXBl
LCAkdmFyaWFibGVOYW1lLCAkdmFsdWUpOyIKKyAgICAgICAgbXkgJG1hY3JvID0gIlNUUklOR19U
T19WOFBBUkFNRVRFUl9FWENFUFRJT05fQkxPQ0siOworICAgICAgICAkbWFjcm8gLj0gIl8kc3Vm
Zml4IiBpZiAkc3VmZml4OworICAgICAgICByZXR1cm4gIiRtYWNybygkbmF0aXZlVHlwZSwgJHZh
cmlhYmxlTmFtZSwgJHZhbHVlKTsiCiAgICAgfSBlbHNlIHsKLSAgICAgICMgRG9uJ3Qga25vdyBo
b3cgdG8gcHJvcGVybHkgY2hlY2sgZm9yIGNvbnZlcnNpb24gZXhjZXB0aW9ucyB3aGVuICRwYXJh
bWV0ZXItPnR5cGUgaXMgIkRPTVVzZXJEYXRhIgotICAgICAgcmV0dXJuICIkbmF0aXZlVHlwZSAk
dmFyaWFibGVOYW1lKCR2YWx1ZSwgdHJ1ZSk7IjsKKyAgICAgICAgIyBEb24ndCBrbm93IGhvdyB0
byBwcm9wZXJseSBjaGVjayBmb3IgY29udmVyc2lvbiBleGNlcHRpb25zIHdoZW4gJHBhcmFtZXRl
ci0+dHlwZSBpcyAiRE9NVXNlckRhdGEiCisgICAgICAgIHJldHVybiAiJG5hdGl2ZVR5cGUgJHZh
cmlhYmxlTmFtZSgkdmFsdWUsIHRydWUpOyI7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>