<?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>68044</bug_id>
          
          <creation_ts>2011-09-13 17:12:25 -0700</creation_ts>
          <short_desc>Replace old strtod with new strtod</short_desc>
          <delta_ts>2012-02-22 13:22:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78774</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>christian.webkit</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>kenneth</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>466710</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-13 17:12:25 -0700</bug_when>
    <thetext>As part of the transition from the old dtoa library to the new dtoa library, we need to replace strtod.  I don&apos;t expect this to be much of a performance change, but it&apos;s a necessary step to deprecate the old code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467255</commentid>
    <comment_count>1</comment_count>
      <attachid>107376</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-14 12:40:30 -0700</bug_when>
    <thetext>Created attachment 107376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467407</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-14 15:28:47 -0700</bug_when>
    <thetext>I don&apos;t expect a perf. change either, but probably worth posting perf test numbers just in case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467477</commentid>
    <comment_count>3</comment_count>
      <attachid>107422</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-14 16:50:51 -0700</bug_when>
    <thetext>Created attachment 107422
Benchmark results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467886</commentid>
    <comment_count>4</comment_count>
      <attachid>107376</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 10:14:24 -0700</bug_when>
    <thetext>Comment on attachment 107376
Patch

Attachment 107376 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9685135

New failing tests:
fast/forms/range/input-valueasnumber-range.html
fast/forms/ValidityState-typeMismatch-number.html
fast/forms/input-valueasnumber-number.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467953</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-15 11:41:58 -0700</bug_when>
    <thetext>&gt; New failing tests:
&gt; fast/forms/range/input-valueasnumber-range.html
&gt; fast/forms/ValidityState-typeMismatch-number.html
&gt; fast/forms/input-valueasnumber-number.html

Are these real failures?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467956</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-15 11:45:23 -0700</bug_when>
    <thetext>&gt; Are these real failures?

To be clearer (in the spirit of webkit-dev discussion about ambiguous comments), I believe that determining whether these are real failures is a blocking issue for landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467962</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-15 11:50:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Are these real failures?
&gt; 
&gt; To be clearer (in the spirit of webkit-dev discussion about ambiguous comments), I believe that determining whether these are real failures is a blocking issue for landing this patch.

Yes, they&apos;re real failures.  Currently working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467966</commentid>
    <comment_count>8</comment_count>
      <attachid>107376</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-15 11:52:30 -0700</bug_when>
    <thetext>Comment on attachment 107376
Patch

r- due to test failures.

Why did this fail on Chromium only? Is there something unique about the Chromium build here? If so, perhaps a Chromium maintainer can help with this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467970</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-09-15 11:58:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 107376 [details])
&gt; r- due to test failures.
&gt; 
&gt; Why did this fail on Chromium only? Is there something unique about the Chromium build here? If so, perhaps a Chromium maintainer can help with this.

I believe Chromium EWS is the only bot that runs regression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554973</commentid>
    <comment_count>10</comment_count>
      <attachid>126705</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-12 20:29:15 -0800</bug_when>
    <thetext>Created attachment 126705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554977</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-12 20:31:37 -0800</bug_when>
    <thetext>Attachment 126705 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/WTFString.cpp:1057:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554980</commentid>
    <comment_count>12</comment_count>
      <attachid>126705</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-12 20:43:41 -0800</bug_when>
    <thetext>Comment on attachment 126705
Patch

Attachment 126705 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11509598</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554981</commentid>
    <comment_count>13</comment_count>
      <attachid>126705</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-12 20:45:49 -0800</bug_when>
    <thetext>Comment on attachment 126705
Patch

Attachment 126705 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11511335</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554982</commentid>
    <comment_count>14</comment_count>
      <attachid>126705</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-12 20:47:28 -0800</bug_when>
    <thetext>Comment on attachment 126705
Patch

Attachment 126705 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11509599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554984</commentid>
    <comment_count>15</comment_count>
      <attachid>126708</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-12 20:49:56 -0800</bug_when>
    <thetext>Created attachment 126708
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554985</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-12 20:51:49 -0800</bug_when>
    <thetext>Attachment 126708 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/wtf/text/WTFString.cpp:1058:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554994</commentid>
    <comment_count>17</comment_count>
      <attachid>126708</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-12 21:21:05 -0800</bug_when>
    <thetext>Comment on attachment 126708
Patch

Attachment 126708 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11511348

New failing tests:
media/media-fragments/TC0070-TC0079.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555417</commentid>
    <comment_count>18</comment_count>
      <attachid>126708</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-02-13 11:26:01 -0800</bug_when>
    <thetext>Comment on attachment 126708
Patch

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

Can you post performance results?

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        It&apos;s takes a template argument to allow clients to determine statically whether it should allow 

Typo: &quot;It&apos;s&quot; should be &quot;It&quot;.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:1331
&gt; +                tokenData-&gt;doubleValue = WTF::strtod&lt;true&gt;(reinterpret_cast&lt;const char*&gt;(m_buffer8.data()), 0);

The WebKit style is to use bool in cases where the value is usually in a named variable, but to use a named enumeration in other cases, for readability. You should use a named enumeration in your template parameter, rather than bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555656</commentid>
    <comment_count>19</comment_count>
      <attachid>126846</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-13 15:09:53 -0800</bug_when>
    <thetext>Created attachment 126846
Bencher results

Mostly a wash, maybe a tiny bit faster overall.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555680</commentid>
    <comment_count>20</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-13 15:38:59 -0800</bug_when>
    <thetext>Committed r107625: &lt;http://trac.webkit.org/changeset/107625&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555845</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-02-13 18:40:57 -0800</bug_when>
    <thetext>Committed r107659: &lt;http://trac.webkit.org/changeset/107659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556112</commentid>
    <comment_count>22</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-14 01:48:40 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Committed r107625: &lt;http://trac.webkit.org/changeset/107625&gt;

It broke 3 tests on Qt:

--- /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-67-expected.txt 
+++ /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-67-actual.txt 
@@ -1,3 +1,3 @@
-CONSOLE MESSAGE: line 3: Viewport argument value &quot;100;&quot; for key &quot;width&quot; was truncated to its numeric prefix.
+CONSOLE MESSAGE: line 3: Viewport argument value &quot;100;&quot; for key &quot;width&quot; not recognized. Content ignored.
 viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
 

--- /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-68-expected.txt 
+++ /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-68-actual.txt 
@@ -1,3 +1,3 @@
-CONSOLE MESSAGE: line 3: Viewport argument value &quot;100x&quot; for key &quot;width&quot; was truncated to its numeric prefix.
+CONSOLE MESSAGE: line 3: Viewport argument value &quot;100x&quot; for key &quot;width&quot; not recognized. Content ignored.
 viewport size 320x352 scale 1.000000 with limits [1.000000, 5.000000] and userScalable -1.000000
 

--- /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-warnings-5-expected.txt 
+++ /home/webkitbuildbot/slaves/release32bit-NRWT/buildslave/qt-linux-32-release-NRWT/build/layout-test-results/fast/viewport/viewport-warnings-5-actual.txt 
@@ -1,6 +1,6 @@
 CONSOLE MESSAGE: line 3: Viewport argument value &quot;device-width;&quot; for key &quot;width&quot; not recognized. Content ignored.
-CONSOLE MESSAGE: line 3: Viewport argument value &quot;1.0;&quot; for key &quot;initial-scale&quot; was truncated to its numeric prefix.
-CONSOLE MESSAGE: line 3: Viewport argument value &quot;1.0;&quot; for key &quot;maximum-scale&quot; was truncated to its numeric prefix.
-CONSOLE MESSAGE: line 3: Viewport argument value &quot;0;&quot; for key &quot;user-scalable&quot; was truncated to its numeric prefix.
-viewport size 320x352 scale 1.000000 with limits [1.000000, 1.000000] and userScalable 0.000000
+CONSOLE MESSAGE: line 3: Viewport argument value &quot;1.0;&quot; for key &quot;initial-scale&quot; not recognized. Content ignored.
+CONSOLE MESSAGE: line 3: Viewport argument value &quot;1.0;&quot; for key &quot;maximum-scale&quot; not recognized. Content ignored.
+CONSOLE MESSAGE: line 3: Viewport argument value &quot;0;&quot; for key &quot;user-scalable&quot; not recognized. Content ignored.
+viewport size 1280x1408 scale 0.250000 with limits [0.250000, 0.250000] and userScalable 0.000000</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556128</commentid>
    <comment_count>23</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-14 02:07:21 -0800</bug_when>
    <thetext>I skipped them to make our bots happier - http://trac.webkit.org/changeset/107692

Please unskip them with the proper fix. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556312</commentid>
    <comment_count>24</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-14 08:11:21 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #20)
&gt; &gt; Committed r107625: &lt;http://trac.webkit.org/changeset/107625&gt;
&gt; 
&gt; It broke 3 tests on Qt:
&gt; 

And GTK :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557313</commentid>
    <comment_count>25</comment_count>
    <who name="Christian Sejersen">christian.webkit</who>
    <bug_when>2012-02-15 09:10:43 -0800</bug_when>
    <thetext>When using the viewport meta tag the standard [1] specifies the use of commas for keyword values. Android originally allowed the use of semicolon - making the use widespread - and iPhone still supports it (due to allowing trailing junk) so there are still many websites using semicolon (plus the fact that Windows Phone only supports semicolon).

The bug comes from ViewportArguments::numericPrefix that uses toFloat that calls strtod. The patch below fixes the viewport issue, but I don&apos;t know if it breaks other things, as the code explicitly set it to not allowing trailing junk.

[1] http://dev.w3.org/html5/spec/Overview.html#the-meta-element

diff --git a/Source/JavaScriptCore/wtf/text/WTFString.cpp b/Source/JavaScriptCore/wtf/text/WTFString.cpp
index 8e0ea32..a8f90fc 100644
--- a/Source/JavaScriptCore/wtf/text/WTFString.cpp
+++ b/Source/JavaScriptCore/wtf/text/WTFString.cpp
@@ -1053,7 +1053,7 @@ static inline double toDoubleType(const CharType* data, size_t length, bool* ok,
     bytes[length] = &apos;\0&apos;;
     char* start = bytes.data();
     char* end;
-    double val = WTF::strtod&lt;WTF::DisallowTrailingJunk&gt;(start, &amp;end);
+    double val = WTF::strtod&lt;WTF::AllowTrailingJunk&gt;(start, &amp;end);
     if (ok)
         *ok = (end == 0 || *end == &apos;\0&apos;) &amp;&amp; !isnan(val);
     if (didReadNumber)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557316</commentid>
    <comment_count>26</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-02-15 09:19:14 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; When using the viewport meta tag the standard [1] specifies the use of commas for keyword values. Android originally allowed the use of semicolon - making the use widespread - and iPhone still supports it (due to allowing trailing junk) so there are still many websites using semicolon (plus the fact that Windows Phone only supports semicolon).

So the spec mandates to separate the values on comma. WebKit additionally supports splitting on spaces.

Android shipped with support for splitting using ; as well, making it somewhat widespread in viewport meta tag examples, especially as &quot;; &quot; worked on iOS due to the fact that iOS splits on spaces (due to WebKit) and ignored the ; as trailing junk.

Now that Windows Phone supports viewport meta tag using the &quot;;&quot; and advertising that in their documentation/blog posts, it seems that the ; unfortunately is becoming even more popular (it is even used on www.html5test.com).

The above patch breaks numericPrefix using by the viewport handling, as it no longer supports the trailing junk, which is going to break numerous pages on mobile browsers.

The main difference in supporting &quot;;&quot; as a separator (already shot down in other bug reports) and not supporting it, is that we would parse things like &quot;width=320;initial-scale=1&quot; like intended, where the trailing junk support would only parse the width = 320 and ignore the rest as garbage due to no space following the ;. This is a very minor problem as most sites using ; follows it by a space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559315</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-17 10:41:51 -0800</bug_when>
    <thetext>I *believe* this should be fixed in ToT. Could somebody please verify?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562317</commentid>
    <comment_count>28</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-02-22 13:22:24 -0800</bug_when>
    <thetext>Due to radio silence, I&apos;ll assume everything is good.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107376</attachid>
            <date>2011-09-14 12:40:30 -0700</date>
            <delta_ts>2012-02-12 20:29:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68044-20110914124029.patch</filename>
            <type>text/plain</type>
            <size>17699</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwOTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE4
ODFlZjM2M2MxOWNjOWYzZGEwMzFiY2FmY2I2OGM5MGE3ZmE5YTUuLmI0MzM2ZDAzODEwNTUyZmUw
YmFlMzYzZWVlYzM5ZGI3NDBiMmY5N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTA5LTE0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBvbGQgc3RydG9kIHdpdGggbmV3IHN0cnRvZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwNDQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlZCBvbGQg
c3RydG9kIHdpdGggdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBuZXcgZHRvYSAKKyAg
ICAgICAgbGlicmFyeS4gIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBpbiBvcmRlciB0byBkZXByZWNh
dGUgdGhlIG9sZCBkdG9hIAorICAgICAgICBsaWJyYXJ5LiAgTm8gc2lnbmlmaWNhbnQgZWZmZWN0
cyBvbiBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIHd0Zi9kdG9hLmNwcDoKKyAgICAgICAgKFdU
Rjo6c3RydG9kKToKKwogMjAxMS0wOS0xNCAgSWFpbiBNZXJyaWNrICA8aHVza3lAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBIYXNoVHJhaXRzLmggc2hvdWxkIGluY2x1ZGUgdGVtcGxhdGUgc3BlY2lh
bGl6YXRpb24gZm9yIFdURjo6U3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL2R0b2EuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmNwcAppbmRl
eCA5N2Q1N2YzMWM5ZTNjMzQyMTdkOTRmMDRkODI0MTY0ZWNjOTIzOTk3Li45Y2Y4ZDdmODUyNDE4
NjQ2N2EyZTYyMDg0NTg3NGE4ZTBhZDllNjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL2R0b2EuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5j
cHAKQEAgLTgxLDYgKzgxLDcgQEAKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL2R0b2EvZG91YmxlLWNvbnZlcnNpb24u
aD4KKyNpbmNsdWRlIDx3dGYvZHRvYS9kb3VibGUuaD4KIAogI2lmIENPTVBJTEVSKE1TVkMpCiAj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI0NCkKQEAgLTIzMCwyNSArMjMxLDYgQEAgc3RhdGlj
IHZvaWQgbXVsdGFkZChCaWdJbnQmIGIsIGludCBtLCBpbnQgYSkgICAgLyogbXVsdGlwbHkgYnkg
bSBhbmQgYWRkIGEgKi8KICAgICAgICAgYi5hcHBlbmQoKHVpbnQzMl90KWNhcnJ5KTsKIH0KIAot
c3RhdGljIHZvaWQgczJiKEJpZ0ludCYgYiwgY29uc3QgY2hhciogcywgaW50IG5kMCwgaW50IG5k
LCB1aW50MzJfdCB5OSkKLXsKLSAgICBiLnNpZ24gPSAwOwotICAgIGIucmVzaXplKDEpOwotICAg
IGIud29yZHMoKVswXSA9IHk5OwotCi0gICAgaW50IGkgPSA5OwotICAgIGlmICg5IDwgbmQwKSB7
Ci0gICAgICAgIHMgKz0gOTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgbXVsdGFkZChiLCAx
MCwgKnMrKyAtICcwJyk7Ci0gICAgICAgIH0gd2hpbGUgKCsraSA8IG5kMCk7Ci0gICAgICAgIHMr
KzsKLSAgICB9IGVsc2UKLSAgICAgICAgcyArPSAxMDsKLSAgICBmb3IgKDsgaSA8IG5kOyBpKysp
Ci0gICAgICAgIG11bHRhZGQoYiwgMTAsICpzKysgLSAnMCcpOwotfQotCiBzdGF0aWMgaW50IGhp
MGJpdHModWludDMyX3QgeCkKIHsKICAgICBpbnQgayA9IDA7CkBAIC02MTMsNTcgKzU5NSw2IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZGlmZihCaWdJbnQmIGMsIGNvbnN0IEJpZ0ludCYg
YVJlZiwgY29uc3QgQmlnSW50JiBiUmVmCiAgICAgYy5yZXNpemUod2EpOwogfQogCi1zdGF0aWMg
ZG91YmxlIHVscChVICp4KQotewotICAgIHJlZ2lzdGVyIGludDMyX3QgTDsKLSAgICBVIHU7Ci0K
LSAgICBMID0gKHdvcmQwKHgpICYgRXhwX21hc2spIC0gKFAgLSAxKSAqIEV4cF9tc2sxOwotICAg
ICAgICB3b3JkMCgmdSkgPSBMOwotICAgICAgICB3b3JkMSgmdSkgPSAwOwotICAgIHJldHVybiBk
dmFsKCZ1KTsKLX0KLQotc3RhdGljIGRvdWJsZSBiMmQoY29uc3QgQmlnSW50JiBhLCBpbnQqIGUp
Ci17Ci0gICAgY29uc3QgdWludDMyX3QqIHhhOwotICAgIGNvbnN0IHVpbnQzMl90KiB4YTA7Ci0g
ICAgdWludDMyX3QgdzsKLSAgICB1aW50MzJfdCB5OwotICAgIHVpbnQzMl90IHo7Ci0gICAgaW50
IGs7Ci0gICAgVSBkOwotCi0jZGVmaW5lIGQwIHdvcmQwKCZkKQotI2RlZmluZSBkMSB3b3JkMSgm
ZCkKLQotICAgIHhhMCA9IGEud29yZHMoKTsKLSAgICB4YSA9IHhhMCArIGEuc2l6ZSgpOwotICAg
IHkgPSAqLS14YTsKLSAgICBBU1NFUlQoeSk7Ci0gICAgayA9IGhpMGJpdHMoeSk7Ci0gICAgKmUg
PSAzMiAtIGs7Ci0gICAgaWYgKGsgPCBFYml0cykgewotICAgICAgICBkMCA9IEV4cF8xIHwgKHkg
Pj4gKEViaXRzIC0gaykpOwotICAgICAgICB3ID0geGEgPiB4YTAgPyAqLS14YSA6IDA7Ci0gICAg
ICAgIGQxID0gKHkgPDwgKDMyIC0gRWJpdHMgKyBrKSkgfCAodyA+PiAoRWJpdHMgLSBrKSk7Ci0g
ICAgICAgIGdvdG8gcmV0dXJuRDsKLSAgICB9Ci0gICAgeiA9IHhhID4geGEwID8gKi0teGEgOiAw
OwotICAgIGlmIChrIC09IEViaXRzKSB7Ci0gICAgICAgIGQwID0gRXhwXzEgfCAoeSA8PCBrKSB8
ICh6ID4+ICgzMiAtIGspKTsKLSAgICAgICAgeSA9IHhhID4geGEwID8gKi0teGEgOiAwOwotICAg
ICAgICBkMSA9ICh6IDw8IGspIHwgKHkgPj4gKDMyIC0gaykpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGQwID0gRXhwXzEgfCB5OwotICAgICAgICBkMSA9IHo7Ci0gICAgfQotcmV0dXJuRDoKLSN1
bmRlZiBkMAotI3VuZGVmIGQxCi0gICAgcmV0dXJuIGR2YWwoJmQpOwotfQotCiBzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkIGQyYihCaWdJbnQmIGIsIFUqIGQsIGludCogZSwgaW50KiBiaXRzKQog
ewogICAgIGludCBkZSwgazsKQEAgLTcxMSwyMyArNjQyLDYgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBkMmIoQmlnSW50JiBiLCBVKiBkLCBpbnQqIGUsIGludCogYml0cykKICN1bmRlZiBk
MAogI3VuZGVmIGQxCiAKLXN0YXRpYyBkb3VibGUgcmF0aW8oY29uc3QgQmlnSW50JiBhLCBjb25z
dCBCaWdJbnQmIGIpCi17Ci0gICAgVSBkYSwgZGI7Ci0gICAgaW50IGssIGthLCBrYjsKLQotICAg
IGR2YWwoJmRhKSA9IGIyZChhLCAma2EpOwotICAgIGR2YWwoJmRiKSA9IGIyZChiLCAma2IpOwot
ICAgIGsgPSBrYSAtIGtiICsgMzIgKiAoYS5zaXplKCkgLSBiLnNpemUoKSk7Ci0gICAgaWYgKGsg
PiAwKQotICAgICAgICB3b3JkMCgmZGEpICs9IGsgKiBFeHBfbXNrMTsKLSAgICBlbHNlIHsKLSAg
ICAgICAgayA9IC1rOwotICAgICAgICB3b3JkMCgmZGIpICs9IGsgKiBFeHBfbXNrMTsKLSAgICB9
Ci0gICAgcmV0dXJuIGR2YWwoJmRhKSAvIGR2YWwoJmRiKTsKLX0KLQogc3RhdGljIGNvbnN0IGRv
dWJsZSB0ZW5zW10gPSB7CiAgICAgMWUwLCAxZTEsIDFlMiwgMWUzLCAxZTQsIDFlNSwgMWU2LCAx
ZTcsIDFlOCwgMWU5LAogICAgIDFlMTAsIDFlMTEsIDFlMTIsIDFlMTMsIDFlMTQsIDFlMTUsIDFl
MTYsIDFlMTcsIDFlMTgsIDFlMTksCkBAIC03NDcsNDQxICs2NjEsMjIgQEAgc3RhdGljIGNvbnN0
IGRvdWJsZSB0aW55dGVuc1tdID0geyAxZS0xNiwgMWUtMzIsIDFlLTY0LCAxZS0xMjgsCiAKIGRv
dWJsZSBzdHJ0b2QoY29uc3QgY2hhciogczAwLCBjaGFyKiogc2UpCiB7Ci0gICAgaW50IHNjYWxl
OwotICAgIGludCBiYjIsIGJiNSwgYmJlLCBiZDIsIGJkNSwgYmJiaXRzLCBiczIsIGMsIGRzaWdu
LAotICAgICAgICBlLCBlMSwgZXNpZ24sIGksIGosIGssIG5kLCBuZDAsIG5mLCBueiwgbnowLCBz
aWduOwotICAgIGNvbnN0IGNoYXIgKnMsICpzMCwgKnMxOwotICAgIGRvdWJsZSBhYWRqLCBhYWRq
MTsKLSAgICBVIGFhZGoyLCBhZGosIHJ2LCBydjA7Ci0gICAgaW50MzJfdCBMOwotICAgIHVpbnQz
Ml90IHksIHo7Ci0gICAgQmlnSW50IGJiLCBiYjEsIGJkLCBiZDAsIGJzLCBkZWx0YTsKLQotICAg
IHNpZ24gPSBuejAgPSBueiA9IDA7Ci0gICAgZHZhbCgmcnYpID0gMDsKLSAgICBmb3IgKHMgPSBz
MDA7IDsgcysrKSB7Ci0gICAgICAgIHN3aXRjaCAoKnMpIHsKLSAgICAgICAgY2FzZSAnLSc6Ci0g
ICAgICAgICAgICBzaWduID0gMTsKLSAgICAgICAgICAgIC8qIG5vIGJyZWFrICovCi0gICAgICAg
IGNhc2UgJysnOgotICAgICAgICAgICAgaWYgKCorK3MpCi0gICAgICAgICAgICAgICAgZ290byBi
cmVhazI7Ci0gICAgICAgICAgICAvKiBubyBicmVhayAqLwotICAgICAgICBjYXNlIDA6Ci0gICAg
ICAgICAgICBnb3RvIHJldDA7Ci0gICAgICAgIGNhc2UgJ1x0JzoKLSAgICAgICAgY2FzZSAnXG4n
OgotICAgICAgICBjYXNlICdcdic6Ci0gICAgICAgIGNhc2UgJ1xmJzoKLSAgICAgICAgY2FzZSAn
XHInOgotICAgICAgICBjYXNlICcgJzoKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgZ290byBicmVhazI7Ci0gICAgICAgIH0KLSAgICB9Ci1icmVh
azI6Ci0gICAgaWYgKCpzID09ICcwJykgewotICAgICAgICBuejAgPSAxOwotICAgICAgICB3aGls
ZSAoKisrcyA9PSAnMCcpIHsgfQotICAgICAgICBpZiAoISpzKQotICAgICAgICAgICAgZ290byBy
ZXQ7Ci0gICAgfQotICAgIHMwID0gczsKLSAgICB5ID0geiA9IDA7Ci0gICAgZm9yIChuZCA9IG5m
ID0gMDsgKGMgPSAqcykgPj0gJzAnICYmIGMgPD0gJzknOyBuZCsrLCBzKyspCi0gICAgICAgIGlm
IChuZCA8IDkpCi0gICAgICAgICAgICB5ID0gKDEwICogeSkgKyBjIC0gJzAnOwotICAgICAgICBl
bHNlIGlmIChuZCA8IDE2KQotICAgICAgICAgICAgeiA9ICgxMCAqIHopICsgYyAtICcwJzsKLSAg
ICBuZDAgPSBuZDsKLSAgICBpZiAoYyA9PSAnLicpIHsKLSAgICAgICAgYyA9ICorK3M7Ci0gICAg
ICAgIGlmICghbmQpIHsKLSAgICAgICAgICAgIGZvciAoOyBjID09ICcwJzsgYyA9ICorK3MpCi0g
ICAgICAgICAgICAgICAgbnorKzsKLSAgICAgICAgICAgIGlmIChjID4gJzAnICYmIGMgPD0gJzkn
KSB7Ci0gICAgICAgICAgICAgICAgczAgPSBzOwotICAgICAgICAgICAgICAgIG5mICs9IG56Owot
ICAgICAgICAgICAgICAgIG56ID0gMDsKLSAgICAgICAgICAgICAgICBnb3RvIGhhdmVEaWc7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBnb3RvIGRpZ0RvbmU7Ci0gICAgICAgIH0KLSAgICAg
ICAgZm9yICg7IGMgPj0gJzAnICYmIGMgPD0gJzknOyBjID0gKisrcykgewotaGF2ZURpZzoKLSAg
ICAgICAgICAgIG56Kys7Ci0gICAgICAgICAgICBpZiAoYyAtPSAnMCcpIHsKLSAgICAgICAgICAg
ICAgICBuZiArPSBuejsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbno7IGkrKykK
LSAgICAgICAgICAgICAgICAgICAgaWYgKG5kKysgPCA5KQotICAgICAgICAgICAgICAgICAgICAg
ICAgeSAqPSAxMDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobmQgPD0gREJMX0RJRyAr
IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICB6ICo9IDEwOwotICAgICAgICAgICAgICAgIGlm
IChuZCsrIDwgOSkKLSAgICAgICAgICAgICAgICAgICAgeSA9ICgxMCAqIHkpICsgYzsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChuZCA8PSBEQkxfRElHICsgMSkKLSAgICAgICAgICAgICAgICAg
ICAgeiA9ICgxMCAqIHopICsgYzsKLSAgICAgICAgICAgICAgICBueiA9IDA7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci1kaWdEb25lOgotICAgIGUgPSAwOwotICAgIGlmIChjID09
ICdlJyB8fCBjID09ICdFJykgewotICAgICAgICBpZiAoIW5kICYmICFueiAmJiAhbnowKQotICAg
ICAgICAgICAgZ290byByZXQwOwotICAgICAgICBzMDAgPSBzOwotICAgICAgICBlc2lnbiA9IDA7
Ci0gICAgICAgIHN3aXRjaCAoYyA9ICorK3MpIHsKLSAgICAgICAgY2FzZSAnLSc6Ci0gICAgICAg
ICAgICBlc2lnbiA9IDE7Ci0gICAgICAgIGNhc2UgJysnOgotICAgICAgICAgICAgYyA9ICorK3M7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7Ci0gICAgICAg
ICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgYyA9ICorK3M7Ci0gICAgICAg
ICAgICBpZiAoYyA+ICcwJyAmJiBjIDw9ICc5JykgewotICAgICAgICAgICAgICAgIEwgPSBjIC0g
JzAnOwotICAgICAgICAgICAgICAgIHMxID0gczsKLSAgICAgICAgICAgICAgICB3aGlsZSAoKGMg
PSAqKytzKSA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgICAgIEwgPSAoMTAg
KiBMKSArIGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKHMgLSBzMSA+IDggfHwgTCA+IDE5
OTk5KQotICAgICAgICAgICAgICAgICAgICAvKiBBdm9pZCBjb25mdXNpb24gZnJvbSBleHBvbmVu
dHMKLSAgICAgICAgICAgICAgICAgICAgICogc28gbGFyZ2UgdGhhdCBlIG1pZ2h0IG92ZXJmbG93
LgotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgZSA9IDE5OTk5
OyAvKiBzYWZlIGZvciAxNiBiaXQgaW50cyAqLwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgZSA9IChpbnQpTDsKLSAgICAgICAgICAgICAgICBpZiAoZXNpZ24pCi0g
ICAgICAgICAgICAgICAgICAgIGUgPSAtZTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIGUgPSAwOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHMgPSBzMDA7Ci0gICAg
fQotICAgIGlmICghbmQpIHsKLSAgICAgICAgaWYgKCFueiAmJiAhbnowKSB7Ci1yZXQwOgotICAg
ICAgICAgICAgcyA9IHMwMDsKLSAgICAgICAgICAgIHNpZ24gPSAwOwotICAgICAgICB9Ci0gICAg
ICAgIGdvdG8gcmV0OwotICAgIH0KLSAgICBlMSA9IGUgLT0gbmY7Ci0KLSAgICAvKiBOb3cgd2Ug
aGF2ZSBuZDAgZGlnaXRzLCBzdGFydGluZyBhdCBzMCwgZm9sbG93ZWQgYnkgYQotICAgICAqIGRl
Y2ltYWwgcG9pbnQsIGZvbGxvd2VkIGJ5IG5kLW5kMCBkaWdpdHMuICBUaGUgbnVtYmVyIHdlJ3Jl
Ci0gICAgICogYWZ0ZXIgaXMgdGhlIGludGVnZXIgcmVwcmVzZW50ZWQgYnkgdGhvc2UgZGlnaXRz
IHRpbWVzCi0gICAgICogMTAqKmUgKi8KLQotICAgIGlmICghbmQwKQotICAgICAgICBuZDAgPSBu
ZDsKLSAgICBrID0gbmQgPCBEQkxfRElHICsgMSA/IG5kIDogREJMX0RJRyArIDE7Ci0gICAgZHZh
bCgmcnYpID0geTsKLSAgICBpZiAoayA+IDkpCi0gICAgICAgIGR2YWwoJnJ2KSA9IHRlbnNbayAt
IDldICogZHZhbCgmcnYpICsgejsKLSAgICBpZiAobmQgPD0gREJMX0RJRykgewotICAgICAgICBp
ZiAoIWUpCi0gICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAgaWYgKGUgPiAwKSB7Ci0gICAg
ICAgICAgICBpZiAoZSA8PSBUZW5fcG1heCkgewotICAgICAgICAgICAgICAgIC8qIHJ2ID0gKi8g
cm91bmRlZF9wcm9kdWN0KGR2YWwoJnJ2KSwgdGVuc1tlXSk7Ci0gICAgICAgICAgICAgICAgZ290
byByZXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpID0gREJMX0RJRyAtIG5kOwotICAg
ICAgICAgICAgaWYgKGUgPD0gVGVuX3BtYXggKyBpKSB7Ci0gICAgICAgICAgICAgICAgLyogQSBm
YW5jaWVyIHRlc3Qgd291bGQgc29tZXRpbWVzIGxldCB1cyBkbwotICAgICAgICAgICAgICAgICAq
IHRoaXMgZm9yIGxhcmdlciBpIHZhbHVlcy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAg
ICAgICAgICBlIC09IGk7Ci0gICAgICAgICAgICAgICAgZHZhbCgmcnYpICo9IHRlbnNbaV07Ci0g
ICAgICAgICAgICAgICAgLyogcnYgPSAqLyByb3VuZGVkX3Byb2R1Y3QoZHZhbCgmcnYpLCB0ZW5z
W2VdKTsKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmIChlID49IC1UZW5fcG1heCkgewotICAgICAgICAgICAgLyogcnYgPSAqLyByb3Vu
ZGVkX3F1b3RpZW50KGR2YWwoJnJ2KSwgdGVuc1stZV0pOwotICAgICAgICAgICAgZ290byByZXQ7
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZTEgKz0gbmQgLSBrOwotCi0gICAgc2NhbGUgPSAwOwot
Ci0gICAgLyogR2V0IHN0YXJ0aW5nIGFwcHJveGltYXRpb24gPSBydiAqIDEwKiplMSAqLwotCi0g
ICAgaWYgKGUxID4gMCkgewotICAgICAgICBpZiAoKGkgPSBlMSAmIDE1KSkKLSAgICAgICAgICAg
IGR2YWwoJnJ2KSAqPSB0ZW5zW2ldOwotICAgICAgICBpZiAoZTEgJj0gfjE1KSB7Ci0gICAgICAg
ICAgICBpZiAoZTEgPiBEQkxfTUFYXzEwX0VYUCkgewotb3ZmbDoKLSNpZiBIQVZFKEVSUk5PX0gp
Ci0gICAgICAgICAgICAgICAgZXJybm8gPSBFUkFOR0U7Ci0jZW5kaWYKLSAgICAgICAgICAgICAg
ICAvKiBDYW4ndCB0cnVzdCBIVUdFX1ZBTCAqLwotICAgICAgICAgICAgICAgIHdvcmQwKCZydikg
PSBFeHBfbWFzazsKLSAgICAgICAgICAgICAgICB3b3JkMSgmcnYpID0gMDsKLSAgICAgICAgICAg
ICAgICBnb3RvIHJldDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGUxID4+PSA0OwotICAg
ICAgICAgICAgZm9yIChqID0gMDsgZTEgPiAxOyBqKyssIGUxID4+PSAxKQotICAgICAgICAgICAg
ICAgIGlmIChlMSAmIDEpCi0gICAgICAgICAgICAgICAgICAgIGR2YWwoJnJ2KSAqPSBiaWd0ZW5z
W2pdOwotICAgICAgICAvKiBUaGUgbGFzdCBtdWx0aXBsaWNhdGlvbiBjb3VsZCBvdmVyZmxvdy4g
Ki8KLSAgICAgICAgICAgIHdvcmQwKCZydikgLT0gUCAqIEV4cF9tc2sxOwotICAgICAgICAgICAg
ZHZhbCgmcnYpICo9IGJpZ3RlbnNbal07Ci0gICAgICAgICAgICBpZiAoKHogPSB3b3JkMCgmcnYp
ICYgRXhwX21hc2spID4gRXhwX21zazEgKiAoREJMX01BWF9FWFAgKyBCaWFzIC0gUCkpCi0gICAg
ICAgICAgICAgICAgZ290byBvdmZsOwotICAgICAgICAgICAgaWYgKHogPiBFeHBfbXNrMSAqIChE
QkxfTUFYX0VYUCArIEJpYXMgLSAxIC0gUCkpIHsKLSAgICAgICAgICAgICAgICAvKiBzZXQgdG8g
bGFyZ2VzdCBudW1iZXIgKi8KLSAgICAgICAgICAgICAgICAvKiAoQ2FuJ3QgdHJ1c3QgREJMX01B
WCkgKi8KLSAgICAgICAgICAgICAgICB3b3JkMCgmcnYpID0gQmlnMDsKLSAgICAgICAgICAgICAg
ICB3b3JkMSgmcnYpID0gQmlnMTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHdvcmQwKCZydikgKz0gUCAqIEV4cF9tc2sxOwotICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChl
MSA8IDApIHsKLSAgICAgICAgZTEgPSAtZTE7Ci0gICAgICAgIGlmICgoaSA9IGUxICYgMTUpKQot
ICAgICAgICAgICAgZHZhbCgmcnYpIC89IHRlbnNbaV07Ci0gICAgICAgIGlmIChlMSA+Pj0gNCkg
ewotICAgICAgICAgICAgaWYgKGUxID49IDEgPDwgbl9iaWd0ZW5zKQotICAgICAgICAgICAgICAg
IGdvdG8gdW5kZmw7Ci0gICAgICAgICAgICBpZiAoZTEgJiBTY2FsZV9CaXQpCi0gICAgICAgICAg
ICAgICAgc2NhbGUgPSAyICogUDsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGUxID4gMDsgaisr
LCBlMSA+Pj0gMSkKLSAgICAgICAgICAgICAgICBpZiAoZTEgJiAxKQotICAgICAgICAgICAgICAg
ICAgICBkdmFsKCZydikgKj0gdGlueXRlbnNbal07Ci0gICAgICAgICAgICBpZiAoc2NhbGUgJiYg
KGogPSAoMiAqIFApICsgMSAtICgod29yZDAoJnJ2KSAmIEV4cF9tYXNrKSA+PiBFeHBfc2hpZnQp
KSA+IDApIHsKLSAgICAgICAgICAgICAgICAvKiBzY2FsZWQgcnYgaXMgZGVub3JtYWw7IGNsZWFy
IGogbG93IGJpdHMgKi8KLSAgICAgICAgICAgICAgICBpZiAoaiA+PSAzMikgewotICAgICAgICAg
ICAgICAgICAgICB3b3JkMSgmcnYpID0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0g
NTMpCi0gICAgICAgICAgICAgICAgICAgICAgICB3b3JkMCgmcnYpID0gKFAgKyAyKSAqIEV4cF9t
c2sxOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB3
b3JkMCgmcnYpICY9IDB4ZmZmZmZmZmYgPDwgKGogLSAzMik7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHdvcmQxKCZydikgJj0gMHhmZmZmZmZmZiA8PCBqOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICghZHZhbCgmcnYpKSB7Ci11bmRmbDoK
LSAgICAgICAgICAgICAgICAgICAgZHZhbCgmcnYpID0gMC47Ci0jaWYgSEFWRShFUlJOT19IKQot
ICAgICAgICAgICAgICAgICAgICBlcnJubyA9IEVSQU5HRTsKLSNlbmRpZgotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHJldDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICAvKiBOb3cgdGhlIGhhcmQgcGFydCAtLSBhZGp1c3RpbmcgcnYgdG8gdGhlIGNvcnJlY3Qg
dmFsdWUuKi8KLQotICAgIC8qIFB1dCBkaWdpdHMgaW50byBiZDogdHJ1ZSB2YWx1ZSA9IGJkICog
MTBeZSAqLwotCi0gICAgczJiKGJkMCwgczAsIG5kMCwgbmQsIHkpOwotCi0gICAgZm9yICg7Oykg
ewotICAgICAgICBiZCA9IGJkMDsKLSAgICAgICAgZDJiKGJiLCAmcnYsICZiYmUsICZiYmJpdHMp
OyAgICAvKiBydiA9IGJiICogMl5iYmUgKi8KLSAgICAgICAgaTJiKGJzLCAxKTsKLQotICAgICAg
ICBpZiAoZSA+PSAwKSB7Ci0gICAgICAgICAgICBiYjIgPSBiYjUgPSAwOwotICAgICAgICAgICAg
YmQyID0gYmQ1ID0gZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJiMiA9IGJiNSA9
IC1lOwotICAgICAgICAgICAgYmQyID0gYmQ1ID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAo
YmJlID49IDApCi0gICAgICAgICAgICBiYjIgKz0gYmJlOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBiZDIgLT0gYmJlOwotICAgICAgICBiczIgPSBiYjI7Ci0gICAgICAgIGogPSBiYmUgLSBz
Y2FsZTsKLSAgICAgICAgaSA9IGogKyBiYmJpdHMgLSAxOyAgICAvKiBsb2diKHJ2KSAqLwotICAg
ICAgICBpZiAoaSA8IEVtaW4pICAgIC8qIGRlbm9ybWFsICovCi0gICAgICAgICAgICBqICs9IFAg
LSBFbWluOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBqID0gUCArIDEgLSBiYmJpdHM7Ci0g
ICAgICAgIGJiMiArPSBqOwotICAgICAgICBiZDIgKz0gajsKLSAgICAgICAgYmQyICs9IHNjYWxl
OwotICAgICAgICBpID0gYmIyIDwgYmQyID8gYmIyIDogYmQyOwotICAgICAgICBpZiAoaSA+IGJz
MikKLSAgICAgICAgICAgIGkgPSBiczI7Ci0gICAgICAgIGlmIChpID4gMCkgewotICAgICAgICAg
ICAgYmIyIC09IGk7Ci0gICAgICAgICAgICBiZDIgLT0gaTsKLSAgICAgICAgICAgIGJzMiAtPSBp
OwotICAgICAgICB9Ci0gICAgICAgIGlmIChiYjUgPiAwKSB7Ci0gICAgICAgICAgICBwb3c1bXVs
dChicywgYmI1KTsKLSAgICAgICAgICAgIG11bHQoYmIsIGJzKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAoYmIyID4gMCkKLSAgICAgICAgICAgIGxzaGlmdChiYiwgYmIyKTsKLSAgICAgICAgaWYg
KGJkNSA+IDApCi0gICAgICAgICAgICBwb3c1bXVsdChiZCwgYmQ1KTsKLSAgICAgICAgaWYgKGJk
MiA+IDApCi0gICAgICAgICAgICBsc2hpZnQoYmQsIGJkMik7Ci0gICAgICAgIGlmIChiczIgPiAw
KQotICAgICAgICAgICAgbHNoaWZ0KGJzLCBiczIpOwotICAgICAgICBkaWZmKGRlbHRhLCBiYiwg
YmQpOwotICAgICAgICBkc2lnbiA9IGRlbHRhLnNpZ247Ci0gICAgICAgIGRlbHRhLnNpZ24gPSAw
OwotICAgICAgICBpID0gY21wKGRlbHRhLCBicyk7Ci0KLSAgICAgICAgaWYgKGkgPCAwKSB7Ci0g
ICAgICAgICAgICAvKiBFcnJvciBpcyBsZXNzIHRoYW4gaGFsZiBhbiB1bHAgLS0gY2hlY2sgZm9y
Ci0gICAgICAgICAgICAgKiBzcGVjaWFsIGNhc2Ugb2YgbWFudGlzc2EgYSBwb3dlciBvZiB0d28u
Ci0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChkc2lnbiB8fCB3b3JkMSgmcnYpIHx8
IHdvcmQwKCZydikgJiBCbmRyeV9tYXNrCi0gICAgICAgICAgICAgfHwgKHdvcmQwKCZydikgJiBF
eHBfbWFzaykgPD0gKDIgKiBQICsgMSkgKiBFeHBfbXNrMQotICAgICAgICAgICAgICAgICkgewot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFk
ZWx0YS53b3JkcygpWzBdICYmIGRlbHRhLnNpemUoKSA8PSAxKSB7Ci0gICAgICAgICAgICAgICAg
LyogZXhhY3QgcmVzdWx0ICovCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBsc2hpZnQoZGVsdGEsIExvZzJQKTsKLSAgICAgICAgICAgIGlmIChjbXAo
ZGVsdGEsIGJzKSA+IDApCi0gICAgICAgICAgICAgICAgZ290byBkcm9wRG93bjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmICghaSkgewotICAgICAgICAgICAgLyog
ZXhhY3RseSBoYWxmLXdheSBiZXR3ZWVuICovCi0gICAgICAgICAgICBpZiAoZHNpZ24pIHsKLSAg
ICAgICAgICAgICAgICBpZiAoKHdvcmQwKCZydikgJiBCbmRyeV9tYXNrMSkgPT0gQm5kcnlfbWFz
azEKLSAgICAgICAgICAgICAgICAgJiYgIHdvcmQxKCZydikgPT0gKAotICAgICAgICAgICAgKHNj
YWxlICYmICh5ID0gd29yZDAoJnJ2KSAmIEV4cF9tYXNrKSA8PSAyICogUCAqIEV4cF9tc2sxKQot
ICAgICAgICA/ICgweGZmZmZmZmZmICYgKDB4ZmZmZmZmZmYgPDwgKDIgKiBQICsgMSAtICh5ID4+
IEV4cF9zaGlmdCkpKSkgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmZmZmZikp
IHsKLSAgICAgICAgICAgICAgICAgICAgLypib3VuZGFyeSBjYXNlIC0tIGluY3JlbWVudCBleHBv
bmVudCovCi0gICAgICAgICAgICAgICAgICAgIHdvcmQwKCZydikgPSAod29yZDAoJnJ2KSAmIEV4
cF9tYXNrKSArIEV4cF9tc2sxOwotICAgICAgICAgICAgICAgICAgICB3b3JkMSgmcnYpID0gMDsK
LSAgICAgICAgICAgICAgICAgICAgZHNpZ24gPSAwOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCEod29yZDAoJnJ2
KSAmIEJuZHJ5X21hc2spICYmICF3b3JkMSgmcnYpKSB7Ci1kcm9wRG93bjoKLSAgICAgICAgICAg
ICAgICAvKiBib3VuZGFyeSBjYXNlIC0tIGRlY3JlbWVudCBleHBvbmVudCAqLwotICAgICAgICAg
ICAgICAgIGlmIChzY2FsZSkgewotICAgICAgICAgICAgICAgICAgICBMID0gd29yZDAoJnJ2KSAm
IEV4cF9tYXNrOwotICAgICAgICAgICAgICAgICAgICBpZiAoTCA8PSAoMiAqIFAgKyAxKSAqIEV4
cF9tc2sxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoTCA+IChQICsgMikgKiBFeHBf
bXNrMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByb3VuZCBldmVuID09PiAqLwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFjY2VwdCBydiAqLwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogcnYgPSBz
bWFsbGVzdCBkZW5vcm1hbCAqLwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byB1bmRmbDsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBMID0gKHdvcmQwKCZydikgJiBFeHBfbWFzaykgLSBFeHBfbXNrMTsKLSAgICAgICAgICAgICAg
ICB3b3JkMCgmcnYpID0gTCB8IEJuZHJ5X21hc2sxOwotICAgICAgICAgICAgICAgIHdvcmQxKCZy
dikgPSAweGZmZmZmZmZmOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKCEod29yZDEoJnJ2KSAmIExTQikpCi0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBpZiAoZHNpZ24pCi0gICAgICAgICAgICAgICAgZHZhbCgmcnYpICs9
IHVscCgmcnYpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZHZhbCgmcnYp
IC09IHVscCgmcnYpOwotICAgICAgICAgICAgICAgIGlmICghZHZhbCgmcnYpKQotICAgICAgICAg
ICAgICAgICAgICBnb3RvIHVuZGZsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZHNpZ24g
PSAxIC0gZHNpZ247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAo
KGFhZGogPSByYXRpbyhkZWx0YSwgYnMpKSA8PSAyLikgewotICAgICAgICAgICAgaWYgKGRzaWdu
KQotICAgICAgICAgICAgICAgIGFhZGogPSBhYWRqMSA9IDEuOwotICAgICAgICAgICAgZWxzZSBp
ZiAod29yZDEoJnJ2KSB8fCB3b3JkMCgmcnYpICYgQm5kcnlfbWFzaykgewotICAgICAgICAgICAg
ICAgIGlmICh3b3JkMSgmcnYpID09IFRpbnkxICYmICF3b3JkMCgmcnYpKQotICAgICAgICAgICAg
ICAgICAgICBnb3RvIHVuZGZsOwotICAgICAgICAgICAgICAgIGFhZGogPSAxLjsKLSAgICAgICAg
ICAgICAgICBhYWRqMSA9IC0xLjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgLyogc3BlY2lhbCBjYXNlIC0tIHBvd2VyIG9mIEZMVF9SQURJWCB0byBiZSAqLwotICAgICAg
ICAgICAgICAgIC8qIHJvdW5kZWQgZG93bi4uLiAqLwotCi0gICAgICAgICAgICAgICAgaWYgKGFh
ZGogPCAyLiAvIEZMVF9SQURJWCkKLSAgICAgICAgICAgICAgICAgICAgYWFkaiA9IDEuIC8gRkxU
X1JBRElYOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYWFkaiAq
PSAwLjU7Ci0gICAgICAgICAgICAgICAgYWFkajEgPSAtYWFkajsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGFhZGogKj0gMC41OwotICAgICAgICAgICAgYWFk
ajEgPSBkc2lnbiA/IGFhZGogOiAtYWFkajsKLSAgICAgICAgfQotICAgICAgICB5ID0gd29yZDAo
JnJ2KSAmIEV4cF9tYXNrOwotCi0gICAgICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotCi0g
ICAgICAgIGlmICh5ID09IEV4cF9tc2sxICogKERCTF9NQVhfRVhQICsgQmlhcyAtIDEpKSB7Ci0g
ICAgICAgICAgICBkdmFsKCZydjApID0gZHZhbCgmcnYpOwotICAgICAgICAgICAgd29yZDAoJnJ2
KSAtPSBQICogRXhwX21zazE7Ci0gICAgICAgICAgICBhZGouZCA9IGFhZGoxICogdWxwKCZydik7
Ci0gICAgICAgICAgICBkdmFsKCZydikgKz0gYWRqLmQ7Ci0gICAgICAgICAgICBpZiAoKHdvcmQw
KCZydikgJiBFeHBfbWFzaykgPj0gRXhwX21zazEgKiAoREJMX01BWF9FWFAgKyBCaWFzIC0gUCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAod29yZDAoJnJ2MCkgPT0gQmlnMCAmJiB3b3JkMSgmcnYw
KSA9PSBCaWcxKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG92Zmw7Ci0gICAgICAgICAgICAg
ICAgd29yZDAoJnJ2KSA9IEJpZzA7Ci0gICAgICAgICAgICAgICAgd29yZDEoJnJ2KSA9IEJpZzE7
Ci0gICAgICAgICAgICAgICAgZ290byBjb250OwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
d29yZDAoJnJ2KSArPSBQICogRXhwX21zazE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAoc2NhbGUgJiYgeSA8PSAyICogUCAqIEV4cF9tc2sxKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKGFhZGogPD0gMHg3ZmZmZmZmZikgewotICAgICAgICAgICAgICAgICAgICBpZiAoKHogPSAo
dWludDMyX3QpYWFkaikgPD0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHogPSAxOwotICAg
ICAgICAgICAgICAgICAgICBhYWRqID0gejsKLSAgICAgICAgICAgICAgICAgICAgYWFkajEgPSBk
c2lnbiA/IGFhZGogOiAtYWFkajsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ZHZhbCgmYWFkajIpID0gYWFkajE7Ci0gICAgICAgICAgICAgICAgd29yZDAoJmFhZGoyKSArPSAo
MiAqIFAgKyAxKSAqIEV4cF9tc2sxIC0geTsKLSAgICAgICAgICAgICAgICBhYWRqMSA9IGR2YWwo
JmFhZGoyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFkai5kID0gYWFkajEgKiB1bHAo
JnJ2KTsKLSAgICAgICAgICAgIGR2YWwoJnJ2KSArPSBhZGouZDsKLSAgICAgICAgfQotICAgICAg
ICB6ID0gd29yZDAoJnJ2KSAmIEV4cF9tYXNrOwotICAgICAgICBpZiAoIXNjYWxlICYmIHkgPT0g
eikgewotICAgICAgICAgICAgLyogQ2FuIHdlIHN0b3Agbm93PyAqLwotICAgICAgICAgICAgTCA9
IChpbnQzMl90KWFhZGo7Ci0gICAgICAgICAgICBhYWRqIC09IEw7Ci0gICAgICAgICAgICAvKiBU
aGUgdG9sZXJhbmNlcyBiZWxvdyBhcmUgY29uc2VydmF0aXZlLiAqLwotICAgICAgICAgICAgaWYg
KGRzaWduIHx8IHdvcmQxKCZydikgfHwgd29yZDAoJnJ2KSAmIEJuZHJ5X21hc2spIHsKLSAgICAg
ICAgICAgICAgICBpZiAoYWFkaiA8IC40OTk5OTk5IHx8IGFhZGogPiAuNTAwMDAwMSkKLSAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFhZGogPCAuNDk5
OTk5OSAvIEZMVF9SQURJWCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotY29u
dDoKLSAgICAgICAge30KLSAgICB9Ci0gICAgaWYgKHNjYWxlKSB7Ci0gICAgICAgIHdvcmQwKCZy
djApID0gRXhwXzEgLSAyICogUCAqIEV4cF9tc2sxOwotICAgICAgICB3b3JkMSgmcnYwKSA9IDA7
Ci0gICAgICAgIGR2YWwoJnJ2KSAqPSBkdmFsKCZydjApOwotI2lmIEhBVkUoRVJSTk9fSCkKLSAg
ICAgICAgLyogdHJ5IHRvIGF2b2lkIHRoZSBidWcgb2YgdGVzdGluZyBhbiA4MDg3IHJlZ2lzdGVy
IHZhbHVlICovCi0gICAgICAgIGlmICghd29yZDAoJnJ2KSAmJiAhd29yZDEoJnJ2KSkKLSAgICAg
ICAgICAgIGVycm5vID0gRVJBTkdFOwotI2VuZGlmCi0gICAgfQotcmV0OgorICAgIFdURjo6ZG91
YmxlX2NvbnZlcnNpb246OlN0cmluZ1RvRG91YmxlQ29udmVydGVyIGNvbnZlcnRlcigKKyAgICAg
ICAgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXI6OkFMTE9X
X0xFQURJTkdfU1BBQ0VTIHwgCisgICAgICAgIFdURjo6ZG91YmxlX2NvbnZlcnNpb246OlN0cmlu
Z1RvRG91YmxlQ29udmVydGVyOjpBTExPV19UUkFJTElOR19TUEFDRVMgfCAKKyAgICAgICAgV1RG
Ojpkb3VibGVfY29udmVyc2lvbjo6U3RyaW5nVG9Eb3VibGVDb252ZXJ0ZXI6OkFMTE9XX1RSQUlM
SU5HX0pVTkssCisgICAgICAgIDAuMCwKKyAgICAgICAgV1RGOjpkb3VibGVfY29udmVyc2lvbjo6
RG91YmxlOjpOYU4oKSwKKyAgICAgICAgIkluZmluaXR5IiwKKyAgICAgICAgIk5hTiIpOworICAg
IGludCBwcm9jZXNzZWRDaGFyYWN0ZXJzOworICAgIGRvdWJsZSByZXN1bHQgPSBjb252ZXJ0ZXIu
U3RyaW5nVG9Eb3VibGUoczAwLCBzdHJsZW4oczAwKSArIDEsICZwcm9jZXNzZWRDaGFyYWN0ZXJz
KTsKICAgICBpZiAoc2UpCi0gICAgICAgICpzZSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KHMpOwotICAg
IHJldHVybiBzaWduID8gLWR2YWwoJnJ2KSA6IGR2YWwoJnJ2KTsKKyAgICAgICAgKnNlID0gY29u
c3RfY2FzdDxjaGFyKj4oczAwKSArIHByb2Nlc3NlZENoYXJhY3RlcnM7CisgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAorCiBzdGF0aWMgQUxXQVlTX0lOTElORSBpbnQgcXVvcmVtKEJpZ0ludCYgYiwg
QmlnSW50JiBTKQogewogICAgIHNpemVfdCBuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>107422</attachid>
            <date>2011-09-14 16:50:51 -0700</date>
            <delta_ts>2011-09-14 16:50:51 -0700</delta_ts>
            <desc>Benchmark results</desc>
            <filename>ToT_strtod_SunSpiderV8_20110914_1650_benchReport.txt</filename>
            <type>text/plain</type>
            <size>4526</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyIGFuZCBWOC4KClZNcyB0ZXN0ZWQ6CiJUb1Qi
IGF0IC9Wb2x1bWVzL0RhdGEvV2ViS2l0LXRydWUtY2xlYW4vV2ViS2l0QnVpbGQvUmVsZWFzZS9q
c2MKInN0cnRvZCIgYXQgL1ZvbHVtZXMvRGF0YS9XZWJLaXQtc3RydG9kL1dlYktpdEJ1aWxkL1Jl
bGVhc2UvanNjCgpDb2xsZWN0ZWQgMzIgc2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDgg
Vk0gaW52b2NhdGlvbnMgcGVyIGJlbmNobWFyay4gVXNlZCAxIGJlbmNobWFyayBpdGVyYXRpb24K
cGVyIFZNIGludm9jYXRpb24gZm9yIHdhcm0tdXAuIFVzZWQgdGhlIGpzYy1zcGVjaWZpYyBwcmVj
aXNlVGltZSgpIGZ1bmN0aW9uIHRvIGdldCBtaWNyb3NlY29uZC1sZXZlbAp0aW1pbmcuIFJlcG9y
dGluZyBiZW5jaG1hcmsgZXhlY3V0aW9uIHRpbWVzIHdpdGggOTUlIGNvbmZpZGVuY2UgaW50ZXJ2
YWxzIGluIG1pbGxpc2Vjb25kcy4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRvVCAgICAgICAgICAgICAgICAgICAgc3RydG9kICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIApTdW5TcGlkZXI6CiAgIDNkLWN1YmUgICAgICAgICAgICAgICAgICAgICAg
ICA4LjQ0NTMrLTAuMDMyMCAgICAgICAgICA4LjQ0MTkrLTAuMDI4OCAgICAgICAKICAgM2QtbW9y
cGggICAgICAgICAgICAgICAgICAgICAgIDguMzQ2NCstMC4wNzUxICAgICAgICAgIDguMjU5Mist
MC4wNjU5ICAgICAgICAgbWlnaHQgYmUgMS4wMTA2eCBmYXN0ZXIKICAgM2QtcmF5dHJhY2UgICAg
ICAgICAgICAgICAgICAgIDcuOTY0MCstMC4wMzg1ICAgID8gICAgIDguMDIwNSstMC4wNDQ0ICAg
ICAgID8KICAgYWNjZXNzLWJpbmFyeS10cmVlcyAgICAgICAgICAgIDIuNTI1MCstMC4wMjAyICAg
ID8gICAgIDIuNTI3MistMC4wMTY2ICAgICAgID8KICAgYWNjZXNzLWZhbm5rdWNoICAgICAgICAg
ICAgICAgMTIuOTQxMCstMC4wNDk1ICAgID8gICAgMTIuOTgwNCstMC4wNTcyICAgICAgID8KICAg
YWNjZXNzLW5ib2R5ICAgICAgICAgICAgICAgICAgIDQuOTMzNistMC4wMjYwICAgICAgICAgIDQu
OTE3OSstMC4wNDIzICAgICAgIAogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgMi45
OTM3Ky0wLjAxODYgICAgPyAgICAgMy4wMTE2Ky0wLjAxODUgICAgICAgPwogICBiaXRvcHMtM2Jp
dC1iaXRzLWluLWJ5dGUgICAgICAgMS43OTU0Ky0wLjAxMjIgICAgPyAgICAgMS43OTk1Ky0wLjAx
MTUgICAgICAgPwogICBiaXRvcHMtYml0cy1pbi1ieXRlICAgICAgICAgICAgNC41NTE2Ky0wLjA0
MjMgICAgICAgICAgNC41MjUzKy0wLjAzNzkgICAgICAgCiAgIGJpdG9wcy1iaXR3aXNlLWFuZCAg
ICAgICAgICAgICA0LjE0NjYrLTAuMDIzNCAgICA/ICAgICA0LjE1OTkrLTAuMDI2MSAgICAgICA/
CiAgIGJpdG9wcy1uc2lldmUtYml0cyAgICAgICAgICAgICA1LjczMTkrLTAuMDMzMCAgICA/ICAg
ICA1Ljc1NjYrLTAuMDM0OSAgICAgICA/CiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAgICAg
ICAyLjI3MjQrLTAuMDE1MiAgICAgICAgICAyLjI2MjQrLTAuMDE2MiAgICAgICAKICAgY3J5cHRv
LWFlcyAgICAgICAgICAgICAgICAgICAgIDYuOTQ3NSstMC4wMjAxICAgID8gICAgIDYuOTk1MCst
MC4wMzQxICAgICAgID8KICAgY3J5cHRvLW1kNSAgICAgICAgICAgICAgICAgICAgIDMuMDc3MCst
MC4wMjY5ICAgID8gICAgIDMuMDc3MystMC4wMzY4ICAgICAgID8KICAgY3J5cHRvLXNoYTEgICAg
ICAgICAgICAgICAgICAgIDIuNDc3MCstMC4wMjQ1ICAgICAgICAgIDIuNDQ4MystMC4wMjExICAg
ICAgICAgbWlnaHQgYmUgMS4wMTE3eCBmYXN0ZXIKICAgZGF0ZS1mb3JtYXQtdG9mdGUgICAgICAg
ICAgICAgMTAuOTc0NystMC4wNDcwICAgID8gICAgMTEuMDQ4NystMC4wNDgwICAgICAgID8KICAg
ZGF0ZS1mb3JtYXQteHBhcmIgICAgICAgICAgICAgIDkuMzM3OSstMC4wODIxICAgICEgICAgIDku
NzM3MSstMC4wNzM1ICAgICAgICEgZGVmaW5pdGVseSAxLjA0Mjh4IHNsb3dlcgogICBtYXRoLWNv
cmRpYyAgICAgICAgICAgICAgICAgICAgNy4xODY0Ky0wLjAzMDkgICAgPyAgICAgNy4yNDE2Ky0w
LjAzODIgICAgICAgPwogICBtYXRoLXBhcnRpYWwtc3VtcyAgICAgICAgICAgICAxMC44MjY2Ky0w
LjA0NTUgICAgICAgICAxMC43NzgzKy0wLjA0NzggICAgICAgCiAgIG1hdGgtc3BlY3RyYWwtbm9y
bSAgICAgICAgICAgICAyLjc1NTArLTAuMDE4MCAgICAgICAgICAyLjc0ODgrLTAuMDE2NyAgICAg
ICAKICAgcmVnZXhwLWRuYSAgICAgICAgICAgICAgICAgICAgMTIuNTIzNistMC4wNzQ0ICAgID8g
ICAgMTIuNTU4MCstMC4wNzA3ICAgICAgID8KICAgc3RyaW5nLWJhc2U2NCAgICAgICAgICAgICAg
ICAgIDYuNTI5NSstMC4wNDUyICAgICAgICAgIDYuNDg4MistMC4wOTIwICAgICAgIAogICBzdHJp
bmctZmFzdGEgICAgICAgICAgICAgICAgICAgOC40MzkyKy0wLjEwMTEgICAgXiAgICAgOC4xNTQw
Ky0wLjAyODYgICAgICAgXiBkZWZpbml0ZWx5IDEuMDM1MHggZmFzdGVyCiAgIHN0cmluZy10YWdj
bG91ZCAgICAgICAgICAgICAgIDEzLjI0MjcrLTAuMTQzOSAgICAgICAgIDEzLjA3MzkrLTAuMDg1
NSAgICAgICAgIG1pZ2h0IGJlIDEuMDEyOXggZmFzdGVyCiAgIHN0cmluZy11bnBhY2stY29kZSAg
ICAgICAgICAgIDIxLjE2MTgrLTAuMjA2NSAgICBeICAgIDIwLjc4MjArLTAuMTA5MCAgICAgICBe
IGRlZmluaXRlbHkgMS4wMTgzeCBmYXN0ZXIKICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAg
ICAgIDcuMzc3NistMC4xNDUxICAgID8gICAgIDcuMzkxMistMC4xMzIyICAgICAgID8KCiAgIDxh
cml0aG1ldGljPiAgICAgICAgICAgICAgICAgICA3LjI4ODYrLTAuMDIzNSAgICAgICAgICA3LjI3
NjMrLTAuMDE5MiAgICAgICAKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgIDYuMDMz
OCstMC4wMTk1ICAgICAgICAgIDYuMDI5MystMC4wMTcxICAgICAgIAogICA8aGFybW9uaWM+ICAg
ICAgICAgICAgICAgICAgICAgNC45MjEzKy0wLjAxODYgICAgICAgICAgNC45MTcyKy0wLjAxNjcg
ICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAg
ICAgICAgICAgICAgIHN0cnRvZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
Vjg6CiAgIGNyeXB0byAgICAgICAgICAgICAgICAgICAgICAgMTA0LjA3OTArLTAuMzM0MSAgICAg
ICAgMTA0LjAzNDErLTAuMzAxMSAgICAgICAKICAgZGVsdGFibHVlICAgICAgICAgICAgICAgICAg
ICAyOTkuNDg0MistMS4wNzM0ICAgID8gICAzMDEuODA3NSstMS40NTI4ICAgICAgID8KICAgZWFy
bGV5LWJveWVyICAgICAgICAgICAgICAgICAxMTMuNzE4MCstMC40MDU0ICAgID8gICAxMTQuMDkx
OSstMC41NjY4ICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgODguMTYw
MSstMC4yMjMyICAgICEgICAgODkuMDE2MSstMC40NTEyICAgICAgICEgZGVmaW5pdGVseSAxLjAw
OTd4IHNsb3dlcgogICByZWdleHAgICAgICAgICAgICAgICAgICAgICAgIDEzMC44NDI0Ky0wLjQ3
ODYgICAgICAgIDEzMC43NzQ4Ky0wLjMzMjQgICAgICAgCiAgIHJpY2hhcmRzICAgICAgICAgICAg
ICAgICAgICAgMjk4LjMyNjgrLTAuNTIwMiAgICAhICAgMzAwLjE3MjcrLTAuNjg0MCAgICAgICAh
IGRlZmluaXRlbHkgMS4wMDYyeCBzbG93ZXIKICAgc3BsYXkgICAgICAgICAgICAgICAgICAgICAg
ICAxNDkuNzA3MistMC40NzAwICAgID8gICAxNTAuMzU3NistMC43MDQ2ICAgICAgID8KCiAgIDxh
cml0aG1ldGljPiAgICAgICAgICAgICAgICAgMTY5LjE4ODIrLTAuMTg5OSAgICAhICAgMTcwLjAz
NjQrLTAuMjcxMyAgICAgICAhIGRlZmluaXRlbHkgMS4wMDUweCBzbG93ZXIKICAgPGdlb21ldHJp
Yz4gICAgICAgICAgICAgICAgICAxNTEuNDI3MSstMC4xNjY4ICAgICEgICAxNTIuMDc5MystMC4y
MzIwICAgICAgICEgZGVmaW5pdGVseSAxLjAwNDN4IHNsb3dlcgogICA8aGFybW9uaWM+ICAgICAg
ICAgICAgICAgICAgIDEzNy44OTk3Ky0wLjE2OTkgICAgISAgIDEzOC40NTMzKy0wLjI1NTQgICAg
ICAgISBkZWZpbml0ZWx5IDEuMDA0MHggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAgICAgIHN0cnRvZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAKQWxsIGJlbmNobWFya3M6CiAgIDxhcml0aG1ldGljPiAg
ICAgICAgICAgICAgICAgIDQxLjYzMDkrLTAuMDM5OCAgICAhICAgIDQxLjgwMTIrLTAuMDU4MSAg
ICAgICAhIGRlZmluaXRlbHkgMS4wMDQxeCBzbG93ZXIKICAgPGdlb21ldHJpYz4gICAgICAgICAg
ICAgICAgICAgMTEuOTUzMCstMC4wMzAxICAgID8gICAgMTEuOTU2OCstMC4wMjY4ICAgICAgID8K
ICAgPGhhcm1vbmljPiAgICAgICAgICAgICAgICAgICAgIDYuMTg2OCstMC4wMjMyICAgICAgICAg
IDYuMTgxOSstMC4wMjA5ICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126705</attachid>
            <date>2012-02-12 20:29:15 -0800</date>
            <delta_ts>2012-02-12 20:49:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68044-20120212202914.patch</filename>
            <type>text/plain</type>
            <size>22499</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
M2I0ZDRjMDYwOTU0MmZkYjJiM2NkMDg5OWRiNDNlZjA0NmI3NDEyLi5jNWJmODUxMWJhZjcyM2Nm
NDlmZjdmYTY0ZjA5NDQ3NDQwYzRmMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0wMi0xMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugb2xkIHN0cnRvZCB3aXRoIG5ldyBzdHJ0b2QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYXJzZXIvTGV4
ZXIuY3BwOiBBZGRlZCB0ZW1wbGF0ZSBhcmd1bWVudC4gVGhpcyB2ZXJzaW9uIGFsbG93cyBqdW5r
IGFmdGVyIG51bWJlcnMuCisgICAgICAgIChKU0M6Ojo6bGV4KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OnBhcnNl
SW50KToKKyAgICAgICAgKEpTQzo6anNTdHJEZWNpbWFsTGl0ZXJhbCk6CisgICAgICAgICogcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6Ojo6TGV4ZXI6Omxl
eE51bWJlcik6CisgICAgICAgICogd3RmL2R0b2EuY3BwOiBSZXBsYWNlZCBvbGQgc3RydG9kIHdp
dGggYSBuZXcgdmVyc2lvbiB0aGF0IHVzZXMgdGhlIG5ldyBTdHJpbmdUb0RvdWJsZUNvbnZlcnRl
ci4KKyAgICAgICAgSXQncyB0YWtlcyBhIHRlbXBsYXRlIGFyZ3VtZW50IHRvIGFsbG93IGNsaWVu
dHMgdG8gZGV0ZXJtaW5lIHN0YXRpY2FsbHkgd2hldGhlciBpdCBzaG91bGQgYWxsb3cgCisgICAg
ICAgIGp1bmsgYWZ0ZXIgdGhlIG51bWJlcnMgb3Igbm90LgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKFdURjo6c3RydG9kKToKKyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOiBBZGRlZCB0ZW1wbGF0ZSBhcmd1bWVu
dC4gVGhpcyB2ZXJzaW9uIGRvZXMgbm90IGFsbG93IGp1bmsgYWZ0ZXIgbnVtYmVycy4KKyAgICAg
ICAgKFdURjo6dG9Eb3VibGVUeXBlKToKKwogMjAxMi0wMi0xMiAgUmFwaGFlbCBLdWJvIGRhIENv
c3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgc291cmNl
IGZpbGVzIGluIFdURl9IRUFERVJTIHRvIFdURl9TT1VSQ0VTLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAppbmRleCBlMzhiNTI0ODBhYWExNTgyOTgyYzNhMDkxZjNkYTZiYmM4
YTViYWU4Li43MjM0Njc5Y2ExMjI1N2Q3MzAzYmFkMzhiZWI4MGQyZTBhNjhkNWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW5O
dW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIC8vIE51bGwtdGVybWluYXRlIHN0cmluZyBmb3Igc3RydG9kLgogICAgICAgICAgICAg
ICAgIG1fYnVmZmVyOC5hcHBlbmQoJ1wwJyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSA9IFdURjo6c3RydG9kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1f
YnVmZmVyOC5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gV1RGOjpzdHJ0b2Q8dHJ1ZT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9i
dWZmZXI4LmRhdGEoKSksIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG9rZW4gPSBO
VU1CRVI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA3NDg5OTBmNzhlY2U0NDE0
ZmVjYjRjZDU2NjNiNjdiZWIzZmE0ZWQ4Li40NDJlNTc0YzRlMWQ3ZjM1ZTRhZDU3ZjA3NWQ1MGZh
ZTA4OTA1ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGlj
IGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSogZGF0YSwg
aW50IHJhZGl4KQogICAgIH0KICAgICBpZiAobnVtYmVyID49IG1hbnRpc3NhT3ZlcmZsb3dMb3dl
ckJvdW5kKSB7CiAgICAgICAgIGlmIChyYWRpeCA9PSAxMCkKLSAgICAgICAgICAgIG51bWJlciA9
IFdURjo6c3RydG9kKHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdpdFBvc2l0aW9uLCBw
IC0gZmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgIG51
bWJlciA9IFdURjo6c3RydG9kPHRydWU+KHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdp
dFBvc2l0aW9uLCBwIC0gZmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCAwKTsKICAg
ICAgICAgZWxzZSBpZiAocmFkaXggPT0gMiB8fCByYWRpeCA9PSA0IHx8IHJhZGl4ID09IDggfHwg
cmFkaXggPT0gMTYgfHwgcmFkaXggPT0gMzIpCiAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUlu
dE92ZXJmbG93KHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdpdFBvc2l0aW9uLCBwIC0g
Zmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwIC0gZmlyc3REaWdpdFBvc2l0aW9u
LCByYWRpeCk7CiAgICAgfQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBkb3VibGUganNTdHJE
ZWNpbWFsTGl0ZXJhbChjb25zdCBDaGFyVHlwZSomIGRhdGEsIGNvbnN0IENoYXJUeXBlKiBlbmQp
CiAgICAgfQogICAgIGJ5dGVCdWZmZXIuYXBwZW5kKDApOwogICAgIGNoYXIqIGVuZE9mTnVtYmVy
OwotICAgIGRvdWJsZSBudW1iZXIgPSBXVEY6OnN0cnRvZChieXRlQnVmZmVyLmRhdGEoKSwgJmVu
ZE9mTnVtYmVyKTsKKyAgICBkb3VibGUgbnVtYmVyID0gV1RGOjpzdHJ0b2Q8dHJ1ZT4oYnl0ZUJ1
ZmZlci5kYXRhKCksICZlbmRPZk51bWJlcik7CiAKICAgICAvLyBDaGVjayBpZiBzdHJ0b2QgZm91
bmQgYSBudW1iZXI7IGlmIHNvIHJldHVybiBpdC4KICAgICBwdHJkaWZmX3QgY29uc3VtZWQgPSBl
bmRPZk51bWJlciAtIGJ5dGVCdWZmZXIuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBiMjJiODE1MDMxNjIwNGMzOWQ2MWNj
N2VmOTNjNjhlY2Q5MzYwNzEyLi5lODY0MjdmMDQwMTE0YTE1NmMyOWFmMThkNDFjNTA5YzJjMzFm
MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6TGV4ZXI6OmxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+CiAgICAgfQog
ICAgIGJ1ZmZlcltpXSA9IDA7CiAgICAgY2hhciogZW5kOwotICAgIHRva2VuLm51bWJlclRva2Vu
ID0gV1RGOjpzdHJ0b2QoYnVmZmVyLmRhdGEoKSwgJmVuZCk7CisgICAgdG9rZW4ubnVtYmVyVG9r
ZW4gPSBXVEY6OnN0cnRvZDx0cnVlPihidWZmZXIuZGF0YSgpLCAmZW5kKTsKICAgICBBU1NFUlQo
YnVmZmVyLmRhdGEoKSArICh0b2tlbi5lbmQgLSB0b2tlbi5zdGFydCkgPT0gZW5kKTsKICAgICBy
ZXR1cm4gVG9rTnVtYmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5jcHAKaW5kZXggMzcz
MmZlNjE0OWNmMmY4YTFmMzE1YWU4ZTU0NDQ3ZGZlZjg4ODhkNC4uNGZlMjBkMGYyYTMwNTY0OTlj
YjdmNjFlOTBmODU0NDVlY2QwMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9kdG9hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwCkBA
IC0yMjgsMjUgKzIyOCw2IEBAIHN0YXRpYyB2b2lkIG11bHRhZGQoQmlnSW50JiBiLCBpbnQgbSwg
aW50IGEpICAgIC8qIG11bHRpcGx5IGJ5IG0gYW5kIGFkZCBhICovCiAgICAgICAgIGIuYXBwZW5k
KCh1aW50MzJfdCljYXJyeSk7CiB9CiAKLXN0YXRpYyB2b2lkIHMyYihCaWdJbnQmIGIsIGNvbnN0
IGNoYXIqIHMsIGludCBuZDAsIGludCBuZCwgdWludDMyX3QgeTkpCi17Ci0gICAgYi5zaWduID0g
MDsKLSAgICBiLnJlc2l6ZSgxKTsKLSAgICBiLndvcmRzKClbMF0gPSB5OTsKLQotICAgIGludCBp
ID0gOTsKLSAgICBpZiAoOSA8IG5kMCkgewotICAgICAgICBzICs9IDk7Ci0gICAgICAgIGRvIHsK
LSAgICAgICAgICAgIG11bHRhZGQoYiwgMTAsICpzKysgLSAnMCcpOwotICAgICAgICB9IHdoaWxl
ICgrK2kgPCBuZDApOwotICAgICAgICBzKys7Ci0gICAgfSBlbHNlCi0gICAgICAgIHMgKz0gMTA7
Ci0gICAgZm9yICg7IGkgPCBuZDsgaSsrKQotICAgICAgICBtdWx0YWRkKGIsIDEwLCAqcysrIC0g
JzAnKTsKLX0KLQogc3RhdGljIGludCBoaTBiaXRzKHVpbnQzMl90IHgpCiB7CiAgICAgaW50IGsg
PSAwOwpAQCAtNjAzLDU3ICs1ODQsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpZmYo
QmlnSW50JiBjLCBjb25zdCBCaWdJbnQmIGFSZWYsIGNvbnN0IEJpZ0ludCYgYlJlZgogICAgIGMu
cmVzaXplKHdhKTsKIH0KIAotc3RhdGljIGRvdWJsZSB1bHAoVSAqeCkKLXsKLSAgICByZWdpc3Rl
ciBpbnQzMl90IEw7Ci0gICAgVSB1OwotCi0gICAgTCA9ICh3b3JkMCh4KSAmIEV4cF9tYXNrKSAt
IChQIC0gMSkgKiBFeHBfbXNrMTsKLSAgICAgICAgd29yZDAoJnUpID0gTDsKLSAgICAgICAgd29y
ZDEoJnUpID0gMDsKLSAgICByZXR1cm4gZHZhbCgmdSk7Ci19Ci0KLXN0YXRpYyBkb3VibGUgYjJk
KGNvbnN0IEJpZ0ludCYgYSwgaW50KiBlKQotewotICAgIGNvbnN0IHVpbnQzMl90KiB4YTsKLSAg
ICBjb25zdCB1aW50MzJfdCogeGEwOwotICAgIHVpbnQzMl90IHc7Ci0gICAgdWludDMyX3QgeTsK
LSAgICB1aW50MzJfdCB6OwotICAgIGludCBrOwotICAgIFUgZDsKLQotI2RlZmluZSBkMCB3b3Jk
MCgmZCkKLSNkZWZpbmUgZDEgd29yZDEoJmQpCi0KLSAgICB4YTAgPSBhLndvcmRzKCk7Ci0gICAg
eGEgPSB4YTAgKyBhLnNpemUoKTsKLSAgICB5ID0gKi0teGE7Ci0gICAgQVNTRVJUKHkpOwotICAg
IGsgPSBoaTBiaXRzKHkpOwotICAgICplID0gMzIgLSBrOwotICAgIGlmIChrIDwgRWJpdHMpIHsK
LSAgICAgICAgZDAgPSBFeHBfMSB8ICh5ID4+IChFYml0cyAtIGspKTsKLSAgICAgICAgdyA9IHhh
ID4geGEwID8gKi0teGEgOiAwOwotICAgICAgICBkMSA9ICh5IDw8ICgzMiAtIEViaXRzICsgaykp
IHwgKHcgPj4gKEViaXRzIC0gaykpOwotICAgICAgICBnb3RvIHJldHVybkQ7Ci0gICAgfQotICAg
IHogPSB4YSA+IHhhMCA/ICotLXhhIDogMDsKLSAgICBpZiAoayAtPSBFYml0cykgewotICAgICAg
ICBkMCA9IEV4cF8xIHwgKHkgPDwgaykgfCAoeiA+PiAoMzIgLSBrKSk7Ci0gICAgICAgIHkgPSB4
YSA+IHhhMCA/ICotLXhhIDogMDsKLSAgICAgICAgZDEgPSAoeiA8PCBrKSB8ICh5ID4+ICgzMiAt
IGspKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkMCA9IEV4cF8xIHwgeTsKLSAgICAgICAgZDEg
PSB6OwotICAgIH0KLXJldHVybkQ6Ci0jdW5kZWYgZDAKLSN1bmRlZiBkMQotICAgIHJldHVybiBk
dmFsKCZkKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBkMmIoQmlnSW50JiBiLCBV
KiBkLCBpbnQqIGUsIGludCogYml0cykKIHsKICAgICBpbnQgZGUsIGs7CkBAIC03MDEsMjMgKzYz
MSw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZDJiKEJpZ0ludCYgYiwgVSogZCwgaW50
KiBlLCBpbnQqIGJpdHMpCiAjdW5kZWYgZDAKICN1bmRlZiBkMQogCi1zdGF0aWMgZG91YmxlIHJh
dGlvKGNvbnN0IEJpZ0ludCYgYSwgY29uc3QgQmlnSW50JiBiKQotewotICAgIFUgZGEsIGRiOwot
ICAgIGludCBrLCBrYSwga2I7Ci0KLSAgICBkdmFsKCZkYSkgPSBiMmQoYSwgJmthKTsKLSAgICBk
dmFsKCZkYikgPSBiMmQoYiwgJmtiKTsKLSAgICBrID0ga2EgLSBrYiArIDMyICogKGEuc2l6ZSgp
IC0gYi5zaXplKCkpOwotICAgIGlmIChrID4gMCkKLSAgICAgICAgd29yZDAoJmRhKSArPSBrICog
RXhwX21zazE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGsgPSAtazsKLSAgICAgICAgd29yZDAoJmRi
KSArPSBrICogRXhwX21zazE7Ci0gICAgfQotICAgIHJldHVybiBkdmFsKCZkYSkgLyBkdmFsKCZk
Yik7Ci19Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgdGVuc1tdID0gewogICAgIDFlMCwgMWUxLCAx
ZTIsIDFlMywgMWU0LCAxZTUsIDFlNiwgMWU3LCAxZTgsIDFlOSwKICAgICAxZTEwLCAxZTExLCAx
ZTEyLCAxZTEzLCAxZTE0LCAxZTE1LCAxZTE2LCAxZTE3LCAxZTE4LCAxZTE5LApAQCAtNzM1LDQ0
MyArNjQ4LDIzIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgdGlueXRlbnNbXSA9IHsgMWUtMTYsIDFl
LTMyLCAxZS02NCwgMWUtMTI4LAogI2RlZmluZSBTY2FsZV9CaXQgMHgxMAogI2RlZmluZSBuX2Jp
Z3RlbnMgNQogCit0ZW1wbGF0ZTxib29sIGFsbG93VHJhaWxpbmdKdW5rPgogZG91YmxlIHN0cnRv
ZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSkKIHsKLSAgICBpbnQgc2NhbGU7Ci0gICAgaW50
IGJiMiwgYmI1LCBiYmUsIGJkMiwgYmQ1LCBiYmJpdHMsIGJzMiwgYywgZHNpZ24sCi0gICAgICAg
IGUsIGUxLCBlc2lnbiwgaSwgaiwgaywgbmQsIG5kMCwgbmYsIG56LCBuejAsIHNpZ247Ci0gICAg
Y29uc3QgY2hhciAqcywgKnMwLCAqczE7Ci0gICAgZG91YmxlIGFhZGosIGFhZGoxOwotICAgIFUg
YWFkajIsIGFkaiwgcnYsIHJ2MDsKLSAgICBpbnQzMl90IEw7Ci0gICAgdWludDMyX3QgeSwgejsK
LSAgICBCaWdJbnQgYmIsIGJiMSwgYmQsIGJkMCwgYnMsIGRlbHRhOwotCi0gICAgc2lnbiA9IG56
MCA9IG56ID0gMDsKLSAgICBkdmFsKCZydikgPSAwOwotICAgIGZvciAocyA9IHMwMDsgOyBzKysp
IHsKLSAgICAgICAgc3dpdGNoICgqcykgewotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAg
IHNpZ24gPSAxOwotICAgICAgICAgICAgLyogbm8gYnJlYWsgKi8KLSAgICAgICAgY2FzZSAnKyc6
Ci0gICAgICAgICAgICBpZiAoKisrcykKLSAgICAgICAgICAgICAgICBnb3RvIGJyZWFrMjsKLSAg
ICAgICAgICAgIC8qIG5vIGJyZWFrICovCi0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGdv
dG8gcmV0MDsKLSAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICBjYXNlICdcbic6Ci0gICAgICAg
IGNhc2UgJ1x2JzoKLSAgICAgICAgY2FzZSAnXGYnOgotICAgICAgICBjYXNlICdccic6Ci0gICAg
ICAgIGNhc2UgJyAnOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBnb3RvIGJyZWFrMjsKLSAgICAgICAgfQotICAgIH0KLWJyZWFrMjoKLSAgICBp
ZiAoKnMgPT0gJzAnKSB7Ci0gICAgICAgIG56MCA9IDE7Ci0gICAgICAgIHdoaWxlICgqKytzID09
ICcwJykgeyB9Ci0gICAgICAgIGlmICghKnMpCi0gICAgICAgICAgICBnb3RvIHJldDsKLSAgICB9
Ci0gICAgczAgPSBzOwotICAgIHkgPSB6ID0gMDsKLSAgICBmb3IgKG5kID0gbmYgPSAwOyAoYyA9
ICpzKSA+PSAnMCcgJiYgYyA8PSAnOSc7IG5kKyssIHMrKykKLSAgICAgICAgaWYgKG5kIDwgOSkK
LSAgICAgICAgICAgIHkgPSAoMTAgKiB5KSArIGMgLSAnMCc7Ci0gICAgICAgIGVsc2UgaWYgKG5k
IDwgMTYpCi0gICAgICAgICAgICB6ID0gKDEwICogeikgKyBjIC0gJzAnOwotICAgIG5kMCA9IG5k
OwotICAgIGlmIChjID09ICcuJykgewotICAgICAgICBjID0gKisrczsKLSAgICAgICAgaWYgKCFu
ZCkgewotICAgICAgICAgICAgZm9yICg7IGMgPT0gJzAnOyBjID0gKisrcykKLSAgICAgICAgICAg
ICAgICBueisrOwotICAgICAgICAgICAgaWYgKGMgPiAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAg
ICAgICAgICAgICBzMCA9IHM7Ci0gICAgICAgICAgICAgICAgbmYgKz0gbno7Ci0gICAgICAgICAg
ICAgICAgbnogPSAwOwotICAgICAgICAgICAgICAgIGdvdG8gaGF2ZURpZzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGdvdG8gZGlnRG9uZTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDsg
YyA+PSAnMCcgJiYgYyA8PSAnOSc7IGMgPSAqKytzKSB7Ci1oYXZlRGlnOgotICAgICAgICAgICAg
bnorKzsKLSAgICAgICAgICAgIGlmIChjIC09ICcwJykgewotICAgICAgICAgICAgICAgIG5mICs9
IG56OwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBuejsgaSsrKQotICAgICAgICAg
ICAgICAgICAgICBpZiAobmQrKyA8IDkpCi0gICAgICAgICAgICAgICAgICAgICAgICB5ICo9IDEw
OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZCA8PSBEQkxfRElHICsgMSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHogKj0gMTA7Ci0gICAgICAgICAgICAgICAgaWYgKG5kKysgPCA5
KQotICAgICAgICAgICAgICAgICAgICB5ID0gKDEwICogeSkgKyBjOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5kIDw9IERCTF9ESUcgKyAxKQotICAgICAgICAgICAgICAgICAgICB6ID0gKDEw
ICogeikgKyBjOwotICAgICAgICAgICAgICAgIG56ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLWRpZ0RvbmU6Ci0gICAgZSA9IDA7Ci0gICAgaWYgKGMgPT0gJ2UnIHx8IGMg
PT0gJ0UnKSB7Ci0gICAgICAgIGlmICghbmQgJiYgIW56ICYmICFuejApCi0gICAgICAgICAgICBn
b3RvIHJldDA7Ci0gICAgICAgIHMwMCA9IHM7Ci0gICAgICAgIGVzaWduID0gMDsKLSAgICAgICAg
c3dpdGNoIChjID0gKisrcykgewotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgIGVzaWdu
ID0gMTsKLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICBjID0gKisrczsKLSAgICAgICAg
fQotICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAgICAgICAgIHdoaWxl
IChjID09ICcwJykKLSAgICAgICAgICAgICAgICBjID0gKisrczsKLSAgICAgICAgICAgIGlmIChj
ID4gJzAnICYmIGMgPD0gJzknKSB7Ci0gICAgICAgICAgICAgICAgTCA9IGMgLSAnMCc7Ci0gICAg
ICAgICAgICAgICAgczEgPSBzOwotICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9ICorK3MpID49
ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgICAgICAgICAgICAgICAgTCA9ICgxMCAqIEwpICsgYyAt
ICcwJzsKLSAgICAgICAgICAgICAgICBpZiAocyAtIHMxID4gOCB8fCBMID4gMTk5OTkpCi0gICAg
ICAgICAgICAgICAgICAgIC8qIEF2b2lkIGNvbmZ1c2lvbiBmcm9tIGV4cG9uZW50cwotICAgICAg
ICAgICAgICAgICAgICAgKiBzbyBsYXJnZSB0aGF0IGUgbWlnaHQgb3ZlcmZsb3cuCi0gICAgICAg
ICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBlID0gMTk5OTk7IC8qIHNhZmUg
Zm9yIDE2IGJpdCBpbnRzICovCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBlID0gKGludClMOwotICAgICAgICAgICAgICAgIGlmIChlc2lnbikKLSAgICAgICAgICAg
ICAgICAgICAgZSA9IC1lOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZSA9
IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcyA9IHMwMDsKLSAgICB9Ci0gICAgaWYg
KCFuZCkgewotICAgICAgICBpZiAoIW56ICYmICFuejApIHsKLXJldDA6Ci0gICAgICAgICAgICBz
ID0gczAwOwotICAgICAgICAgICAgc2lnbiA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZ290byBy
ZXQ7Ci0gICAgfQotICAgIGUxID0gZSAtPSBuZjsKLQotICAgIC8qIE5vdyB3ZSBoYXZlIG5kMCBk
aWdpdHMsIHN0YXJ0aW5nIGF0IHMwLCBmb2xsb3dlZCBieSBhCi0gICAgICogZGVjaW1hbCBwb2lu
dCwgZm9sbG93ZWQgYnkgbmQtbmQwIGRpZ2l0cy4gIFRoZSBudW1iZXIgd2UncmUKLSAgICAgKiBh
ZnRlciBpcyB0aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSB0aG9zZSBkaWdpdHMgdGltZXMKLSAg
ICAgKiAxMCoqZSAqLwotCi0gICAgaWYgKCFuZDApCi0gICAgICAgIG5kMCA9IG5kOwotICAgIGsg
PSBuZCA8IERCTF9ESUcgKyAxID8gbmQgOiBEQkxfRElHICsgMTsKLSAgICBkdmFsKCZydikgPSB5
OwotICAgIGlmIChrID4gOSkKLSAgICAgICAgZHZhbCgmcnYpID0gdGVuc1trIC0gOV0gKiBkdmFs
KCZydikgKyB6OwotICAgIGlmIChuZCA8PSBEQkxfRElHKSB7Ci0gICAgICAgIGlmICghZSkKLSAg
ICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICBpZiAoZSA+IDApIHsKLSAgICAgICAgICAgIGlm
IChlIDw9IFRlbl9wbWF4KSB7Ci0gICAgICAgICAgICAgICAgLyogcnYgPSAqLyByb3VuZGVkX3By
b2R1Y3QoZHZhbCgmcnYpLCB0ZW5zW2VdKTsKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgPSBEQkxfRElHIC0gbmQ7Ci0gICAgICAgICAgICBp
ZiAoZSA8PSBUZW5fcG1heCArIGkpIHsKLSAgICAgICAgICAgICAgICAvKiBBIGZhbmNpZXIgdGVz
dCB3b3VsZCBzb21ldGltZXMgbGV0IHVzIGRvCi0gICAgICAgICAgICAgICAgICogdGhpcyBmb3Ig
bGFyZ2VyIGkgdmFsdWVzLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGUg
LT0gaTsKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgKj0gdGVuc1tpXTsKLSAgICAgICAgICAg
ICAgICAvKiBydiA9ICovIHJvdW5kZWRfcHJvZHVjdChkdmFsKCZydiksIHRlbnNbZV0pOwotICAg
ICAgICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KGUgPj0gLVRlbl9wbWF4KSB7Ci0gICAgICAgICAgICAvKiBydiA9ICovIHJvdW5kZWRfcXVvdGll
bnQoZHZhbCgmcnYpLCB0ZW5zWy1lXSk7Ci0gICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAg
fQotICAgIH0KLSAgICBlMSArPSBuZCAtIGs7Ci0KLSAgICBzY2FsZSA9IDA7Ci0KLSAgICAvKiBH
ZXQgc3RhcnRpbmcgYXBwcm94aW1hdGlvbiA9IHJ2ICogMTAqKmUxICovCi0KLSAgICBpZiAoZTEg
PiAwKSB7Ci0gICAgICAgIGlmICgoaSA9IGUxICYgMTUpKQotICAgICAgICAgICAgZHZhbCgmcnYp
ICo9IHRlbnNbaV07Ci0gICAgICAgIGlmIChlMSAmPSB+MTUpIHsKLSAgICAgICAgICAgIGlmIChl
MSA+IERCTF9NQVhfMTBfRVhQKSB7Ci1vdmZsOgotI2lmIEhBVkUoRVJSTk9fSCkKLSAgICAgICAg
ICAgICAgICBlcnJubyA9IEVSQU5HRTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIC8qIENhbid0
IHRydXN0IEhVR0VfVkFMICovCi0gICAgICAgICAgICAgICAgd29yZDAoJnJ2KSA9IEV4cF9tYXNr
OwotICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgIGdvdG8g
cmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZTEgPj49IDQ7Ci0gICAgICAgICAgICBm
b3IgKGogPSAwOyBlMSA+IDE7IGorKywgZTEgPj49IDEpCi0gICAgICAgICAgICAgICAgaWYgKGUx
ICYgMSkKLSAgICAgICAgICAgICAgICAgICAgZHZhbCgmcnYpICo9IGJpZ3RlbnNbal07Ci0gICAg
ICAgIC8qIFRoZSBsYXN0IG11bHRpcGxpY2F0aW9uIGNvdWxkIG92ZXJmbG93LiAqLwotICAgICAg
ICAgICAgd29yZDAoJnJ2KSAtPSBQICogRXhwX21zazE7Ci0gICAgICAgICAgICBkdmFsKCZydikg
Kj0gYmlndGVuc1tqXTsKLSAgICAgICAgICAgIGlmICgoeiA9IHdvcmQwKCZydikgJiBFeHBfbWFz
aykgPiBFeHBfbXNrMSAqIChEQkxfTUFYX0VYUCArIEJpYXMgLSBQKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIG92Zmw7Ci0gICAgICAgICAgICBpZiAoeiA+IEV4cF9tc2sxICogKERCTF9NQVhfRVhQ
ICsgQmlhcyAtIDEgLSBQKSkgewotICAgICAgICAgICAgICAgIC8qIHNldCB0byBsYXJnZXN0IG51
bWJlciAqLwotICAgICAgICAgICAgICAgIC8qIChDYW4ndCB0cnVzdCBEQkxfTUFYKSAqLwotICAg
ICAgICAgICAgICAgIHdvcmQwKCZydikgPSBCaWcwOwotICAgICAgICAgICAgICAgIHdvcmQxKCZy
dikgPSBCaWcxOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgd29yZDAoJnJ2
KSArPSBQICogRXhwX21zazE7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGUxIDwgMCkgewot
ICAgICAgICBlMSA9IC1lMTsKLSAgICAgICAgaWYgKChpID0gZTEgJiAxNSkpCi0gICAgICAgICAg
ICBkdmFsKCZydikgLz0gdGVuc1tpXTsKLSAgICAgICAgaWYgKGUxID4+PSA0KSB7Ci0gICAgICAg
ICAgICBpZiAoZTEgPj0gMSA8PCBuX2JpZ3RlbnMpCi0gICAgICAgICAgICAgICAgZ290byB1bmRm
bDsKLSAgICAgICAgICAgIGlmIChlMSAmIFNjYWxlX0JpdCkKLSAgICAgICAgICAgICAgICBzY2Fs
ZSA9IDIgKiBQOwotICAgICAgICAgICAgZm9yIChqID0gMDsgZTEgPiAwOyBqKyssIGUxID4+PSAx
KQotICAgICAgICAgICAgICAgIGlmIChlMSAmIDEpCi0gICAgICAgICAgICAgICAgICAgIGR2YWwo
JnJ2KSAqPSB0aW55dGVuc1tqXTsKLSAgICAgICAgICAgIGlmIChzY2FsZSAmJiAoaiA9ICgyICog
UCkgKyAxIC0gKCh3b3JkMCgmcnYpICYgRXhwX21hc2spID4+IEV4cF9zaGlmdCkpID4gMCkgewot
ICAgICAgICAgICAgICAgIC8qIHNjYWxlZCBydiBpcyBkZW5vcm1hbDsgY2xlYXIgaiBsb3cgYml0
cyAqLwotICAgICAgICAgICAgICAgIGlmIChqID49IDMyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoaiA+PSA1MykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHdvcmQwKCZydikgPSAoUCArIDIpICogRXhwX21zazE7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQwKCZydikg
Jj0gMHhmZmZmZmZmZiA8PCAoaiAtIDMyKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgd29yZDEoJnJ2KSAmPSAweGZmZmZmZmZmIDw8IGo7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFkdmFsKCZydikpIHsKLXVuZGZsOgotICAgICAgICAg
ICAgICAgICAgICBkdmFsKCZydikgPSAwLjsKLSNpZiBIQVZFKEVSUk5PX0gpCi0gICAgICAgICAg
ICAgICAgICAgIGVycm5vID0gRVJBTkdFOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE5v
dyB0aGUgaGFyZCBwYXJ0IC0tIGFkanVzdGluZyBydiB0byB0aGUgY29ycmVjdCB2YWx1ZS4qLwot
Ci0gICAgLyogUHV0IGRpZ2l0cyBpbnRvIGJkOiB0cnVlIHZhbHVlID0gYmQgKiAxMF5lICovCi0K
LSAgICBzMmIoYmQwLCBzMCwgbmQwLCBuZCwgeSk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAg
IGJkID0gYmQwOwotICAgICAgICBkMmIoYmIsICZydiwgJmJiZSwgJmJiYml0cyk7ICAgIC8qIHJ2
ID0gYmIgKiAyXmJiZSAqLwotICAgICAgICBpMmIoYnMsIDEpOwotCi0gICAgICAgIGlmIChlID49
IDApIHsKLSAgICAgICAgICAgIGJiMiA9IGJiNSA9IDA7Ci0gICAgICAgICAgICBiZDIgPSBiZDUg
PSBlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYmIyID0gYmI1ID0gLWU7Ci0gICAg
ICAgICAgICBiZDIgPSBiZDUgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChiYmUgPj0gMCkK
LSAgICAgICAgICAgIGJiMiArPSBiYmU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJkMiAt
PSBiYmU7Ci0gICAgICAgIGJzMiA9IGJiMjsKLSAgICAgICAgaiA9IGJiZSAtIHNjYWxlOwotICAg
ICAgICBpID0gaiArIGJiYml0cyAtIDE7ICAgIC8qIGxvZ2IocnYpICovCi0gICAgICAgIGlmIChp
IDwgRW1pbikgICAgLyogZGVub3JtYWwgKi8KLSAgICAgICAgICAgIGogKz0gUCAtIEVtaW47Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGogPSBQICsgMSAtIGJiYml0czsKLSAgICAgICAgYmIy
ICs9IGo7Ci0gICAgICAgIGJkMiArPSBqOwotICAgICAgICBiZDIgKz0gc2NhbGU7Ci0gICAgICAg
IGkgPSBiYjIgPCBiZDIgPyBiYjIgOiBiZDI7Ci0gICAgICAgIGlmIChpID4gYnMyKQotICAgICAg
ICAgICAgaSA9IGJzMjsKLSAgICAgICAgaWYgKGkgPiAwKSB7Ci0gICAgICAgICAgICBiYjIgLT0g
aTsKLSAgICAgICAgICAgIGJkMiAtPSBpOwotICAgICAgICAgICAgYnMyIC09IGk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGJiNSA+IDApIHsKLSAgICAgICAgICAgIHBvdzVtdWx0KGJzLCBiYjUp
OwotICAgICAgICAgICAgbXVsdChiYiwgYnMpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChiYjIg
PiAwKQotICAgICAgICAgICAgbHNoaWZ0KGJiLCBiYjIpOwotICAgICAgICBpZiAoYmQ1ID4gMCkK
LSAgICAgICAgICAgIHBvdzVtdWx0KGJkLCBiZDUpOwotICAgICAgICBpZiAoYmQyID4gMCkKLSAg
ICAgICAgICAgIGxzaGlmdChiZCwgYmQyKTsKLSAgICAgICAgaWYgKGJzMiA+IDApCi0gICAgICAg
ICAgICBsc2hpZnQoYnMsIGJzMik7Ci0gICAgICAgIGRpZmYoZGVsdGEsIGJiLCBiZCk7Ci0gICAg
ICAgIGRzaWduID0gZGVsdGEuc2lnbjsKLSAgICAgICAgZGVsdGEuc2lnbiA9IDA7Ci0gICAgICAg
IGkgPSBjbXAoZGVsdGEsIGJzKTsKLQotICAgICAgICBpZiAoaSA8IDApIHsKLSAgICAgICAgICAg
IC8qIEVycm9yIGlzIGxlc3MgdGhhbiBoYWxmIGFuIHVscCAtLSBjaGVjayBmb3IKLSAgICAgICAg
ICAgICAqIHNwZWNpYWwgY2FzZSBvZiBtYW50aXNzYSBhIHBvd2VyIG9mIHR3by4KLSAgICAgICAg
ICAgICAqLwotICAgICAgICAgICAgaWYgKGRzaWduIHx8IHdvcmQxKCZydikgfHwgd29yZDAoJnJ2
KSAmIEJuZHJ5X21hc2sKLSAgICAgICAgICAgICB8fCAod29yZDAoJnJ2KSAmIEV4cF9tYXNrKSA8
PSAoMiAqIFAgKyAxKSAqIEV4cF9tc2sxCi0gICAgICAgICAgICAgICAgKSB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWRlbHRhLndvcmRz
KClbMF0gJiYgZGVsdGEuc2l6ZSgpIDw9IDEpIHsKLSAgICAgICAgICAgICAgICAvKiBleGFjdCBy
ZXN1bHQgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGxzaGlmdChkZWx0YSwgTG9nMlApOwotICAgICAgICAgICAgaWYgKGNtcChkZWx0YSwgYnMp
ID4gMCkKLSAgICAgICAgICAgICAgICBnb3RvIGRyb3BEb3duOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpKSB7Ci0gICAgICAgICAgICAvKiBleGFjdGx5IGhh
bGYtd2F5IGJldHdlZW4gKi8KLSAgICAgICAgICAgIGlmIChkc2lnbikgewotICAgICAgICAgICAg
ICAgIGlmICgod29yZDAoJnJ2KSAmIEJuZHJ5X21hc2sxKSA9PSBCbmRyeV9tYXNrMQotICAgICAg
ICAgICAgICAgICAmJiAgd29yZDEoJnJ2KSA9PSAoCi0gICAgICAgICAgICAoc2NhbGUgJiYgKHkg
PSB3b3JkMCgmcnYpICYgRXhwX21hc2spIDw9IDIgKiBQICogRXhwX21zazEpCi0gICAgICAgID8g
KDB4ZmZmZmZmZmYgJiAoMHhmZmZmZmZmZiA8PCAoMiAqIFAgKyAxIC0gKHkgPj4gRXhwX3NoaWZ0
KSkpKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmKSkgewotICAgICAg
ICAgICAgICAgICAgICAvKmJvdW5kYXJ5IGNhc2UgLS0gaW5jcmVtZW50IGV4cG9uZW50Ki8KLSAg
ICAgICAgICAgICAgICAgICAgd29yZDAoJnJ2KSA9ICh3b3JkMCgmcnYpICYgRXhwX21hc2spICsg
RXhwX21zazE7Ci0gICAgICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAg
ICAgICAgICAgICBkc2lnbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoISh3b3JkMCgmcnYpICYgQm5kcnlf
bWFzaykgJiYgIXdvcmQxKCZydikpIHsKLWRyb3BEb3duOgotICAgICAgICAgICAgICAgIC8qIGJv
dW5kYXJ5IGNhc2UgLS0gZGVjcmVtZW50IGV4cG9uZW50ICovCi0gICAgICAgICAgICAgICAgaWYg
KHNjYWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIEwgPSB3b3JkMCgmcnYpICYgRXhwX21hc2s7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChMIDw9ICgyICogUCArIDEpICogRXhwX21zazEpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMID4gKFAgKyAyKSAqIEV4cF9tc2sxKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJvdW5kIGV2ZW4gPT0+ICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogYWNjZXB0IHJ2ICovCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBydiA9IHNtYWxsZXN0IGRl
bm9ybWFsICovCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVuZGZsOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEwgPSAod29y
ZDAoJnJ2KSAmIEV4cF9tYXNrKSAtIEV4cF9tc2sxOwotICAgICAgICAgICAgICAgIHdvcmQwKCZy
dikgPSBMIHwgQm5kcnlfbWFzazE7Ci0gICAgICAgICAgICAgICAgd29yZDEoJnJ2KSA9IDB4ZmZm
ZmZmZmY7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoISh3b3JkMSgmcnYpICYgTFNCKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChkc2lnbikKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgKz0gdWxwKCZydik7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgLT0gdWxwKCZy
dik7Ci0gICAgICAgICAgICAgICAgaWYgKCFkdmFsKCZydikpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gdW5kZmw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkc2lnbiA9IDEgLSBkc2ln
bjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoYWFkaiA9IHJh
dGlvKGRlbHRhLCBicykpIDw9IDIuKSB7Ci0gICAgICAgICAgICBpZiAoZHNpZ24pCi0gICAgICAg
ICAgICAgICAgYWFkaiA9IGFhZGoxID0gMS47Ci0gICAgICAgICAgICBlbHNlIGlmICh3b3JkMSgm
cnYpIHx8IHdvcmQwKCZydikgJiBCbmRyeV9tYXNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdv
cmQxKCZydikgPT0gVGlueTEgJiYgIXdvcmQwKCZydikpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gdW5kZmw7Ci0gICAgICAgICAgICAgICAgYWFkaiA9IDEuOwotICAgICAgICAgICAgICAgIGFh
ZGoxID0gLTEuOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBzcGVj
aWFsIGNhc2UgLS0gcG93ZXIgb2YgRkxUX1JBRElYIHRvIGJlICovCi0gICAgICAgICAgICAgICAg
Lyogcm91bmRlZCBkb3duLi4uICovCi0KLSAgICAgICAgICAgICAgICBpZiAoYWFkaiA8IDIuIC8g
RkxUX1JBRElYKQotICAgICAgICAgICAgICAgICAgICBhYWRqID0gMS4gLyBGTFRfUkFESVg7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBhYWRqICo9IDAuNTsKLSAg
ICAgICAgICAgICAgICBhYWRqMSA9IC1hYWRqOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgYWFkaiAqPSAwLjU7Ci0gICAgICAgICAgICBhYWRqMSA9IGRzaWdu
ID8gYWFkaiA6IC1hYWRqOwotICAgICAgICB9Ci0gICAgICAgIHkgPSB3b3JkMCgmcnYpICYgRXhw
X21hc2s7Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0KLSAgICAgICAgaWYg
KHkgPT0gRXhwX21zazEgKiAoREJMX01BWF9FWFAgKyBCaWFzIC0gMSkpIHsKLSAgICAgICAgICAg
IGR2YWwoJnJ2MCkgPSBkdmFsKCZydik7Ci0gICAgICAgICAgICB3b3JkMCgmcnYpIC09IFAgKiBF
eHBfbXNrMTsKLSAgICAgICAgICAgIGFkai5kID0gYWFkajEgKiB1bHAoJnJ2KTsKLSAgICAgICAg
ICAgIGR2YWwoJnJ2KSArPSBhZGouZDsKLSAgICAgICAgICAgIGlmICgod29yZDAoJnJ2KSAmIEV4
cF9tYXNrKSA+PSBFeHBfbXNrMSAqIChEQkxfTUFYX0VYUCArIEJpYXMgLSBQKSkgewotICAgICAg
ICAgICAgICAgIGlmICh3b3JkMCgmcnYwKSA9PSBCaWcwICYmIHdvcmQxKCZydjApID09IEJpZzEp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZmbDsKLSAgICAgICAgICAgICAgICB3b3JkMCgm
cnYpID0gQmlnMDsKLSAgICAgICAgICAgICAgICB3b3JkMSgmcnYpID0gQmlnMTsKLSAgICAgICAg
ICAgICAgICBnb3RvIGNvbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3b3JkMCgmcnYp
ICs9IFAgKiBFeHBfbXNrMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzY2Fs
ZSAmJiB5IDw9IDIgKiBQICogRXhwX21zazEpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWFkaiA8
PSAweDdmZmZmZmZmKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeiA9ICh1aW50MzJfdClh
YWRqKSA8PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgeiA9IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIGFhZGogPSB6OwotICAgICAgICAgICAgICAgICAgICBhYWRqMSA9IGRzaWduID8gYWFk
aiA6IC1hYWRqOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkdmFsKCZhYWRq
MikgPSBhYWRqMTsKLSAgICAgICAgICAgICAgICB3b3JkMCgmYWFkajIpICs9ICgyICogUCArIDEp
ICogRXhwX21zazEgLSB5OwotICAgICAgICAgICAgICAgIGFhZGoxID0gZHZhbCgmYWFkajIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRqLmQgPSBhYWRqMSAqIHVscCgmcnYpOwotICAg
ICAgICAgICAgZHZhbCgmcnYpICs9IGFkai5kOwotICAgICAgICB9Ci0gICAgICAgIHogPSB3b3Jk
MCgmcnYpICYgRXhwX21hc2s7Ci0gICAgICAgIGlmICghc2NhbGUgJiYgeSA9PSB6KSB7Ci0gICAg
ICAgICAgICAvKiBDYW4gd2Ugc3RvcCBub3c/ICovCi0gICAgICAgICAgICBMID0gKGludDMyX3Qp
YWFkajsKLSAgICAgICAgICAgIGFhZGogLT0gTDsKLSAgICAgICAgICAgIC8qIFRoZSB0b2xlcmFu
Y2VzIGJlbG93IGFyZSBjb25zZXJ2YXRpdmUuICovCi0gICAgICAgICAgICBpZiAoZHNpZ24gfHwg
d29yZDEoJnJ2KSB8fCB3b3JkMCgmcnYpICYgQm5kcnlfbWFzaykgewotICAgICAgICAgICAgICAg
IGlmIChhYWRqIDwgLjQ5OTk5OTkgfHwgYWFkaiA+IC41MDAwMDAxKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWFkaiA8IC40OTk5OTk5IC8gRkxU
X1JBRElYKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci1jb250OgotICAgICAg
ICB7fQotICAgIH0KLSAgICBpZiAoc2NhbGUpIHsKLSAgICAgICAgd29yZDAoJnJ2MCkgPSBFeHBf
MSAtIDIgKiBQICogRXhwX21zazE7Ci0gICAgICAgIHdvcmQxKCZydjApID0gMDsKLSAgICAgICAg
ZHZhbCgmcnYpICo9IGR2YWwoJnJ2MCk7Ci0jaWYgSEFWRShFUlJOT19IKQotICAgICAgICAvKiB0
cnkgdG8gYXZvaWQgdGhlIGJ1ZyBvZiB0ZXN0aW5nIGFuIDgwODcgcmVnaXN0ZXIgdmFsdWUgKi8K
LSAgICAgICAgaWYgKCF3b3JkMCgmcnYpICYmICF3b3JkMSgmcnYpKQotICAgICAgICAgICAgZXJy
bm8gPSBFUkFOR0U7Ci0jZW5kaWYKLSAgICB9Ci1yZXQ6CisgICAgZG91YmxlX2NvbnZlcnNpb246
OlN0cmluZ1RvRG91YmxlQ29udmVydGVyIGNvbnZlcnRlcigKKyAgICAgICAgKGFsbG93VHJhaWxp
bmdKdW5rID8gZG91YmxlX2NvbnZlcnNpb246OlN0cmluZ1RvRG91YmxlQ29udmVydGVyOjpBTExP
V19UUkFJTElOR19KVU5LIDogMCkgfAorICAgICAgICBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5n
VG9Eb3VibGVDb252ZXJ0ZXI6OkFMTE9XX0xFQURJTkdfU1BBQ0VTLAorICAgICAgICAwLjAsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCksICJJbmZpbml0eSIsICJOYU4i
KTsKKyAgICBpbnQgcHJvY2Vzc2VkQ2hhcmFjdGVyQ291bnQgPSAwOworICAgIGRvdWJsZSByZXN1
bHQgPSBjb252ZXJ0ZXIuU3RyaW5nVG9Eb3VibGUoczAwLCBzdHJsZW4oczAwKSwgJnByb2Nlc3Nl
ZENoYXJhY3RlckNvdW50KTsKICAgICBpZiAoc2UpCi0gICAgICAgICpzZSA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHMpOwotICAgIHJldHVybiBzaWduID8gLWR2YWwoJnJ2KSA6IGR2YWwoJnJ2KTsKKyAg
ICAgICAgKnNlID0gY29uc3RfY2FzdDxjaGFyKj4oczAwICsgcHJvY2Vzc2VkQ2hhcmFjdGVyQ291
bnQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlIGRvdWJsZSBzdHJ0b2Q8dHJ1
ZT4oY29uc3QgY2hhciosIGNoYXIqKik7Cit0ZW1wbGF0ZSBkb3VibGUgc3RydG9kPGZhbHNlPihj
b25zdCBjaGFyKiwgY2hhcioqKTsKKwogc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IHF1b3JlbShC
aWdJbnQmIGIsIEJpZ0ludCYgUykKIHsKICAgICBzaXplX3QgbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9k
dG9hLmgKaW5kZXggZDI3YzU5MjA2NDdmZDk2NTRjOGFlYjJhZTUwOTgwNjgwZGU0NzdiMC4uNjJk
Yzg4MGRhNmZhODg3MjY5Y2RjMWQzOTc3ZjUxNTMyODQxZmQwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmgKQEAgLTM3LDcgKzM3LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYVJv
dW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGIKIAogLy8g
czAwOiBpbnB1dCBzdHJpbmcuIE11c3Qgbm90IGJlIDAgYW5kIG11c3QgYmUgdGVybWluYXRlZCBi
eSAwLgogLy8gc2U6ICpzZSB3aWxsIGhhdmUgdGhlIGxhc3QgY29uc3VtZWQgY2hhcmFjdGVyIHBv
c2l0aW9uICsgMS4KLVdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIq
IHMwMCwgY2hhcioqIHNlKTsKK3RlbXBsYXRlPGJvb2wgYWxsb3dUcmFpbGluZ0p1bms+Citkb3Vi
bGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKIAogLy8gU2l6ZSA9IDgwIGZv
ciBzaXplb2YoRHRvYUJ1ZmZlcikgKyBzb21lIHNpZ24gYml0cywgZGVjaW1hbCBwb2ludCwgJ2Un
LCBleHBvbmVudCBkaWdpdHMuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxl
bmd0aCA9IDk2OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cAppbmRleCA0NDc0ODNiMDhjMmNiOTY1NmE5MzNmZTVlMmFlYzEwMzAzNmM0ODgzLi40ZTNiMGVm
YmM1NzJhNTA0YzliYWVlNTU5MDE1MzA5ZTM5ZDg1NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMTA1Miw5ICsxMDUyLDkgQEAgc3RhdGlj
IGlubGluZSBkb3VibGUgdG9Eb3VibGVUeXBlKGNvbnN0IENoYXJUeXBlKiBkYXRhLCBzaXplX3Qg
bGVuZ3RoLCBib29sKiBvaywKICAgICBieXRlc1tsZW5ndGhdID0gJ1wwJzsKICAgICBjaGFyKiBz
dGFydCA9IGJ5dGVzLmRhdGEoKTsKICAgICBjaGFyKiBlbmQ7Ci0gICAgZG91YmxlIHZhbCA9IFdU
Rjo6c3RydG9kKHN0YXJ0LCAmZW5kKTsKKyAgICBkb3VibGUgdmFsID0gV1RGOjpzdHJ0b2Q8ZmFs
c2U+KHN0YXJ0LCAmZW5kKTsKICAgICBpZiAob2spCi0gICAgICAgICpvayA9IChlbmQgPT0gMCB8
fCAqZW5kID09ICdcMCcpOworICAgICAgICAqb2sgPSAoZW5kID09IDAgfHwgKmVuZCA9PSAnXDAn
KSAmJiAhaXNuYW4odmFsKTsKICAgICBpZiAoZGlkUmVhZE51bWJlcikKICAgICAgICAgKmRpZFJl
YWROdW1iZXIgPSBlbmQgLSBzdGFydDsKICAgICByZXR1cm4gdmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126708</attachid>
            <date>2012-02-12 20:49:56 -0800</date>
            <delta_ts>2012-02-13 11:26:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68044-20120212204955.patch</filename>
            <type>text/plain</type>
            <size>22709</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
M2I0ZDRjMDYwOTU0MmZkYjJiM2NkMDg5OWRiNDNlZjA0NmI3NDEyLi5jNWJmODUxMWJhZjcyM2Nm
NDlmZjdmYTY0ZjA5NDQ3NDQwYzRmMTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0wMi0xMiAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2Ugb2xkIHN0cnRvZCB3aXRoIG5ldyBzdHJ0b2QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4MDQ0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYXJzZXIvTGV4
ZXIuY3BwOiBBZGRlZCB0ZW1wbGF0ZSBhcmd1bWVudC4gVGhpcyB2ZXJzaW9uIGFsbG93cyBqdW5r
IGFmdGVyIG51bWJlcnMuCisgICAgICAgIChKU0M6Ojo6bGV4KToKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6OnBhcnNl
SW50KToKKyAgICAgICAgKEpTQzo6anNTdHJEZWNpbWFsTGl0ZXJhbCk6CisgICAgICAgICogcnVu
dGltZS9MaXRlcmFsUGFyc2VyLmNwcDogRGl0dG8uCisgICAgICAgIChKU0M6Ojo6TGV4ZXI6Omxl
eE51bWJlcik6CisgICAgICAgICogd3RmL2R0b2EuY3BwOiBSZXBsYWNlZCBvbGQgc3RydG9kIHdp
dGggYSBuZXcgdmVyc2lvbiB0aGF0IHVzZXMgdGhlIG5ldyBTdHJpbmdUb0RvdWJsZUNvbnZlcnRl
ci4KKyAgICAgICAgSXQncyB0YWtlcyBhIHRlbXBsYXRlIGFyZ3VtZW50IHRvIGFsbG93IGNsaWVu
dHMgdG8gZGV0ZXJtaW5lIHN0YXRpY2FsbHkgd2hldGhlciBpdCBzaG91bGQgYWxsb3cgCisgICAg
ICAgIGp1bmsgYWZ0ZXIgdGhlIG51bWJlcnMgb3Igbm90LgorICAgICAgICAoV1RGKToKKyAgICAg
ICAgKFdURjo6c3RydG9kKToKKyAgICAgICAgKiB3dGYvZHRvYS5oOgorICAgICAgICAoV1RGKToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOiBBZGRlZCB0ZW1wbGF0ZSBhcmd1bWVu
dC4gVGhpcyB2ZXJzaW9uIGRvZXMgbm90IGFsbG93IGp1bmsgYWZ0ZXIgbnVtYmVycy4KKyAgICAg
ICAgKFdURjo6dG9Eb3VibGVUeXBlKToKKwogMjAxMi0wMi0xMiAgUmFwaGFlbCBLdWJvIGRhIENv
c3RhICA8a3Vib0Bwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBbQ01ha2VdIE1vdmUgc291cmNl
IGZpbGVzIGluIFdURl9IRUFERVJTIHRvIFdURl9TT1VSQ0VTLgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAppbmRleCBlMzhiNTI0ODBhYWExNTgyOTgyYzNhMDkxZjNkYTZiYmM4
YTViYWU4Li43MjM0Njc5Y2ExMjI1N2Q3MzAzYmFkMzhiZWI4MGQyZTBhNjhkNWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMTMyOCw3ICsxMzI4LDcgQEAgaW5O
dW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIC8vIE51bGwtdGVybWluYXRlIHN0cmluZyBmb3Igc3RydG9kLgogICAgICAgICAgICAg
ICAgIG1fYnVmZmVyOC5hcHBlbmQoJ1wwJyk7Ci0gICAgICAgICAgICAgICAgdG9rZW5EYXRhLT5k
b3VibGVWYWx1ZSA9IFdURjo6c3RydG9kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KG1f
YnVmZmVyOC5kYXRhKCkpLCAwKTsKKyAgICAgICAgICAgICAgICB0b2tlbkRhdGEtPmRvdWJsZVZh
bHVlID0gV1RGOjpzdHJ0b2Q8dHJ1ZT4ocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4obV9i
dWZmZXI4LmRhdGEoKSksIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdG9rZW4gPSBO
VU1CRVI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAppbmRleCA3NDg5OTBmNzhlY2U0NDE0
ZmVjYjRjZDU2NjNiNjdiZWIzZmE0ZWQ4Li40NDJlNTc0YzRlMWQ3ZjM1ZTRhZDU3ZjA3NWQ1MGZh
ZTA4OTA1ZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgc3RhdGlj
IGRvdWJsZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLCBjb25zdCBDaGFyVHlwZSogZGF0YSwg
aW50IHJhZGl4KQogICAgIH0KICAgICBpZiAobnVtYmVyID49IG1hbnRpc3NhT3ZlcmZsb3dMb3dl
ckJvdW5kKSB7CiAgICAgICAgIGlmIChyYWRpeCA9PSAxMCkKLSAgICAgICAgICAgIG51bWJlciA9
IFdURjo6c3RydG9kKHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdpdFBvc2l0aW9uLCBw
IC0gZmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCAwKTsKKyAgICAgICAgICAgIG51
bWJlciA9IFdURjo6c3RydG9kPHRydWU+KHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdp
dFBvc2l0aW9uLCBwIC0gZmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCAwKTsKICAg
ICAgICAgZWxzZSBpZiAocmFkaXggPT0gMiB8fCByYWRpeCA9PSA0IHx8IHJhZGl4ID09IDggfHwg
cmFkaXggPT0gMTYgfHwgcmFkaXggPT0gMzIpCiAgICAgICAgICAgICBudW1iZXIgPSBwYXJzZUlu
dE92ZXJmbG93KHMuc3Vic3RyaW5nU2hhcmluZ0ltcGwoZmlyc3REaWdpdFBvc2l0aW9uLCBwIC0g
Zmlyc3REaWdpdFBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBwIC0gZmlyc3REaWdpdFBvc2l0aW9u
LCByYWRpeCk7CiAgICAgfQpAQCAtMzY5LDcgKzM2OSw3IEBAIHN0YXRpYyBkb3VibGUganNTdHJE
ZWNpbWFsTGl0ZXJhbChjb25zdCBDaGFyVHlwZSomIGRhdGEsIGNvbnN0IENoYXJUeXBlKiBlbmQp
CiAgICAgfQogICAgIGJ5dGVCdWZmZXIuYXBwZW5kKDApOwogICAgIGNoYXIqIGVuZE9mTnVtYmVy
OwotICAgIGRvdWJsZSBudW1iZXIgPSBXVEY6OnN0cnRvZChieXRlQnVmZmVyLmRhdGEoKSwgJmVu
ZE9mTnVtYmVyKTsKKyAgICBkb3VibGUgbnVtYmVyID0gV1RGOjpzdHJ0b2Q8dHJ1ZT4oYnl0ZUJ1
ZmZlci5kYXRhKCksICZlbmRPZk51bWJlcik7CiAKICAgICAvLyBDaGVjayBpZiBzdHJ0b2QgZm91
bmQgYSBudW1iZXI7IGlmIHNvIHJldHVybiBpdC4KICAgICBwdHJkaWZmX3QgY29uc3VtZWQgPSBl
bmRPZk51bWJlciAtIGJ5dGVCdWZmZXIuZGF0YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRleCBiMjJiODE1MDMxNjIwNGMzOWQ2MWNj
N2VmOTNjNjhlY2Q5MzYwNzEyLi5lODY0MjdmMDQwMTE0YTE1NmMyOWFmMThkNDFjNTA5YzJjMzFm
MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2Vy
LmNwcApAQCAtNTM2LDcgKzUzNiw3IEBAIFRva2VuVHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6TGV4ZXI6OmxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW48Q2hhclR5cGU+CiAgICAgfQog
ICAgIGJ1ZmZlcltpXSA9IDA7CiAgICAgY2hhciogZW5kOwotICAgIHRva2VuLm51bWJlclRva2Vu
ID0gV1RGOjpzdHJ0b2QoYnVmZmVyLmRhdGEoKSwgJmVuZCk7CisgICAgdG9rZW4ubnVtYmVyVG9r
ZW4gPSBXVEY6OnN0cnRvZDx0cnVlPihidWZmZXIuZGF0YSgpLCAmZW5kKTsKICAgICBBU1NFUlQo
YnVmZmVyLmRhdGEoKSArICh0b2tlbi5lbmQgLSB0b2tlbi5zdGFydCkgPT0gZW5kKTsKICAgICBy
ZXR1cm4gVG9rTnVtYmVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5jcHAKaW5kZXggMzcz
MmZlNjE0OWNmMmY4YTFmMzE1YWU4ZTU0NDQ3ZGZlZjg4ODhkNC4uNGZlMjBkMGYyYTMwNTY0OTlj
YjdmNjFlOTBmODU0NDVlY2QwMmRhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9kdG9hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL2R0b2EuY3BwCkBA
IC0yMjgsMjUgKzIyOCw2IEBAIHN0YXRpYyB2b2lkIG11bHRhZGQoQmlnSW50JiBiLCBpbnQgbSwg
aW50IGEpICAgIC8qIG11bHRpcGx5IGJ5IG0gYW5kIGFkZCBhICovCiAgICAgICAgIGIuYXBwZW5k
KCh1aW50MzJfdCljYXJyeSk7CiB9CiAKLXN0YXRpYyB2b2lkIHMyYihCaWdJbnQmIGIsIGNvbnN0
IGNoYXIqIHMsIGludCBuZDAsIGludCBuZCwgdWludDMyX3QgeTkpCi17Ci0gICAgYi5zaWduID0g
MDsKLSAgICBiLnJlc2l6ZSgxKTsKLSAgICBiLndvcmRzKClbMF0gPSB5OTsKLQotICAgIGludCBp
ID0gOTsKLSAgICBpZiAoOSA8IG5kMCkgewotICAgICAgICBzICs9IDk7Ci0gICAgICAgIGRvIHsK
LSAgICAgICAgICAgIG11bHRhZGQoYiwgMTAsICpzKysgLSAnMCcpOwotICAgICAgICB9IHdoaWxl
ICgrK2kgPCBuZDApOwotICAgICAgICBzKys7Ci0gICAgfSBlbHNlCi0gICAgICAgIHMgKz0gMTA7
Ci0gICAgZm9yICg7IGkgPCBuZDsgaSsrKQotICAgICAgICBtdWx0YWRkKGIsIDEwLCAqcysrIC0g
JzAnKTsKLX0KLQogc3RhdGljIGludCBoaTBiaXRzKHVpbnQzMl90IHgpCiB7CiAgICAgaW50IGsg
PSAwOwpAQCAtNjAzLDU3ICs1ODQsNiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGRpZmYo
QmlnSW50JiBjLCBjb25zdCBCaWdJbnQmIGFSZWYsIGNvbnN0IEJpZ0ludCYgYlJlZgogICAgIGMu
cmVzaXplKHdhKTsKIH0KIAotc3RhdGljIGRvdWJsZSB1bHAoVSAqeCkKLXsKLSAgICByZWdpc3Rl
ciBpbnQzMl90IEw7Ci0gICAgVSB1OwotCi0gICAgTCA9ICh3b3JkMCh4KSAmIEV4cF9tYXNrKSAt
IChQIC0gMSkgKiBFeHBfbXNrMTsKLSAgICAgICAgd29yZDAoJnUpID0gTDsKLSAgICAgICAgd29y
ZDEoJnUpID0gMDsKLSAgICByZXR1cm4gZHZhbCgmdSk7Ci19Ci0KLXN0YXRpYyBkb3VibGUgYjJk
KGNvbnN0IEJpZ0ludCYgYSwgaW50KiBlKQotewotICAgIGNvbnN0IHVpbnQzMl90KiB4YTsKLSAg
ICBjb25zdCB1aW50MzJfdCogeGEwOwotICAgIHVpbnQzMl90IHc7Ci0gICAgdWludDMyX3QgeTsK
LSAgICB1aW50MzJfdCB6OwotICAgIGludCBrOwotICAgIFUgZDsKLQotI2RlZmluZSBkMCB3b3Jk
MCgmZCkKLSNkZWZpbmUgZDEgd29yZDEoJmQpCi0KLSAgICB4YTAgPSBhLndvcmRzKCk7Ci0gICAg
eGEgPSB4YTAgKyBhLnNpemUoKTsKLSAgICB5ID0gKi0teGE7Ci0gICAgQVNTRVJUKHkpOwotICAg
IGsgPSBoaTBiaXRzKHkpOwotICAgICplID0gMzIgLSBrOwotICAgIGlmIChrIDwgRWJpdHMpIHsK
LSAgICAgICAgZDAgPSBFeHBfMSB8ICh5ID4+IChFYml0cyAtIGspKTsKLSAgICAgICAgdyA9IHhh
ID4geGEwID8gKi0teGEgOiAwOwotICAgICAgICBkMSA9ICh5IDw8ICgzMiAtIEViaXRzICsgaykp
IHwgKHcgPj4gKEViaXRzIC0gaykpOwotICAgICAgICBnb3RvIHJldHVybkQ7Ci0gICAgfQotICAg
IHogPSB4YSA+IHhhMCA/ICotLXhhIDogMDsKLSAgICBpZiAoayAtPSBFYml0cykgewotICAgICAg
ICBkMCA9IEV4cF8xIHwgKHkgPDwgaykgfCAoeiA+PiAoMzIgLSBrKSk7Ci0gICAgICAgIHkgPSB4
YSA+IHhhMCA/ICotLXhhIDogMDsKLSAgICAgICAgZDEgPSAoeiA8PCBrKSB8ICh5ID4+ICgzMiAt
IGspKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkMCA9IEV4cF8xIHwgeTsKLSAgICAgICAgZDEg
PSB6OwotICAgIH0KLXJldHVybkQ6Ci0jdW5kZWYgZDAKLSN1bmRlZiBkMQotICAgIHJldHVybiBk
dmFsKCZkKTsKLX0KLQogc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBkMmIoQmlnSW50JiBiLCBV
KiBkLCBpbnQqIGUsIGludCogYml0cykKIHsKICAgICBpbnQgZGUsIGs7CkBAIC03MDEsMjMgKzYz
MSw2IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZDJiKEJpZ0ludCYgYiwgVSogZCwgaW50
KiBlLCBpbnQqIGJpdHMpCiAjdW5kZWYgZDAKICN1bmRlZiBkMQogCi1zdGF0aWMgZG91YmxlIHJh
dGlvKGNvbnN0IEJpZ0ludCYgYSwgY29uc3QgQmlnSW50JiBiKQotewotICAgIFUgZGEsIGRiOwot
ICAgIGludCBrLCBrYSwga2I7Ci0KLSAgICBkdmFsKCZkYSkgPSBiMmQoYSwgJmthKTsKLSAgICBk
dmFsKCZkYikgPSBiMmQoYiwgJmtiKTsKLSAgICBrID0ga2EgLSBrYiArIDMyICogKGEuc2l6ZSgp
IC0gYi5zaXplKCkpOwotICAgIGlmIChrID4gMCkKLSAgICAgICAgd29yZDAoJmRhKSArPSBrICog
RXhwX21zazE7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGsgPSAtazsKLSAgICAgICAgd29yZDAoJmRi
KSArPSBrICogRXhwX21zazE7Ci0gICAgfQotICAgIHJldHVybiBkdmFsKCZkYSkgLyBkdmFsKCZk
Yik7Ci19Ci0KIHN0YXRpYyBjb25zdCBkb3VibGUgdGVuc1tdID0gewogICAgIDFlMCwgMWUxLCAx
ZTIsIDFlMywgMWU0LCAxZTUsIDFlNiwgMWU3LCAxZTgsIDFlOSwKICAgICAxZTEwLCAxZTExLCAx
ZTEyLCAxZTEzLCAxZTE0LCAxZTE1LCAxZTE2LCAxZTE3LCAxZTE4LCAxZTE5LApAQCAtNzM1LDQ0
MyArNjQ4LDIzIEBAIHN0YXRpYyBjb25zdCBkb3VibGUgdGlueXRlbnNbXSA9IHsgMWUtMTYsIDFl
LTMyLCAxZS02NCwgMWUtMTI4LAogI2RlZmluZSBTY2FsZV9CaXQgMHgxMAogI2RlZmluZSBuX2Jp
Z3RlbnMgNQogCit0ZW1wbGF0ZTxib29sIGFsbG93VHJhaWxpbmdKdW5rPgogZG91YmxlIHN0cnRv
ZChjb25zdCBjaGFyKiBzMDAsIGNoYXIqKiBzZSkKIHsKLSAgICBpbnQgc2NhbGU7Ci0gICAgaW50
IGJiMiwgYmI1LCBiYmUsIGJkMiwgYmQ1LCBiYmJpdHMsIGJzMiwgYywgZHNpZ24sCi0gICAgICAg
IGUsIGUxLCBlc2lnbiwgaSwgaiwgaywgbmQsIG5kMCwgbmYsIG56LCBuejAsIHNpZ247Ci0gICAg
Y29uc3QgY2hhciAqcywgKnMwLCAqczE7Ci0gICAgZG91YmxlIGFhZGosIGFhZGoxOwotICAgIFUg
YWFkajIsIGFkaiwgcnYsIHJ2MDsKLSAgICBpbnQzMl90IEw7Ci0gICAgdWludDMyX3QgeSwgejsK
LSAgICBCaWdJbnQgYmIsIGJiMSwgYmQsIGJkMCwgYnMsIGRlbHRhOwotCi0gICAgc2lnbiA9IG56
MCA9IG56ID0gMDsKLSAgICBkdmFsKCZydikgPSAwOwotICAgIGZvciAocyA9IHMwMDsgOyBzKysp
IHsKLSAgICAgICAgc3dpdGNoICgqcykgewotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAg
IHNpZ24gPSAxOwotICAgICAgICAgICAgLyogbm8gYnJlYWsgKi8KLSAgICAgICAgY2FzZSAnKyc6
Ci0gICAgICAgICAgICBpZiAoKisrcykKLSAgICAgICAgICAgICAgICBnb3RvIGJyZWFrMjsKLSAg
ICAgICAgICAgIC8qIG5vIGJyZWFrICovCi0gICAgICAgIGNhc2UgMDoKLSAgICAgICAgICAgIGdv
dG8gcmV0MDsKLSAgICAgICAgY2FzZSAnXHQnOgotICAgICAgICBjYXNlICdcbic6Ci0gICAgICAg
IGNhc2UgJ1x2JzoKLSAgICAgICAgY2FzZSAnXGYnOgotICAgICAgICBjYXNlICdccic6Ci0gICAg
ICAgIGNhc2UgJyAnOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBnb3RvIGJyZWFrMjsKLSAgICAgICAgfQotICAgIH0KLWJyZWFrMjoKLSAgICBp
ZiAoKnMgPT0gJzAnKSB7Ci0gICAgICAgIG56MCA9IDE7Ci0gICAgICAgIHdoaWxlICgqKytzID09
ICcwJykgeyB9Ci0gICAgICAgIGlmICghKnMpCi0gICAgICAgICAgICBnb3RvIHJldDsKLSAgICB9
Ci0gICAgczAgPSBzOwotICAgIHkgPSB6ID0gMDsKLSAgICBmb3IgKG5kID0gbmYgPSAwOyAoYyA9
ICpzKSA+PSAnMCcgJiYgYyA8PSAnOSc7IG5kKyssIHMrKykKLSAgICAgICAgaWYgKG5kIDwgOSkK
LSAgICAgICAgICAgIHkgPSAoMTAgKiB5KSArIGMgLSAnMCc7Ci0gICAgICAgIGVsc2UgaWYgKG5k
IDwgMTYpCi0gICAgICAgICAgICB6ID0gKDEwICogeikgKyBjIC0gJzAnOwotICAgIG5kMCA9IG5k
OwotICAgIGlmIChjID09ICcuJykgewotICAgICAgICBjID0gKisrczsKLSAgICAgICAgaWYgKCFu
ZCkgewotICAgICAgICAgICAgZm9yICg7IGMgPT0gJzAnOyBjID0gKisrcykKLSAgICAgICAgICAg
ICAgICBueisrOwotICAgICAgICAgICAgaWYgKGMgPiAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAg
ICAgICAgICAgICBzMCA9IHM7Ci0gICAgICAgICAgICAgICAgbmYgKz0gbno7Ci0gICAgICAgICAg
ICAgICAgbnogPSAwOwotICAgICAgICAgICAgICAgIGdvdG8gaGF2ZURpZzsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGdvdG8gZGlnRG9uZTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKDsg
YyA+PSAnMCcgJiYgYyA8PSAnOSc7IGMgPSAqKytzKSB7Ci1oYXZlRGlnOgotICAgICAgICAgICAg
bnorKzsKLSAgICAgICAgICAgIGlmIChjIC09ICcwJykgewotICAgICAgICAgICAgICAgIG5mICs9
IG56OwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCBuejsgaSsrKQotICAgICAgICAg
ICAgICAgICAgICBpZiAobmQrKyA8IDkpCi0gICAgICAgICAgICAgICAgICAgICAgICB5ICo9IDEw
OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChuZCA8PSBEQkxfRElHICsgMSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHogKj0gMTA7Ci0gICAgICAgICAgICAgICAgaWYgKG5kKysgPCA5
KQotICAgICAgICAgICAgICAgICAgICB5ID0gKDEwICogeSkgKyBjOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKG5kIDw9IERCTF9ESUcgKyAxKQotICAgICAgICAgICAgICAgICAgICB6ID0gKDEw
ICogeikgKyBjOwotICAgICAgICAgICAgICAgIG56ID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLWRpZ0RvbmU6Ci0gICAgZSA9IDA7Ci0gICAgaWYgKGMgPT0gJ2UnIHx8IGMg
PT0gJ0UnKSB7Ci0gICAgICAgIGlmICghbmQgJiYgIW56ICYmICFuejApCi0gICAgICAgICAgICBn
b3RvIHJldDA7Ci0gICAgICAgIHMwMCA9IHM7Ci0gICAgICAgIGVzaWduID0gMDsKLSAgICAgICAg
c3dpdGNoIChjID0gKisrcykgewotICAgICAgICBjYXNlICctJzoKLSAgICAgICAgICAgIGVzaWdu
ID0gMTsKLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgICAgICBjID0gKisrczsKLSAgICAgICAg
fQotICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKLSAgICAgICAgICAgIHdoaWxl
IChjID09ICcwJykKLSAgICAgICAgICAgICAgICBjID0gKisrczsKLSAgICAgICAgICAgIGlmIChj
ID4gJzAnICYmIGMgPD0gJzknKSB7Ci0gICAgICAgICAgICAgICAgTCA9IGMgLSAnMCc7Ci0gICAg
ICAgICAgICAgICAgczEgPSBzOwotICAgICAgICAgICAgICAgIHdoaWxlICgoYyA9ICorK3MpID49
ICcwJyAmJiBjIDw9ICc5JykKLSAgICAgICAgICAgICAgICAgICAgTCA9ICgxMCAqIEwpICsgYyAt
ICcwJzsKLSAgICAgICAgICAgICAgICBpZiAocyAtIHMxID4gOCB8fCBMID4gMTk5OTkpCi0gICAg
ICAgICAgICAgICAgICAgIC8qIEF2b2lkIGNvbmZ1c2lvbiBmcm9tIGV4cG9uZW50cwotICAgICAg
ICAgICAgICAgICAgICAgKiBzbyBsYXJnZSB0aGF0IGUgbWlnaHQgb3ZlcmZsb3cuCi0gICAgICAg
ICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICBlID0gMTk5OTk7IC8qIHNhZmUg
Zm9yIDE2IGJpdCBpbnRzICovCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
ICAgICBlID0gKGludClMOwotICAgICAgICAgICAgICAgIGlmIChlc2lnbikKLSAgICAgICAgICAg
ICAgICAgICAgZSA9IC1lOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgZSA9
IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcyA9IHMwMDsKLSAgICB9Ci0gICAgaWYg
KCFuZCkgewotICAgICAgICBpZiAoIW56ICYmICFuejApIHsKLXJldDA6Ci0gICAgICAgICAgICBz
ID0gczAwOwotICAgICAgICAgICAgc2lnbiA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgZ290byBy
ZXQ7Ci0gICAgfQotICAgIGUxID0gZSAtPSBuZjsKLQotICAgIC8qIE5vdyB3ZSBoYXZlIG5kMCBk
aWdpdHMsIHN0YXJ0aW5nIGF0IHMwLCBmb2xsb3dlZCBieSBhCi0gICAgICogZGVjaW1hbCBwb2lu
dCwgZm9sbG93ZWQgYnkgbmQtbmQwIGRpZ2l0cy4gIFRoZSBudW1iZXIgd2UncmUKLSAgICAgKiBh
ZnRlciBpcyB0aGUgaW50ZWdlciByZXByZXNlbnRlZCBieSB0aG9zZSBkaWdpdHMgdGltZXMKLSAg
ICAgKiAxMCoqZSAqLwotCi0gICAgaWYgKCFuZDApCi0gICAgICAgIG5kMCA9IG5kOwotICAgIGsg
PSBuZCA8IERCTF9ESUcgKyAxID8gbmQgOiBEQkxfRElHICsgMTsKLSAgICBkdmFsKCZydikgPSB5
OwotICAgIGlmIChrID4gOSkKLSAgICAgICAgZHZhbCgmcnYpID0gdGVuc1trIC0gOV0gKiBkdmFs
KCZydikgKyB6OwotICAgIGlmIChuZCA8PSBEQkxfRElHKSB7Ci0gICAgICAgIGlmICghZSkKLSAg
ICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICBpZiAoZSA+IDApIHsKLSAgICAgICAgICAgIGlm
IChlIDw9IFRlbl9wbWF4KSB7Ci0gICAgICAgICAgICAgICAgLyogcnYgPSAqLyByb3VuZGVkX3By
b2R1Y3QoZHZhbCgmcnYpLCB0ZW5zW2VdKTsKLSAgICAgICAgICAgICAgICBnb3RvIHJldDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGkgPSBEQkxfRElHIC0gbmQ7Ci0gICAgICAgICAgICBp
ZiAoZSA8PSBUZW5fcG1heCArIGkpIHsKLSAgICAgICAgICAgICAgICAvKiBBIGZhbmNpZXIgdGVz
dCB3b3VsZCBzb21ldGltZXMgbGV0IHVzIGRvCi0gICAgICAgICAgICAgICAgICogdGhpcyBmb3Ig
bGFyZ2VyIGkgdmFsdWVzLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGUg
LT0gaTsKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgKj0gdGVuc1tpXTsKLSAgICAgICAgICAg
ICAgICAvKiBydiA9ICovIHJvdW5kZWRfcHJvZHVjdChkdmFsKCZydiksIHRlbnNbZV0pOwotICAg
ICAgICAgICAgICAgIGdvdG8gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYg
KGUgPj0gLVRlbl9wbWF4KSB7Ci0gICAgICAgICAgICAvKiBydiA9ICovIHJvdW5kZWRfcXVvdGll
bnQoZHZhbCgmcnYpLCB0ZW5zWy1lXSk7Ci0gICAgICAgICAgICBnb3RvIHJldDsKLSAgICAgICAg
fQotICAgIH0KLSAgICBlMSArPSBuZCAtIGs7Ci0KLSAgICBzY2FsZSA9IDA7Ci0KLSAgICAvKiBH
ZXQgc3RhcnRpbmcgYXBwcm94aW1hdGlvbiA9IHJ2ICogMTAqKmUxICovCi0KLSAgICBpZiAoZTEg
PiAwKSB7Ci0gICAgICAgIGlmICgoaSA9IGUxICYgMTUpKQotICAgICAgICAgICAgZHZhbCgmcnYp
ICo9IHRlbnNbaV07Ci0gICAgICAgIGlmIChlMSAmPSB+MTUpIHsKLSAgICAgICAgICAgIGlmIChl
MSA+IERCTF9NQVhfMTBfRVhQKSB7Ci1vdmZsOgotI2lmIEhBVkUoRVJSTk9fSCkKLSAgICAgICAg
ICAgICAgICBlcnJubyA9IEVSQU5HRTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIC8qIENhbid0
IHRydXN0IEhVR0VfVkFMICovCi0gICAgICAgICAgICAgICAgd29yZDAoJnJ2KSA9IEV4cF9tYXNr
OwotICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgIGdvdG8g
cmV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZTEgPj49IDQ7Ci0gICAgICAgICAgICBm
b3IgKGogPSAwOyBlMSA+IDE7IGorKywgZTEgPj49IDEpCi0gICAgICAgICAgICAgICAgaWYgKGUx
ICYgMSkKLSAgICAgICAgICAgICAgICAgICAgZHZhbCgmcnYpICo9IGJpZ3RlbnNbal07Ci0gICAg
ICAgIC8qIFRoZSBsYXN0IG11bHRpcGxpY2F0aW9uIGNvdWxkIG92ZXJmbG93LiAqLwotICAgICAg
ICAgICAgd29yZDAoJnJ2KSAtPSBQICogRXhwX21zazE7Ci0gICAgICAgICAgICBkdmFsKCZydikg
Kj0gYmlndGVuc1tqXTsKLSAgICAgICAgICAgIGlmICgoeiA9IHdvcmQwKCZydikgJiBFeHBfbWFz
aykgPiBFeHBfbXNrMSAqIChEQkxfTUFYX0VYUCArIEJpYXMgLSBQKSkKLSAgICAgICAgICAgICAg
ICBnb3RvIG92Zmw7Ci0gICAgICAgICAgICBpZiAoeiA+IEV4cF9tc2sxICogKERCTF9NQVhfRVhQ
ICsgQmlhcyAtIDEgLSBQKSkgewotICAgICAgICAgICAgICAgIC8qIHNldCB0byBsYXJnZXN0IG51
bWJlciAqLwotICAgICAgICAgICAgICAgIC8qIChDYW4ndCB0cnVzdCBEQkxfTUFYKSAqLwotICAg
ICAgICAgICAgICAgIHdvcmQwKCZydikgPSBCaWcwOwotICAgICAgICAgICAgICAgIHdvcmQxKCZy
dikgPSBCaWcxOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgd29yZDAoJnJ2
KSArPSBQICogRXhwX21zazE7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGUxIDwgMCkgewot
ICAgICAgICBlMSA9IC1lMTsKLSAgICAgICAgaWYgKChpID0gZTEgJiAxNSkpCi0gICAgICAgICAg
ICBkdmFsKCZydikgLz0gdGVuc1tpXTsKLSAgICAgICAgaWYgKGUxID4+PSA0KSB7Ci0gICAgICAg
ICAgICBpZiAoZTEgPj0gMSA8PCBuX2JpZ3RlbnMpCi0gICAgICAgICAgICAgICAgZ290byB1bmRm
bDsKLSAgICAgICAgICAgIGlmIChlMSAmIFNjYWxlX0JpdCkKLSAgICAgICAgICAgICAgICBzY2Fs
ZSA9IDIgKiBQOwotICAgICAgICAgICAgZm9yIChqID0gMDsgZTEgPiAwOyBqKyssIGUxID4+PSAx
KQotICAgICAgICAgICAgICAgIGlmIChlMSAmIDEpCi0gICAgICAgICAgICAgICAgICAgIGR2YWwo
JnJ2KSAqPSB0aW55dGVuc1tqXTsKLSAgICAgICAgICAgIGlmIChzY2FsZSAmJiAoaiA9ICgyICog
UCkgKyAxIC0gKCh3b3JkMCgmcnYpICYgRXhwX21hc2spID4+IEV4cF9zaGlmdCkpID4gMCkgewot
ICAgICAgICAgICAgICAgIC8qIHNjYWxlZCBydiBpcyBkZW5vcm1hbDsgY2xlYXIgaiBsb3cgYml0
cyAqLwotICAgICAgICAgICAgICAgIGlmIChqID49IDMyKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHdvcmQxKCZydikgPSAwOwotICAgICAgICAgICAgICAgICAgICBpZiAoaiA+PSA1MykKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHdvcmQwKCZydikgPSAoUCArIDIpICogRXhwX21zazE7Ci0gICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHdvcmQwKCZydikg
Jj0gMHhmZmZmZmZmZiA8PCAoaiAtIDMyKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgd29yZDEoJnJ2KSAmPSAweGZmZmZmZmZmIDw8IGo7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFkdmFsKCZydikpIHsKLXVuZGZsOgotICAgICAgICAg
ICAgICAgICAgICBkdmFsKCZydikgPSAwLjsKLSNpZiBIQVZFKEVSUk5PX0gpCi0gICAgICAgICAg
ICAgICAgICAgIGVycm5vID0gRVJBTkdFOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gcmV0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE5v
dyB0aGUgaGFyZCBwYXJ0IC0tIGFkanVzdGluZyBydiB0byB0aGUgY29ycmVjdCB2YWx1ZS4qLwot
Ci0gICAgLyogUHV0IGRpZ2l0cyBpbnRvIGJkOiB0cnVlIHZhbHVlID0gYmQgKiAxMF5lICovCi0K
LSAgICBzMmIoYmQwLCBzMCwgbmQwLCBuZCwgeSk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAg
IGJkID0gYmQwOwotICAgICAgICBkMmIoYmIsICZydiwgJmJiZSwgJmJiYml0cyk7ICAgIC8qIHJ2
ID0gYmIgKiAyXmJiZSAqLwotICAgICAgICBpMmIoYnMsIDEpOwotCi0gICAgICAgIGlmIChlID49
IDApIHsKLSAgICAgICAgICAgIGJiMiA9IGJiNSA9IDA7Ci0gICAgICAgICAgICBiZDIgPSBiZDUg
PSBlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYmIyID0gYmI1ID0gLWU7Ci0gICAg
ICAgICAgICBiZDIgPSBiZDUgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChiYmUgPj0gMCkK
LSAgICAgICAgICAgIGJiMiArPSBiYmU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGJkMiAt
PSBiYmU7Ci0gICAgICAgIGJzMiA9IGJiMjsKLSAgICAgICAgaiA9IGJiZSAtIHNjYWxlOwotICAg
ICAgICBpID0gaiArIGJiYml0cyAtIDE7ICAgIC8qIGxvZ2IocnYpICovCi0gICAgICAgIGlmIChp
IDwgRW1pbikgICAgLyogZGVub3JtYWwgKi8KLSAgICAgICAgICAgIGogKz0gUCAtIEVtaW47Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGogPSBQICsgMSAtIGJiYml0czsKLSAgICAgICAgYmIy
ICs9IGo7Ci0gICAgICAgIGJkMiArPSBqOwotICAgICAgICBiZDIgKz0gc2NhbGU7Ci0gICAgICAg
IGkgPSBiYjIgPCBiZDIgPyBiYjIgOiBiZDI7Ci0gICAgICAgIGlmIChpID4gYnMyKQotICAgICAg
ICAgICAgaSA9IGJzMjsKLSAgICAgICAgaWYgKGkgPiAwKSB7Ci0gICAgICAgICAgICBiYjIgLT0g
aTsKLSAgICAgICAgICAgIGJkMiAtPSBpOwotICAgICAgICAgICAgYnMyIC09IGk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKGJiNSA+IDApIHsKLSAgICAgICAgICAgIHBvdzVtdWx0KGJzLCBiYjUp
OwotICAgICAgICAgICAgbXVsdChiYiwgYnMpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChiYjIg
PiAwKQotICAgICAgICAgICAgbHNoaWZ0KGJiLCBiYjIpOwotICAgICAgICBpZiAoYmQ1ID4gMCkK
LSAgICAgICAgICAgIHBvdzVtdWx0KGJkLCBiZDUpOwotICAgICAgICBpZiAoYmQyID4gMCkKLSAg
ICAgICAgICAgIGxzaGlmdChiZCwgYmQyKTsKLSAgICAgICAgaWYgKGJzMiA+IDApCi0gICAgICAg
ICAgICBsc2hpZnQoYnMsIGJzMik7Ci0gICAgICAgIGRpZmYoZGVsdGEsIGJiLCBiZCk7Ci0gICAg
ICAgIGRzaWduID0gZGVsdGEuc2lnbjsKLSAgICAgICAgZGVsdGEuc2lnbiA9IDA7Ci0gICAgICAg
IGkgPSBjbXAoZGVsdGEsIGJzKTsKLQotICAgICAgICBpZiAoaSA8IDApIHsKLSAgICAgICAgICAg
IC8qIEVycm9yIGlzIGxlc3MgdGhhbiBoYWxmIGFuIHVscCAtLSBjaGVjayBmb3IKLSAgICAgICAg
ICAgICAqIHNwZWNpYWwgY2FzZSBvZiBtYW50aXNzYSBhIHBvd2VyIG9mIHR3by4KLSAgICAgICAg
ICAgICAqLwotICAgICAgICAgICAgaWYgKGRzaWduIHx8IHdvcmQxKCZydikgfHwgd29yZDAoJnJ2
KSAmIEJuZHJ5X21hc2sKLSAgICAgICAgICAgICB8fCAod29yZDAoJnJ2KSAmIEV4cF9tYXNrKSA8
PSAoMiAqIFAgKyAxKSAqIEV4cF9tc2sxCi0gICAgICAgICAgICAgICAgKSB7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWRlbHRhLndvcmRz
KClbMF0gJiYgZGVsdGEuc2l6ZSgpIDw9IDEpIHsKLSAgICAgICAgICAgICAgICAvKiBleGFjdCBy
ZXN1bHQgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGxzaGlmdChkZWx0YSwgTG9nMlApOwotICAgICAgICAgICAgaWYgKGNtcChkZWx0YSwgYnMp
ID4gMCkKLSAgICAgICAgICAgICAgICBnb3RvIGRyb3BEb3duOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFpKSB7Ci0gICAgICAgICAgICAvKiBleGFjdGx5IGhh
bGYtd2F5IGJldHdlZW4gKi8KLSAgICAgICAgICAgIGlmIChkc2lnbikgewotICAgICAgICAgICAg
ICAgIGlmICgod29yZDAoJnJ2KSAmIEJuZHJ5X21hc2sxKSA9PSBCbmRyeV9tYXNrMQotICAgICAg
ICAgICAgICAgICAmJiAgd29yZDEoJnJ2KSA9PSAoCi0gICAgICAgICAgICAoc2NhbGUgJiYgKHkg
PSB3b3JkMCgmcnYpICYgRXhwX21hc2spIDw9IDIgKiBQICogRXhwX21zazEpCi0gICAgICAgID8g
KDB4ZmZmZmZmZmYgJiAoMHhmZmZmZmZmZiA8PCAoMiAqIFAgKyAxIC0gKHkgPj4gRXhwX3NoaWZ0
KSkpKSA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAweGZmZmZmZmZmKSkgewotICAgICAg
ICAgICAgICAgICAgICAvKmJvdW5kYXJ5IGNhc2UgLS0gaW5jcmVtZW50IGV4cG9uZW50Ki8KLSAg
ICAgICAgICAgICAgICAgICAgd29yZDAoJnJ2KSA9ICh3b3JkMCgmcnYpICYgRXhwX21hc2spICsg
RXhwX21zazE7Ci0gICAgICAgICAgICAgICAgICAgIHdvcmQxKCZydikgPSAwOwotICAgICAgICAg
ICAgICAgICAgICBkc2lnbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoISh3b3JkMCgmcnYpICYgQm5kcnlf
bWFzaykgJiYgIXdvcmQxKCZydikpIHsKLWRyb3BEb3duOgotICAgICAgICAgICAgICAgIC8qIGJv
dW5kYXJ5IGNhc2UgLS0gZGVjcmVtZW50IGV4cG9uZW50ICovCi0gICAgICAgICAgICAgICAgaWYg
KHNjYWxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIEwgPSB3b3JkMCgmcnYpICYgRXhwX21hc2s7
Ci0gICAgICAgICAgICAgICAgICAgIGlmIChMIDw9ICgyICogUCArIDEpICogRXhwX21zazEpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMID4gKFAgKyAyKSAqIEV4cF9tc2sxKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJvdW5kIGV2ZW4gPT0+ICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLyogYWNjZXB0IHJ2ICovCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBydiA9IHNtYWxsZXN0IGRl
bm9ybWFsICovCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIHVuZGZsOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEwgPSAod29y
ZDAoJnJ2KSAmIEV4cF9tYXNrKSAtIEV4cF9tc2sxOwotICAgICAgICAgICAgICAgIHdvcmQwKCZy
dikgPSBMIHwgQm5kcnlfbWFzazE7Ci0gICAgICAgICAgICAgICAgd29yZDEoJnJ2KSA9IDB4ZmZm
ZmZmZmY7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoISh3b3JkMSgmcnYpICYgTFNCKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGlmIChkc2lnbikKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgKz0gdWxwKCZydik7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBkdmFsKCZydikgLT0gdWxwKCZy
dik7Ci0gICAgICAgICAgICAgICAgaWYgKCFkdmFsKCZydikpCi0gICAgICAgICAgICAgICAgICAg
IGdvdG8gdW5kZmw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkc2lnbiA9IDEgLSBkc2ln
bjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmICgoYWFkaiA9IHJh
dGlvKGRlbHRhLCBicykpIDw9IDIuKSB7Ci0gICAgICAgICAgICBpZiAoZHNpZ24pCi0gICAgICAg
ICAgICAgICAgYWFkaiA9IGFhZGoxID0gMS47Ci0gICAgICAgICAgICBlbHNlIGlmICh3b3JkMSgm
cnYpIHx8IHdvcmQwKCZydikgJiBCbmRyeV9tYXNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdv
cmQxKCZydikgPT0gVGlueTEgJiYgIXdvcmQwKCZydikpCi0gICAgICAgICAgICAgICAgICAgIGdv
dG8gdW5kZmw7Ci0gICAgICAgICAgICAgICAgYWFkaiA9IDEuOwotICAgICAgICAgICAgICAgIGFh
ZGoxID0gLTEuOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBzcGVj
aWFsIGNhc2UgLS0gcG93ZXIgb2YgRkxUX1JBRElYIHRvIGJlICovCi0gICAgICAgICAgICAgICAg
Lyogcm91bmRlZCBkb3duLi4uICovCi0KLSAgICAgICAgICAgICAgICBpZiAoYWFkaiA8IDIuIC8g
RkxUX1JBRElYKQotICAgICAgICAgICAgICAgICAgICBhYWRqID0gMS4gLyBGTFRfUkFESVg7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBhYWRqICo9IDAuNTsKLSAg
ICAgICAgICAgICAgICBhYWRqMSA9IC1hYWRqOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgYWFkaiAqPSAwLjU7Ci0gICAgICAgICAgICBhYWRqMSA9IGRzaWdu
ID8gYWFkaiA6IC1hYWRqOwotICAgICAgICB9Ci0gICAgICAgIHkgPSB3b3JkMCgmcnYpICYgRXhw
X21hc2s7Ci0KLSAgICAgICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0KLSAgICAgICAgaWYg
KHkgPT0gRXhwX21zazEgKiAoREJMX01BWF9FWFAgKyBCaWFzIC0gMSkpIHsKLSAgICAgICAgICAg
IGR2YWwoJnJ2MCkgPSBkdmFsKCZydik7Ci0gICAgICAgICAgICB3b3JkMCgmcnYpIC09IFAgKiBF
eHBfbXNrMTsKLSAgICAgICAgICAgIGFkai5kID0gYWFkajEgKiB1bHAoJnJ2KTsKLSAgICAgICAg
ICAgIGR2YWwoJnJ2KSArPSBhZGouZDsKLSAgICAgICAgICAgIGlmICgod29yZDAoJnJ2KSAmIEV4
cF9tYXNrKSA+PSBFeHBfbXNrMSAqIChEQkxfTUFYX0VYUCArIEJpYXMgLSBQKSkgewotICAgICAg
ICAgICAgICAgIGlmICh3b3JkMCgmcnYwKSA9PSBCaWcwICYmIHdvcmQxKCZydjApID09IEJpZzEp
Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZmbDsKLSAgICAgICAgICAgICAgICB3b3JkMCgm
cnYpID0gQmlnMDsKLSAgICAgICAgICAgICAgICB3b3JkMSgmcnYpID0gQmlnMTsKLSAgICAgICAg
ICAgICAgICBnb3RvIGNvbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3b3JkMCgmcnYp
ICs9IFAgKiBFeHBfbXNrMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzY2Fs
ZSAmJiB5IDw9IDIgKiBQICogRXhwX21zazEpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWFkaiA8
PSAweDdmZmZmZmZmKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoeiA9ICh1aW50MzJfdClh
YWRqKSA8PSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgeiA9IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIGFhZGogPSB6OwotICAgICAgICAgICAgICAgICAgICBhYWRqMSA9IGRzaWduID8gYWFk
aiA6IC1hYWRqOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBkdmFsKCZhYWRq
MikgPSBhYWRqMTsKLSAgICAgICAgICAgICAgICB3b3JkMCgmYWFkajIpICs9ICgyICogUCArIDEp
ICogRXhwX21zazEgLSB5OwotICAgICAgICAgICAgICAgIGFhZGoxID0gZHZhbCgmYWFkajIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYWRqLmQgPSBhYWRqMSAqIHVscCgmcnYpOwotICAg
ICAgICAgICAgZHZhbCgmcnYpICs9IGFkai5kOwotICAgICAgICB9Ci0gICAgICAgIHogPSB3b3Jk
MCgmcnYpICYgRXhwX21hc2s7Ci0gICAgICAgIGlmICghc2NhbGUgJiYgeSA9PSB6KSB7Ci0gICAg
ICAgICAgICAvKiBDYW4gd2Ugc3RvcCBub3c/ICovCi0gICAgICAgICAgICBMID0gKGludDMyX3Qp
YWFkajsKLSAgICAgICAgICAgIGFhZGogLT0gTDsKLSAgICAgICAgICAgIC8qIFRoZSB0b2xlcmFu
Y2VzIGJlbG93IGFyZSBjb25zZXJ2YXRpdmUuICovCi0gICAgICAgICAgICBpZiAoZHNpZ24gfHwg
d29yZDEoJnJ2KSB8fCB3b3JkMCgmcnYpICYgQm5kcnlfbWFzaykgewotICAgICAgICAgICAgICAg
IGlmIChhYWRqIDwgLjQ5OTk5OTkgfHwgYWFkaiA+IC41MDAwMDAxKQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWFkaiA8IC40OTk5OTk5IC8gRkxU
X1JBRElYKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci1jb250OgotICAgICAg
ICB7fQotICAgIH0KLSAgICBpZiAoc2NhbGUpIHsKLSAgICAgICAgd29yZDAoJnJ2MCkgPSBFeHBf
MSAtIDIgKiBQICogRXhwX21zazE7Ci0gICAgICAgIHdvcmQxKCZydjApID0gMDsKLSAgICAgICAg
ZHZhbCgmcnYpICo9IGR2YWwoJnJ2MCk7Ci0jaWYgSEFWRShFUlJOT19IKQotICAgICAgICAvKiB0
cnkgdG8gYXZvaWQgdGhlIGJ1ZyBvZiB0ZXN0aW5nIGFuIDgwODcgcmVnaXN0ZXIgdmFsdWUgKi8K
LSAgICAgICAgaWYgKCF3b3JkMCgmcnYpICYmICF3b3JkMSgmcnYpKQotICAgICAgICAgICAgZXJy
bm8gPSBFUkFOR0U7Ci0jZW5kaWYKLSAgICB9Ci1yZXQ6CisgICAgZG91YmxlX2NvbnZlcnNpb246
OlN0cmluZ1RvRG91YmxlQ29udmVydGVyIGNvbnZlcnRlcigKKyAgICAgICAgKGFsbG93VHJhaWxp
bmdKdW5rID8gZG91YmxlX2NvbnZlcnNpb246OlN0cmluZ1RvRG91YmxlQ29udmVydGVyOjpBTExP
V19UUkFJTElOR19KVU5LIDogMCkgfAorICAgICAgICBkb3VibGVfY29udmVyc2lvbjo6U3RyaW5n
VG9Eb3VibGVDb252ZXJ0ZXI6OkFMTE9XX0xFQURJTkdfU1BBQ0VTLAorICAgICAgICAwLjAsIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCksICJJbmZpbml0eSIsICJOYU4i
KTsKKyAgICBpbnQgcHJvY2Vzc2VkQ2hhcmFjdGVyQ291bnQgPSAwOworICAgIGRvdWJsZSByZXN1
bHQgPSBjb252ZXJ0ZXIuU3RyaW5nVG9Eb3VibGUoczAwLCBzdHJsZW4oczAwKSwgJnByb2Nlc3Nl
ZENoYXJhY3RlckNvdW50KTsKICAgICBpZiAoc2UpCi0gICAgICAgICpzZSA9IGNvbnN0X2Nhc3Q8
Y2hhcio+KHMpOwotICAgIHJldHVybiBzaWduID8gLWR2YWwoJnJ2KSA6IGR2YWwoJnJ2KTsKKyAg
ICAgICAgKnNlID0gY29uc3RfY2FzdDxjaGFyKj4oczAwICsgcHJvY2Vzc2VkQ2hhcmFjdGVyQ291
bnQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRlIGRvdWJsZSBzdHJ0b2Q8dHJ1
ZT4oY29uc3QgY2hhciosIGNoYXIqKik7Cit0ZW1wbGF0ZSBkb3VibGUgc3RydG9kPGZhbHNlPihj
b25zdCBjaGFyKiwgY2hhcioqKTsKKwogc3RhdGljIEFMV0FZU19JTkxJTkUgaW50IHF1b3JlbShC
aWdJbnQmIGIsIEJpZ0ludCYgUykKIHsKICAgICBzaXplX3QgbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvZHRvYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9k
dG9hLmgKaW5kZXggZDI3YzU5MjA2NDdmZDk2NTRjOGFlYjJhZTUwOTgwNjgwZGU0NzdiMC4uNjJk
Yzg4MGRhNmZhODg3MjY5Y2RjMWQzOTc3ZjUxNTMyODQxZmQwNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9kdG9hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9kdG9hLmgKQEAgLTM3LDcgKzM3LDggQEAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZHRvYVJv
dW5kRFAoRHRvYUJ1ZmZlciByZXN1bHQsIGRvdWJsZSBkZCwgaW50IG5kaWdpdHMsIGIKIAogLy8g
czAwOiBpbnB1dCBzdHJpbmcuIE11c3Qgbm90IGJlIDAgYW5kIG11c3QgYmUgdGVybWluYXRlZCBi
eSAwLgogLy8gc2U6ICpzZSB3aWxsIGhhdmUgdGhlIGxhc3QgY29uc3VtZWQgY2hhcmFjdGVyIHBv
c2l0aW9uICsgMS4KLVdURl9FWFBPUlRfUFJJVkFURSBkb3VibGUgc3RydG9kKGNvbnN0IGNoYXIq
IHMwMCwgY2hhcioqIHNlKTsKK3RlbXBsYXRlPGJvb2wgYWxsb3dUcmFpbGluZ0p1bms+Citkb3Vi
bGUgc3RydG9kKGNvbnN0IGNoYXIqIHMwMCwgY2hhcioqIHNlKTsKIAogLy8gU2l6ZSA9IDgwIGZv
ciBzaXplb2YoRHRvYUJ1ZmZlcikgKyBzb21lIHNpZ24gYml0cywgZGVjaW1hbCBwb2ludCwgJ2Un
LCBleHBvbmVudCBkaWdpdHMuCiBjb25zdCB1bnNpZ25lZCBOdW1iZXJUb1N0cmluZ0J1ZmZlckxl
bmd0aCA9IDk2OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cAppbmRleCA0NDc0ODNiMDhjMmNiOTY1NmE5MzNmZTVlMmFlYzEwMzAzNmM0ODgzLi43ZDBiMWQ4
NzMzOWFkNzAyNmY4YzI2ZWJiYWJjMjU2Y2FmZGQ1MjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUg
PHN0ZGFyZy5oPgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL0Rh
dGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgpAQCAtMTA1Miw5ICsxMDUzLDkgQEAgc3RhdGljIGlubGluZSBkb3VibGUgdG9E
b3VibGVUeXBlKGNvbnN0IENoYXJUeXBlKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBib29sKiBvaywK
ICAgICBieXRlc1tsZW5ndGhdID0gJ1wwJzsKICAgICBjaGFyKiBzdGFydCA9IGJ5dGVzLmRhdGEo
KTsKICAgICBjaGFyKiBlbmQ7Ci0gICAgZG91YmxlIHZhbCA9IFdURjo6c3RydG9kKHN0YXJ0LCAm
ZW5kKTsKKyAgICBkb3VibGUgdmFsID0gV1RGOjpzdHJ0b2Q8ZmFsc2U+KHN0YXJ0LCAmZW5kKTsK
ICAgICBpZiAob2spCi0gICAgICAgICpvayA9IChlbmQgPT0gMCB8fCAqZW5kID09ICdcMCcpOwor
ICAgICAgICAqb2sgPSAoZW5kID09IDAgfHwgKmVuZCA9PSAnXDAnKSAmJiAhaXNuYW4odmFsKTsK
ICAgICBpZiAoZGlkUmVhZE51bWJlcikKICAgICAgICAgKmRpZFJlYWROdW1iZXIgPSBlbmQgLSBz
dGFydDsKICAgICByZXR1cm4gdmFsOwo=
</data>
<flag name="review"
          id="128596"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="128600"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>126846</attachid>
            <date>2012-02-13 15:09:53 -0800</date>
            <delta_ts>2012-02-13 15:09:53 -0800</delta_ts>
            <desc>Bencher results</desc>
            <filename>ToT_strtod_SunSpiderV8Kraken_Marks-Mac-Pro_20120212_2020_benchReport.txt</filename>
            <type>text/plain</type>
            <size>7429</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">QmVuY2htYXJrIHJlcG9ydCBmb3IgU3VuU3BpZGVyLCBWOCwgYW5kIEtyYWtlbiBvbiBNYXJrcy1N
YWMtUHJvIChNYWNQcm81LDEpLgoKVk1zIHRlc3RlZDoKIlRvVCIgYXQgL1ZvbHVtZXMvRGF0YS9X
ZWJLaXQtdHJ1ZS1jbGVhbi9XZWJLaXRCdWlsZC9SZWxlYXNlL2pzYwoic3RydG9kIiBhdCAvVm9s
dW1lcy9EYXRhL1dlYktpdC1zdHJ0b2QvV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKCkNvbGxlY3Rl
ZCAxMDAgc2FtcGxlcyBwZXIgYmVuY2htYXJrL1ZNLCB3aXRoIDEwIFZNIGludm9jYXRpb25zIHBl
ciBiZW5jaG1hcmsuIEVtaXR0ZWQgYSBjYWxsIHRvIGdjKCkgYmV0d2VlbgpzYW1wbGUgbWVhc3Vy
ZW1lbnRzLiBVc2VkIDEgYmVuY2htYXJrIGl0ZXJhdGlvbiBwZXIgVk0gaW52b2NhdGlvbiBmb3Ig
d2FybS11cC4gVXNlZCB0aGUganNjLXNwZWNpZmljCnByZWNpc2VUaW1lKCkgZnVuY3Rpb24gdG8g
Z2V0IG1pY3Jvc2Vjb25kLWxldmVsIHRpbWluZy4gUmVwb3J0aW5nIGJlbmNobWFyayBleGVjdXRp
b24gdGltZXMgd2l0aCA5NSUgY29uZmlkZW5jZQppbnRlcnZhbHMgaW4gbWlsbGlzZWNvbmRzLgoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAg
ICAgICAgICAgICAgIHN0cnRvZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
U3VuU3BpZGVyOgogICAzZC1jdWJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Ljg2
MTIrLTAuMDA5OSAgICBeICAgICA1LjgzMjYrLTAuMDA5NCAgICAgICBeIGRlZmluaXRlbHkgMS4w
MDQ5eCBmYXN0ZXIKICAgM2QtbW9ycGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOS43
MTAwKy0wLjAzMjMgICAgICAgICAgOS42ODgyKy0wLjAxODYgICAgICAgCiAgIDNkLXJheXRyYWNl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDcuODg1NystMC4wMjU4ICAgIF4gICAgIDcuODIy
MCstMC4wMTIyICAgICAgIF4gZGVmaW5pdGVseSAxLjAwODF4IGZhc3RlcgogICBhY2Nlc3MtYmlu
YXJ5LXRyZWVzICAgICAgICAgICAgICAgICAgICAxLjY4NTkrLTAuMDAzMiAgICAhICAgICAxLjc0
NzkrLTAuMDMzNiAgICAgICAhIGRlZmluaXRlbHkgMS4wMzY4eCBzbG93ZXIKICAgYWNjZXNzLWZh
bm5rdWNoICAgICAgICAgICAgICAgICAgICAgICAgNy40NDE1Ky0wLjAwMzUgICAgICAgICAgNy40
NDA5Ky0wLjAxNzAgICAgICAgCiAgIGFjY2Vzcy1uYm9keSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDMuODk2MSstMC4wMDQ0ICAgIF4gICAgIDMuODY2OSstMC4wMDQ2ICAgICAgIF4gZGVmaW5p
dGVseSAxLjAwNzV4IGZhc3RlcgogICBhY2Nlc3MtbnNpZXZlICAgICAgICAgICAgICAgICAgICAg
ICAgICAzLjQ5NzErLTAuMDE5MSAgICBeICAgICAzLjQ2NDQrLTAuMDEwMyAgICAgICBeIGRlZmlu
aXRlbHkgMS4wMDk0eCBmYXN0ZXIKICAgYml0b3BzLTNiaXQtYml0cy1pbi1ieXRlICAgICAgICAg
ICAgICAgMS4yOTAzKy0wLjAwMjAgICAgISAgICAgMS4yOTg3Ky0wLjAwNDYgICAgICAgISBkZWZp
bml0ZWx5IDEuMDA2NXggc2xvd2VyCiAgIGJpdG9wcy1iaXRzLWluLWJ5dGUgICAgICAgICAgICAg
ICAgICAgIDUuMjczNystMC4wMDY5ICAgICEgICAgIDUuMjg4MCstMC4wMDczICAgICAgICEgZGVm
aW5pdGVseSAxLjAwMjd4IHNsb3dlcgogICBiaXRvcHMtYml0d2lzZS1hbmQgICAgICAgICAgICAg
ICAgICAgICAzLjMwMDErLTAuMDAzNCAgICAgICAgICAzLjI5OTYrLTAuMDAxOCAgICAgICAKICAg
Yml0b3BzLW5zaWV2ZS1iaXRzICAgICAgICAgICAgICAgICAgICAgNS43NDIwKy0wLjAxMTEgICAg
ICAgICAgNS43MjE4Ky0wLjAxMzcgICAgICAgCiAgIGNvbnRyb2xmbG93LXJlY3Vyc2l2ZSAgICAg
ICAgICAgICAgICAgIDIuMzM0MCstMC4wMDk4ICAgICAgICAgIDIuMzI3NSstMC4wMDY0ICAgICAg
IAogICBjcnlwdG8tYWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjQ2MjgrLTAuMDE2
MyAgICA/ICAgICA3LjQ4NTYrLTAuMDIxMiAgICAgICA/CiAgIGNyeXB0by1tZDUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIuNTg2OSstMC4wMDU4ICAgICAgICAgIDIuNTc2MCstMC4wMDY2
ICAgICAgIAogICBjcnlwdG8tc2hhMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjMzNDYr
LTAuMDA1NCAgICAgICAgICAyLjMyNDYrLTAuMDA1MiAgICAgICAKICAgZGF0ZS1mb3JtYXQtdG9m
dGUgICAgICAgICAgICAgICAgICAgICAxMC43NjU4Ky0wLjAyODEgICAgICAgICAxMC43NDMxKy0w
LjAzMjkgICAgICAgCiAgIGRhdGUtZm9ybWF0LXhwYXJiICAgICAgICAgICAgICAgICAgICAgMTAu
OTM0OSstMC4wNTE4ICAgIF4gICAgMTAuMTYzMCstMC4wMzcwICAgICAgIF4gZGVmaW5pdGVseSAx
LjA3NjB4IGZhc3RlcgogICBtYXRoLWNvcmRpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICA3
LjkwNzMrLTAuMTAyOCAgICA/ICAgICA4LjAyOTcrLTAuMDkwMyAgICAgICA/IG1pZ2h0IGJlIDEu
MDE1NXggc2xvd2VyCiAgIG1hdGgtcGFydGlhbC1zdW1zICAgICAgICAgICAgICAgICAgICAgMTAu
NTkwNSstMC4wMTA4ICAgICAgICAgMTAuNTg5MCstMC4wMTE1ICAgICAgIAogICBtYXRoLXNwZWN0
cmFsLW5vcm0gICAgICAgICAgICAgICAgICAgICAyLjcxNTIrLTAuMDI0MSAgICBeICAgICAyLjY2
OTUrLTAuMDA2NCAgICAgICBeIGRlZmluaXRlbHkgMS4wMTcxeCBmYXN0ZXIKICAgcmVnZXhwLWRu
YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOC43OTI5Ky0wLjAyMjkgICAgICAgICAgOC43
NjkyKy0wLjAxNzYgICAgICAgCiAgIHN0cmluZy1iYXNlNjQgICAgICAgICAgICAgICAgICAgICAg
ICAgIDQuMzg5MSstMC4wMDUxICAgICAgICAgIDQuMzg3MCstMC4wMDk2ICAgICAgIAogICBzdHJp
bmctZmFzdGEgICAgICAgICAgICAgICAgICAgICAgICAgICA3LjI4NzErLTAuMDA4NCAgICA/ICAg
ICA3LjI4NzkrLTAuMDA4NiAgICAgICA/CiAgIHN0cmluZy10YWdjbG91ZCAgICAgICAgICAgICAg
ICAgICAgICAgMTIuOTAwNCstMC4wNDA2ICAgICAgICAgMTIuODgzOSstMC4wMzc0ICAgICAgIAog
ICBzdHJpbmctdW5wYWNrLWNvZGUgICAgICAgICAgICAgICAgICAgIDIxLjAyMjYrLTAuMDM3NCAg
ICAhICAgIDIxLjE1MjYrLTAuMDM0NiAgICAgICAhIGRlZmluaXRlbHkgMS4wMDYyeCBzbG93ZXIK
ICAgc3RyaW5nLXZhbGlkYXRlLWlucHV0ICAgICAgICAgICAgICAgICAgNS41ODcxKy0wLjAxNDcg
ICAgISAgICAgNS42NTU1Ky0wLjAyOTUgICAgICAgISBkZWZpbml0ZWx5IDEuMDEyM3ggc2xvd2Vy
CgogICA8YXJpdGhtZXRpYz4gKiAgICAgICAgICAgICAgICAgICAgICAgICA2LjY2MTMrLTAuMDA3
MCAgICBeICAgICA2LjYzNTIrLTAuMDA3NSAgICAgICBeIGRlZmluaXRlbHkgMS4wMDM5eCBmYXN0
ZXIKICAgPGdlb21ldHJpYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgNS40MTQ0Ky0wLjAw
NTYgICAgXiAgICAgNS40MDExKy0wLjAwNjkgICAgICAgXiBkZWZpbml0ZWx5IDEuMDAyNXggZmFz
dGVyCiAgIDxoYXJtb25pYz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQuMjk4OSstMC4w
MDQ2ICAgID8gICAgIDQuMzAwNSstMC4wMDgwICAgICAgID8gbWlnaHQgYmUgMS4wMDA0eCBzbG93
ZXIKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAg
ICAgICAgICAgICAgICAgICBzdHJ0b2QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgClY4OgogICBjcnlwdG8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc1LjY3MDUr
LTAuMTQwNyAgICAgICAgIDc1LjU5MzIrLTAuMDc1OCAgICAgICAKICAgZGVsdGFibHVlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2MC44OTc0Ky0wLjUyMzMgICAgISAgIDE2Mi4wODUwKy0w
LjM4NTkgICAgICAgISBkZWZpbml0ZWx5IDEuMDA3NHggc2xvd2VyCiAgIGVhcmxleS1ib3llciAg
ICAgICAgICAgICAgICAgICAgICAgICAgOTUuMTg1MSstMC42MTg2ICAgID8gICAgOTUuMjkxNCst
MC41ODk1ICAgICAgID8KICAgcmF5dHJhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1
NC4wMDUzKy0wLjE5OTggICAgXiAgICA1My41MDE2Ky0wLjIyMDUgICAgICAgXiBkZWZpbml0ZWx5
IDEuMDA5NHggZmFzdGVyCiAgIHJlZ2V4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OTkuMzA4MSstMC4xNzExICAgID8gICAgOTkuNTE2MSstMC4yMzAzICAgICAgID8KICAgcmljaGFy
ZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0NC4wNjMxKy0wLjIwOTMgICAgPyAgIDE0
NC4zNTcyKy0wLjI1NjEgICAgICAgPwogICBzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDY0LjI5NjgrLTAuMTI1NiAgICAhICAgIDY0Ljc2NDQrLTAuMzA3NSAgICAgICAhIGRl
ZmluaXRlbHkgMS4wMDczeCBzbG93ZXIKCiAgIDxhcml0aG1ldGljPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgOTkuMDYwOSstMC4xMzkyICAgID8gICAgOTkuMzAxMystMC4xMjY0ICAgICAgID8g
bWlnaHQgYmUgMS4wMDI0eCBzbG93ZXIKICAgPGdlb21ldHJpYz4gKiAgICAgICAgICAgICAgICAg
ICAgICAgICA5Mi40MDQ5Ky0wLjEzMzggICAgPyAgICA5Mi41Mjc0Ky0wLjEzMDIgICAgICAgPyBt
aWdodCBiZSAxLjAwMTN4IHNsb3dlcgogICA8aGFybW9uaWM+ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDg2LjM4MzIrLTAuMTMzOSAgICA/ICAgIDg2LjM5NDMrLTAuMTM2OSAgICAgICA/IG1p
Z2h0IGJlIDEuMDAwMXggc2xvd2VyCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgc3RydG9kICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIApLcmFrZW46CiAgIGFpLWFzdGFyICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4MTkuNjIxMSstMy41OTI1ICAgID8gICA4MjAuMDUxOCstMy43MDk2ICAg
ICAgID8KICAgYXVkaW8tYmVhdC1kZXRlY3Rpb24gICAgICAgICAgICAgICAgIDE5Mi4wMDI3Ky0w
LjQxOTIgICAgPyAgIDE5Mi4xMDk5Ky0wLjQyMjAgICAgICAgPwogICBhdWRpby1kZnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMjg1LjA4OTArLTMuMzM2NyAgICA/ICAgMjg5LjUxMjkrLTQu
OTU1NCAgICAgICA/IG1pZ2h0IGJlIDEuMDE1NXggc2xvd2VyCiAgIGF1ZGlvLWZmdCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxMTcuMzc0MystMC4xMzY5ICAgID8gICAxMTcuNTM1MSstMC4x
NDM2ICAgICAgID8KICAgYXVkaW8tb3NjaWxsYXRvciAgICAgICAgICAgICAgICAgICAgIDMwMy4y
NjA0Ky0wLjcwOTIgICAgICAgIDMwMi43NjA0Ky0wLjk5OTcgICAgICAgCiAgIGltYWdpbmctZGFy
a3Jvb20gICAgICAgICAgICAgICAgICAgICAyODUuMzg3MistMi4wNjU1ICAgICAgICAyODQuNjI3
MistMS43NDg1ICAgICAgIAogICBpbWFnaW5nLWRlc2F0dXJhdGUgICAgICAgICAgICAgICAgICAg
MjM3LjUzODgrLTAuMTY0NSAgICAgICAgMjM3LjUyNzIrLTAuMTU5NSAgICAgICAKICAgaW1hZ2lu
Zy1nYXVzc2lhbi1ibHVyICAgICAgICAgICAgICAgIDQ1Ni4wNTU4Ky0wLjQ4MTAgICAgPyAgIDQ1
Ni40MTI0Ky0wLjg2MjggICAgICAgPwogICBqc29uLXBhcnNlLWZpbmFuY2lhbCAgICAgICAgICAg
ICAgICAgIDYzLjg2MTgrLTAuMDg1NSAgICBeICAgIDYzLjczNTQrLTAuMDM1NyAgICAgICBeIGRl
ZmluaXRlbHkgMS4wMDIweCBmYXN0ZXIKICAganNvbi1zdHJpbmdpZnktdGluZGVyYm94ICAgICAg
ICAgICAgICA3Ny44NzY3Ky0wLjIyNTkgICAgXiAgICA3Ni41MzYxKy0wLjA2NDYgICAgICAgXiBk
ZWZpbml0ZWx5IDEuMDE3NXggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1hZXMgICAgICAgICAg
ICAgICAgICAxMDcuMzA3MistMC4xMjE3ICAgIF4gICAxMDYuNjI1NystMC4yNDUyICAgICAgIF4g
ZGVmaW5pdGVseSAxLjAwNjR4IGZhc3RlcgogICBzdGFuZm9yZC1jcnlwdG8tY2NtICAgICAgICAg
ICAgICAgICAgMTA2LjYyNDYrLTAuMjg4OCAgICBeICAgMTA1LjE3NDcrLTAuMzE2NiAgICAgICBe
IGRlZmluaXRlbHkgMS4wMTM4eCBmYXN0ZXIKICAgc3RhbmZvcmQtY3J5cHRvLXBia2RmMiAgICAg
ICAgICAgICAgIDIwNy44MDk5Ky0wLjEzMDcgICAgXiAgIDIwNC4wNjE1Ky0wLjI1NTcgICAgICAg
XiBkZWZpbml0ZWx5IDEuMDE4NHggZmFzdGVyCiAgIHN0YW5mb3JkLWNyeXB0by1zaGEyNTYtaXRl
cmF0aXZlICAgICAgOTMuMDI1OCstMC4xNjIwICAgIF4gICAgOTIuNDUwNCstMC4xODMyICAgICAg
IF4gZGVmaW5pdGVseSAxLjAwNjJ4IGZhc3RlcgoKICAgPGFyaXRobWV0aWM+ICogICAgICAgICAg
ICAgICAgICAgICAgIDIzOS40ODgyKy0wLjQyODggICAgICAgIDIzOS4yMjI5Ky0wLjQyMzAgICAg
ICAgICBtaWdodCBiZSAxLjAwMTF4IGZhc3RlcgogICA8Z2VvbWV0cmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTg0Ljc5ODArLTAuMjAyMCAgICBeICAgMTg0LjEyNTYrLTAuMjI5MiAgICAg
ICBeIGRlZmluaXRlbHkgMS4wMDM3eCBmYXN0ZXIKICAgPGhhcm1vbmljPiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDE0OC4yNDI0Ky0wLjEwNzUgICAgXiAgIDE0Ny4zNzk3Ky0wLjExNTggICAg
ICAgXiBkZWZpbml0ZWx5IDEuMDA1OXggZmFzdGVyCgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRvVCAgICAgICAgICAgICAgICAgICAgc3RydG9kICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApBbGwgYmVuY2htYXJrczoKICAgPGFyaXRo
bWV0aWM+ICAgICAgICAgICAgICAgICAgICAgICAgICA4OS43NzU3Ky0wLjEzMDYgICAgICAgICA4
OS43MTgwKy0wLjEzMDMgICAgICAgICBtaWdodCBiZSAxLjAwMDZ4IGZhc3RlcgogICA8Z2VvbWV0
cmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLjY0NTErLTAuMDE5NSAgICBeICAgIDIz
LjU5MTkrLTAuMDIyNyAgICAgICBeIGRlZmluaXRlbHkgMS4wMDIzeCBmYXN0ZXIKICAgPGhhcm1v
bmljPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNy41NTIwKy0wLjAwODAgICAgPyAgICAg
Ny41NTQwKy0wLjAxMzcgICAgICAgPyBtaWdodCBiZSAxLjAwMDN4IHNsb3dlcgoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb1QgICAgICAgICAgICAgICAg
ICAgIHN0cnRvZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKR2VvbWVhbiBv
ZiBwcmVmZXJyZWQgbWVhbnM6CiAgIDxzY2FsZWQtcmVzdWx0PiAgICAgICAgICAgICAgICAgICAg
ICAgNTIuODI1MSstMC4wNTAzICAgICAgICAgNTIuNzU5OCstMC4wNTE3ICAgICAgICAgbWlnaHQg
YmUgMS4wMDEyeCBmYXN0ZXIKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>