<?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>66851</bug_id>
          
          <creation_ts>2011-08-24 05:09:34 -0700</creation_ts>
          <short_desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</short_desc>
          <delta_ts>2022-07-12 15:13:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Varga">voliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>loki</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>456055</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-24 05:09:34 -0700</bug_when>
    <thetext>Replace the string concatenation (+, +=, and Vector&lt;Uchar&gt; append()) to the much faster StringBuilder append().
http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg16022.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456056</commentid>
    <comment_count>1</comment_count>
      <attachid>104982</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-24 05:15:14 -0700</bug_when>
    <thetext>Created attachment 104982
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456068</commentid>
    <comment_count>2</comment_count>
      <attachid>104982</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-24 06:03:23 -0700</bug_when>
    <thetext>Comment on attachment 104982
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        According to the tests youtube, ebay,
&gt; +        baidu and wordpress loading is faster about 5-8%.

5-8%? Seriously? That sounds way too good to be true, how are you testing this exactly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456148</commentid>
    <comment_count>3</comment_count>
      <attachid>104982</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-24 09:50:27 -0700</bug_when>
    <thetext>Comment on attachment 104982
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

Thanks for tackling this. I see no reason to overload the += operator, though. Lets use append.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:57
&gt; +    inline void operator+=(const String&amp; string)

Why is it critical to use += instead of an append function? Just to keep the editing down?

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:646
&gt; +            text += formatNumber(m_value.num);
&gt; +            text += &quot;em&quot;;

I think these would read better as append function calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456672</commentid>
    <comment_count>4</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-08-24 23:33:31 -0700</bug_when>
    <thetext>I suggested Oliver to keep the += since for me it is easier to read. Sorry Oliver for the extra work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456673</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-24 23:35:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 104982 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104982&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        According to the tests youtube, ebay,
&gt; &gt; +        baidu and wordpress loading is faster about 5-8%.
&gt; 
&gt; 5-8%? Seriously? That sounds way too good to be true, how are you testing this exactly?

I tested our internal testing system, called &quot;methanol benchmarking&quot;.
It is loading webpages many times and it is measured.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456690</commentid>
    <comment_count>6</comment_count>
      <attachid>105141</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-25 00:35:26 -0700</bug_when>
    <thetext>Created attachment 105141
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456706</commentid>
    <comment_count>7</comment_count>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-25 01:23:25 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 104982 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=104982&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:14
&gt; &gt; +        According to the tests youtube, ebay,
&gt; &gt; +        baidu and wordpress loading is faster about 5-8%.
&gt; 
&gt; 5-8%? Seriously? That sounds way too good to be true, how are you testing this exactly?

You are right, the 5-8% is too good to be true.
I performed the tests again, and now generated a minimal performance tweak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456709</commentid>
    <comment_count>8</comment_count>
      <attachid>105144</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-25 01:35:12 -0700</bug_when>
    <thetext>Created attachment 105144
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456849</commentid>
    <comment_count>9</comment_count>
      <attachid>105144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-25 07:40:02 -0700</bug_when>
    <thetext>Comment on attachment 105144
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

My comments include many ideas that are ways to do better in the future. The one thing you should definitely fix before landing is the append(c) thing. Please consider the others too, though. We don’t want any changes that actually make things slower.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:638
&gt; +            text.append(formatNumber(m_value.num));

Suggestion for further improvement:

There’s a significant performance gain available if we can come up with a way to do these without creating a string and then appending it. We need an equivalent of formatNumber that works directly with the StringBuilder, or some way that does not involve memory allocation other than what StringBuilder does.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:716
&gt; -            text = quoteCSSStringIfNeeded(m_value.string);
&gt; +            text.append(quoteCSSStringIfNeeded(m_value.string));

Similarly, for the quoted string case it&apos;s much more efficient to do the quoting without allocating an entire new string.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:732
&gt;              DEFINE_STATIC_LOCAL(const String, attrParen, (&quot;attr(&quot;));

There&apos;s no value in having this pre-allocated in a String. It can just be an append of a const char*.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:755
&gt;              DEFINE_STATIC_LOCAL(const String, rectParen, (&quot;rect(&quot;));

There&apos;s no value in having this pre-allocated in a String. It can just be an append of a const char*.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-737
&gt; -            Vector&lt;UChar&gt; result;
&gt; -            result.reserveInitialCapacity(32);

Are you sure the StringBuilder is more efficient than the Vector&lt;UChar&gt; was?

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:762
&gt; +            result.append(rectVal-&gt;top()-&gt;cssText());

This is another opportunity to be much more efficient. If we had a function that appended the CSS text to a StringBuilder without ever creating a string, we could probably save many extra string allocations here.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:794
&gt; -            appendNumber(result, static_cast&lt;unsigned char&gt;(color.red()));
&gt; -            append(result, commaSpace);
&gt; +            result.append(String::number(color.red()));

Again, making a string out of the number just to put it in the string builder is quite inefficient. It’s a step backwards to go from the appendNumber function, which can and has been optimized, to an implementation that explicitly allocates a string each time.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:853
&gt;              char c = static_cast&lt;char&gt;(m_value.ident);
&gt; -            text = String(&amp;c, 1U);
&gt; +            text.append(String(&amp;c, 1U));

This is wrong. It can just be append(c) or even append(static_cast&lt;char&gt;(m_value.ident)). Explicitly creating a string makes us dow double allocation.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:867
&gt; -    cssTextCache().set(this, text);
&gt; +    cssTextCache().set(this, text.toString());
&gt;      m_hasCachedCSSText = true;
&gt; -    return text;
&gt; +    return text.toString();

Calling toString() twice seems a bit inelegant. I would put the string into a local variable instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457487</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-26 02:41:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 105144 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=105144&amp;action=review
&gt; 
&gt; My comments include many ideas that are ways to do better in the future. The one thing you should definitely fix before landing is the append(c) thing. Please consider the others too, though. We don’t want any changes that actually make things slower.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:638
&gt; &gt; +            text.append(formatNumber(m_value.num));
&gt; 
&gt; Suggestion for further improvement:
&gt; 
&gt; There’s a significant performance gain available if we can come up with a way to do these without creating a string and then appending it. We need an equivalent of formatNumber that works directly with the StringBuilder, or some way that does not involve memory allocation other than what StringBuilder does.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:716
&gt; &gt; -            text = quoteCSSStringIfNeeded(m_value.string);
&gt; &gt; +            text.append(quoteCSSStringIfNeeded(m_value.string));
&gt; 
&gt; Similarly, for the quoted string case it&apos;s much more efficient to do the quoting without allocating an entire new string.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:732
&gt; &gt;              DEFINE_STATIC_LOCAL(const String, attrParen, (&quot;attr(&quot;));
&gt; 
&gt; There&apos;s no value in having this pre-allocated in a String. It can just be an append of a const char*.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:755
&gt; &gt;              DEFINE_STATIC_LOCAL(const String, rectParen, (&quot;rect(&quot;));
&gt; 
&gt; There&apos;s no value in having this pre-allocated in a String. It can just be an append of a const char*.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:-737
&gt; &gt; -            Vector&lt;UChar&gt; result;
&gt; &gt; -            result.reserveInitialCapacity(32);
&gt; 
&gt; Are you sure the StringBuilder is more efficient than the Vector&lt;UChar&gt; was?
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:762
&gt; &gt; +            result.append(rectVal-&gt;top()-&gt;cssText());
&gt; 
&gt; This is another opportunity to be much more efficient. If we had a function that appended the CSS text to a StringBuilder without ever creating a string, we could probably save many extra string allocations here.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:794
&gt; &gt; -            appendNumber(result, static_cast&lt;unsigned char&gt;(color.red()));
&gt; &gt; -            append(result, commaSpace);
&gt; &gt; +            result.append(String::number(color.red()));
&gt; 
&gt; Again, making a string out of the number just to put it in the string builder is quite inefficient. It’s a step backwards to go from the appendNumber function, which can and has been optimized, to an implementation that explicitly allocates a string each time.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:853
&gt; &gt;              char c = static_cast&lt;char&gt;(m_value.ident);
&gt; &gt; -            text = String(&amp;c, 1U);
&gt; &gt; +            text.append(String(&amp;c, 1U));
&gt; 
&gt; This is wrong. It can just be append(c) or even append(static_cast&lt;char&gt;(m_value.ident)). Explicitly creating a string makes us dow double allocation.
&gt; 
&gt; &gt; Source/WebCore/css/CSSPrimitiveValue.cpp:867
&gt; &gt; -    cssTextCache().set(this, text);
&gt; &gt; +    cssTextCache().set(this, text.toString());
&gt; &gt;      m_hasCachedCSSText = true;
&gt; &gt; -    return text;
&gt; &gt; +    return text.toString();
&gt; 
&gt; Calling toString() twice seems a bit inelegant. I would put the string into a local variable instead.

Sorry for the inattention, now I&apos;m correcting.
And thank you for the guidance. I will considered your suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457489</commentid>
    <comment_count>11</comment_count>
      <attachid>105339</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-08-26 02:42:30 -0700</bug_when>
    <thetext>Created attachment 105339
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467097</commentid>
    <comment_count>12</comment_count>
      <attachid>107345</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-09-14 10:08:02 -0700</bug_when>
    <thetext>Created attachment 107345
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467099</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 10:10:15 -0700</bug_when>
    <thetext>Attachment 107345 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/WebCore/css/CSSPrimitiveValue.cpp:894:  Should have a space between // and comment  [whitespace/comments] [4]
Source/JavaScriptCore/wtf/text/StringBuilder.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/wtf/text/StringBuilder.h:32:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/wtf/text/StringBuilder.h:108:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/text/StringBuilder.h:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/JavaScriptCore/wtf/text/StringBuilder.h:150:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/wtf/text/StringBuilder.h:166:  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: 7 in 4 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>467105</commentid>
    <comment_count>14</comment_count>
      <attachid>107347</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-09-14 10:22:13 -0700</bug_when>
    <thetext>Created attachment 107347
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467556</commentid>
    <comment_count>15</comment_count>
      <attachid>107347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 20:04:06 -0700</bug_when>
    <thetext>Comment on attachment 107347
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

New failing tests:
editing/execCommand/query-command-value-background-color.html
svg/animations/animate-color-rgba-calcMode-discrete.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468108</commentid>
    <comment_count>16</comment_count>
      <attachid>107347</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-15 15:01:12 -0700</bug_when>
    <thetext>Comment on attachment 107347
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:105
&gt; +        char* number = new char[absoluteExp + sizeOfsignificand + 3];

This is an inefficient way to allocate memory, and the wrong way to go for this function. The point of such functions is to be fast and doing a malloc makes them slow. An efficient way to allocate memory is:

    Vector&lt;char, 32&gt; number(absoluteExp + sizeOfsignificand + 3);

This will use the stack for the buffer unless the buffer has to be larger than 32 bytes.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:158
&gt; +        char* number = new char[digitsOfNumber + 1];

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484016</commentid>
    <comment_count>17</comment_count>
      <attachid>111022</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-14 09:28:01 -0700</bug_when>
    <thetext>Created attachment 111022
Fix CSSPrimitiveValue::cssText() to use StringBuilder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484024</commentid>
    <comment_count>18</comment_count>
      <attachid>111022</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-14 09:50:09 -0700</bug_when>
    <thetext>Comment on attachment 111022
Fix CSSPrimitiveValue::cssText() to use StringBuilder

Attachment 111022 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10054573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484057</commentid>
    <comment_count>19</comment_count>
      <attachid>111022</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-14 10:31:23 -0700</bug_when>
    <thetext>Comment on attachment 111022
Fix CSSPrimitiveValue::cssText() to use StringBuilder

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

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:135
&gt; +    void append(double d, int precision = 6)

This giant function should not be inlined in a header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485103</commentid>
    <comment_count>20</comment_count>
      <attachid>111257</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-17 06:37:10 -0700</bug_when>
    <thetext>Created attachment 111257
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485107</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 06:40:16 -0700</bug_when>
    <thetext>Attachment 111257 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
From git://git.webkit.org/WebKit
   293b636..9b6f4d5  master     -&gt; origin/master
	M	Tools/BuildSlaveSupport/build.webkit.org-config/config.json
	M	Tools/ChangeLog
r97614 = 9b6f4d5fe02791ab160cc89f3585e1ae198694bd (refs/remotes/trunk)
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/trunk.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486034</commentid>
    <comment_count>22</comment_count>
      <attachid>111441</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-18 07:11:58 -0700</bug_when>
    <thetext>Created attachment 111441
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486597</commentid>
    <comment_count>23</comment_count>
      <attachid>111570</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-19 00:40:34 -0700</bug_when>
    <thetext>Created attachment 111570
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>486598</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-19 00:42:12 -0700</bug_when>
    <thetext>Attachment 111570 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/StringBuilder.h:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 4 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>486599</commentid>
    <comment_count>25</comment_count>
      <attachid>111571</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-19 00:42:38 -0700</bug_when>
    <thetext>Created attachment 111571
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488337</commentid>
    <comment_count>26</comment_count>
      <attachid>111955</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-21 05:32:05 -0700</bug_when>
    <thetext>Created attachment 111955
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

I correct the previous mistake I found here: http://queues.webkit.org/results/10121269
After that I didn&apos;t found any information in connection with the Build Failed on win EWS.
I try to upload again the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488380</commentid>
    <comment_count>27</comment_count>
      <attachid>111955</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-21 07:47:52 -0700</bug_when>
    <thetext>Comment on attachment 111955
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

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

If you want a patch to be reviewed, you need to set review+ on it.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:82
&gt; +    static inline unsigned getPrecision(int m_exponent, unsigned m_precision, unsigned digitsBeforeDecimalPoint)

The inline keyword here is not needed.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:108
&gt; +    {
&gt; +            // #shift
&gt; +            int p = 1;
&gt; +            while (num[p+1] != &apos;\0&apos; &amp;&amp; p &lt;= shift &amp;&amp; num[1] != &apos;\0&apos;) {
&gt; +                    num[ p ] = num[p+1];
&gt; +                    num[p+1] = &apos;.&apos;;
&gt; +                    p++;
&gt; +            }

This function is indented 8 rather than 4 space tab stops.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:136
&gt; +    void append(double d)

This large function should not be inlined in a header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488400</commentid>
    <comment_count>28</comment_count>
      <attachid>111969</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-21 08:29:29 -0700</bug_when>
    <thetext>Created attachment 111969
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

I corrected the indentation, and deleted the inline modifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488412</commentid>
    <comment_count>29</comment_count>
      <attachid>111969</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-10-21 08:47:20 -0700</bug_when>
    <thetext>Comment on attachment 111969
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

You need to move the huge functions in StringBuilder.h to a cpp file to prevent them from being inlined at least once per compilation unit that calls them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489068</commentid>
    <comment_count>30</comment_count>
      <attachid>112126</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-10-23 14:19:55 -0700</bug_when>
    <thetext>Created attachment 112126
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

The huge functions moved to the StringBuilder.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489152</commentid>
    <comment_count>31</comment_count>
      <attachid>112126</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-10-23 21:41:36 -0700</bug_when>
    <thetext>Comment on attachment 112126
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

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

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:180
&gt; +       length += -m_exponent - 1;
&gt; +       length += m_precision;
&gt; +       return length;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:184
&gt; +       return 0;

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:198
&gt; +    while (num[p+1] != &apos;\0&apos; &amp;&amp; p &lt;= shift &amp;&amp; num[1] != &apos;\0&apos;) {
&gt; +         num[ p ] = num[p+1];
&gt; +         num[p+1] = &apos;.&apos;;
&gt; +         p++;

5 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:206
&gt; +    while (p &lt;= shift) {
&gt; +         num[ p ] = &apos;0&apos;;
&gt; +         num[p+1] = &apos;.&apos;;
&gt; +         num[p+2] = 0;
&gt; +         p++;

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:212
&gt; +    for (int i = length - 1; i &gt;= p &amp;&amp; (num[i] == &apos;0&apos; || num[i] == &apos;.&apos;); --i)
&gt; +         num[i]=0;

5 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:216
&gt; +    if (num[0] == &apos;0&apos; &amp;&amp; num[1] == &apos;0&apos;)
&gt; +         return 2;

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:219
&gt; +    if (num[0] == &apos;0&apos; &amp;&amp; num[1] != &apos;.&apos;)
&gt; +         return 1;

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:222
&gt; +    if (num[0] != &apos;0&apos;)
&gt; +       return 0;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:238
&gt; +    if (d &lt; 0) {
&gt; +       isNegative = true;
&gt; +       d = -d;
&gt; +       StringBuilder::append(&quot;-&quot;, 1);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:276
&gt; +    if (!precision) {
&gt; +       if (m_exponent &lt; 0) {
&gt; +         m_significand[2] = m_significand[1];

3 space indentation,
and 2 space indentation.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:284
&gt; +       for (; i &lt; digitsBeforeDecimalPoint &amp;&amp; i &lt; sizeOfsignificand; ++i) {
&gt; +         *pointer = m_significand[i];

2 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:289
&gt; +       if (m_significand[i] &gt; &apos;4&apos;) {
&gt; +         toShif = true;

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:300
&gt; +         if (m_significand[0] == &apos;0&apos;) {
&gt; +            maxLimit--;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:305
&gt; +    } else
&gt; +       jump = true;

3 space indentation.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:310
&gt; +    if (jump) {
&gt; +       for (int i = 0; i &lt; numberOfZeros; i++) {
&gt; +          if (i == 1 &amp;&amp; !dotAlreadyWritten) {
&gt; +             *pointer = dot;

3 space indentations

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:319
&gt; +          if (maxLimit == precision) {
&gt; +             if (numberOfZeros &gt; precision + 1 || (numberOfZeros == (precision + 1) &amp;&amp; m_significand[0] &lt; &apos;5&apos;)) {
&gt; +               pointer = &amp;number[1];

3 space indentation and 2 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:324
&gt; +               if (toShif)
&gt; +                  from = shifting(&amp;number[0], valueOfShift);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:330
&gt; +             if (numberOfZeros == precision + 1 &amp;&amp; m_significand[0] &gt; &apos;4&apos;) {
&gt; +               pointer[-1] = &apos;1&apos;;

2 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:334
&gt; +               if (toShif)
&gt; +                  from = shifting(&amp;number[0], valueOfShift);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:343
&gt; +       for (int i = 0; i &lt; sizeOfsignificand; i++) {
&gt; +          if (i == placeOfDot + 1 &amp;&amp; sizeOfsignificand != i &amp;&amp; !dotAlreadyWritten) {
&gt; +             *pointer = dot;

3 space indentations

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:351
&gt; +          if (maxLimit == precision) {
&gt; +             if (i + 1 &lt; sizeOfMSignificand &amp;&amp; m_significand[i + 1] &lt; &apos;5&apos;) {
&gt; +               while (*pointer == &apos;0&apos; &amp;&amp; dotAlreadyWritten)

3 space indentation,
and 2 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:354
&gt; +                if (*pointer == dot)
&gt; +                   *pointer = &apos;\0&apos;;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:358
&gt; +                if (toShif)
&gt; +                   from = shifting(&amp;number[0], valueOfShift);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:365
&gt; +              if (m_significand[i] == &apos;9&apos;) {
&gt; +                while (*pointer == &apos;9&apos; &amp;&amp; *pointer != dot)
&gt; +                  pointer--;

2 space indentations

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:368
&gt; +                if (*pointer == dot)
&gt; +                     pointer--;

5 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:370
&gt; +                 pointer[1] = &apos;\0&apos;;

Unnecessary 1 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:373
&gt; +                if (toShif)
&gt; +                   from = shifting(&amp;number[0], valueOfShift);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:383
&gt; +              if (toShif)
&gt; +                from = shifting(&amp;number[0], valueOfShift);

2 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:393
&gt; +    for (int i = 0; i &lt; (m_exponent - sizeOfsignificand) + 1; i++) {
&gt; +       *pointer = zero;
&gt; +       pointer++;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:399
&gt; +    if (toShif)
&gt; +       from = shifting(&amp;number[0], valueOfShift);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:407
&gt; +    if (n &lt; 0) {
&gt; +       StringBuilder::append(&quot;-&quot;, 1);

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:412
&gt; +    if (!(n / 10)) {
&gt; +       char c = static_cast&lt;char&gt;(n + &apos;0&apos;);

ditto.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:424
&gt; +    do {
&gt; +       *pointer = (n % 10) + &apos;0&apos;;

3 space indentation

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:82
&gt; +    static unsigned getPrecision(int m_exponent, unsigned m_precision, unsigned digitsBeforeDecimalPoint);

Do not prepend &apos;m_&apos; for argument names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>489164</commentid>
    <comment_count>32</comment_count>
      <attachid>112126</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-23 22:12:52 -0700</bug_when>
    <thetext>Comment on attachment 112126
Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload

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

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:31
&gt; +#include &lt;math.h&gt;
&gt; +#include &lt;wtf/MathExtras.h&gt;
&gt; +#include &lt;wtf/dtoa.h&gt;

No need to add these includes to the header. Please don’t.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:84
&gt; +    static unsigned getPrecision(int m_exponent, unsigned m_precision, unsigned digitsBeforeDecimalPoint);
&gt; +
&gt; +    static int shifting(char* num, int shift);

I don’t think these need to be public functions. They could be private to the .cpp file and use “static” to get external linkage. If we decide to make them public to share them with other code, we probably would not put them in the StringBuilder class. In fact, longer term functions that convert numbers to strings don’t necessarily belong in StringBuilder.

The names here are not normal WebKit function names. We do not use “get” for name of something that returns a value (see WebKit coding style guide), and the name seems too terse. It says “precision”, but precision of what? Needs a name that actually says what it does. And “shifting” is also a curious name for a function. Normally functions that return values are named what they return. If this returns a “shifting” then we have an unconventional use of English grammar here. Also, the argument’s name should not be “num”.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:88
&gt; +    void append(double);
&gt; +
&gt; +    void append(int);

I’m not sure that overloading based on type is quite right here, since the format that is used is based on the type and the dependency on type might be subtle. We may want to give more specific names to these functions as we do to the conversion functions in String.h.

We should refactor this so it shares code with functions in String.h and StringImpl.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495403</commentid>
    <comment_count>33</comment_count>
      <attachid>113473</attachid>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-11-03 06:20:48 -0700</bug_when>
    <thetext>Created attachment 113473
Correcting

I made the previous requests:
 * I corrected the indentation, and rename some variables and functions.
The next step, I will do shortly:
 * I am going to create a new cpp and header file what name is NumericFormatting.h/cpp.
 * It will includes low level numeric formatting functions, that allows higher level classes like String and StringBuilder to use them
   efficiently, so the StringBuilder::append(double) would call the NumericFormatting::doubleToAsciiUsedByDtoa.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495559</commentid>
    <comment_count>34</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-03 09:53:36 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; NumericFormatting::doubleToAsciiUsedByDtoa.

I like the idea behind this patch but not this name.

For one thing, we spell it ASCII, not Ascii. But also &quot;double to ASCII used by dtoa&quot; is a confusing phrase and I think we can come up with a more straightforward name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495567</commentid>
    <comment_count>35</comment_count>
      <attachid>113473</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-03 10:00:25 -0700</bug_when>
    <thetext>Comment on attachment 113473
Correcting

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

I appreciate your continuing to work hard on this patch; it’s worth doing. I think there is still some work needed.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:197
&gt; +int StringBuilder::firstDigitOfOriginalNumber(char* numberToShifting, int measurementOfShift)

I don’t understand the meaning of the name “number to shifting&quot;.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:202
&gt; +        numberToShifting[ p ] = numberToShifting[p+1];

Should omit the spaces around the &quot;p&quot;. Should include spaces around the &quot;+&quot;.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:218
&gt; +        numberToShifting[i]=0;

Missing spaces here.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.h:141
&gt; +    static unsigned precisionOfResult(int, unsigned, unsigned);
&gt; +    static int firstDigitOfOriginalNumber(char*, int);

These should go into NumericFormatting.h/cpp, not this class.

I am puzzled. Why is it we need this new code and can’t use the DecimalNumber class that CSSPrimitiveValue’s formatNumber was using?

The argument names here need to be listed. It’s not at all clear what the arguments are.

The name “first digit of original number” does not make it clear that the function will have a side effect of changing the passed in character buffer.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:828
&gt; +            text.append(result.toString());

We should make it so you can append one StringBuilder to another. This toString() seems like bad idea.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:851
&gt; +            text.append(result.toString());

We should make it so you can append one StringBuilder to another. This toString() seems like bad idea.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:871
&gt; +           text.append(result.toString());

We should make it so you can append one StringBuilder to another. This toString() seems like bad idea. Also, incorrect indent here.

&gt; Source/WebCore/css/CSSPrimitiveValue.cpp:961
&gt; +    String resultOfText = text.toString();

I think this could just be named “result”. The phrase “result of text” is not good grammar here. If you really wanted both words it would just be “result text” so, resultText.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497170</commentid>
    <comment_count>36</comment_count>
    <who name="Oliver Varga">voliver</who>
    <bug_when>2011-11-07 07:54:03 -0800</bug_when>
    <thetext>Thank you for your comment, I am goint to check your new instructions shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532168</commentid>
    <comment_count>37</comment_count>
      <attachid>121666</attachid>
    <who name="Szilard Ledan">szledan</who>
    <bug_when>2012-01-09 07:00:27 -0800</bug_when>
    <thetext>Created attachment 121666
Correcting v2

Added a new class: NumericFormatting.h/cpp. The StringBuilder::append(double) uses it.

Modified CSSPrimitiveValue::customCssText() to use StringBuilder instead of string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532192</commentid>
    <comment_count>38</comment_count>
      <attachid>121666</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-09 07:32:47 -0800</bug_when>
    <thetext>Comment on attachment 121666
Correcting v2

Attachment 121666 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11187504</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532197</commentid>
    <comment_count>39</comment_count>
      <attachid>121666</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-09 07:39:23 -0800</bug_when>
    <thetext>Comment on attachment 121666
Correcting v2

Attachment 121666 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11183501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532205</commentid>
    <comment_count>40</comment_count>
      <attachid>121666</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-09 08:06:18 -0800</bug_when>
    <thetext>Comment on attachment 121666
Correcting v2

Attachment 121666 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11187518</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532559</commentid>
    <comment_count>41</comment_count>
      <attachid>121666</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-01-09 15:25:59 -0800</bug_when>
    <thetext>Comment on attachment 121666
Correcting v2

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

I didn’t have time to review the whole thing, but I have a few initial comments.

&gt; Source/JavaScriptCore/wtf/text/NumericFormatting.h:4
&gt; + * Copyright (C) 2011 University of Szeged
&gt; + * Copyright (C) 2011 Oliver Varga
&gt; + * Copyright (C) 2012 Szilard Ledan

Seems like too much copyright for these two function declarations. Did all of these contribute to this?

&gt; Source/JavaScriptCore/wtf/text/NumericFormatting.h:31
&gt; +#include &quot;string.h&quot;

This include is not needed and should be removed, but if it was needed it would be &lt;string.h&gt;.

&gt; Source/JavaScriptCore/wtf/text/NumericFormatting.h:44
&gt; +class NumericFormatting {
&gt; +public:
&gt; +    // Is is used by append(double). Return the precision of the the result number.
&gt; +    unsigned precisionOfResult(int exponent, unsigned precision, unsigned digitsBeforeDecimalPoint);
&gt; +
&gt; +    // Is is used by append(double). If the input number is like &apos;999.999&apos;, and the value of the rounding is 0 we have to move forward the carry
&gt; +    // over the decimal point. This kind of rounding implemented the number less then 1 and more than 0, and before the rounding we convert &apos;999.999&apos;
&gt; +    // to &apos;0.999999&apos;. The firstDigitOfOriginalNumber() helps get the real number back.
&gt; +    int firstDigitOfOriginalNumber(char* numberToShifting, int measurementOfShift);
&gt; +};

These are functions, not a class. They could be free functions, or if you really want this to be a class, they should be static member functions, not member functions.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:34
&gt;  #include &quot;config.h&quot;
&gt;  #include &quot;StringBuilder.h&quot;
&gt; +#include &quot;NumericFormatting.h&quot;
&gt; +#include &lt;wtf/MathExtras.h&gt;
&gt; +#include &lt;wtf/dtoa.h&gt;
&gt;  
&gt;  #include &quot;WTFString.h&quot;
&gt;  
&gt; +#include &lt;stdio.h&gt;

This is incorrect. All the includes except for &quot;StringBuilder.h&quot; should be in a single paragraph, and sorted.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:303
&gt; +        StringBuilder::append(&quot;-&quot;, 1);

This should be:

    append(&apos;-&apos;);

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:317
&gt; +    printf(&quot;debug: exponent:%d precision:%d\n&quot;, exponent, precision);

Please don&apos;t submit the patch with the printf still here.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:323
&gt; +    int sizeOfsignificand = strlen(significand);

The word significand should be capitalized.

&gt; Source/JavaScriptCore/wtf/text/StringBuilder.cpp:326
&gt; +    int sizeOfMSignificand = sizeof(significand);

What is this? What does the “M” mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565009</commentid>
    <comment_count>42</comment_count>
      <attachid>121666</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-02-25 13:00:34 -0800</bug_when>
    <thetext>Comment on attachment 121666
Correcting v2

based on Darin&apos;s review and lack of update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1882658</commentid>
    <comment_count>43</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-12 15:13:42 -0700</bug_when>
    <thetext>I think Ben Poulain made similar improvements when porting to Arm in 2014. Current sources seem to use StringBuilder.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104982</attachid>
            <date>2011-08-24 05:15:14 -0700</date>
            <delta_ts>2011-08-25 00:35:26 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-Fix-CSSPrimitiveValue-cssText.patch</filename>
            <type>text/plain</type>
            <size>14685</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA3Mzg5ZTQ3ZTViY2NkYzBkODgxNDY5NzI2MjQ5NTBlNjM0ZjkwY2YxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBXZWQsIDI0IEF1ZyAyMDExIDE0OjEyOjMxICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
Rml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0CgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgfCAgIDEyICsrCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIHwgICAyMCArKysKIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE4ICsrKwogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCAgICAgICB8ICAxNzAgKysrKysrKysrKysrKystLS0t
LS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDE0OCBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3ZDY3MWU1Li5mMjM4ZWQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0wOC0yMyAgT2xpdmVyIFZh
cmdhICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgQWRkIDQgaW5saW5lICs9
IG9wZXJhdG9yIG92ZXJsb2FkaW5nIHRvIHRoZQorICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2
ODUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmFw
cGVuZCk6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6Om9wZXJhdG9yICs9KToKKwogMjAx
MS0wOC0yMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRpb24gZG9lcyBub3QgdGFrZSBwbGFjZSBk
dXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdlZCBvYmplY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCBmMTBhZjY0Li4wNjEx
ZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmgKQEAgLTU0LDEyICs1NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIGFwcGVuZChzdHJpbmcuY2hh
cmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCkpOwogICAgIH0KIAorICAgIGlubGluZSB2b2lkIG9w
ZXJhdG9yKz0oY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgIHRoaXMtPmFwcGVu
ZChzdHJpbmcpOworICAgIH0KKwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMpCiAgICAgewogICAgICAgICBpZiAoY2hhcmFjdGVycykKICAgICAgICAgICAgIGFwcGVuZChj
aGFyYWN0ZXJzLCBzdHJsZW4oY2hhcmFjdGVycykpOwogICAgIH0KIAorICAgIGlubGluZSB2b2lk
IG9wZXJhdG9yKz0oY29uc3QgY2hhciogY2hhcmFjdGVycykKKyAgICB7CisgICAgICAgIHRoaXMt
PmFwcGVuZChjaGFyYWN0ZXJzKTsKKyAgICB9CisKICAgICB2b2lkIGFwcGVuZChVQ2hhciBjKQog
ICAgIHsKICAgICAgICAgaWYgKG1fYnVmZmVyICYmIG1fbGVuZ3RoIDwgbV9idWZmZXItPmxlbmd0
aCgpICYmIG1fc3RyaW5nLmlzTnVsbCgpKQpAQCAtNjgsNiArNzgsMTEgQEAgcHVibGljOgogICAg
ICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgICB9CiAKKyAgICBpbmxpbmUgdm9pZCBvcGVyYXRv
cis9KFVDaGFyIGMpCisgICAgeworICAgICAgICB0aGlzLT5hcHBlbmQoYyk7CisgICAgfQorCiAg
ICAgdm9pZCBhcHBlbmQoY2hhciBjKQogICAgIHsKICAgICAgICAgaWYgKG1fYnVmZmVyICYmIG1f
bGVuZ3RoIDwgbV9idWZmZXItPmxlbmd0aCgpICYmIG1fc3RyaW5nLmlzTnVsbCgpKQpAQCAtNzYs
NiArOTEsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgICB9CiAK
KyAgICBpbmxpbmUgdm9pZCBvcGVyYXRvcis9KGNoYXIgYykKKyAgICB7CisgICAgICAgIHRoaXMt
PmFwcGVuZChjKTsKKyAgICB9CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAgICAg
ICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5YjE1Mi4uOTg0YjQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTA4LTIzICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCisKKyAgICAgICAgUmVwbGFjZSB0aGUg
c3RyaW5nIGNvbmNhdGVuYXRpb24gKCssICs9LCBhbmQgVmVjdG9yPFVjaGFyPiBhcHBlbmQoKSkK
KyAgICAgICAgdG8gdGhlIG11Y2ggZmFzdGVyIFN0cmluZ0J1aWxkZXIgYXBwZW5kKCkuCisgICAg
ICAgIFRoZSBjaGFuZ2Ugd2FzIHJlcXVlc3RlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgdGhpcyBp
cyBvbmx5IGEgcGVyZm9ybWFuY2UgdHdlYWsuCisgICAgICAgIEFjY29yZGluZyB0byB0aGUgdGVz
dHMgeW91dHViZSwgZWJheSwKKyAgICAgICAgYmFpZHUgYW5kIHdvcmRwcmVzcyBsb2FkaW5nIGlz
IGZhc3RlciBhYm91dCA1LTglLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKwogMjAx
MS0wOC0yMyAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBjaGVja3MgdG8gZW5zdXJlIGFsbG9jYXRpb24gZG9lcyBub3QgdGFrZSBwbGFjZSBk
dXJpbmcgaW5pdGlhbGl6YXRpb24gb2YgR0MtbWFuYWdlZCBvYmplY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA5ODE2ZGE1Li42MzU2ODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNp
bmNsdWRlIDx3dGYvRGVjaW1hbE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5j
bHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC02MjcsMTI5ICs2MjgsMTUwIEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBjc3NUZXh0
Q2FjaGUoKS5nZXQodGhpcyk7CiAgICAgfQogCi0gICAgU3RyaW5nIHRleHQ7CisgICAgU3RyaW5n
QnVpbGRlciB0ZXh0OwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VO
S05PV046CiAgICAgICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX05VTUJFUjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRl
eHQgKz0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAiJSI7CisgICAgICAgICAgICB0ZXh0ICs9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0ICs9ICclJzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAgICB0ZXh0ICs9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0ICs9ICJlbSI7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfRVhTOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAiZXgiOworICAgICAgICAgICAgdGV4dCArPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dCArPSAiZXgiOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4dCArPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dCArPSAicmVtIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gInB4IjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19DTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgImNtIjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gImNtIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gIm1tIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gImluIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19QVDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgInB0IjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gInB0IjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAgICAgIHRleHQgKz0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gInBjIjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dCArPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dCArPSAiZGVnIjsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyYWQiOworICAgICAgICAgICAgdGV4dCArPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dCArPSAicmFkIjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0ICs9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0ICs9ICJncmFkIjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRl
eHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQg
Kz0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gIm1zIjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicyI7CisgICAgICAgICAgICB0ZXh0ICs9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0ICs9ICdzJzsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19IWjoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsKKyAgICAgICAgICAgIHRleHQgKz0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQgKz0gImh6IjsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dCAr
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dCArPSAia2h6IjsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19UVVJOOgotICAgICAgICAgICAg
dGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAidHVybiI7CisgICAgICAgICAgICB0
ZXh0ICs9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0ICs9ICJ0
dXJuIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAg
ICAgICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1NUUklORzoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFs
dWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQgKz0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRlJP
TV9GTE9XOgotICAgICAgICAgICAgdGV4dCA9ICItd2Via2l0LWZyb20tZmxvdygiICsgcXVvdGVD
U1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0
ICs9ICItd2Via2l0LWZyb20tZmxvdygiOworICAgICAgICAgICAgdGV4dCArPSBxdW90ZUNTU1N0
cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQgKz0gJyknOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAgICAgICAgIHRl
eHQgPSAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsK
KyAgICAgICAgICAgIHRleHQgKz0gInVybCgiOworICAgICAgICAgICAgdGV4dCArPSBxdW90ZUNT
U1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQgKz0gJyknOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0lERU5UOgotICAgICAgICAgICAg
dGV4dCA9IHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCk7CisgICAgICAgICAgICB0
ZXh0ICs9IHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfQVRUUjogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKIAotICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSg2ICsgbV92YWx1ZS5zdHJpbmctPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIFN0
cmluZ0J1aWxkZXIgcmVzdWx0OwogCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBhdHRyUGFy
ZW4pOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgbV92YWx1ZS5zdHJpbmcpOwotICAgICAg
ICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVuZCgnKScpOworICAgICAgICAgICAgcmVzdWx0ICs9
IGF0dHJQYXJlbjsKKyAgICAgICAgICAgIHJlc3VsdCArPSBtX3ZhbHVlLnN0cmluZzsKKyAgICAg
ICAgICAgIHJlc3VsdCArPSAnKSc7CiAKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0
KHJlc3VsdCk7CisgICAgICAgICAgICB0ZXh0ICs9IHJlc3VsdC50b1N0cmluZygpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgot
ICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7CisgICAgICAgICAgICB0ZXh0ICs9ICJjb3Vu
dGVyKCI7CiAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUuc3RyaW5nOwotICAgICAgICAgICAg
dGV4dCArPSAiKSI7CisgICAgICAgICAgICB0ZXh0ICs9ICcpJzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOgotICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVy
KCI7CisgICAgICAgICAgICB0ZXh0ICs9ICJjb3VudGVyKCI7CiAgICAgICAgICAgICB0ZXh0ICs9
IFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOwor
ICAgICAgICAgICAgdGV4dCArPSAnKSc7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxpc3Qt
c3R5bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1JFQ1Q6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBy
ZWN0UGFyZW4sICgicmVjdCgiKSk7CiAKICAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBnZXRS
ZWN0VmFsdWUoKTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5k
KHJlc3VsdCwgcmVjdFBhcmVuKTsKIAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZh
bC0+dG9wKCktPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdCArPSBy
ZWN0UGFyZW47CiAKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPnJpZ2h0KCkt
PmNzc1RleHQoKSk7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICByZXN1bHQgKz0gcmVjdFZhbC0+dG9wKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHJlc3Vs
dCArPSAnICc7CiAKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPmJvdHRvbSgp
LT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgcmVzdWx0ICs9IHJlY3RWYWwtPnJpZ2h0KCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHJl
c3VsdCArPSAnICc7CiAKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJlY3RWYWwtPmxlZnQo
KS0+Y3NzVGV4dCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKKyAgICAgICAg
ICAgIHJlc3VsdCArPSByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAg
cmVzdWx0ICs9ICcgJzsKIAotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0
KTsKKyAgICAgICAgICAgIHJlc3VsdCArPSByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKTsKKyAg
ICAgICAgICAgIHJlc3VsdCArPSAnKSc7CisKKyAgICAgICAgICAgIHRleHQgKz0gcmVzdWx0LnRv
U3RyaW5nKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENT
U19SR0JDT0xPUjoKQEAgLTc2Myw0MSArNzg1LDQyIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgQ29sb3I6OnBhcnNlSGV4Q29sb3Io
bV92YWx1ZS5zdHJpbmcsIHJnYkNvbG9yKTsKICAgICAgICAgICAgIENvbG9yIGNvbG9yKHJnYkNv
bG9yKTsKIAotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICBy
ZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7CisgICAgICAgICAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKICAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKQotICAgICAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYmFQYXJlbik7CisgICAgICAgICAgICAgICAgcmVzdWx0
ICs9IHJnYmFQYXJlbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCByZ2JQYXJlbik7CisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IHJnYlBhcmVuOwog
Ci0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihjb2xvci5yZWQoKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFj
ZSk7CisgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nOjpudW1iZXIoY29sb3IucmVkKCkpOwor
ICAgICAgICAgICAgcmVzdWx0ICs9IGNvbW1hU3BhY2U7CiAKLSAgICAgICAgICAgIGFwcGVuZE51
bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmdyZWVuKCkpKTsK
LSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgICAgICAgICAgcmVz
dWx0ICs9IFN0cmluZzo6bnVtYmVyKGNvbG9yLmdyZWVuKCkpOworICAgICAgICAgICAgcmVzdWx0
ICs9IGNvbW1hU3BhY2U7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmJsdWUoKSkpOworICAgICAgICAgICAgcmVzdWx0
ICs9IFN0cmluZzo6bnVtYmVyKGNvbG9yLmJsdWUoKSk7CiAgICAgICAgICAgICBpZiAoY29sb3Iu
aGFzQWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2Up
OwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6bnVtYmVyKGNvbG9yLmFs
cGhhKCkgLyAyNTYuMGYpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gY29tbWFTcGFjZTsK
KyAgICAgICAgICAgICAgICByZXN1bHQgKz0gU3RyaW5nOjpudW1iZXIoY29sb3IuYWxwaGEoKSAv
IDI1Ni4wZik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJykn
KTsKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3VsdCk7CisgICAgICAgICAg
ICByZXN1bHQgKz0gJyknOworCisgICAgICAgICAgICB0ZXh0ICs9IHJlc3VsdC50b1N0cmluZygp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFJUjoK
LSAgICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKTsKLSAg
ICAgICAgICAgIHRleHQgKz0gIiAiOworICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnBhaXIt
PmZpcnN0KCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQgKz0gJyAnOwogICAgICAgICAg
ICAgdGV4dCArPSBtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5jc3NUZXh0KCk7CiAgICAgICAgICAg
ICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgICAgIGNhc2UgQ1NT
X0RBU0hCT0FSRF9SRUdJT046CiAgICAgICAgICAgICBmb3IgKERhc2hib2FyZFJlZ2lvbiogcmVn
aW9uID0gZ2V0RGFzaGJvYXJkUmVnaW9uVmFsdWUoKTsgcmVnaW9uOyByZWdpb24gPSByZWdpb24t
Pm1fbmV4dC5nZXQoKSkgewogICAgICAgICAgICAgICAgIGlmICghdGV4dC5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAg
IHRleHQgKz0gJyAnOworCiAgICAgICAgICAgICAgICAgdGV4dCArPSAiZGFzaGJvYXJkLXJlZ2lv
bigiOwotICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5tX2xhYmVsOworICAgICAgICAg
ICAgICAgIHRleHQgKz0gInJlZ2lvbi0+bV9sYWJlbCI7CiAgICAgICAgICAgICAgICAgaWYgKHJl
Z2lvbi0+bV9pc0NpcmNsZSkKICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIGNpcmNsZSI7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5tX2lzUmVjdGFuZ2xlKQpAQCAtODEy
LDEwICs4MzUsMTMgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+Ym90dG9tKCktPmdldElkZW50KCkg
PT0gQ1NTVmFsdWVJbnZhbGlkKTsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+
bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgp
ICsgIiAiOworICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgJzsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gJyAnOworICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+cmln
aHQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgJzsKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0KCk7CisgICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gJyAnOwogICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9
IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIHRleHQgKz0gIikiOwpAQCAtODI0LDIxICs4NTAsMjEgQEAgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJT
RVJfT1BFUkFUT1I6IHsKICAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1f
dmFsdWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAg
ICAgICAgdGV4dCArPSBTdHJpbmcoJmMsIDFVKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgotICAgICAgICAgICAgdGV4
dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAg
dGV4dCArPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TSEFQRToKLSAgICAgICAgICAgIHRleHQgPSBt
X3ZhbHVlLnNoYXBlLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUuc2hh
cGUtPmNzc1RleHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVCgh
Y3NzVGV4dENhY2hlKCkuY29udGFpbnModGhpcykpOwotICAgIGNzc1RleHRDYWNoZSgpLnNldCh0
aGlzLCB0ZXh0KTsKKyAgICBjc3NUZXh0Q2FjaGUoKS5zZXQodGhpcywgdGV4dC50b1N0cmluZygp
KTsKICAgICBtX2hhc0NhY2hlZENTU1RleHQgPSB0cnVlOwotICAgIHJldHVybiB0ZXh0OworICAg
IHJldHVybiB0ZXh0LnRvU3RyaW5nKCk7CiB9CiAKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmFk
ZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0KQotLSAKMS43LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105141</attachid>
            <date>2011-08-25 00:35:26 -0700</date>
            <delta_ts>2011-08-25 01:35:12 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-Fix-CSSPrimitiveValue-cssText-without-opoverload.patch</filename>
            <type>text/plain</type>
            <size>13303</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA3YWQxZmJmZjY5ZjhjMjYzZDdkYzlhM2NlYTQ1ODk4OTE4ZmViMTc5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBUaHUsIDI1IEF1ZyAyMDExIDA5OjI2OjA2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
Rml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0IHdpdGhvdXQgb3BvdmVybG9hZAoKLS0tCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAxOCArKysKIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgfCAgMTcyICsrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMTcgaW5zZXJ0aW9ucygrKSwgNzMg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM1MmM5YTEuLjQ2ZjkxM2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMSBAQAorMjAxMS0wOC0yNSAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYu
dS1zemVnZWQuaHU+CisKKyAgICAgICAgRml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
dG8gdXNlIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02Njg1MQorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cmluZyBjb25jYXRl
bmF0aW9uICgrLCArPSwgYW5kIFZlY3RvcjxVY2hhcj4gYXBwZW5kKCkpCisgICAgICAgIHRvIHRo
ZSBtdWNoIGZhc3RlciBTdHJpbmdCdWlsZGVyIGFwcGVuZCgpLgorICAgICAgICBUaGUgY2hhbmdl
IHdhcyByZXF1ZXN0ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHRoaXMgaXMgb25seSBhIHBlcmZv
cm1hbmNlIHR3ZWFrLgorICAgICAgICBBY2NvcmRpbmcgdG8gdGhlIHRlc3RzIHlvdXR1YmUsIGVi
YXksCisgICAgICAgIGJhaWR1IGFuZCB3b3JkcHJlc3MgbG9hZGluZyBpcyBmYXN0ZXIgYWJvdXQg
NS04JS4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisKIDIwMTEtMDgtMjMgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFubm90YXRlIGFuZCBwcmVwYXJlIGZvciBjb21waWxhdGlvbiBmaXJzdCAxNCBKYXZhU2NyaXB0
IGZpbGVzIHdpdGhpbiA0IG1vZHVsZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCA5ODE2ZGE1Li40YmY2ZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYvRGVjaW1h
bE51bWJlci5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVn
aW9uLmgiCkBAIC02MjcsMTI5ICs2MjgsMTUwIEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBjc3NUZXh0Q2FjaGUoKS5nZXQodGhpcyk7
CiAgICAgfQogCi0gICAgU3RyaW5nIHRleHQ7CisgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwogICAg
IHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CiAgICAgICAgICAg
ICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoK
ICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICIlIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJlbSIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImV4Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUkVNUzoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJlbSI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QWDoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4IjsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoInB4Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJjbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX01NOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAibW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgibW0iKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImluIik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFQ6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwdCI7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCJwdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BDOgotICAgICAg
ICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicGMiOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZCgicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19E
RUc6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWci
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGVnIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAicmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInJhZCIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0dSQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJncmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImdyYWQi
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoIm1zIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUzoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInMiOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgncycpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaHoi
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUu
bnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgia2h6Iik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgInR1cm4iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidHVybiIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lPTjoKICAgICAg
ICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RS
SU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0ZS
T01fRkxPVzoKLSAgICAgICAgICAgIHRleHQgPSAiLXdlYmtpdC1mcm9tLWZsb3coIiArIHF1b3Rl
Q1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoIi13ZWJraXQtZnJvbS1mbG93KCIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
cXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6
Ci0gICAgICAgICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVl
LnN0cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidXJsKCIpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19JREVOVDoKLSAgICAgICAgICAgIHRleHQgPSB2YWx1ZU9yUHJvcGVydHlOYW1l
KG1fdmFsdWUuaWRlbnQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQodmFsdWVPclByb3BlcnR5
TmFtZShtX3ZhbHVlLmlkZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfQVRUUjogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKIAotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1
bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg2ICsgbV92YWx1
ZS5zdHJpbmctPmxlbmd0aCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0Owog
Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBhdHRyUGFyZW4pOwotICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgbV92YWx1ZS5zdHJpbmcpOwotICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tl
ZEFwcGVuZCgnKScpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChhdHRyUGFyZW4pOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFkb3B0KHJlc3Vs
dCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZXN1bHQudG9TdHJpbmcoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6Ci0g
ICAgICAgICAgICB0ZXh0ID0gImNvdW50ZXIoIjsKLSAgICAgICAgICAgIHRleHQgKz0gbV92YWx1
ZS5zdHJpbmc7Ci0gICAgICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJjb3VudGVyKCIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zdHJpbmcp
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19DT1VOVEVSOgotICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0g
ICAgICAgICAgICB0ZXh0ICs9IFN0cmluZzo6bnVtYmVyKG1fdmFsdWUubnVtKTsKLSAgICAgICAg
ICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChTdHJpbmc6Om51bWJlcihtX3ZhbHVlLm51bSkpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgbGlz
dC1zdHlsZSBhbmQgc2VwYXJhdG9yCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfUkVDVDogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcs
IHJlY3RQYXJlbiwgKCJyZWN0KCIpKTsKIAogICAgICAgICAgICAgUmVjdCogcmVjdFZhbCA9IGdl
dFJlY3RWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAg
ICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBl
bmQocmVzdWx0LCByZWN0UGFyZW4pOwogCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0
VmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0
OworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWN0UGFyZW4pOworCisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKHJlY3RWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnICcpOwogCi0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5y
aWdodCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZWN0VmFsLT5y
aWdodCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogCi0g
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZWN0VmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7CiAKLSAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocmVjdFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKScpOwogCi0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC03NjMsNDUg
Kzc4NSw0NiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAg
ICAgICAgICAgICAgIENvbG9yOjpwYXJzZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xv
cik7CiAgICAgICAgICAgICBDb2xvciBjb2xvcihyZ2JDb2xvcik7CiAKLSAgICAgICAgICAgIFZl
Y3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoMzIpOworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgICAgICAg
ICBpZiAoY29sb3IuaGFzQWxwaGEoKSkKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBy
Z2JhUGFyZW4pOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmdiYVBhcmVuKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCByZ2JQYXJlbik7
CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZ2JQYXJlbik7CiAKLSAgICAgICAgICAg
IGFwcGVuZE51bWJlcihyZXN1bHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLnJl
ZCgpKSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IucmVkKCkpKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoY29tbWFTcGFjZSk7CiAKLSAgICAgICAgICAgIGFwcGVuZE51bWJl
cihyZXN1bHQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGNvbG9yLmdyZWVuKCkpKTsKLSAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmc6Om51bWJlcihjb2xvci5ncmVlbigpKSk7CisgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKGNvbW1hU3BhY2UpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IuYmx1ZSgpKSk7CiAgICAgICAgICAg
ICBpZiAoY29sb3IuaGFzQWxwaGEoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQs
IGNvbW1hU3BhY2UpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIFN0cmluZzo6bnVt
YmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGNvbW1hU3BhY2UpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nOjpu
dW1iZXIoY29sb3IuYWxwaGEoKSAvIDI1Ni4wZikpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9w
dChyZXN1bHQpOworCisgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZXN1bHQudG9TdHJpbmcoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QQUlSOgot
ICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpOwotICAg
ICAgICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+
c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFp
ci0+Zmlyc3QoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAg
ICAgICBjYXNlIENTU19EQVNIQk9BUkRfUkVHSU9OOgogICAgICAgICAgICAgZm9yIChEYXNoYm9h
cmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVn
aW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQu
aXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgICAgIHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0
ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCJk
YXNoYm9hcmQtcmVnaW9uKCIpOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyZWdpb24t
Pm1fbGFiZWwiKTsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAg
ICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgY2lyY2xlIjsKKyAgICAgICAgICAgICAgICAgICAg
dGV4dC5hcHBlbmQoIiBjaXJjbGUiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWdpb24t
Pm1faXNSZWN0YW5nbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiByZWN0YW5nbGUi
OworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIHJlY3RhbmdsZSIpOwogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgaWYgKHJlZ2lvbi0+dG9wKCktPm1fdHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3Ao
KS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKQEAgLTgxMywzMiArODM2LDM1IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChyZWdpb24tPmxlZnQoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFs
aWQpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT50b3AoKS0+
Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+cmln
aHQoKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lv
bi0+Ym90dG9tKCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCAr
PSByZWdpb24tPmxlZnQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZChyZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPnJp
Z2h0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+Ym90dG9tKCktPmNzc1Rl
eHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiKSIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOiB7CiAgICAgICAgICAgICBj
aGFyIGMgPSBzdGF0aWNfY2FzdDxjaGFyPihtX3ZhbHVlLmlkZW50KTsKLSAgICAgICAgICAgIHRl
eHQgPSBTdHJpbmcoJmMsIDFVKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKFN0cmluZygmYywg
MVUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BB
UlNFUl9JREVOVElGSUVSOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVk
ZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NTdHJp
bmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX1NIQVBFOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUuc2hhcGUtPmNzc1Rl
eHQoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc2hhcGUtPmNzc1RleHQoKSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBBU1NFUlQoIWNzc1RleHRDYWNoZSgp
LmNvbnRhaW5zKHRoaXMpKTsKLSAgICBjc3NUZXh0Q2FjaGUoKS5zZXQodGhpcywgdGV4dCk7Cisg
ICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQudG9TdHJpbmcoKSk7CiAgICAgbV9oYXND
YWNoZWRDU1NUZXh0ID0gdHJ1ZTsKLSAgICByZXR1cm4gdGV4dDsKKyAgICByZXR1cm4gdGV4dC50
b1N0cmluZygpOwogfQogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0
eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgQ1NTU3R5bGVTaGVldCogc3R5
bGVTaGVldCkKLS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105144</attachid>
            <date>2011-08-25 01:35:12 -0700</date>
            <delta_ts>2011-08-26 02:42:30 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-Fix-CSSPrimitiveValue-cssText-min.patch</filename>
            <type>text/plain</type>
            <size>13190</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA5NTczMDgwOWM1MzI3OGJjNzBhMDJhYmE1ZDU2OWE5MDQzODAxNTY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBUaHUsIDI1IEF1ZyAyMDExIDEwOjMyOjE2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
Rml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0IG1pbgoKLS0tCiBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAxNiArKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAgfCAgMTcyICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t
LQogMiBmaWxlcyBjaGFuZ2VkLCAxMTUgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0pCgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGM1MmM5YTEuLjc4OGYwMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMS0wOC0yNSAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisK
KyAgICAgICAgRml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1
aWxkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njg1MQorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uICgrLCArPSwg
YW5kIFZlY3RvcjxVY2hhcj4gYXBwZW5kKCkpCisgICAgICAgIHRvIHRoZSBtdWNoIGZhc3RlciBT
dHJpbmdCdWlsZGVyIGFwcGVuZCgpLgorICAgICAgICBUaGUgY2hhbmdlIHdhcyByZXF1ZXN0ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTm8gbmV3IHRlc3RzIHRoaXMgaXMgb25seSBhIG1pbmltYWwgcGVyZm9ybWFuY2Ug
dHdlYWsuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQpOgorCiAyMDExLTA4LTIzICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBhbm5vdGF0ZSBhbmQgcHJlcGFyZSBmb3IgY29tcGlsYXRpb24gZmlyc3QgMTQgSmF2YVNjcmlw
dCBmaWxlcyB3aXRoaW4gNCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKaW5kZXggOTgxNmRhNS4uNGJmNmY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0RlY2lt
YWxOdW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2luY2x1ZGUgIkRhc2hib2FyZFJl
Z2lvbi5oIgpAQCAtNjI3LDEyOSArNjI4LDE1MCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6
OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gY3NzVGV4dENhY2hlKCkuZ2V0KHRoaXMp
OwogICAgIH0KIAotICAgIFN0cmluZyB0ZXh0OworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAg
ICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19VTktOT1dOOgogICAgICAgICAg
ICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6
CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgotICAgICAgICAgICAgdGV4dCA9IGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19QRVJDRU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAiJSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCclJyk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAiZW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJleCIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgicmVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFg6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJweCI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiY20iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY20iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIm1tIik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSU46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJpbiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJpbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgicHQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoInBjIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
REVHOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZGVn
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyYWQiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJncmFk
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTVM6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtcyI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoJ3MnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19IWjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoImh6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfS0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAia2h6IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInR1cm4i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAgICAg
ICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NU
UklORzoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUu
c3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQo
bV92YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19G
Uk9NX0ZMT1c6Ci0gICAgICAgICAgICB0ZXh0ID0gIi13ZWJraXQtZnJvbS1mbG93KCIgKyBxdW90
ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCItd2Via2l0LWZyb20tZmxvdygiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJ
OgotICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1
ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFt
ZShtX3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0
eU5hbWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBhdHRyUGFyZW4sICgiYXR0cigiKSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVz
dWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoNiArIG1fdmFs
dWUuc3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
IAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0clBhcmVuKTsKLSAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNr
ZWRBcHBlbmQoJyknKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYXR0clBhcmVuKTsKKyAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZCgnKScpOwogCi0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1
bHQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgot
ICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IG1fdmFs
dWUuc3RyaW5nOwotICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgiY291bnRlcigiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5n
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfQ09VTlRFUjoKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwot
ICAgICAgICAgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihtX3ZhbHVlLm51bSk7Ci0gICAgICAg
ICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjb3VudGVyKCIpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV92YWx1ZS5udW0pKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxp
c3Qtc3R5bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCByZWN0UGFyZW4sICgicmVjdCgiKSk7CiAKICAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBn
ZXRSZWN0VmFsdWUoKTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgcmVjdFBhcmVuKTsKIAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVj
dFZhbC0+dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3Vs
dDsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFBhcmVuKTsKKworICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChyZWN0VmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKIAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+
cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFZhbC0+
cmlnaHQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKIAot
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7
CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogCi0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgpAQCAtNzYzLDQ1
ICs3ODUsNDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAg
ICAgICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhDb2xvcihtX3ZhbHVlLnN0cmluZywgcmdiQ29s
b3IpOwogICAgICAgICAgICAgQ29sb3IgY29sb3IocmdiQ29sb3IpOwogCi0gICAgICAgICAgICBW
ZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KDMyKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgICAgICAg
ICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwg
cmdiYVBhcmVuKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJnYmFQYXJlbik7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmdiUGFyZW4p
OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmdiUGFyZW4pOwogCi0gICAgICAgICAg
ICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5y
ZWQoKSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGNvbG9yLnJlZCgpKSk7CisgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKGNvbW1hU3BhY2UpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1i
ZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ncmVlbigpKSk7Ci0g
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IuZ3JlZW4oKSkpOworICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChjb21tYVNwYWNlKTsKIAotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKHJlc3Vs
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3IuYmx1ZSgpKSk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGNvbG9yLmJsdWUoKSkpOwogICAgICAgICAg
ICAgaWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0
LCBjb21tYVNwYWNlKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51
bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChjb21tYVNwYWNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6
bnVtYmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFJUjoK
LSAgICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKTsKLSAg
ICAgICAgICAgIHRleHQgKz0gIiAiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnBhaXIt
PnNlY29uZCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBh
aXItPmZpcnN0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAg
ICAgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKICAgICAgICAgICAgIGZvciAoRGFzaGJv
YXJkUmVnaW9uKiByZWdpb24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJl
Z2lvbiA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgICAgICB0ZXh0ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAg
dGV4dCArPSByZWdpb24tPm1fbGFiZWw7CisKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
ZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmVnaW9u
LT5tX2xhYmVsIik7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIGNpcmNsZSI7CisgICAgICAgICAgICAgICAgICAg
IHRleHQuYXBwZW5kKCIgY2lyY2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9u
LT5tX2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgcmVjdGFuZ2xl
IjsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoIiByZWN0YW5nbGUiKTsKICAgICAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIGlmIChyZWdpb24tPnRvcCgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UICYmIHJlZ2lvbi0+dG9w
KCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7CkBAIC04MTMsMzIgKzgzNiwzNSBA
QCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZh
bGlkKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+dG9wKCkt
PmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnJp
Z2h0KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdp
b24tPmJvdHRvbSgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQg
Kz0gcmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5h
cHBlbmQocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5y
aWdodCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcp
OworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPmJvdHRvbSgpLT5jc3NU
ZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRPUjogewogICAgICAgICAgICAg
Y2hhciBjID0gc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCk7Ci0gICAgICAgICAgICB0
ZXh0ID0gU3RyaW5nKCZjLCAxVSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChTdHJpbmcoJmMs
IDFVKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19Q
QVJTRVJfSURFTlRJRklFUjoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVl
ZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3Ry
aW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19TSEFQRToKLSAgICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLnNoYXBlLT5jc3NU
ZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnNoYXBlLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUo
KS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOwor
ICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCB0ZXh0LnRvU3RyaW5nKCkpOwogICAgIG1faGFz
Q2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHRleHQu
dG9TdHJpbmcoKTsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQpCi0tIAoxLjcuMC40Cgo=
</data>
<flag name="review"
          id="101205"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="101206"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105339</attachid>
            <date>2011-08-26 02:42:30 -0700</date>
            <delta_ts>2011-09-14 10:08:02 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-CSSPrimitiveValue-cssText-corr.patch</filename>
            <type>text/plain</type>
            <size>13237</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA5ODJlMmZjZDUwZjMzZmY0OWUzZmNmMDY5ZjI3NGE1NGRiMDgwMjMyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBGcmksIDI2IEF1ZyAyMDExIDEwOjI4OjU5ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQgY29ycgoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgIHwgICAxNiArKysKIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cmltaXRpdmVWYWx1ZS5jcHAgfCAgMTc1ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQog
MiBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGM1MmM5YTEuLmViMDEyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAor
MjAxMS0wOC0yNiAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAg
ICAgICAgRml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxk
ZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1
MQorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uICgrLCArPSwgYW5k
IFZlY3RvcjxVY2hhcj4gYXBwZW5kKCkpCisgICAgICAgIHRvIHRoZSBtdWNoIGZhc3RlciBTdHJp
bmdCdWlsZGVyIGFwcGVuZCgpLgorICAgICAgICBUaGUgY2hhbmdlIHdhcyByZXF1ZXN0ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHRoaXMgaXMgb25seSBhIG1pbmltYWwgcGVyZm9ybWFuY2UgdHdl
YWsuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQpOgorCiAyMDExLTA4LTIzICBQYXZlbCBG
ZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBh
bm5vdGF0ZSBhbmQgcHJlcGFyZSBmb3IgY29tcGlsYXRpb24gZmlyc3QgMTQgSmF2YVNjcmlwdCBm
aWxlcyB3aXRoaW4gNCBtb2R1bGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKaW5kZXggOTgxNmRhNS4uZjljOGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL0RlY2ltYWxO
dW1iZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVmZmVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQT1JUKQogI2luY2x1ZGUgIkRhc2hib2FyZFJlZ2lv
bi5oIgpAQCAtNjI3LDEyOSArNjI4LDE1MCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gY3NzVGV4dENhY2hlKCkuZ2V0KHRoaXMpOwog
ICAgIH0KIAotICAgIFN0cmluZyB0ZXh0OworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAgICBz
d2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19VTktOT1dOOgogICAgICAgICAgICAg
Ly8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6CiAg
ICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19Q
RVJDRU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiJSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCclJyk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAiZW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJleCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgicmVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFg6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJweCI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
Y20iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY20iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIm1tIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfSU46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJpbiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJpbiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAgICAgdGV4dCA9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
cHQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAgICAgICAg
ICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoInBjIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfREVH
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZGVnIjsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyYWQiKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJncmFkIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTVM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtcyI7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoJ3MnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19I
WjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoImh6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfS0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAia2h6IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInR1cm4iKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAgICAgICAg
ICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NUUklO
RzoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3Ry
aW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92
YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19GUk9N
X0ZMT1c6Ci0gICAgICAgICAgICB0ZXh0ID0gIi13ZWJraXQtZnJvbS1mbG93KCIgKyBxdW90ZUNT
U1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCItd2Via2l0LWZyb20tZmxvdygiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1
b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgot
ICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZSht
X3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5h
bWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBh
dHRyUGFyZW4sICgiYXR0cigiKSk7CiAKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0
OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoNiArIG1fdmFsdWUu
c3RyaW5nLT5sZW5ndGgoKSk7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKIAot
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgYXR0clBhcmVuKTsKLSAgICAgICAgICAgIGFwcGVu
ZChyZXN1bHQsIG1fdmFsdWUuc3RyaW5nKTsKLSAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRB
cHBlbmQoJyknKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYXR0clBhcmVuKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZCgnKScpOwogCi0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQp
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgotICAg
ICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUu
c3RyaW5nOwotICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgiY291bnRlcigiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfQ09VTlRFUjoKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwotICAg
ICAgICAgICAgdGV4dCArPSBTdHJpbmc6Om51bWJlcihtX3ZhbHVlLm51bSk7Ci0gICAgICAgICAg
ICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjb3VudGVyKCIpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5nOjpudW1iZXIobV92YWx1ZS5udW0pKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIGxpc3Qt
c3R5bGUgYW5kIHNlcGFyYXRvcgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1JFQ1Q6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBy
ZWN0UGFyZW4sICgicmVjdCgiKSk7CiAKICAgICAgICAgICAgIFJlY3QqIHJlY3RWYWwgPSBnZXRS
ZWN0VmFsdWUoKTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAg
ICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwotICAgICAgICAgICAgYXBwZW5k
KHJlc3VsdCwgcmVjdFBhcmVuKTsKIAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZh
bC0+dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFBhcmVuKTsKKworICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChyZWN0VmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyAnKTsKIAotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+cmln
aHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFZhbC0+cmln
aHQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKIAotICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmVjdFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwogCi0gICAgICAgICAgICBhcHBlbmQocmVz
dWx0LCByZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9SOgpAQCAtNzYzLDQ1ICs3
ODUsNDYgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAg
ICAgICAgICAgICBDb2xvcjo6cGFyc2VIZXhDb2xvcihtX3ZhbHVlLnN0cmluZywgcmdiQ29sb3Ip
OwogICAgICAgICAgICAgQ29sb3IgY29sb3IocmdiQ29sb3IpOwogCi0gICAgICAgICAgICBWZWN0
b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KDMyKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwogICAgICAgICAgICAg
aWYgKGNvbG9yLmhhc0FscGhhKCkpCi0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmdi
YVBhcmVuKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJnYmFQYXJlbik7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcmdiUGFyZW4pOwor
ICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmdiUGFyZW4pOwogCi0gICAgICAgICAgICBh
cHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5yZWQo
KSkpOwotICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGNvbG9yLnJlZCgpKSk7CisgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKGNvbW1hU3BhY2UpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIo
cmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ncmVlbigpKSk7Ci0gICAg
ICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nOjpudW1iZXIoY29sb3IuZ3JlZW4oKSkpOworICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChjb21tYVNwYWNlKTsKIAotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3IuYmx1ZSgpKSk7CisgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVtYmVyKGNvbG9yLmJsdWUoKSkpOwogICAgICAgICAgICAg
aWYgKGNvbG9yLmhhc0FscGhhKCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBj
b21tYVNwYWNlKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51bWJl
cihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChjb21tYVNwYWNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZzo6bnVt
YmVyKGNvbG9yLmFscGhhKCkgLyAyNTYuMGYpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQo
cmVzdWx0KTsKKworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFJUjoKLSAg
ICAgICAgICAgIHRleHQgPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKTsKLSAgICAg
ICAgICAgIHRleHQgKz0gIiAiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnBhaXItPnNl
Y29uZCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXIt
PmZpcnN0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5wYWlyLT5zZWNvbmQoKS0+Y3NzVGV4dCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKICAgICAg
ICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKICAgICAgICAgICAgIGZvciAoRGFzaGJvYXJk
UmVnaW9uKiByZWdpb24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJlZ2lv
biA9IHJlZ2lvbi0+bV9uZXh0LmdldCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICB0ZXh0ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAgdGV4
dCArPSByZWdpb24tPm1fbGFiZWw7CisKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFz
aGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmVnaW9uLT5t
X2xhYmVsIik7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbi0+bV9pc0NpcmNsZSkKLSAgICAg
ICAgICAgICAgICAgICAgdGV4dCArPSAiIGNpcmNsZSI7CisgICAgICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCIgY2lyY2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVnaW9uLT5t
X2lzUmVjdGFuZ2xlKQotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgcmVjdGFuZ2xlIjsK
KyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoIiByZWN0YW5nbGUiKTsKICAgICAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGlmIChyZWdpb24tPnRvcCgpLT5tX3R5cGUgPT0gQ1NTX0lERU5UICYmIHJlZ2lvbi0+dG9wKCkt
PmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlkKSB7CkBAIC04MTMsMzIgKzgzNiwzNCBAQCBT
dHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVnaW9uLT5sZWZ0KCktPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnZhbGlk
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+dG9wKCktPmNz
c1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnJpZ2h0
KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24t
PmJvdHRvbSgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0g
cmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5h
cHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5yaWdo
dCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwor
ICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPmJvdHRvbSgpLT5jc3NUZXh0
KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICAgICAg
dGV4dC5hcHBlbmQoIikiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9PUEVSQVRPUjogewotICAgICAgICAgICAgY2hh
ciBjID0gc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCk7Ci0gICAgICAgICAgICB0ZXh0
ID0gU3RyaW5nKCZjLCAxVSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChzdGF0aWNfY2FzdDxj
aGFyPihtX3ZhbHVlLmlkZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKLSAgICAgICAgICAgIHRleHQgPSBxdW90
ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19TSEFQRToKLSAgICAgICAgICAgIHRleHQgPSBtX3Zh
bHVlLnNoYXBlLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnNo
YXBlLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotCisgICAgU3RyaW5n
IHJlc3VsdFRleHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUo
KS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOwor
ICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRUZXh0KTsKICAgICBtX2hhc0NhY2hl
ZENTU1RleHQgPSB0cnVlOwotICAgIHJldHVybiB0ZXh0OworICAgIHJldHVybiByZXN1bHRUZXh0
OwogfQogCiB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhM
aXN0SGFzaFNldDxLVVJMPiYgdXJscywgY29uc3QgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkK
LS0gCjEuNy4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107345</attachid>
            <date>2011-09-14 10:08:02 -0700</date>
            <delta_ts>2011-09-14 10:22:13 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-version_2011_09_14.patch</filename>
            <type>text/plain</type>
            <size>18437</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSAzYTFlY2QyM2VkM2E0NzE0OGJjYWE1ZDdlNDQ3MTNhZWNjZjQwNWZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBXZWQsIDE0IFNlcCAyMDExIDE4OjU0OjE2ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dmVyc2lvbl8yMDExXzA5XzE0CgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgfCAgIDE0ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oIHwgICA5MyArKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrCiBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwICAgICAgIHwgIDE4NCArKysrKysrKysrKysrLS0tLS0tLS0t
LS0KIDQgZmlsZXMgY2hhbmdlZCwgMjE5IGluc2VydGlvbnMoKyksIDg1IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE4ODFlZjMuLjk3YjRjOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA5LTE0ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorCiAy
MDExLTA5LTE0ICBJYWluIE1lcnJpY2sgIDxodXNreUBnb29nbGUuY29tPgogCiAgICAgICAgIEhh
c2hUcmFpdHMuaCBzaG91bGQgaW5jbHVkZSB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbiBmb3IgV1RG
OjpTdHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oCmluZGV4IGM3MjljMzIuLmU0MTNhOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMjgsNiArMjgsOCBAQAogCiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi9kdG9hLmg+CisjaW5jbHVkZSA8bWF0aC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAt
NzYsNiArNzgsOTcgQEAgcHVibGljOgogICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgICB9
CiAKKyAgICB2b2lkIGFwcGVuZChkb3VibGUgZCkKKyAgICB7CisgICAgICAgIGJvb2wgbV9zaWdu
OworICAgICAgICBpbnQgbV9leHBvbmVudDsKKyAgICAgICAgRHRvYUJ1ZmZlciBtX3NpZ25pZmlj
YW5kOworICAgICAgICB1bnNpZ25lZCBtX3ByZWNpc2lvbjsKKworICAgICAgICBBU1NFUlQoaXNm
aW5pdGUoZCkpOworICAgICAgICBkdG9hKG1fc2lnbmlmaWNhbmQsIGQsIG1fc2lnbiwgbV9leHBv
bmVudCwgbV9wcmVjaXNpb24pOworCisgICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAg
ICAgIC8vIFplcm8gc2hvdWxkIGFsd2F5cyBoYXZlIGV4cG9uZW50IDAuCisgICAgICAgIEFTU0VS
VChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCAhbV9leHBvbmVudCk7CisgICAgICAgIC8vIE5v
IHZhbHVlcyBvdGhlciB0aGFuIHplcm8gc2hvdWxkIGhhdmUgYSBsZWFkaW5nIHplcm8uCisgICAg
ICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCBtX3ByZWNpc2lvbiA9PSAxKTsK
KyAgICAgICAgLy8gTm8gdmFsdWVzIG90aGVyIHRoYW4gemVybyBzaG91bGQgaGF2ZSB0cmFpbGlu
ZyB6ZXJvcy4KKyAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnIHx8IG1fc2ln
bmlmaWNhbmRbbV9wcmVjaXNpb24gLSAxXSAhPSAnMCcpOworCisgICAgICAgIGNoYXIgemVybyA9
ICcwJzsKKyAgICAgICAgY2hhciBkb3QgPSAnLic7CisgICAgICAgIGNoYXIgc2lnbiA9ICctJzsK
KworICAgICAgICBpbnQgYWJzb2x1dGVFeHAgPSAobV9leHBvbmVudCA8IDApID8gbV9leHBvbmVu
dCAqIC0xIDogbV9leHBvbmVudDsKKyAgICAgICAgaW50IHNpemVPZnNpZ25pZmljYW5kID0gc3Ry
bGVuKG1fc2lnbmlmaWNhbmQpOworICAgICAgICBjaGFyKiBudW1iZXIgPSBuZXcgY2hhclthYnNv
bHV0ZUV4cCArIHNpemVPZnNpZ25pZmljYW5kICsgM107CisgICAgICAgIGNoYXIqIHBvaW50ZXIg
PSBudW1iZXI7CisKKyAgICAgICAgaWYgKG1fc2lnbiAhPSAwKSB7CisgICAgICAgICAgICAqcG9p
bnRlciA9IHNpZ247CisgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgIH0KKworICAgICAg
ICBpbnQgcGxhY2VPZkRvdCA9IG1fZXhwb25lbnQ7CisgICAgICAgIGludCBudW1iZXJPZlplcm9z
ID0gKG1fZXhwb25lbnQgPiAwKSA/IDAgOiAtbV9leHBvbmVudDsKKworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bWJlck9mWmVyb3M7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgPT0g
MSkgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0gZG90OworICAgICAgICAgICAgICAgIHBv
aW50ZXIrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwb2ludGVyID0gemVybzsKKyAg
ICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgPT0gcGxh
Y2VPZkRvdCArIDEgJiYgc2l6ZU9mc2lnbmlmaWNhbmQgIT0gaSkgeworICAgICAgICAgICAgICAg
ICpwb2ludGVyID0gZG90OworICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAgICAg
IHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG1f
ZXhwb25lbnQgLSBzaXplT2ZzaWduaWZpY2FuZCkgKyAxOyBpKyspIHsKKyAgICAgICAgICAgICpw
b2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAg
ICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgYXBwZW5kKG51bWJlciwgc3RybGVuKG51bWJl
cikpOworICAgICAgICBkZWxldGUgbnVtYmVyOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGlu
dCBuKSB7CisgICAgICAgIGlmIChuIDwgMCkgeworICAgICAgICAgICAgYXBwZW5kKCItIiwgMSk7
CisgICAgICAgICAgICBuID0gLW47CisgICAgICAgIH0KKworICAgICAgICBpZiAobiAvIDEwID09
IDApIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG4gKyAnMCcpOwor
ICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGludCBkaWdpdHNPZk51bWJlciA9IHN0YXRpY19jYXN0PGludD4obG9nMTAo
bikgKyAxKTsKKyAgICAgICAgY2hhciogbnVtYmVyID0gbmV3IGNoYXJbZGlnaXRzT2ZOdW1iZXIg
KyAxXTsKKyAgICAgICAgY2hhciogcG9pbnRlciA9IG51bWJlciArIGRpZ2l0c09mTnVtYmVyOwor
CisgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBk
byB7CisgICAgICAgICAgICAqcG9pbnRlciA9IChuICUgMTApICsgJzAnOworICAgICAgICAgICAg
cG9pbnRlci0tOworICAgICAgICAgICAgbiAvPSAxMDsKKyAgICAgICAgfSB3aGlsZSAobiAhPSAw
KTsKKworICAgICAgICBhcHBlbmQobnVtYmVyLCBkaWdpdHNPZk51bWJlcik7CisgICAgICAgIGRl
bGV0ZSBudW1iZXI7CisgICAgfQorCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7CiAgICAg
ICAgIGlmIChtX3N0cmluZy5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzMGNjZDguLmQ3M2Mw
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wOS0xNCAgT2xpdmVyIFZhcmdh
ICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgRml4IENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1MQorCisgICAgICAgIFJlcGxhY2UgdGhl
IHN0cmluZyBjb25jYXRlbmF0aW9uICgrLCArPSwgYW5kIFZlY3RvcjxVY2hhcj4gYXBwZW5kKCkp
CisgICAgICAgIHRvIHRoZSBtdWNoIGZhc3RlciBTdHJpbmdCdWlsZGVyIGFwcGVuZCgpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cyB0aGlzIGlzIG9ubHkgYSBtaW5pbWFsIHBlcmZvcm1hbmNlIHR3
ZWFrLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKwogMjAxMS0wOS0xMyAgUGF2ZWwg
RmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZURlc3Ryb3llZCBpcyBjYWxsZWQgYWZ0ZXIg
bV9wYWdlIGhhcyBiZWVuIHJlc2V0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKaW5kZXggODE4MmZjZi4uNzI5ZDU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCkBAIC02NzgsMTcgKzY3OCw2IEBAIGludCBDU1NQcmltaXRpdmVWYWx1
ZTo6Z2V0SWRlbnQoKSBjb25zdAogICAgIHJldHVybiBtX3ZhbHVlLmlkZW50OwogfQogCi1zdGF0
aWMgU3RyaW5nIGZvcm1hdE51bWJlcihkb3VibGUgbnVtYmVyKQotewotICAgIERlY2ltYWxOdW1i
ZXIgZGVjaW1hbChudW1iZXIpOwotCi0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihkZWNpbWFsLmJ1
ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZGVj
aW1hbC50b1N0cmluZ0RlY2ltYWwoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgp
KTsKLSAgICBBU1NFUlRfVU5VU0VEKGxlbmd0aCwgbGVuZ3RoID09IGJ1ZmZlci5sZW5ndGgoKSk7
Ci0KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwotfQotCiBTdHJpbmcgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiByZXR1cm4gdGhl
IG9yaWdpbmFsIHZhbHVlIGluc3RlYWQgb2YgYSBnZW5lcmF0ZWQgb25lIChlLmcuIGNvbG9yCkBA
IC02OTksODMgKzY4OCwxMDUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGNzc1RleHRDYWNoZSgpLmdldCh0aGlzKTsKICAgICB9CiAK
LSAgICBTdHJpbmcgdGV4dDsKKyAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAgc3dpdGNoICht
X3R5cGUpIHsKICAgICAgICAgY2FzZSBDU1NfVU5LTk9XTjoKICAgICAgICAgICAgIC8vIEZJWE1F
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTlVNQkVSOgogICAgICAgICBj
YXNlIENTU19QQVJTRVJfSU5URUdFUjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICIlIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCclJyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZW0iOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImVtIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRVhTOgotICAgICAgICAgICAgdGV4dCA9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZXgiOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImV4Iik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUkVNUzoKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmVtIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFg6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJweCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicHgiKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19DTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXRO
dW1iZXIobV92YWx1ZS5udW0pICsgImNtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFs
dWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjbSIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX01NOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAibW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIm1tIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfSU46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1f
dmFsdWUubnVtKSArICJpbiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19QVDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgInB0IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCJwdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTX1BDOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSkgKyAicGMiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoInBjIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfREVHOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiZGVnIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJkZWciKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19SQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJyYWQiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoInJhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0dSQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJncmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJncmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJtcyI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgibXMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicyI7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgncycpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0haOgot
ICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaHoiOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoImh6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfS0haOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAia2h6IjsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCJraHoiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19UVVJOOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAidHVybiI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgidHVybiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lP
TjoKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQo
bV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJ
Zk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX0ZST01fRkxPVzoKLSAgICAgICAgICAgIHRleHQgPSAiLXdlYmtpdC1mcm9tLWZsb3co
IiArIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoIi13ZWJraXQtZnJvbS1mbG93KCIpOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRl
ZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidXJsKCIp
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZykpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19JREVOVDoKLSAgICAgICAgICAgIHRleHQgPSB2YWx1ZU9yUHJv
cGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQodmFsdWVP
clByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfQVRUUjogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25z
dCBTdHJpbmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKQEAgLTc4NywyOCArNzk4LDI4IEBAIFN0
cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJykn
KTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgotICAgICAgICAgICAgdGV4dCA9
ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUuc3RyaW5nOwotICAgICAg
ICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY291bnRlcigiKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQ09V
TlRFUjogewogICAgICAgICAgICAgU3RyaW5nIHNlcGFyYXRvciA9IG1fdmFsdWUuY291bnRlci0+
c2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICB0ZXh0ID0gc2VwYXJhdG9yLmlzRW1wdHkoKSA/ICJj
b3VudGVyKCIgOiAiY291bnRlcnMoIjsKLSAgICAgICAgICAgIHRleHQgKz0gbV92YWx1ZS5jb3Vu
dGVyLT5pZGVudGlmaWVyKCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChzZXBhcmF0b3IuaXNF
bXB0eSgpID8gImNvdW50ZXIoIiA6ICJjb3VudGVycygiKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUuY291bnRlci0+aWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGlmICghc2Vw
YXJhdG9yLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIHRleHQgKz0gIiwgIjsKLSAgICAg
ICAgICAgICAgICB0ZXh0ICs9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQoc2VwYXJhdG9yKTsKKyAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKHNlcGFyYXRvcikpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgY29uc3QgY2hhciogbGlzdFN0eWxlTmFtZSA9IGdldFZhbHVlTmFtZShtX3Zh
bHVlLmNvdW50ZXItPmxpc3RTdHlsZU51bWJlcigpICsgQ1NTVmFsdWVEaXNjKTsKICAgICAgICAg
ICAgIGlmIChsaXN0U3R5bGVOYW1lKSB7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSAiLCAiOwot
ICAgICAgICAgICAgICAgIHRleHQgKz0gbGlzdFN0eWxlTmFtZTsKKyAgICAgICAgICAgICAgICB0
ZXh0LmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChsaXN0U3R5bGVO
YW1lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTgzMSwyNyArODQyLDI3IEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJl
Y3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJykn
KTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCogcXVhZFZh
bCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAg
ICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0
eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0
KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkg
fHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgp
ICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1Rl
eHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5j
c3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFk
VmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAg
IGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVm
dCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0
KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04NjUs
MzQgKzg3NiwzNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICAgICAgICAgIENvbG9yOjpwYXJzZUhleENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JD
b2xvcik7CiAgICAgICAgICAgICBDb2xvciBjb2xvcihyZ2JDb2xvcik7CiAKLSAgICAgICAgICAg
IFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkoMzIpOworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQ7CisgICAgICAg
ICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDMyKTsKICAgICAgICAgICAgIGlmIChjb2xvci5o
YXNBbHBoYSgpKQotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYmFQYXJlbik7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyZ2JhUGFyZW4pOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHJnYlBhcmVuKTsKLQotICAgICAgICAg
ICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3Iu
cmVkKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIGNvbW1hU3BhY2UpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmdiUGFyZW4pOwogCi0gICAgICAgICAgICBhcHBlbmRO
dW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ncmVlbigpKSk7
Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoY29sb3IucmVkKCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjb21t
YVNwYWNlKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29sb3IuZ3JlZW4oKSk7CisgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGNvbW1hU3BhY2UpOwogCi0gICAgICAgICAgICBhcHBlbmRO
dW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjb2xvci5ibHVlKCkpKTsK
KyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29sb3IuYmx1ZSgpKTsKICAgICAgICAgICAgIGlm
IChjb2xvci5oYXNBbHBoYSgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29t
bWFTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIo
Y29sb3IuYWxwaGEoKSAvIDI1Ni4wZikpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
Y29tbWFTcGFjZSk7CisgICAgICAgICAgICAgICAgLy9hcHBlbmQocmVzdWx0LCBTdHJpbmc6Om51
bWJlcihjb2xvci5hbHBoYSgpIC8gMjU2LjBmKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChjb2xvci5hbHBoYSgpIC8gMjU2LjBmKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQo
cmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAg
ICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAg
ICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0
KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0
ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0
ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFp
ci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC05MDAsMTIgKzkxMSwxMiBAQCBT
dHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9y
IChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJl
Z2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAg
ICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChy
ZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUp
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJl
Z2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3Rh
bmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24t
PnRvcCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTE3LDMyICs5Mjgs
MzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVl
SW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
dGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRv
cCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9u
LT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0g
cmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0
ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAg
IHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lv
bi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQo
JyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+
Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAg
ICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAg
ICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGlj
X2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0
ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0
ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92
YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NU
ZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMs
IHRleHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAg
IG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJu
IHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3Vy
Y2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQpCi0tIAoxLjcuNC4xCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107347</attachid>
            <date>2011-09-14 10:22:13 -0700</date>
            <delta_ts>2011-10-14 09:28:01 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-version2_2011_09_14.patch</filename>
            <type>text/plain</type>
            <size>18332</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA5MzBjN2JlODc4YjMwNDY2ODc2YWRlMWYyNGJlZTU1MTUwZmM1MDg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBPbGl2ZXIgVmFyZ2EgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1
PgpEYXRlOiBXZWQsIDE0IFNlcCAyMDExIDE5OjE5OjEyICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
dmVyc2lvbjJfMjAxMV8wOV8xNAoKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgIHwgICAxNCArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaCB8ICAgOTQgKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgIHwgICAxMyArKwogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCAgICAgICB8ICAxODMgKysrKysrKysrKysrKy0tLS0tLS0t
LS0tCiA0IGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRpb25zKCspLCA4NSBkZWxldGlvbnMoLSkK
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBhODgxZWYzLi45N2I0YzhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wOS0xNCAgT2xpdmVyIFZhcmdh
ICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgRml4IENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCisKKyAgICAgICAgQWRkIHR3byBvdmVy
bG9hZHMgdGhlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpIChhcHBlbmQoZG91YmxlKSwgYXBwZW5k
KGludCkpLgorICAgICAgICBUaGlzIGlzIGFuIGVxdWl2YWxlbnQgb2YgdGhlIHByZXZpb3VzIENT
U1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXIKKyAgICAgICAgYnV0IGl0IHdvcmtzIGRpcmVj
dGx5IHdpdGggdGhlIFN0cmluZ0J1aWxkZXIsIGFuZCBpdCBpcyBtdWNoIGZhc3Rlci4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKToKKwog
MjAxMS0wOS0xNCAgSWFpbiBNZXJyaWNrICA8aHVza3lAZ29vZ2xlLmNvbT4KIAogICAgICAgICBI
YXNoVHJhaXRzLmggc2hvdWxkIGluY2x1ZGUgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gZm9yIFdU
Rjo6U3RyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaAppbmRleCBjNzI5YzMyLi4zOTk5Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3Ry
aW5nQnVpbGRlcl9oCiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAogCisjaW5jbHVkZSA8bWF0aC5o
PgorI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC03Niw2ICs3OCw5OCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICBhcHBlbmQoJmMsIDEpOwogICAgIH0KIAorICAgIHZvaWQgYXBwZW5kKGRvdWJs
ZSBkKQorICAgIHsKKyAgICAgICAgYm9vbCBtX3NpZ247CisgICAgICAgIGludCBtX2V4cG9uZW50
OworICAgICAgICBEdG9hQnVmZmVyIG1fc2lnbmlmaWNhbmQ7CisgICAgICAgIHVuc2lnbmVkIG1f
cHJlY2lzaW9uOworCisgICAgICAgIEFTU0VSVChpc2Zpbml0ZShkKSk7CisgICAgICAgIGR0b2Eo
bV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50LCBtX3ByZWNpc2lvbik7CisKKyAg
ICAgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsKKyAgICAgICAgLy8gWmVybyBzaG91bGQgYWx3YXlz
IGhhdmUgZXhwb25lbnQgMC4KKyAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gIT0gJzAn
IHx8ICFtX2V4cG9uZW50KTsKKyAgICAgICAgLy8gTm8gdmFsdWVzIG90aGVyIHRoYW4gemVybyBz
aG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRb
MF0gIT0gJzAnIHx8IG1fcHJlY2lzaW9uID09IDEpOworICAgICAgICAvLyBObyB2YWx1ZXMgb3Ro
ZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAgICAgICBBU1NFUlQo
bV9zaWduaWZpY2FuZFswXSA9PSAnMCcgfHwgbV9zaWduaWZpY2FuZFttX3ByZWNpc2lvbiAtIDFd
ICE9ICcwJyk7CisKKyAgICAgICAgY2hhciB6ZXJvID0gJzAnOworICAgICAgICBjaGFyIGRvdCA9
ICcuJzsKKyAgICAgICAgY2hhciBzaWduID0gJy0nOworCisgICAgICAgIGludCBhYnNvbHV0ZUV4
cCA9IChtX2V4cG9uZW50IDwgMCkgPyBtX2V4cG9uZW50ICogLTEgOiBtX2V4cG9uZW50OworICAg
ICAgICBpbnQgc2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWduaWZpY2FuZCk7CisgICAg
ICAgIGNoYXIqIG51bWJlciA9IG5ldyBjaGFyW2Fic29sdXRlRXhwICsgc2l6ZU9mc2lnbmlmaWNh
bmQgKyAzXTsKKyAgICAgICAgY2hhciogcG9pbnRlciA9IG51bWJlcjsKKworICAgICAgICBpZiAo
bV9zaWduKSB7CisgICAgICAgICAgICAqcG9pbnRlciA9IHNpZ247CisgICAgICAgICAgICBwb2lu
dGVyKys7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcGxhY2VPZkRvdCA9IG1fZXhwb25lbnQ7
CisgICAgICAgIGludCBudW1iZXJPZlplcm9zID0gKG1fZXhwb25lbnQgPiAwKSA/IDAgOiAtbV9l
eHBvbmVudDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mWmVyb3M7IGkr
KykgeworICAgICAgICAgICAgaWYgKGkgPT0gMSkgeworICAgICAgICAgICAgICAgICpwb2ludGVy
ID0gZG90OworICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAg
fQorCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7IGkrKykg
eworICAgICAgICAgICAgaWYgKGkgPT0gcGxhY2VPZkRvdCArIDEgJiYgc2l6ZU9mc2lnbmlmaWNh
bmQgIT0gaSkgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0gZG90OworICAgICAgICAgICAg
ICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwb2ludGVyID0gbV9z
aWduaWZpY2FuZFtpXTsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG1fZXhwb25lbnQgLSBzaXplT2ZzaWduaWZpY2FuZCkg
KyAxOyBpKyspIHsKKyAgICAgICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBv
aW50ZXIrKzsKKyAgICAgICAgfQorCisgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAg
YXBwZW5kKG51bWJlciwgc3RybGVuKG51bWJlcikpOworICAgICAgICBkZWxldGUgbnVtYmVyOwor
ICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGludCBuKQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAw
KSB7CisgICAgICAgICAgICBhcHBlbmQoIi0iLCAxKTsKKyAgICAgICAgICAgIG4gPSAtbjsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICghKG4gLyAxMCkpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9
IHN0YXRpY19jYXN0PGNoYXI+KG4gKyAnMCcpOworICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkaWdpdHNPZk51
bWJlciA9IHN0YXRpY19jYXN0PGludD4obG9nMTAobikgKyAxKTsKKyAgICAgICAgY2hhciogbnVt
YmVyID0gbmV3IGNoYXJbZGlnaXRzT2ZOdW1iZXIgKyAxXTsKKyAgICAgICAgY2hhciogcG9pbnRl
ciA9IG51bWJlciArIGRpZ2l0c09mTnVtYmVyOworCisgICAgICAgICpwb2ludGVyID0gJ1wwJzsK
KyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBkbyB7CisgICAgICAgICAgICAqcG9pbnRlciA9
IChuICUgMTApICsgJzAnOworICAgICAgICAgICAgcG9pbnRlci0tOworICAgICAgICAgICAgbiAv
PSAxMDsKKyAgICAgICAgfSB3aGlsZSAobik7CisKKyAgICAgICAgYXBwZW5kKG51bWJlciwgZGln
aXRzT2ZOdW1iZXIpOworICAgICAgICBkZWxldGUgbnVtYmVyOworICAgIH0KKwogICAgIFN0cmlu
ZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAobV9zdHJpbmcuaXNOdWxsKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2YWRmZDJlLi45Njc3NjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTEtMDktMTQgIE9saXZlciBWYXJnYSAgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisg
ICAgICAgIEZpeCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIHRvIHVzZSBTdHJpbmdCdWls
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
NTEKKworICAgICAgICBSZXBsYWNlIHRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiAoKywgKz0sIGFu
ZCBWZWN0b3I8VWNoYXI+IGFwcGVuZCgpKQorICAgICAgICB0byB0aGUgbXVjaCBmYXN0ZXIgU3Ry
aW5nQnVpbGRlciBhcHBlbmQoKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgdGhpcyBpcyBvbmx5
IGEgbWluaW1hbCBwZXJmb3JtYW5jZSB0d2Vhay4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRp
dmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4
dCk6CisKIDIwMTEtMDktMTMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODA1MApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggODE4MmZjZi4uODg4Nzc3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC02NzgsMTcgKzY3
OCw2IEBAIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0SWRlbnQoKSBjb25zdAogICAgIHJldHVy
biBtX3ZhbHVlLmlkZW50OwogfQogCi1zdGF0aWMgU3RyaW5nIGZvcm1hdE51bWJlcihkb3VibGUg
bnVtYmVyKQotewotICAgIERlY2ltYWxOdW1iZXIgZGVjaW1hbChudW1iZXIpOwotCi0gICAgU3Ry
aW5nQnVmZmVyIGJ1ZmZlcihkZWNpbWFsLmJ1ZmZlckxlbmd0aEZvclN0cmluZ0RlY2ltYWwoKSk7
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZGVjaW1hbC50b1N0cmluZ0RlY2ltYWwoYnVmZmVyLmNo
YXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGxlbmd0aCwg
bGVuZ3RoID09IGJ1ZmZlci5sZW5ndGgoKSk7Ci0KLSAgICByZXR1cm4gU3RyaW5nOjphZG9wdChi
dWZmZXIpOwotfQotCiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiByZXR1cm4gdGhlIG9yaWdpbmFsIHZhbHVlIGluc3RlYWQgb2YgYSBn
ZW5lcmF0ZWQgb25lIChlLmcuIGNvbG9yCkBAIC02OTksODMgKzY4OCwxMDUgQEAgU3RyaW5nIENT
U1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGNzc1RleHRD
YWNoZSgpLmdldCh0aGlzKTsKICAgICB9CiAKLSAgICBTdHJpbmcgdGV4dDsKKyAgICBTdHJpbmdC
dWlsZGVyIHRleHQ7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICAgICAgY2FzZSBDU1NfVU5L
Tk9XTjoKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfTlVNQkVSOgogICAgICAgICBjYXNlIENTU19QQVJTRVJfSU5URUdFUjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQobV92YWx1ZS5udW0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUu
bnVtKSArICIlIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCclJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiZW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoImVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfRVhTOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
ZXgiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoImV4Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UkVNUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJl
bSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZCgicmVtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UFg6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJweCI7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgicHgiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DTToK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImNtIjsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJjbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX01NOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAibW0iOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
Im1tIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSU46Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJpbiI7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaW4i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QVDoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB0IjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJwdCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BDOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicGMiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInBjIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfREVHOgotICAgICAgICAgICAgdGV4dCA9
IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZGVnIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJkZWciKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyYWQiOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInJhZCIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0dSQUQ6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJncmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJncmFkIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTVM6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtcyI7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgibXMiKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAicyI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3Zh
bHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgncycpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAiaHoiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImh6Iik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NfS0haOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAia2h6IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJraHoiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19UVVJOOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAidHVybiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidHVybiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lPTjoKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAgdGV4
dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0ZST01fRkxPVzoKLSAgICAgICAgICAg
IHRleHQgPSAiLXdlYmtpdC1mcm9tLWZsb3coIiArIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92
YWx1ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIi13ZWJraXQtZnJv
bS1mbG93KCIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5lZWRl
ZChtX3ZhbHVlLnN0cmluZykpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0ID0g
InVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgidXJsKCIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVv
dGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKLSAg
ICAgICAgICAgIHRleHQgPSB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQodmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQVRUUjogewogICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIp
KTsKQEAgLTc4NywyOCArNzk4LDI4IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4
dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3Vs
dC50b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRF
Ul9OQU1FOgotICAgICAgICAgICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0
ICs9IG1fdmFsdWUuc3RyaW5nOwotICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiY291bnRlcigiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFs
dWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUjogewogICAgICAgICAgICAgU3RyaW5nIHNl
cGFyYXRvciA9IG1fdmFsdWUuY291bnRlci0+c2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICB0ZXh0
ID0gc2VwYXJhdG9yLmlzRW1wdHkoKSA/ICJjb3VudGVyKCIgOiAiY291bnRlcnMoIjsKLSAgICAg
ICAgICAgIHRleHQgKz0gbV92YWx1ZS5jb3VudGVyLT5pZGVudGlmaWVyKCk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChzZXBhcmF0b3IuaXNFbXB0eSgpID8gImNvdW50ZXIoIiA6ICJjb3VudGVy
cygiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuY291bnRlci0+aWRlbnRpZmll
cigpKTsKICAgICAgICAgICAgIGlmICghc2VwYXJhdG9yLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgICAgIHRleHQgKz0gIiwgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHF1b3RlQ1NTU3Ry
aW5nSWZOZWVkZWQoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiLCAi
KTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKHNl
cGFyYXRvcikpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29uc3QgY2hhciogbGlzdFN0
eWxlTmFtZSA9IGdldFZhbHVlTmFtZShtX3ZhbHVlLmNvdW50ZXItPmxpc3RTdHlsZU51bWJlcigp
ICsgQ1NTVmFsdWVEaXNjKTsKICAgICAgICAgICAgIGlmIChsaXN0U3R5bGVOYW1lKSB7Ci0gICAg
ICAgICAgICAgICAgdGV4dCArPSAiLCAiOwotICAgICAgICAgICAgICAgIHRleHQgKz0gbGlzdFN0
eWxlTmFtZTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiLCAiKTsKKyAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChsaXN0U3R5bGVOYW1lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTgzMSwy
NyArODQyLDI3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAg
ICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3Vs
dC50b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDog
ewogICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAg
ICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3Ao
KS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAg
ICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwt
PnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZh
bC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlm
IChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgp
ICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRv
bSgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRW
YWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZh
bC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAg
dGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVz
dWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04NjUsMzQgKzg3NiwzMyBAQCBTdHJpbmcgQ1NTUHJpbWl0
aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgICAgIENvbG9yOjpwYXJzZUhl
eENvbG9yKG1fdmFsdWUuc3RyaW5nLCByZ2JDb2xvcik7CiAgICAgICAgICAgICBDb2xvciBjb2xv
cihyZ2JDb2xvcik7CiAKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4gcmVzdWx0OwotICAgICAg
ICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOworICAgICAgICAgICAgU3Ry
aW5nQnVpbGRlciByZXN1bHQ7CisgICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDMy
KTsKICAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKQotICAgICAgICAgICAgICAgIGFw
cGVuZChyZXN1bHQsIHJnYmFQYXJlbik7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChy
Z2JhUGFyZW4pOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1
bHQsIHJnYlBhcmVuKTsKLQotICAgICAgICAgICAgYXBwZW5kTnVtYmVyKHJlc3VsdCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgY2hhcj4oY29sb3IucmVkKCkpKTsKLSAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIGNvbW1hU3BhY2UpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmdiUGFy
ZW4pOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjb2xvci5ncmVlbigpKSk7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBj
b21tYVNwYWNlKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29sb3IucmVkKCkpOworICAg
ICAgICAgICAgcmVzdWx0LmFwcGVuZChjb21tYVNwYWNlKTsKKyAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoY29sb3IuZ3JlZW4oKSk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGNvbW1hU3Bh
Y2UpOwogCi0gICAgICAgICAgICBhcHBlbmROdW1iZXIocmVzdWx0LCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyPihjb2xvci5ibHVlKCkpKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29s
b3IuYmx1ZSgpKTsKICAgICAgICAgICAgIGlmIChjb2xvci5oYXNBbHBoYSgpKSB7Ci0gICAgICAg
ICAgICAgICAgYXBwZW5kKHJlc3VsdCwgY29tbWFTcGFjZSk7Ci0gICAgICAgICAgICAgICAgYXBw
ZW5kKHJlc3VsdCwgU3RyaW5nOjpudW1iZXIoY29sb3IuYWxwaGEoKSAvIDI1Ni4wZikpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY29tbWFTcGFjZSk7CisgICAgICAgICAgICAgICAg
cmVzdWx0LmFwcGVuZChjb2xvci5hbHBoYSgpIC8gMjU2LjBmKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmlu
Zzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BB
SVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQo
KSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBh
aXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAg
ICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1f
dmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC05MDAsMTIgKzkx
MCwxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZh
bHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsK
LSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0
LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1f
aXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCAr
PSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFu
Z2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAm
JiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTE3
LDMyICs5MjcsMzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSBy
ZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQg
Kz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAg
IHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAg
ICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAg
ICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBw
ZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5i
b3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAn
KTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1Rl
eHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOwor
ICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsK
LSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwot
ICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAg
ICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5n
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAg
ICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNT
RVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCku
c2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRl
eHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7Cisg
ICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRk
U3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0
eWxlU2hlZXQqIHN0eWxlU2hlZXQpCi0tIAoxLjcuNC4xCgo=
</data>
<flag name="commit-queue"
          id="104144"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111022</attachid>
            <date>2011-10-14 09:28:01 -0700</date>
            <delta_ts>2011-10-17 06:37:10 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder</desc>
            <filename>0001-UsingStringBuilder_AddStringBuilderAppend.patch</filename>
            <type>text/plain</type>
            <size>23082</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">RnJvbSA3MmFhNGExMGE5MzY2OGNhMTIyNjE5NTE2MWVkYmZhNWJiZjIxNzgyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/S3Jpc3Q9QzM9QjNmPTIwS29zenR5PUMzPUIz
Pz0gPGtrcmlzdG9mQGluZi51LXN6ZWdlZC5odT4KRGF0ZTogRnJpLCAxNCBPY3QgMjAxMSAxODoy
MzowMyArMDIwMApTdWJqZWN0OiBbUEFUQ0hdIFVzaW5nU3RyaW5nQnVpbGRlcl9BZGRTdHJpbmdC
dWlsZGVyQXBwZW5kCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgfCAgIDE2ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oIHwgIDI2MiArKysrKysrKysrKysrKysrKysrKysrKy0KIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDE1ICsrCiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwICAgICAgIHwgIDE0OSArKysrKysrKy0tLS0tLQog
NCBmaWxlcyBjaGFuZ2VkLCAzNzMgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2U5OWY3Yy4uNTlhYjAyOCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMTAtMTQgIE9saXZlciBWYXJnYSAgPHZv
bGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIE5GaXggQ1NTUHJpbWl0aXZlVmFsdWU6
OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJsb2Fk
cyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQoaW50
KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NTUHJp
bWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0bHkg
d2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24pOgor
ICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6OlN0
cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMTMgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBTcGVjdWxhdGlvbiBmYWlsdXJlcyBpbiBWYWx1ZVRvSW50
MzIgYXJlIGNhdXNpbmcgYSAyeCBzbG93LWRvd24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4IDVlZGFiZWMuLmZhMTY1NDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMjAsMTIg
KzIwLDE0IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKICAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKICNpZm5kZWYgU3RyaW5nQnVpbGRlcl9o
CiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAogCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg
PHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC03Niw2ICs3OCwyNjQgQEAgcHVibGljOgogICAgICAgICAgICAg
YXBwZW5kKCZjLCAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldFBy
ZWNpc2lvbihpbnQgbV9leHBvbmVudCwgdW5zaWduZWQgbV9wcmVjaXNpb24sIHVuc2lnbmVkIGRp
Z2l0c0JlZm9yZURlY2ltYWxQb2ludCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDA7CisKKyAgICAgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICBsZW5ndGgg
Kz0gLW1fZXhwb25lbnQgLSAxOworICAgICAgICAgICAgbGVuZ3RoICs9IG1fcHJlY2lzaW9uOwor
ICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3By
ZWNpc2lvbiA8PSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpCisgICAgICAgICAgICByZXR1cm4g
MDsKKworICAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb24gLSBkaWdpdHNCZWZvcmVEZWNpbWFs
UG9pbnQ7CisKKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW5s
aW5lIGludCBzaGlmdGluZyhjaGFyKiBudW0sIGludCBzaGlmdCkKKyAgICB7CisgICAgICAgICAg
ICAvLyAjc2hpZnQKKyAgICAgICAgICAgIGludCBwID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChu
dW1bcCsxXSAhPSAnXDAnICYmIHAgPD0gc2hpZnQgJiYgbnVtWzFdICE9ICdcMCcpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbnVtWyBwIF0gPSBudW1bcCsxXTsKKyAgICAgICAgICAgICAgICAgICAg
bnVtW3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gI2ZpbGwwCisgICAgICAgICAgICB3aGlsZSAocCA8PSBzaGlmdCkg
eworICAgICAgICAgICAgICAgICAgICBudW1bIHAgXSA9ICcwJzsKKyAgICAgICAgICAgICAgICAg
ICAgbnVtW3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgICAgIG51bVtwKzJdID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBj
aGVjayZzZXQKKyAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBzdHJsZW4obnVtKTsKKyAg
ICAgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IHAgJiYgKG51bVtpXSA9PSAn
MCcgfHwgbnVtW2ldID09ICcuJyk7IC0taSkKKyAgICAgICAgICAgICAgICAgICAgbnVtW2ldPTA7
CisKKyAgICAgICAgICAgIC8vIHNraXAKKyAgICAgICAgICAgIGlmIChudW1bMF0gPT0gJzAnICYm
IG51bVsxXSA9PSAnMCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworCisgICAgICAg
ICAgICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1bMV0gIT0gJy4nKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKKworICAgICAgICAgICAgaWYgKG51bVswXSAhPSAnMCcpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIHJldHVybiAyOworICAgIH0KKworICAg
IHZvaWQgYXBwZW5kKGRvdWJsZSBkLCBpbnQgcHJlY2lzaW9uID0gNikKKyAgICAgeworICAgICAg
ICAgYm9vbCBtX3NpZ247CisgICAgICAgICBpbnQgbV9leHBvbmVudDsKKyAgICAgICAgIER0b2FC
dWZmZXIgbV9zaWduaWZpY2FuZDsKKyAgICAgICAgIHVuc2lnbmVkIG1fcHJlY2lzaW9uOworCisg
ICAgICAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgIGlmIChkIDwgMCkgewor
ICAgICAgICAgICAgIGlzTmVnYXRpdmUgPSB0cnVlOworICAgICAgICAgICAgIGQgPSAtZDsKKyAg
ICAgICAgICAgICBhcHBlbmQoIi0iLCAxKTsKKyAgICAgICAgIH0KKworICAgICAgICAgQVNTRVJU
KGlzZmluaXRlKGQpKTsKKyAgICAgICAgIGR0b2EobV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBt
X2V4cG9uZW50LCBtX3ByZWNpc2lvbik7CisKKyAgICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7
CisgICAgICAgICAvLyBaZXJvIHNob3VsZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgorICAgICAg
ICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKKyAgICAg
ICAgIC8vIE5vIHZhbHVlcyBvdGhlciB0aGFuIHplcm8gc2hvdWxkIGhhdmUgYSBsZWFkaW5nIHpl
cm8uCisgICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAhPSAnMCcgfHwgbV9wcmVjaXNp
b24gPT0gMSk7CisgICAgICAgICAvLyBObyB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvIHNob3VsZCBo
YXZlIHRyYWlsaW5nIHplcm9zLgorICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0g
JzAnIHx8IG1fc2lnbmlmaWNhbmRbbV9wcmVjaXNpb24gLSAxXSAhPSAnMCcpOworCisgICAgICAg
ICBjaGFyIHplcm8gPSAnMCc7CisgICAgICAgICBjaGFyIGRvdCA9ICcuJzsKKworICAgICAgICAg
aW50IGFic29sdXRlRXhwID0gKG1fZXhwb25lbnQgPCAwKSA/IG1fZXhwb25lbnQgKiAtMSA6IG1f
ZXhwb25lbnQ7CisgICAgICAgICBpbnQgc2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWdu
aWZpY2FuZCk7CisgICAgICAgICBWZWN0b3I8Y2hhciwgMzI+IG51bWJlcihhYnNvbHV0ZUV4cCAr
IHNpemVPZnNpZ25pZmljYW5kICsgMyk7CisgICAgICAgICBjaGFyKiBwb2ludGVyID0gJm51bWJl
clswXTsKKyAgICAgICAgIGludCBzaXplT2ZNU2lnbmlmaWNhbmQgPSBzaXplb2YobV9zaWduaWZp
Y2FuZCk7CisgICAgICAgICB1bnNpZ25lZCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgPSBtX2V4
cG9uZW50ICsgMTsKKworICAgICAgICAgcHJlY2lzaW9uID0gZ2V0UHJlY2lzaW9uKG1fZXhwb25l
bnQsIG1fcHJlY2lzaW9uLCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpOworCisgICAgICAgICBi
b29sIGRvdEFscmVhZHlXcml0dGVuID0gZmFsc2U7CisgICAgICAgICBpbnQgbWF4TGltaXQgPSAw
OworICAgICAgICAgaW50IHBsYWNlT2ZEb3QgPSBtX2V4cG9uZW50OworICAgICAgICAgaW50IG51
bWJlck9mWmVyb3MgPSAobV9leHBvbmVudCA+IDApID8gMCA6IC1tX2V4cG9uZW50OworCisgICAg
ICAgICBib29sIGp1bXAgPSBmYWxzZTsKKyAgICAgICAgIGJvb2wgdG9TaGlmID0gZmFsc2U7Cisg
ICAgICAgICB1bnNpZ25lZCBmcm9tID0gMDsKKyAgICAgICAgIHVuc2lnbmVkIHZhbHVlT2ZTaGlm
dCA9IDA7CisKKyAgICAgICAgIGlmICghcHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgaWYgKG1f
ZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgbV9zaWduaWZpY2FuZFsyXSA9IG1fc2ln
bmlmaWNhbmRbMV07CisgICAgICAgICAgICAgICAgbV9zaWduaWZpY2FuZFsxXSA9IG1fc2lnbmlm
aWNhbmRbMF07CisgICAgICAgICAgICAgICAgbV9zaWduaWZpY2FuZFswXSA9ICcwJzsKKyAgICAg
ICAgICAgICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgPSAxOworICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAgICBmb3IgKDsgaSA8IGRpZ2l0
c0JlZm9yZURlY2ltYWxQb2ludCAmJiBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7ICsraSkgeworICAg
ICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAgICAgICAg
ICBwb2ludGVyKys7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgaWYgKG1fc2lnbmlm
aWNhbmRbaV0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICB0b1NoaWYgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGp1bXAgPSB0cnVlOworICAgICAgICAgICAgICAgIGRvdEFscmVhZHlXcml0dGVu
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwbGFjZU9mRG90ID0gMTsKKyAgICAgICAgICAgICAg
ICBwcmVjaXNpb24gKz0gZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50OworICAgICAgICAgICAgICAg
IHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAgICAgICAgICpwb2ludGVyID0gJzAnOwor
ICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSBkb3Q7CisgICAgICAgICAgICAgICAgcG9pbnRl
ciArPSAyOworICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCA9IGRpZ2l0c0JlZm9yZURlY2lt
YWxQb2ludDsKKyAgICAgICAgICAgICAgICBpZiAobV9zaWduaWZpY2FuZFswXSA9PSAnMCcpIHsK
KyAgICAgICAgICAgICAgICAgICAgbWF4TGltaXQtLTsKKyAgICAgICAgICAgICAgICAgICAgdmFs
dWVPZlNoaWZ0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgIGp1bXAgPSB0cnVlOworCisgICAgICAgICBpZiAoanVtcCkg
eworICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZaZXJvczsgaSsrKSB7
CisgICAgICAgICAgICAgICAgIGlmIChpID09IDEgJiYgIWRvdEFscmVhZHlXcml0dGVuKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9IGRvdDsKKyAgICAgICAgICAgICAgICAgICAg
IHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgICAgIGRvdEFscmVhZHlXcml0dGVuID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAqcG9pbnRlciA9IHplcm87
CisgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgbWF4TGltaXQg
PSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQgKyAxIDogbWF4TGltaXQ7CisgICAgICAg
ICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNpb24pIHsKKyAgICAgICAgICAgICAgICAg
ICAgIGlmIChudW1iZXJPZlplcm9zID4gcHJlY2lzaW9uICsgMSB8fCAobnVtYmVyT2ZaZXJvcyA9
PSAocHJlY2lzaW9uICsgMSkgJiYgbV9zaWduaWZpY2FuZFswXSA8ICc1JykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJlclsxXTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBwb2ludGVyWy0xXSA9ICcwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAqcG9p
bnRlciA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFs
dWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zy
b21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGlmIChu
dW1iZXJPZlplcm9zID09IHByZWNpc2lvbiArIDEgJiYgbV9zaWduaWZpY2FuZFswXSA+ICc0Jykg
eworICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbLTFdID0gJzEnOworICAgICAgICAg
ICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzaGlm
dGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7IGkrKykgeworICAgICAgICAgICAgICAgICBpZiAoaSA9
PSBwbGFjZU9mRG90ICsgMSAmJiBzaXplT2ZzaWduaWZpY2FuZCAhPSBpICYmICFkb3RBbHJlYWR5
V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBkb3Q7CisgICAgICAg
ICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgICAgICAgICBkb3RBbHJlYWR5
V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgKnBv
aW50ZXIgPSBtX3NpZ25pZmljYW5kW2ldOworICAgICAgICAgICAgICAgICBtYXhMaW1pdCA9IChk
b3RBbHJlYWR5V3JpdHRlbikgPyBtYXhMaW1pdCArIDEgOiBtYXhMaW1pdDsKKyAgICAgICAgICAg
ICAgICAgaWYgKG1heExpbWl0ID09IHByZWNpc2lvbikgeworICAgICAgICAgICAgICAgICAgICAg
aWYgKGkgKyAxIDwgc2l6ZU9mTVNpZ25pZmljYW5kICYmIG1fc2lnbmlmaWNhbmRbaSArIDFdIDwg
JzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwb2ludGVyID09ICcwJyAm
JiBkb3RBbHJlYWR5V3JpdHRlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50
ZXItLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwb2ludGVyID09IGRvdCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBz
aGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpZ25pZmljYW5kW2ldID09ICc5JykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnBvaW50ZXIgPT0gJzknICYmICpwb2ludGVy
ICE9IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci0tOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0s
IHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCZudW1i
ZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAg
ICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICBwb2lu
dGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9m
U2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0
cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKG1fZXhwb25lbnQg
LSBzaXplT2ZzaWduaWZpY2FuZCkgKyAxOyBpKyspIHsKKyAgICAgICAgICAgICpwb2ludGVyID0g
emVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAgICAgICpwb2lu
dGVyID0gJ1wwJzsKKworICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgZnJvbSA9IHNo
aWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgYXBwZW5kKCZudW1i
ZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgIH0KKworICAgIHZvaWQgYXBw
ZW5kKGludCBuKQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBhcHBl
bmQoIi0iLCAxKTsKKyAgICAgICAgICAgIG4gPSAtbjsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghKG4gLyAxMCkpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG4g
KyAnMCcpOworICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGludCBkaWdpdHNPZk51bWJlciA9IHN0YXRpY19jYXN0PGlu
dD4obG9nMTAobikgKyAxKTsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDMyPiBudW1iZXIoZGlnaXRz
T2ZOdW1iZXIgKyAxKTsKKyAgICAgICAgY2hhciogcG9pbnRlciA9ICZudW1iZXJbZGlnaXRzT2ZO
dW1iZXJdOworCisgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgcG9pbnRlci0tOwor
ICAgICAgICBkbyB7CisgICAgICAgICAgICAqcG9pbnRlciA9IChuICUgMTApICsgJzAnOworICAg
ICAgICAgICAgcG9pbnRlci0tOworICAgICAgICAgICAgbiAvPSAxMDsKKyAgICAgICAgfSB3aGls
ZSAobik7CisgICAgICAgIGFwcGVuZCgmbnVtYmVyWzBdLCBkaWdpdHNPZk51bWJlcik7CisgICAg
fQorCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmIChtX3N0cmluZy5p
c051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY5NjFlOWQuLjkzMzE5MjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxOCBAQAorMjAxMS0xMC0xNCAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYudS1z
emVnZWQuaHU+CisKKyAgICAgICAgRml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgdG8g
dXNlIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02Njg1MQorCisgICAgICAgIFJlcGxhY2UgdGhlIHN0cmluZyBjb25jYXRlbmF0
aW9uICgrLCArPSwgYW5kIFZlY3RvcjxVY2hhcj4gYXBwZW5kKCkpCisgICAgICAgIHRvIHRoZSBt
dWNoIGZhc3RlciBTdHJpbmdCdWlsZGVyIGFwcGVuZCgpLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyB0aGlzIGlzIG9ubHkgYSBt
aW5pbWFsIHBlcmZvcm1hbmNlIHR3ZWFrLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToK
KwogMjAxMS0xMC0xMyAgQXJrbyBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAg
TWljcm9kYXRhOiBCYXNpYyBpbXBsZW1lbnRhdGlvbiBvZiBkb2N1bWVudC5nZXRJdGVtcygpIG1l
dGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGUxNDU0
MWQuLmMxYzNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApA
QCAtNjgwLDE3ICs2ODAsNiBAQCBpbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmdldElkZW50KCkgY29u
c3QKICAgICByZXR1cm4gbV92YWx1ZS5pZGVudDsKIH0KIAotc3RhdGljIFN0cmluZyBmb3JtYXRO
dW1iZXIoZG91YmxlIG51bWJlcikKLXsKLSAgICBEZWNpbWFsTnVtYmVyIGRlY2ltYWwobnVtYmVy
KTsKLQotICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoZGVjaW1hbC5idWZmZXJMZW5ndGhGb3JTdHJp
bmdEZWNpbWFsKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0aCA9IGRlY2ltYWwudG9TdHJpbmdEZWNp
bWFsKGJ1ZmZlci5jaGFyYWN0ZXJzKCksIGJ1ZmZlci5sZW5ndGgoKSk7Ci0gICAgQVNTRVJUX1VO
VVNFRChsZW5ndGgsIGxlbmd0aCA9PSBidWZmZXIubGVuZ3RoKCkpOwotCi0gICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQoYnVmZmVyKTsKLX0KLQogU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogcmV0dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBp
bnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5nLiBjb2xvcgpAQCAtNzAxLDgzICs2OTAsMTA1
IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiBjc3NUZXh0Q2FjaGUoKS5nZXQodGhpcyk7CiAgICAgfQogCi0gICAgU3RyaW5nIHRleHQ7
CisgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwogICAgIHN3aXRjaCAobV90eXBlKSB7CiAgICAgICAg
IGNhc2UgQ1NTX1VOS05PV046CiAgICAgICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoKICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lO
VEVHRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAiJSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnJScpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX0VNUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgImVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJlbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJleCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoInJlbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAicHgiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoInB4Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJjbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiY20iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
Im1tIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJtbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X0lOOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaW4i
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoImluIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUFQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwdCI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgicHQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QQzoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInBjIjsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCJwYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RFRzoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImRlZyI7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
ZGVnIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUkFEOgotICAgICAg
ICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicmFkIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJy
YWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19HUkFEOgotICAgICAg
ICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZ3JhZCI7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
Z3JhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX01TOgotICAgICAg
ICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAibXMiOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoIm1z
Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUzoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInMiOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJ3MnKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19IWjoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJoeiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0tIWjoKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImtoeiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgia2h6Iik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVFVSTjoKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInR1cm4iOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInR1cm4iKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJT046CiAgICAgICAgICAgICAv
LyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKLSAg
ICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19GUk9NX0ZMT1c6
Ci0gICAgICAgICAgICB0ZXh0ID0gIi13ZWJraXQtZnJvbS1mbG93KCIgKyBxdW90ZUNTU1N0cmlu
Z0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCItd2Via2l0LWZyb20tZmxvdygiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NT
U3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgotICAgICAg
ICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcp
ICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVl
LmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92
YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6
IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhdHRyUGFy
ZW4sICgiYXR0cigiKSk7CkBAIC03ODksMTMgKzgwMCwxMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVl
LnN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAg
IHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3Vs
dC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTX0NPVU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwotICAg
ICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRleHQgKz0gIiki
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnKScpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsKICAgICAgICAg
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFyZW4sICgiY291
bnRlcigiKSk7CkBAIC04MTcsOCArODI4LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpj
c3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RTdHlsZSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAg
ICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTg0MSwyNyArODUxLDI3IEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJl
Y3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJykn
KTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCogcXVhZFZh
bCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0g
ICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAg
ICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
IFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0
eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0
KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkg
fHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgp
ICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcp
OwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1Rl
eHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5j
c3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFk
VmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAg
IGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwog
ICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVm
dCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0
KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04OTUs
MTQgKzkwNSwxNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAg
ICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoU3RyaW5nOjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWly
LT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBh
aXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5z
ZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0
ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCkt
PmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAg
ICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NV
UFBPUlQpCkBAIC05MTAsMTIgKzkyMCwxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9
IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25l
eHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0g
ImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9s
YWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsK
KyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAg
ICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQg
Kz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIp
OwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAg
ICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAg
IHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+
bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENTU1Zh
bHVlSW52YWxpZCkgewpAQCAtOTI3LDMyICs5MzcsMzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+
bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgp
ICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NU
ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNz
c1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAg
dGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQo
cmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENT
U19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNo
YXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VS
X0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lm
TmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgp
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0
LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7
Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRDYWNoZSgp
LnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7
Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBD
U1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCi0tIAoxLjcuMQoK
</data>
<flag name="commit-queue"
          id="108710"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111257</attachid>
            <date>2011-10-17 06:37:10 -0700</date>
            <delta_ts>2011-10-18 07:11:58 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>updateNow.patch</filename>
            <type>text/plain</type>
            <size>22468</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdlOTlmN2MuLjZmZmE5ZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTE3ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBORml4IENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCisKKyAgICAgICAgQWRkIHR3byBvdmVy
bG9hZHMgdGhlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgpIChhcHBlbmQoZG91YmxlKSwgYXBwZW5k
KGludCkpLgorICAgICAgICBUaGlzIGlzIGFuIGVxdWl2YWxlbnQgb2YgdGhlIHByZXZpb3VzIENT
U1ByaW1pdGl2ZVZhbHVlOjpmb3JtYXROdW1iZXIKKyAgICAgICAgYnV0IGl0IHdvcmtzIGRpcmVj
dGx5IHdpdGggdGhlIFN0cmluZ0J1aWxkZXIsIGFuZCBpdCBpcyBtdWNoIGZhc3Rlci4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0
cmluZ0J1aWxkZXIuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6Z2V0UHJlY2lzaW9u
KToKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6c2hpZnRpbmcpOgorICAgICAgICAoV1RG
OjpTdHJpbmdCdWlsZGVyOjphcHBlbmQpOgorCiAyMDExLTEwLTEzICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpb24gZmFpbHVyZXMgaW4gVmFsdWVU
b0ludDMyIGFyZSBjYXVzaW5nIGEgMnggc2xvdy1kb3duCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1ZWRhYmVjLi44OGNhOTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTIw
LDEyICsyMCwxNCBAQAogICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCiAjaWZuZGVmIFN0cmluZ0J1aWxk
ZXJfaAogI2RlZmluZSBTdHJpbmdCdWlsZGVyX2gKIAorI2luY2x1ZGUgPG1hdGguaD4KKyNpbmNs
dWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNiArNzgsMjY0IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGFwcGVuZCgmYywgMSk7CiAgICAgfQogCisgICAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBn
ZXRQcmVjaXNpb24oaW50IG1fZXhwb25lbnQsIHVuc2lnbmVkIG1fcHJlY2lzaW9uLCB1bnNpZ25l
ZCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpCisgICAgeworICAgICAgICB1bnNpZ25lZCBsZW5n
dGggPSAwOworCisgICAgICAgIGlmIChtX2V4cG9uZW50IDwgMCkgeworICAgICAgICAgICAgbGVu
Z3RoICs9IC1tX2V4cG9uZW50IC0gMTsKKyAgICAgICAgICAgIGxlbmd0aCArPSBtX3ByZWNpc2lv
bjsKKyAgICAgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
bV9wcmVjaXNpb24gPD0gZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KQorICAgICAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAgICAgbGVuZ3RoICs9IG1fcHJlY2lzaW9uIC0gZGlnaXRzQmVmb3JlRGVj
aW1hbFBvaW50OworCisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgc3RhdGlj
IGludCBzaGlmdGluZyhjaGFyKiBudW0sIGludCBzaGlmdCkKKyAgICB7CisgICAgICAgICAgICAv
LyAjc2hpZnQKKyAgICAgICAgICAgIGludCBwID0gMTsKKyAgICAgICAgICAgIHdoaWxlIChudW1b
cCsxXSAhPSAnXDAnICYmIHAgPD0gc2hpZnQgJiYgbnVtWzFdICE9ICdcMCcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbnVtWyBwIF0gPSBudW1bcCsxXTsKKyAgICAgICAgICAgICAgICAgICAgbnVt
W3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gI2ZpbGwwCisgICAgICAgICAgICB3aGlsZSAocCA8PSBzaGlmdCkgewor
ICAgICAgICAgICAgICAgICAgICBudW1bIHAgXSA9ICcwJzsKKyAgICAgICAgICAgICAgICAgICAg
bnVtW3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgICAgIG51bVtwKzJdID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBjaGVj
ayZzZXQKKyAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGggPSBzdHJsZW4obnVtKTsKKyAgICAg
ICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IHAgJiYgKG51bVtpXSA9PSAnMCcg
fHwgbnVtW2ldID09ICcuJyk7IC0taSkKKyAgICAgICAgICAgICAgICAgICAgbnVtW2ldPTA7CisK
KyAgICAgICAgICAgIC8vIHNraXAKKyAgICAgICAgICAgIGlmIChudW1bMF0gPT0gJzAnICYmIG51
bVsxXSA9PSAnMCcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworCisgICAgICAgICAg
ICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1bMV0gIT0gJy4nKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gMTsKKworICAgICAgICAgICAgaWYgKG51bVswXSAhPSAnMCcpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIHJldHVybiAyOworICAgIH0KKworICAgIHZv
aWQgYXBwZW5kKGRvdWJsZSBkKQorICAgICB7CisgICAgICAgICBib29sIG1fc2lnbjsKKyAgICAg
ICAgIGludCBtX2V4cG9uZW50OworICAgICAgICAgRHRvYUJ1ZmZlciBtX3NpZ25pZmljYW5kOwor
ICAgICAgICAgdW5zaWduZWQgbV9wcmVjaXNpb247CisKKyAgICAgICAgIGJvb2wgaXNOZWdhdGl2
ZSA9IGZhbHNlOworICAgICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgICAgICAgaXNOZWdhdGl2
ZSA9IHRydWU7CisgICAgICAgICAgICAgZCA9IC1kOworICAgICAgICAgICAgIGFwcGVuZCgiLSIs
IDEpOworICAgICAgICAgfQorCisgICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZCkpOworICAgICAg
ICAgZHRvYShtX3NpZ25pZmljYW5kLCBkLCBtX3NpZ24sIG1fZXhwb25lbnQsIG1fcHJlY2lzaW9u
KTsKKworICAgICAgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsKKyAgICAgICAgIC8vIFplcm8gc2hv
dWxkIGFsd2F5cyBoYXZlIGV4cG9uZW50IDAuCisgICAgICAgICBBU1NFUlQobV9zaWduaWZpY2Fu
ZFswXSAhPSAnMCcgfHwgIW1fZXhwb25lbnQpOworICAgICAgICAgLy8gTm8gdmFsdWVzIG90aGVy
IHRoYW4gemVybyBzaG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICAgICAgIEFTU0VSVCht
X3NpZ25pZmljYW5kWzBdICE9ICcwJyB8fCBtX3ByZWNpc2lvbiA9PSAxKTsKKyAgICAgICAgIC8v
IE5vIHZhbHVlcyBvdGhlciB0aGFuIHplcm8gc2hvdWxkIGhhdmUgdHJhaWxpbmcgemVyb3MuCisg
ICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSA9PSAnMCcgfHwgbV9zaWduaWZpY2FuZFtt
X3ByZWNpc2lvbiAtIDFdICE9ICcwJyk7CisKKyAgICAgICAgIGNoYXIgemVybyA9ICcwJzsKKyAg
ICAgICAgIGNoYXIgZG90ID0gJy4nOworCisgICAgICAgICBpbnQgYWJzb2x1dGVFeHAgPSAobV9l
eHBvbmVudCA8IDApID8gbV9leHBvbmVudCAqIC0xIDogbV9leHBvbmVudDsKKyAgICAgICAgIGlu
dCBzaXplT2ZzaWduaWZpY2FuZCA9IHN0cmxlbihtX3NpZ25pZmljYW5kKTsKKyAgICAgICAgIFZl
Y3RvcjxjaGFyLCAzMj4gbnVtYmVyKGFic29sdXRlRXhwICsgc2l6ZU9mc2lnbmlmaWNhbmQgKyAz
KTsKKyAgICAgICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAgaW50IHNp
emVPZk1TaWduaWZpY2FuZCA9IHNpemVvZihtX3NpZ25pZmljYW5kKTsKKyAgICAgICAgIGludCBk
aWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgPSBtX2V4cG9uZW50ICsgMTsKKworICAgICAgICAgaW50
IHByZWNpc2lvbiA9IGdldFByZWNpc2lvbihtX2V4cG9uZW50LCBtX3ByZWNpc2lvbiwgZGlnaXRz
QmVmb3JlRGVjaW1hbFBvaW50KTsKKworICAgICAgICAgYm9vbCBkb3RBbHJlYWR5V3JpdHRlbiA9
IGZhbHNlOworICAgICAgICAgaW50IG1heExpbWl0ID0gMDsKKyAgICAgICAgIGludCBwbGFjZU9m
RG90ID0gbV9leHBvbmVudDsKKyAgICAgICAgIGludCBudW1iZXJPZlplcm9zID0gKG1fZXhwb25l
bnQgPiAwKSA/IDAgOiAtbV9leHBvbmVudDsKKworICAgICAgICAgYm9vbCBqdW1wID0gZmFsc2U7
CisgICAgICAgICBib29sIHRvU2hpZiA9IGZhbHNlOworICAgICAgICAgaW50IGZyb20gPSAwOwor
ICAgICAgICAgaW50IHZhbHVlT2ZTaGlmdCA9IDA7CisKKyAgICAgICAgIGlmICghcHJlY2lzaW9u
KSB7CisgICAgICAgICAgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICAgICAg
bV9zaWduaWZpY2FuZFsyXSA9IG1fc2lnbmlmaWNhbmRbMV07CisgICAgICAgICAgICAgICAgbV9z
aWduaWZpY2FuZFsxXSA9IG1fc2lnbmlmaWNhbmRbMF07CisgICAgICAgICAgICAgICAgbV9zaWdu
aWZpY2FuZFswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsUG9p
bnQgPSAxOworICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAg
ICAgICAgICBmb3IgKDsgaSA8IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCAmJiBpIDwgc2l6ZU9m
c2lnbmlmaWNhbmQ7ICsraSkgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZp
Y2FuZFtpXTsKKyAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgaWYgKG1fc2lnbmlmaWNhbmRbaV0gPiAnNCcpIHsKKyAgICAgICAgICAgICAg
ICB0b1NoaWYgPSB0cnVlOworICAgICAgICAgICAgICAgIGp1bXAgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwbGFjZU9m
RG90ID0gMTsKKyAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gZGlnaXRzQmVmb3JlRGVjaW1h
bFBvaW50OworICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAg
ICAgICAgICpwb2ludGVyID0gJzAnOworICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSBkb3Q7
CisgICAgICAgICAgICAgICAgcG9pbnRlciArPSAyOworICAgICAgICAgICAgICAgIHZhbHVlT2ZT
aGlmdCA9IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludDsKKyAgICAgICAgICAgICAgICBpZiAobV9z
aWduaWZpY2FuZFswXSA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4TGltaXQtLTsK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWVPZlNoaWZ0Kys7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgIGp1bXAgPSB0cnVl
OworCisgICAgICAgICBpZiAoanVtcCkgeworICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtYmVyT2ZaZXJvczsgaSsrKSB7CisgICAgICAgICAgICAgICAgIGlmIChpID09IDEgJiYg
IWRvdEFscmVhZHlXcml0dGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9IGRv
dDsKKyAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgICAg
IGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAg
ICAgICAgICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQg
KyAxIDogbWF4TGltaXQ7CisgICAgICAgICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlplcm9zID4gcHJlY2lzaW9u
ICsgMSB8fCAobnVtYmVyT2ZaZXJvcyA9PSAocHJlY2lzaW9uICsgMSkgJiYgbV9zaWduaWZpY2Fu
ZFswXSA8ICc1JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJl
clsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyWy0xXSA9ICcwJzsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0g
c2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlplcm9zID09IHByZWNpc2lvbiArIDEgJiYg
bV9zaWduaWZpY2FuZFswXSA+ICc0JykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50
ZXJbLTFdID0gJzEnOworICAgICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsK
KworICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigm
bnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7IGkrKykgewor
ICAgICAgICAgICAgICAgICBpZiAoaSA9PSBwbGFjZU9mRG90ICsgMSAmJiBzaXplT2ZzaWduaWZp
Y2FuZCAhPSBpICYmICFkb3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAg
KnBvaW50ZXIgPSBkb3Q7CisgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAg
ICAgICAgICAgICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBtX3NpZ25pZmljYW5kW2ldOworICAgICAg
ICAgICAgICAgICBtYXhMaW1pdCA9IChkb3RBbHJlYWR5V3JpdHRlbikgPyBtYXhMaW1pdCArIDEg
OiBtYXhMaW1pdDsKKyAgICAgICAgICAgICAgICAgaWYgKG1heExpbWl0ID09IHByZWNpc2lvbikg
eworICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgc2l6ZU9mTVNpZ25pZmljYW5kICYm
IG1fc2lnbmlmaWNhbmRbaSArIDFdIDwgJzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKCpwb2ludGVyID09ICcwJyAmJiBkb3RBbHJlYWR5V3JpdHRlbikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCpwb2ludGVyID09IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwb2lu
dGVyID0gJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJs
ZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpZ25p
ZmljYW5kW2ldID09ICc5JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnBv
aW50ZXIgPT0gJzknICYmICpwb2ludGVyICE9IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcG9pbnRlci0tOworCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcG9pbnRl
ciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJv
bSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAg
ICAgICAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzaGlm
dGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICBwb2ludGVyKys7CisgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgKG1fZXhwb25lbnQgLSBzaXplT2ZzaWduaWZpY2FuZCkgKyAxOyBpKyspIHsK
KyAgICAgICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAg
ICAgICAgfQorCisgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICBpZiAodG9TaGlm
KQorICAgICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7
CisKKyAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7
CisgICAgIH0KKworICAgIHZvaWQgYXBwZW5kKGludCBuKQorICAgIHsKKyAgICAgICAgaWYgKG4g
PCAwKSB7CisgICAgICAgICAgICBhcHBlbmQoIi0iLCAxKTsKKyAgICAgICAgICAgIG4gPSAtbjsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICghKG4gLyAxMCkpIHsKKyAgICAgICAgICAgIGNoYXIg
YyA9IHN0YXRpY19jYXN0PGNoYXI+KG4gKyAnMCcpOworICAgICAgICAgICAgYXBwZW5kKCZjLCAx
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkaWdpdHNP
Zk51bWJlciA9IHN0YXRpY19jYXN0PGludD4obG9nMTAobikgKyAxKTsKKyAgICAgICAgVmVjdG9y
PGNoYXIsIDMyPiBudW1iZXIoZGlnaXRzT2ZOdW1iZXIgKyAxKTsKKyAgICAgICAgY2hhciogcG9p
bnRlciA9ICZudW1iZXJbZGlnaXRzT2ZOdW1iZXJdOworCisgICAgICAgICpwb2ludGVyID0gJ1ww
JzsKKyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBkbyB7CisgICAgICAgICAgICAqcG9pbnRl
ciA9IChuICUgMTApICsgJzAnOworICAgICAgICAgICAgcG9pbnRlci0tOworICAgICAgICAgICAg
biAvPSAxMDsKKyAgICAgICAgfSB3aGlsZSAobik7CisgICAgICAgIGFwcGVuZCgmbnVtYmVyWzBd
LCBkaWdpdHNPZk51bWJlcik7CisgICAgfQorCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkKICAgICB7
CiAgICAgICAgIGlmIChtX3N0cmluZy5pc051bGwoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGY5NjFlOWQu
LjU2YWFjYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMC0xNyAgT2xpdmVy
IFZhcmdhICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAgICAgRml4IENTU1ByaW1p
dGl2ZVZhbHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxkZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1MQorCisgICAgICAgIFJlcGxh
Y2UgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uICgrLCArPSwgYW5kIFZlY3RvcjxVY2hhcj4gYXBw
ZW5kKCkpCisgICAgICAgIHRvIHRoZSBtdWNoIGZhc3RlciBTdHJpbmdCdWlsZGVyIGFwcGVuZCgp
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cyB0aGlzIGlzIG9ubHkgYSBtaW5pbWFsIHBlcmZvcm1hbmNlIHR3ZWFrLgorCisgICAg
ICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1By
aW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKwogMjAxMS0xMC0xMyAgQXJrbyBTYWhhICA8YXJrb0Bt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9kYXRhOiBCYXNpYyBpbXBsZW1lbnRhdGlvbiBv
ZiBkb2N1bWVudC5nZXRJdGVtcygpIG1ldGhvZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCmluZGV4IGUxNDU0MWQuLmMxYzNlNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcApAQCAtNjgwLDE3ICs2ODAsNiBAQCBpbnQgQ1NTUHJpbWl0
aXZlVmFsdWU6OmdldElkZW50KCkgY29uc3QKICAgICByZXR1cm4gbV92YWx1ZS5pZGVudDsKIH0K
IAotc3RhdGljIFN0cmluZyBmb3JtYXROdW1iZXIoZG91YmxlIG51bWJlcikKLXsKLSAgICBEZWNp
bWFsTnVtYmVyIGRlY2ltYWwobnVtYmVyKTsKLQotICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoZGVj
aW1hbC5idWZmZXJMZW5ndGhGb3JTdHJpbmdEZWNpbWFsKCkpOwotICAgIHVuc2lnbmVkIGxlbmd0
aCA9IGRlY2ltYWwudG9TdHJpbmdEZWNpbWFsKGJ1ZmZlci5jaGFyYWN0ZXJzKCksIGJ1ZmZlci5s
ZW5ndGgoKSk7Ci0gICAgQVNTRVJUX1VOVVNFRChsZW5ndGgsIGxlbmd0aCA9PSBidWZmZXIubGVu
Z3RoKCkpOwotCi0gICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKLX0KLQogU3RyaW5n
IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogcmV0
dXJuIHRoZSBvcmlnaW5hbCB2YWx1ZSBpbnN0ZWFkIG9mIGEgZ2VuZXJhdGVkIG9uZSAoZS5nLiBj
b2xvcgpAQCAtNzAxLDgzICs2OTAsMTA1IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3Nz
VGV4dCgpIGNvbnN0CiAgICAgICAgIHJldHVybiBjc3NUZXh0Q2FjaGUoKS5nZXQodGhpcyk7CiAg
ICAgfQogCi0gICAgU3RyaW5nIHRleHQ7CisgICAgU3RyaW5nQnVpbGRlciB0ZXh0OwogICAgIHN3
aXRjaCAobV90eXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CiAgICAgICAgICAgICAv
LyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoKICAg
ICAgICAgY2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiJSI7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgn
JScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VNUzoKLSAgICAgICAg
ICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImVtIjsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJlbSIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAgICAgICAg
IHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJleCIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInJlbSIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICAgICAgdGV4
dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHgiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInB4Iik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJjbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY20iKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1f
dmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJtbSIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0lOOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAiaW4iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1
ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImluIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfUFQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJwdCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicHQiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19QQzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgInBjIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJwYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX0RFRzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgImRlZyI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGVnIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAicmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCJyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZ3JhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX01TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAibXMiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoIm1zIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
ICsgInMiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoJ3MnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19IWjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCJoeiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0tI
WjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImtoeiI7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgia2h6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVFVS
TjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInR1cm4i
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoInR1cm4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19E
SU1FTlNJT046CiAgICAgICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX1NUUklORzoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lm
TmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NT
U3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIENTU19GUk9NX0ZMT1c6Ci0gICAgICAgICAgICB0ZXh0ID0gIi13ZWJraXQtZnJv
bS1mbG93KCIgKyBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCItd2Via2l0LWZyb20tZmxvdygiKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfVVJJOgotICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJM
SWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
InVybCgiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92
YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFs
dWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBhdHRyUGFyZW4sICgiYXR0cigiKSk7CkBAIC03ODksMTMgKzgwMCwx
MyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKLSAgICAgICAgICAg
IHRleHQgPSAiY291bnRlcigiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnN0cmluZzsK
LSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50
ZXIoIik7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0NPVU5URVI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBjb3VudGVyUGFyZW4sICgiY291bnRlcigiKSk7CkBAIC04MTcsOCArODI4LDcgQEAgU3Ry
aW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGxpc3RTdHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTg0MSwyNyAr
ODUxLDI3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50
b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewog
ICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAg
VmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+
Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAg
ICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJp
Z2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+
dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQs
IHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZChxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChx
dWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9
IHF1YWRWYWwtPmxlZnQoKSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgp
LT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwt
PmJvdHRvbSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+
bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQs
IHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQocXVhZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4
dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0
LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBDU1NfUkdCQ09MT1I6CkBAIC04OTUsMTQgKzkwNSwxNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXN1
bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQp
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5nOjphZG9wdChyZXN1bHQpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAg
ICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAgICAg
ICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkp
IHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9
IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFpci0+
c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC05MTAsMTIgKzkyMCwxMiBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9yIChE
YXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lv
bjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwot
ICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAg
ICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdp
b24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0g
ICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lv
bi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3Rhbmds
ZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAg
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRv
cCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTI3LDMyICs5MzcsMzUg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52
YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgp
LT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5y
aWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVn
aW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0
ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQu
YXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+
cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAn
KTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+Y3Nz
VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAgICAg
IGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAgICAg
dGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nh
c3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0g
cXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0ID0g
bV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1
ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIFN0
cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0
Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRl
eHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAgIG1f
aGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJl
c3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VT
dHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0
eWxlU2hlZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111441</attachid>
            <date>2011-10-18 07:11:58 -0700</date>
            <delta_ts>2011-10-19 00:40:34 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>stringBuilder_Append.patch</filename>
            <type>text/plain</type>
            <size>21826</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDIzYTVmYzMuLmRmYzViMDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTE4ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKyAgICAgICAgCisgICAgICAgIEFkZCB0
d28gb3ZlcmxvYWRzIHRoZSBTdHJpbmdCdWlsZGVyOjphcHBlbmQoKSAoYXBwZW5kKGRvdWJsZSks
IGFwcGVuZChpbnQpKS4KKyAgICAgICAgVGhpcyBpcyBhbiBlcXVpdmFsZW50IG9mIHRoZSBwcmV2
aW91cyBDU1NQcmltaXRpdmVWYWx1ZTo6Zm9ybWF0TnVtYmVyCisgICAgICAgIGJ1dCBpdCB3b3Jr
cyBkaXJlY3RseSB3aXRoIHRoZSBTdHJpbmdCdWlsZGVyLCBhbmQgaXQgaXMgbXVjaCBmYXN0ZXIu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OmdldFBy
ZWNpc2lvbik6CisgICAgICAgIChXVEY6OlN0cmluZ0J1aWxkZXI6OnNoaWZ0aW5nKToKKyAgICAg
ICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKToKKwogMjAxMS0xMC0xOCAgQmFsYXpzIEtl
bGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUGFyYWxsZWxKb2JzOiBtYXhp
bXVtIG51bWJlciBvZiB0aHJlYWRzIHNob3VsZCBiZSBkZXRlcm1pbmVkIGR5bmFtaWNhbGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1
ZWRhYmVjLi4xYzYzNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmgKQEAgLTI2LDYgKzI2LDggQEAKICNpZm5kZWYgU3RyaW5nQnVpbGRlcl9o
CiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAogCisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUg
PHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC03Niw2ICs3OCwyNjQgQEAgcHVibGljOgogICAgICAgICAgICAg
YXBwZW5kKCZjLCAxKTsKICAgICB9CiAKKyAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGdldFBy
ZWNpc2lvbihpbnQgbV9leHBvbmVudCwgdW5zaWduZWQgbV9wcmVjaXNpb24sIHVuc2lnbmVkIGRp
Z2l0c0JlZm9yZURlY2ltYWxQb2ludCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9
IDA7CisKKyAgICAgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICBsZW5ndGgg
Kz0gLW1fZXhwb25lbnQgLSAxOworICAgICAgICAgICAgbGVuZ3RoICs9IG1fcHJlY2lzaW9uOwor
ICAgICAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3By
ZWNpc2lvbiA8PSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpCisgICAgICAgICAgICByZXR1cm4g
MDsKKworICAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb24gLSBkaWdpdHNCZWZvcmVEZWNpbWFs
UG9pbnQ7CisKKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50
IHNoaWZ0aW5nKGNoYXIqIG51bSwgaW50IHNoaWZ0KQorICAgIHsKKyAgICAgICAgICAgIC8vICNz
aGlmdAorICAgICAgICAgICAgaW50IHAgPSAxOworICAgICAgICAgICAgd2hpbGUgKG51bVtwKzFd
ICE9ICdcMCcgJiYgcCA8PSBzaGlmdCAmJiBudW1bMV0gIT0gJ1wwJykgeworICAgICAgICAgICAg
ICAgICAgICBudW1bIHAgXSA9IG51bVtwKzFdOworICAgICAgICAgICAgICAgICAgICBudW1bcCsx
XSA9ICcuJzsKKyAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAvLyAjZmlsbDAKKyAgICAgICAgICAgIHdoaWxlIChwIDw9IHNoaWZ0KSB7CisgICAg
ICAgICAgICAgICAgICAgIG51bVsgcCBdID0gJzAnOworICAgICAgICAgICAgICAgICAgICBudW1b
cCsxXSA9ICcuJzsKKyAgICAgICAgICAgICAgICAgICAgbnVtW3ArMl0gPSAwOworICAgICAgICAg
ICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNoZWNrJnNl
dAorICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aCA9IHN0cmxlbihudW0pOworICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IGxlbmd0aCAtIDE7IGkgPj0gcCAmJiAobnVtW2ldID09ICcwJyB8fCBu
dW1baV0gPT0gJy4nKTsgLS1pKQorICAgICAgICAgICAgICAgICAgICBudW1baV09MDsKKworICAg
ICAgICAgICAgLy8gc2tpcAorICAgICAgICAgICAgaWYgKG51bVswXSA9PSAnMCcgJiYgbnVtWzFd
ID09ICcwJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisKKyAgICAgICAgICAgIGlm
IChudW1bMF0gPT0gJzAnICYmIG51bVsxXSAhPSAnLicpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAxOworCisgICAgICAgICAgICBpZiAobnVtWzBdICE9ICcwJykKKyAgICAgICAgICAgICAg
ICByZXR1cm4gMDsKKworICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgfQorCisgICAgdm9pZCBh
cHBlbmQoZG91YmxlIGQpCisgICAgIHsKKyAgICAgICAgIGJvb2wgbV9zaWduOworICAgICAgICAg
aW50IG1fZXhwb25lbnQ7CisgICAgICAgICBEdG9hQnVmZmVyIG1fc2lnbmlmaWNhbmQ7CisgICAg
ICAgICB1bnNpZ25lZCBtX3ByZWNpc2lvbjsKKworICAgICAgICAgYm9vbCBpc05lZ2F0aXZlID0g
ZmFsc2U7CisgICAgICAgICBpZiAoZCA8IDApIHsKKyAgICAgICAgICAgICBpc05lZ2F0aXZlID0g
dHJ1ZTsKKyAgICAgICAgICAgICBkID0gLWQ7CisgICAgICAgICAgICAgYXBwZW5kKCItIiwgMSk7
CisgICAgICAgICB9CisKKyAgICAgICAgIEFTU0VSVChpc2Zpbml0ZShkKSk7CisgICAgICAgICBk
dG9hKG1fc2lnbmlmaWNhbmQsIGQsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9wcmVjaXNpb24pOwor
CisgICAgICAgICBBU1NFUlQobV9wcmVjaXNpb24pOworICAgICAgICAgLy8gWmVybyBzaG91bGQg
YWx3YXlzIGhhdmUgZXhwb25lbnQgMC4KKyAgICAgICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBd
ICE9ICcwJyB8fCAhbV9leHBvbmVudCk7CisgICAgICAgICAvLyBObyB2YWx1ZXMgb3RoZXIgdGhh
biB6ZXJvIHNob3VsZCBoYXZlIGEgbGVhZGluZyB6ZXJvLgorICAgICAgICAgQVNTRVJUKG1fc2ln
bmlmaWNhbmRbMF0gIT0gJzAnIHx8IG1fcHJlY2lzaW9uID09IDEpOworICAgICAgICAgLy8gTm8g
dmFsdWVzIG90aGVyIHRoYW4gemVybyBzaG91bGQgaGF2ZSB0cmFpbGluZyB6ZXJvcy4KKyAgICAg
ICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdID09ICcwJyB8fCBtX3NpZ25pZmljYW5kW21fcHJl
Y2lzaW9uIC0gMV0gIT0gJzAnKTsKKworICAgICAgICAgY2hhciB6ZXJvID0gJzAnOworICAgICAg
ICAgY2hhciBkb3QgPSAnLic7CisKKyAgICAgICAgIGludCBhYnNvbHV0ZUV4cCA9IChtX2V4cG9u
ZW50IDwgMCkgPyBtX2V4cG9uZW50ICogLTEgOiBtX2V4cG9uZW50OworICAgICAgICAgaW50IHNp
emVPZnNpZ25pZmljYW5kID0gc3RybGVuKG1fc2lnbmlmaWNhbmQpOworICAgICAgICAgVmVjdG9y
PGNoYXIsIDMyPiBudW1iZXIoYWJzb2x1dGVFeHAgKyBzaXplT2ZzaWduaWZpY2FuZCArIDMpOwor
ICAgICAgICAgY2hhciogcG9pbnRlciA9ICZudW1iZXJbMF07CisgICAgICAgICBpbnQgc2l6ZU9m
TVNpZ25pZmljYW5kID0gc2l6ZW9mKG1fc2lnbmlmaWNhbmQpOworICAgICAgICAgaW50IGRpZ2l0
c0JlZm9yZURlY2ltYWxQb2ludCA9IG1fZXhwb25lbnQgKyAxOworCisgICAgICAgICBpbnQgcHJl
Y2lzaW9uID0gZ2V0UHJlY2lzaW9uKG1fZXhwb25lbnQsIG1fcHJlY2lzaW9uLCBkaWdpdHNCZWZv
cmVEZWNpbWFsUG9pbnQpOworCisgICAgICAgICBib29sIGRvdEFscmVhZHlXcml0dGVuID0gZmFs
c2U7CisgICAgICAgICBpbnQgbWF4TGltaXQgPSAwOworICAgICAgICAgaW50IHBsYWNlT2ZEb3Qg
PSBtX2V4cG9uZW50OworICAgICAgICAgaW50IG51bWJlck9mWmVyb3MgPSAobV9leHBvbmVudCA+
IDApID8gMCA6IC1tX2V4cG9uZW50OworCisgICAgICAgICBib29sIGp1bXAgPSBmYWxzZTsKKyAg
ICAgICAgIGJvb2wgdG9TaGlmID0gZmFsc2U7CisgICAgICAgICBpbnQgZnJvbSA9IDA7CisgICAg
ICAgICBpbnQgdmFsdWVPZlNoaWZ0ID0gMDsKKworICAgICAgICAgaWYgKCFwcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICBpZiAobV9leHBvbmVudCA8IDApIHsKKyAgICAgICAgICAgICAgICBtX3Np
Z25pZmljYW5kWzJdID0gbV9zaWduaWZpY2FuZFsxXTsKKyAgICAgICAgICAgICAgICBtX3NpZ25p
ZmljYW5kWzFdID0gbV9zaWduaWZpY2FuZFswXTsKKyAgICAgICAgICAgICAgICBtX3NpZ25pZmlj
YW5kWzBdID0gJzAnOworICAgICAgICAgICAgICAgIGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCA9
IDE7CisgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgaW50IGkgPSAwOworICAgICAgICAg
ICAgIGZvciAoOyBpIDwgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50ICYmIGkgPCBzaXplT2ZzaWdu
aWZpY2FuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBtX3NpZ25pZmljYW5k
W2ldOworICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICBpZiAobV9zaWduaWZpY2FuZFtpXSA+ICc0JykgeworICAgICAgICAgICAgICAgIHRv
U2hpZiA9IHRydWU7CisgICAgICAgICAgICAgICAganVtcCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgZG90QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIHBsYWNlT2ZEb3Qg
PSAxOworICAgICAgICAgICAgICAgIHByZWNpc2lvbiArPSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9p
bnQ7CisgICAgICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJbMF07CisgICAgICAgICAgICAg
ICAgKnBvaW50ZXIgPSAnMCc7CisgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9IGRvdDsKKyAg
ICAgICAgICAgICAgICBwb2ludGVyICs9IDI7CisgICAgICAgICAgICAgICAgdmFsdWVPZlNoaWZ0
ID0gZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50OworICAgICAgICAgICAgICAgIGlmIChtX3NpZ25p
ZmljYW5kWzBdID09ICcwJykgeworICAgICAgICAgICAgICAgICAgICBtYXhMaW1pdC0tOworICAg
ICAgICAgICAgICAgICAgICB2YWx1ZU9mU2hpZnQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgfQorICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAganVtcCA9IHRydWU7CisK
KyAgICAgICAgIGlmIChqdW1wKSB7CisgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1iZXJPZlplcm9zOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgaWYgKGkgPT0gMSAmJiAhZG90
QWxyZWFkeVdyaXR0ZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gZG90Owor
ICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAgICAgICAgICAgZG90
QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAg
ICAgICAgICAgICBtYXhMaW1pdCA9IChkb3RBbHJlYWR5V3JpdHRlbikgPyBtYXhMaW1pdCArIDEg
OiBtYXhMaW1pdDsKKyAgICAgICAgICAgICAgICAgaWYgKG1heExpbWl0ID09IHByZWNpc2lvbikg
eworICAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mWmVyb3MgPiBwcmVjaXNpb24gKyAx
IHx8IChudW1iZXJPZlplcm9zID09IChwcmVjaXNpb24gKyAxKSAmJiBtX3NpZ25pZmljYW5kWzBd
IDwgJzUnKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAmbnVtYmVyWzFd
OworICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbLTFdID0gJzAnOworICAgICAgICAg
ICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzaGlm
dGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mWmVyb3MgPT0gcHJlY2lzaW9uICsgMSAmJiBtX3Np
Z25pZmljYW5kWzBdID4gJzQnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclst
MV0gPSAnMSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1i
ZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplT2ZzaWduaWZpY2FuZDsgaSsrKSB7CisgICAg
ICAgICAgICAgICAgIGlmIChpID09IHBsYWNlT2ZEb3QgKyAxICYmIHNpemVPZnNpZ25pZmljYW5k
ICE9IGkgJiYgIWRvdEFscmVhZHlXcml0dGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAqcG9p
bnRlciA9IGRvdDsKKyAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAg
ICAgICAgICAgIGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAqcG9pbnRlciA9IG1fc2lnbmlmaWNhbmRbaV07CisgICAgICAgICAg
ICAgICAgIG1heExpbWl0ID0gKGRvdEFscmVhZHlXcml0dGVuKSA/IG1heExpbWl0ICsgMSA6IG1h
eExpbWl0OworICAgICAgICAgICAgICAgICBpZiAobWF4TGltaXQgPT0gcHJlY2lzaW9uKSB7Cisg
ICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBzaXplT2ZNU2lnbmlmaWNhbmQgJiYgbV9z
aWduaWZpY2FuZFtpICsgMV0gPCAnNScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB3aGls
ZSAoKnBvaW50ZXIgPT0gJzAnICYmIGRvdEFscmVhZHlXcml0dGVuKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcG9pbnRlci0tOworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
KnBvaW50ZXIgPT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIg
PSAnXDAnOworICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigm
bnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgaWYgKG1fc2lnbmlmaWNh
bmRbaV0gPT0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgqcG9pbnRl
ciA9PSAnOScgJiYgKnBvaW50ZXIgIT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwb2ludGVyLS07CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpwb2ludGVyID09
IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci0tOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0g
c2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAg
ICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNoaWZ0aW5n
KCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICBhcHBl
bmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHBv
aW50ZXIrKzsKKyAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCAobV9leHBvbmVudCAtIHNpemVPZnNpZ25pZmljYW5kKSArIDE7IGkrKykgeworICAg
ICAgICAgICAgKnBvaW50ZXIgPSB6ZXJvOworICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAg
ICB9CisKKyAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisgICAgICAgIGlmICh0b1NoaWYpCisg
ICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAg
ICAgfQorCisgICAgdm9pZCBhcHBlbmQoaW50IG4pCisgICAgeworICAgICAgICBpZiAobiA8IDAp
IHsKKyAgICAgICAgICAgIGFwcGVuZCgiLSIsIDEpOworICAgICAgICAgICAgbiA9IC1uOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKCEobiAvIDEwKSkgeworICAgICAgICAgICAgY2hhciBjID0g
c3RhdGljX2Nhc3Q8Y2hhcj4obiArICcwJyk7CisgICAgICAgICAgICBhcHBlbmQoJmMsIDEpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IGRpZ2l0c09mTnVt
YmVyID0gc3RhdGljX2Nhc3Q8aW50Pihsb2cxMChuKSArIDEpOworICAgICAgICBWZWN0b3I8Y2hh
ciwgMzI+IG51bWJlcihkaWdpdHNPZk51bWJlciArIDEpOworICAgICAgICBjaGFyKiBwb2ludGVy
ID0gJm51bWJlcltkaWdpdHNPZk51bWJlcl07CisKKyAgICAgICAgKnBvaW50ZXIgPSAnXDAnOwor
ICAgICAgICBwb2ludGVyLS07CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICpwb2ludGVyID0g
KG4gJSAxMCkgKyAnMCc7CisgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICBuIC89
IDEwOworICAgICAgICB9IHdoaWxlIChuKTsKKyAgICAgICAgYXBwZW5kKCZudW1iZXJbMF0sIGRp
Z2l0c09mTnVtYmVyKTsKKyAgICB9CisKICAgICBTdHJpbmcgdG9TdHJpbmcoKQogICAgIHsKICAg
ICAgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGY1ZDdlMS4uYjRj
MzM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEwLTE4ICBPbGl2ZXIgVmFy
Z2EgIDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCisKKyAgICAgICAgUmVwbGFjZSB0
aGUgc3RyaW5nIGNvbmNhdGVuYXRpb24gKCssICs9LCBhbmQgVmVjdG9yPFVjaGFyPiBhcHBlbmQo
KSkKKyAgICAgICAgdG8gdGhlIG11Y2ggZmFzdGVyIFN0cmluZ0J1aWxkZXIgYXBwZW5kKCkuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIHRoaXMgaXMgb25seSBhIG1pbmltYWwgcGVyZm9ybWFuY2UgdHdlYWsuCisKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0
aXZlVmFsdWU6OmNzc1RleHQpOgorCiAyMDExLTEwLTE4ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2Jl
cnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gU3VwcG9ydCBmb3IgY2xpZW50LWJhc2Vk
IGdlb2xvY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRl
eCA0NTY0ZTMxLi5hYzgwNDAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKQEAgLTY4MiwxNyArNjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcg
Zm9ybWF0TnVtYmVyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFs
KG51bWJlcik7Ci0KLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3Ro
Rm9yU3RyaW5nRGVjaW1hbCgpKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3Ry
aW5nRGVjaW1hbChidWZmZXIuY2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFT
U0VSVF9VTlVTRUQobGVuZ3RoLCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwg
dmFsdWUgaW5zdGVhZCBvZiBhIGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCAr
NjkyLDEwMCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAg
ICAgICByZXR1cm4gY3NzVGV4dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmlu
ZyB0ZXh0OworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgICAgICBjYXNlIENTU19VTktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BB
UlNFUl9JTlRFR0VSOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
bV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3Zh
bHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfTU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUu
bnVtKSArICJtbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
ICsgImluIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1BUOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
cHQiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoInB0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UEM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgicmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdz
Jyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAg
ICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJ
Tkc6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJ
OgotICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1
ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFt
ZShtX3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0
eU5hbWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBhdHRyUGFyZW4sICgiYXR0cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChtX3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAg
ICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRl
cigiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRl
eHQgKz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsK
ICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFy
ZW4sICgiY291bnRlcigiKSk7CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2
ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxp
c3RTdHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7
Ci0KLSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmlu
ZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVh
ZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0g
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2Vy
dmVDYXBhY2l0eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgp
LT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZh
bC0+dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZh
bC0+bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0
KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5y
aWdodCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20o
KSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQo
KSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRW
YWwtPnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAn
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQo
KS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVh
ZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6
CkBAIC04OTQsMTQgKzkwMiwxNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7
Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoU3RyaW5nOjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92
YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1
ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAg
ICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+
c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwor
ICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1Rl
eHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCkBAIC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24q
IHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVn
aW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJl
Z2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJl
Z2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwog
ICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
IGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3Rhbmds
ZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9u
LT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1By
aW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsK
LSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAi
ICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0
KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+
Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVm
dCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+
dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5k
KCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAg
ICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRp
Y19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygm
YywgMVUpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1
ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NfUEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJ
Zk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNT
U1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+
Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4
dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRl
eHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlu
cyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1Rl
eHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4
dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0K
IAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111570</attachid>
            <date>2011-10-19 00:40:34 -0700</date>
            <delta_ts>2011-10-19 00:42:38 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>stringBuilder_Append.patch</filename>
            <type>text/plain</type>
            <size>21865</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlOWI0NmUuLjgxNmQ1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTE5ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMTggIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgb3V0IGxhc3QgV2luZG93cyBidWls
ZCBmaXggYmVjYXVzZSBpdCB3YXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1ZWRhYmVjLi4xNjk3ZDQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTI2LDYgKzI2
LDkgQEAKICNpZm5kZWYgU3RyaW5nQnVpbGRlcl9oCiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAog
CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDYgKzc5LDI2NCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBhcHBlbmQoJmMsIDEpOwogICAgIH0KIAorICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZ2V0
UHJlY2lzaW9uKGludCBtX2V4cG9uZW50LCB1bnNpZ25lZCBtX3ByZWNpc2lvbiwgdW5zaWduZWQg
ZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKKworICAgICAgICBpZiAobV9leHBvbmVudCA8IDApIHsKKyAgICAgICAgICAgIGxlbmd0
aCArPSAtbV9leHBvbmVudCAtIDE7CisgICAgICAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb247
CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
cHJlY2lzaW9uIDw9IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIGxlbmd0aCArPSBtX3ByZWNpc2lvbiAtIGRpZ2l0c0JlZm9yZURlY2lt
YWxQb2ludDsKKworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIHN0YXRpYyBp
bnQgc2hpZnRpbmcoY2hhciogbnVtLCBpbnQgc2hpZnQpCisgICAgeworICAgICAgICAgICAgLy8g
I3NoaWZ0CisgICAgICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAobnVtW3Ar
MV0gIT0gJ1wwJyAmJiBwIDw9IHNoaWZ0ICYmIG51bVsxXSAhPSAnXDAnKSB7CisgICAgICAgICAg
ICAgICAgICAgIG51bVsgcCBdID0gbnVtW3ArMV07CisgICAgICAgICAgICAgICAgICAgIG51bVtw
KzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vICNmaWxsMAorICAgICAgICAgICAgd2hpbGUgKHAgPD0gc2hpZnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbnVtWyBwIF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgIG51
bVtwKzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBudW1bcCsyXSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY2hlY2sm
c2V0CisgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gc3RybGVuKG51bSk7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSBwICYmIChudW1baV0gPT0gJzAnIHx8
IG51bVtpXSA9PSAnLicpOyAtLWkpCisgICAgICAgICAgICAgICAgICAgIG51bVtpXT0wOworCisg
ICAgICAgICAgICAvLyBza2lwCisgICAgICAgICAgICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1b
MV0gPT0gJzAnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKworICAgICAgICAgICAg
aWYgKG51bVswXSA9PSAnMCcgJiYgbnVtWzFdICE9ICcuJykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7CisKKyAgICAgICAgICAgIGlmIChudW1bMF0gIT0gJzAnKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZChkb3VibGUgZCkKKyAgICAgeworICAgICAgICAgYm9vbCBtX3NpZ247CisgICAgICAg
ICBpbnQgbV9leHBvbmVudDsKKyAgICAgICAgIER0b2FCdWZmZXIgbV9zaWduaWZpY2FuZDsKKyAg
ICAgICAgIHVuc2lnbmVkIG1fcHJlY2lzaW9uOworCisgICAgICAgICBib29sIGlzTmVnYXRpdmUg
PSBmYWxzZTsKKyAgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgIGlzTmVnYXRpdmUg
PSB0cnVlOworICAgICAgICAgICAgIGQgPSAtZDsKKyAgICAgICAgICAgICBhcHBlbmQoIi0iLCAx
KTsKKyAgICAgICAgIH0KKworICAgICAgICAgQVNTRVJUKGlzZmluaXRlKGQpKTsKKyAgICAgICAg
IGR0b2EobV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50LCBtX3ByZWNpc2lvbik7
CisKKyAgICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAgICAgICAvLyBaZXJvIHNob3Vs
ZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgorICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRb
MF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKKyAgICAgICAgIC8vIE5vIHZhbHVlcyBvdGhlciB0
aGFuIHplcm8gc2hvdWxkIGhhdmUgYSBsZWFkaW5nIHplcm8uCisgICAgICAgICBBU1NFUlQobV9z
aWduaWZpY2FuZFswXSAhPSAnMCcgfHwgbV9wcmVjaXNpb24gPT0gMSk7CisgICAgICAgICAvLyBO
byB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAg
ICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnIHx8IG1fc2lnbmlmaWNhbmRbbV9w
cmVjaXNpb24gLSAxXSAhPSAnMCcpOworCisgICAgICAgICBjaGFyIHplcm8gPSAnMCc7CisgICAg
ICAgICBjaGFyIGRvdCA9ICcuJzsKKworICAgICAgICAgaW50IGFic29sdXRlRXhwID0gKG1fZXhw
b25lbnQgPCAwKSA/IG1fZXhwb25lbnQgKiAtMSA6IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQg
c2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWduaWZpY2FuZCk7CisgICAgICAgICBWZWN0
b3I8Y2hhciwgMzI+IG51bWJlcihhYnNvbHV0ZUV4cCArIHNpemVPZnNpZ25pZmljYW5kICsgMyk7
CisgICAgICAgICBjaGFyKiBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgIGludCBzaXpl
T2ZNU2lnbmlmaWNhbmQgPSBzaXplb2YobV9zaWduaWZpY2FuZCk7CisgICAgICAgICBpbnQgZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50ID0gbV9leHBvbmVudCArIDE7CisKKyAgICAgICAgIGludCBw
cmVjaXNpb24gPSBnZXRQcmVjaXNpb24obV9leHBvbmVudCwgbV9wcmVjaXNpb24sIGRpZ2l0c0Jl
Zm9yZURlY2ltYWxQb2ludCk7CisKKyAgICAgICAgIGJvb2wgZG90QWxyZWFkeVdyaXR0ZW4gPSBm
YWxzZTsKKyAgICAgICAgIGludCBtYXhMaW1pdCA9IDA7CisgICAgICAgICBpbnQgcGxhY2VPZkRv
dCA9IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQgbnVtYmVyT2ZaZXJvcyA9IChtX2V4cG9uZW50
ID4gMCkgPyAwIDogLW1fZXhwb25lbnQ7CisKKyAgICAgICAgIGJvb2wganVtcCA9IGZhbHNlOwor
ICAgICAgICAgYm9vbCB0b1NoaWYgPSBmYWxzZTsKKyAgICAgICAgIGludCBmcm9tID0gMDsKKyAg
ICAgICAgIGludCB2YWx1ZU9mU2hpZnQgPSAwOworCisgICAgICAgICBpZiAoIXByZWNpc2lvbikg
eworICAgICAgICAgICAgIGlmIChtX2V4cG9uZW50IDwgMCkgeworICAgICAgICAgICAgICAgIG1f
c2lnbmlmaWNhbmRbMl0gPSBtX3NpZ25pZmljYW5kWzFdOworICAgICAgICAgICAgICAgIG1fc2ln
bmlmaWNhbmRbMV0gPSBtX3NpZ25pZmljYW5kWzBdOworICAgICAgICAgICAgICAgIG1fc2lnbmlm
aWNhbmRbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50
ID0gMTsKKyAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAg
ICAgICAgZm9yICg7IGkgPCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgJiYgaSA8IHNpemVPZnNp
Z25pZmljYW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAqcG9pbnRlciA9IG1fc2lnbmlmaWNh
bmRbaV07CisgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgIGlmIChtX3NpZ25pZmljYW5kW2ldID4gJzQnKSB7CisgICAgICAgICAgICAgICAg
dG9TaGlmID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcGxhY2VPZkRv
dCA9IDE7CisgICAgICAgICAgICAgICAgcHJlY2lzaW9uICs9IGRpZ2l0c0JlZm9yZURlY2ltYWxQ
b2ludDsKKyAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgICAg
ICAgICAqcG9pbnRlciA9ICcwJzsKKyAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gZG90Owor
ICAgICAgICAgICAgICAgIHBvaW50ZXIgKz0gMjsKKyAgICAgICAgICAgICAgICB2YWx1ZU9mU2hp
ZnQgPSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKG1fc2ln
bmlmaWNhbmRbMF0gPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgICAgIG1heExpbWl0LS07Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsK
KworICAgICAgICAgaWYgKGp1bXApIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bWJlck9mWmVyb3M7IGkrKykgeworICAgICAgICAgICAgICAgICBpZiAoaSA9PSAxICYmICFk
b3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBkb3Q7
CisgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgICAgICAgICBk
b3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgKnBvaW50ZXIgPSB6ZXJvOworICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgICAgICAgICAgIG1heExpbWl0ID0gKGRvdEFscmVhZHlXcml0dGVuKSA/IG1heExpbWl0ICsg
MSA6IG1heExpbWl0OworICAgICAgICAgICAgICAgICBpZiAobWF4TGltaXQgPT0gcHJlY2lzaW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA+IHByZWNpc2lvbiAr
IDEgfHwgKG51bWJlck9mWmVyb3MgPT0gKHByZWNpc2lvbiArIDEpICYmIG1fc2lnbmlmaWNhbmRb
MF0gPCAnNScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJb
MV07CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclstMV0gPSAnMCc7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNo
aWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA9PSBwcmVjaXNpb24gKyAxICYmIG1f
c2lnbmlmaWNhbmRbMF0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVy
Wy0xXSA9ICcxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51
bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVPZnNpZ25pZmljYW5kOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgaWYgKGkgPT0gcGxhY2VPZkRvdCArIDEgJiYgc2l6ZU9mc2lnbmlmaWNh
bmQgIT0gaSAmJiAhZG90QWxyZWFkeVdyaXR0ZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICpw
b2ludGVyID0gZG90OworICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAg
ICAgICAgICAgICAgZG90QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAg
ICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQgKyAxIDog
bWF4TGltaXQ7CisgICAgICAgICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IHNpemVPZk1TaWduaWZpY2FuZCAmJiBt
X3NpZ25pZmljYW5kW2kgKyAxXSA8ICc1JykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICgqcG9pbnRlciA9PSAnMCcgJiYgZG90QWxyZWFkeVdyaXR0ZW4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRl
ciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVu
KCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zaWduaWZp
Y2FuZFtpXSA9PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwb2lu
dGVyID09ICc5JyAmJiAqcG9pbnRlciAhPSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50ZXItLTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBvaW50ZXIg
PT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20g
PSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gc2hpZnRp
bmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
cG9pbnRlcisrOworICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IChtX2V4cG9uZW50IC0gc2l6ZU9mc2lnbmlmaWNhbmQpICsgMTsgaSsrKSB7Cisg
ICAgICAgICAgICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgIH0KKworICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisKKyAgICAgICAgaWYgKHRvU2hpZikK
KyAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOwor
CisgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICB9CisKKyAgICB2b2lkIGFwcGVuZChpbnQgbikKKyAgICB7CisgICAgICAgIGlmIChuIDwg
MCkgeworICAgICAgICAgICAgYXBwZW5kKCItIiwgMSk7CisgICAgICAgICAgICBuID0gLW47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIShuIC8gMTApKSB7CisgICAgICAgICAgICBjaGFyIGMg
PSBzdGF0aWNfY2FzdDxjaGFyPihuICsgJzAnKTsKKyAgICAgICAgICAgIGFwcGVuZCgmYywgMSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQgZGlnaXRzT2ZO
dW1iZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4obikpICsg
MSk7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4gbnVtYmVyKGRpZ2l0c09mTnVtYmVyICsgMSk7
CisgICAgICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyW2RpZ2l0c09mTnVtYmVyXTsKKworICAg
ICAgICAqcG9pbnRlciA9ICdcMCc7CisgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgKnBvaW50ZXIgPSAobiAlIDEwKSArICcwJzsKKyAgICAgICAgICAgIHBvaW50
ZXItLTsKKyAgICAgICAgICAgIG4gLz0gMTA7CisgICAgICAgIH0gd2hpbGUgKG4pOworICAgICAg
ICBhcHBlbmQoJm51bWJlclswXSwgZGlnaXRzT2ZOdW1iZXIpOworICAgIH0KKwogICAgIFN0cmlu
ZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAobV9zdHJpbmcuaXNOdWxsKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAyMTI4MDg5Li43MmM5ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMTAtMTkgIE9saXZlciBWYXJnYSAgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisg
ICAgICAgIEZpeCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIHRvIHVzZSBTdHJpbmdCdWls
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
NTEKKworICAgICAgICBSZXBsYWNlIHRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiAoKywgKz0sIGFu
ZCBWZWN0b3I8VWNoYXI+IGFwcGVuZCgpKQorICAgICAgICB0byB0aGUgbXVjaCBmYXN0ZXIgU3Ry
aW5nQnVpbGRlciBhcHBlbmQoKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgdGhpcyBpcyBvbmx5IGEgbWluaW1hbCBwZXJmb3Jt
YW5jZSB0d2Vhay4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisKIDIwMTEtMTAtMTkg
IFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkZWQgbWlzc2luZyBkdW1teSBwbGF0Zm9ybURlc2NyaXB0aW9uIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0NTY0ZTMxLi5hYzgwNDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTY4MiwxNyAr
NjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZm9ybWF0TnVtYmVyKGRvdWJs
ZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG51bWJlcik7Ci0KLSAgICBT
dHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgp
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIu
Y2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFTU0VSVF9VTlVTRUQobGVuZ3Ro
LCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWUgaW5zdGVhZCBvZiBh
IGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCArNjkyLDEwMCBAQCBTdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gY3NzVGV4
dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmluZyB0ZXh0OworICAgIFN0cmlu
Z0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19V
TktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
cmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NN
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiY20iOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTU06Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtbSI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJp
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInB0Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicGMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImRlZyIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmFkIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImdyYWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJtcyIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1f
dmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdzJyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklYTUUKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJTkc6Ci0gICAgICAgICAgICB0
ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgotICAgICAgICAgICAgdGV4
dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVu
dCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6IHsKICAgICAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhdHRyUGFyZW4sICgiYXR0
cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSBy
ZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX0NP
VU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwotICAgICAgICAgICAg
dGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnKScpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsKICAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFyZW4sICgiY291bnRlcigiKSk7
CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RTdHlsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgICAgIHRl
eHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50
b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmxl
ZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAg
ICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1
YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAg
ICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZh
bC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRW
YWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3Ao
KSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVmdCgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAg
ICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04OTQsMTQgKzkwMiwx
NCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0
ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5n
OjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgp
LT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0
KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAh
PSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsK
LSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBA
IC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBj
b25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hi
b2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2Fy
ZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlm
IChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJj
bGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09
IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxp
ZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwot
ICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5s
ZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRl
eHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJf
T1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFs
dWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJ
RVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hB
UEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5n
KCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3Nz
VGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlz
LCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0
dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMs
IGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111571</attachid>
            <date>2011-10-19 00:42:38 -0700</date>
            <delta_ts>2011-10-21 05:32:05 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>stringBuilder_Append.patch</filename>
            <type>text/plain</type>
            <size>21865</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlOWI0NmUuLjgxNmQ1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTE5ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMTggIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgb3V0IGxhc3QgV2luZG93cyBidWls
ZCBmaXggYmVjYXVzZSBpdCB3YXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1ZWRhYmVjLi45NjZlZTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTI2LDYgKzI2
LDkgQEAKICNpZm5kZWYgU3RyaW5nQnVpbGRlcl9oCiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAog
CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDYgKzc5LDI2NCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBhcHBlbmQoJmMsIDEpOwogICAgIH0KIAorICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZ2V0
UHJlY2lzaW9uKGludCBtX2V4cG9uZW50LCB1bnNpZ25lZCBtX3ByZWNpc2lvbiwgdW5zaWduZWQg
ZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKKworICAgICAgICBpZiAobV9leHBvbmVudCA8IDApIHsKKyAgICAgICAgICAgIGxlbmd0
aCArPSAtbV9leHBvbmVudCAtIDE7CisgICAgICAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb247
CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
cHJlY2lzaW9uIDw9IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIGxlbmd0aCArPSBtX3ByZWNpc2lvbiAtIGRpZ2l0c0JlZm9yZURlY2lt
YWxQb2ludDsKKworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIHN0YXRpYyBp
bnQgc2hpZnRpbmcoY2hhciogbnVtLCBpbnQgc2hpZnQpCisgICAgeworICAgICAgICAgICAgLy8g
I3NoaWZ0CisgICAgICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAobnVtW3Ar
MV0gIT0gJ1wwJyAmJiBwIDw9IHNoaWZ0ICYmIG51bVsxXSAhPSAnXDAnKSB7CisgICAgICAgICAg
ICAgICAgICAgIG51bVsgcCBdID0gbnVtW3ArMV07CisgICAgICAgICAgICAgICAgICAgIG51bVtw
KzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vICNmaWxsMAorICAgICAgICAgICAgd2hpbGUgKHAgPD0gc2hpZnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbnVtWyBwIF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgIG51
bVtwKzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBudW1bcCsyXSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY2hlY2sm
c2V0CisgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gc3RybGVuKG51bSk7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSBwICYmIChudW1baV0gPT0gJzAnIHx8
IG51bVtpXSA9PSAnLicpOyAtLWkpCisgICAgICAgICAgICAgICAgICAgIG51bVtpXT0wOworCisg
ICAgICAgICAgICAvLyBza2lwCisgICAgICAgICAgICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1b
MV0gPT0gJzAnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKworICAgICAgICAgICAg
aWYgKG51bVswXSA9PSAnMCcgJiYgbnVtWzFdICE9ICcuJykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7CisKKyAgICAgICAgICAgIGlmIChudW1bMF0gIT0gJzAnKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZChkb3VibGUgZCkKKyAgICAgeworICAgICAgICAgYm9vbCBtX3NpZ247CisgICAgICAg
ICBpbnQgbV9leHBvbmVudDsKKyAgICAgICAgIER0b2FCdWZmZXIgbV9zaWduaWZpY2FuZDsKKyAg
ICAgICAgIHVuc2lnbmVkIG1fcHJlY2lzaW9uOworCisgICAgICAgICBib29sIGlzTmVnYXRpdmUg
PSBmYWxzZTsKKyAgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgIGlzTmVnYXRpdmUg
PSB0cnVlOworICAgICAgICAgICAgIGQgPSAtZDsKKyAgICAgICAgICAgICBhcHBlbmQoIi0iLCAx
KTsKKyAgICAgICAgIH0KKworICAgICAgICAgQVNTRVJUKGlzZmluaXRlKGQpKTsKKyAgICAgICAg
IGR0b2EobV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50LCBtX3ByZWNpc2lvbik7
CisKKyAgICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAgICAgICAvLyBaZXJvIHNob3Vs
ZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgorICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRb
MF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKKyAgICAgICAgIC8vIE5vIHZhbHVlcyBvdGhlciB0
aGFuIHplcm8gc2hvdWxkIGhhdmUgYSBsZWFkaW5nIHplcm8uCisgICAgICAgICBBU1NFUlQobV9z
aWduaWZpY2FuZFswXSAhPSAnMCcgfHwgbV9wcmVjaXNpb24gPT0gMSk7CisgICAgICAgICAvLyBO
byB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAg
ICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnIHx8IG1fc2lnbmlmaWNhbmRbbV9w
cmVjaXNpb24gLSAxXSAhPSAnMCcpOworCisgICAgICAgICBjaGFyIHplcm8gPSAnMCc7CisgICAg
ICAgICBjaGFyIGRvdCA9ICcuJzsKKworICAgICAgICAgaW50IGFic29sdXRlRXhwID0gKG1fZXhw
b25lbnQgPCAwKSA/IG1fZXhwb25lbnQgKiAtMSA6IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQg
c2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWduaWZpY2FuZCk7CisgICAgICAgICBWZWN0
b3I8Y2hhciwgMzI+IG51bWJlcihhYnNvbHV0ZUV4cCArIHNpemVPZnNpZ25pZmljYW5kICsgMyk7
CisgICAgICAgICBjaGFyKiBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgIGludCBzaXpl
T2ZNU2lnbmlmaWNhbmQgPSBzaXplb2YobV9zaWduaWZpY2FuZCk7CisgICAgICAgICBpbnQgZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50ID0gbV9leHBvbmVudCArIDE7CisKKyAgICAgICAgIGludCBw
cmVjaXNpb24gPSBnZXRQcmVjaXNpb24obV9leHBvbmVudCwgbV9wcmVjaXNpb24sIGRpZ2l0c0Jl
Zm9yZURlY2ltYWxQb2ludCk7CisKKyAgICAgICAgIGJvb2wgZG90QWxyZWFkeVdyaXR0ZW4gPSBm
YWxzZTsKKyAgICAgICAgIGludCBtYXhMaW1pdCA9IDA7CisgICAgICAgICBpbnQgcGxhY2VPZkRv
dCA9IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQgbnVtYmVyT2ZaZXJvcyA9IChtX2V4cG9uZW50
ID4gMCkgPyAwIDogLW1fZXhwb25lbnQ7CisKKyAgICAgICAgIGJvb2wganVtcCA9IGZhbHNlOwor
ICAgICAgICAgYm9vbCB0b1NoaWYgPSBmYWxzZTsKKyAgICAgICAgIGludCBmcm9tID0gMDsKKyAg
ICAgICAgIGludCB2YWx1ZU9mU2hpZnQgPSAwOworCisgICAgICAgICBpZiAoIXByZWNpc2lvbikg
eworICAgICAgICAgICAgIGlmIChtX2V4cG9uZW50IDwgMCkgeworICAgICAgICAgICAgICAgIG1f
c2lnbmlmaWNhbmRbMl0gPSBtX3NpZ25pZmljYW5kWzFdOworICAgICAgICAgICAgICAgIG1fc2ln
bmlmaWNhbmRbMV0gPSBtX3NpZ25pZmljYW5kWzBdOworICAgICAgICAgICAgICAgIG1fc2lnbmlm
aWNhbmRbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50
ID0gMTsKKyAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAg
ICAgICAgZm9yICg7IGkgPCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgJiYgaSA8IHNpemVPZnNp
Z25pZmljYW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAqcG9pbnRlciA9IG1fc2lnbmlmaWNh
bmRbaV07CisgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgIGlmIChtX3NpZ25pZmljYW5kW2ldID4gJzQnKSB7CisgICAgICAgICAgICAgICAg
dG9TaGlmID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcGxhY2VPZkRv
dCA9IDE7CisgICAgICAgICAgICAgICAgcHJlY2lzaW9uICs9IGRpZ2l0c0JlZm9yZURlY2ltYWxQ
b2ludDsKKyAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgICAg
ICAgICAqcG9pbnRlciA9ICcwJzsKKyAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gZG90Owor
ICAgICAgICAgICAgICAgIHBvaW50ZXIgKz0gMjsKKyAgICAgICAgICAgICAgICB2YWx1ZU9mU2hp
ZnQgPSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKG1fc2ln
bmlmaWNhbmRbMF0gPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgICAgIG1heExpbWl0LS07Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsK
KworICAgICAgICAgaWYgKGp1bXApIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bWJlck9mWmVyb3M7IGkrKykgeworICAgICAgICAgICAgICAgICBpZiAoaSA9PSAxICYmICFk
b3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBkb3Q7
CisgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgICAgICAgICBk
b3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgKnBvaW50ZXIgPSB6ZXJvOworICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgICAgICAgICAgIG1heExpbWl0ID0gKGRvdEFscmVhZHlXcml0dGVuKSA/IG1heExpbWl0ICsg
MSA6IG1heExpbWl0OworICAgICAgICAgICAgICAgICBpZiAobWF4TGltaXQgPT0gcHJlY2lzaW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA+IHByZWNpc2lvbiAr
IDEgfHwgKG51bWJlck9mWmVyb3MgPT0gKHByZWNpc2lvbiArIDEpICYmIG1fc2lnbmlmaWNhbmRb
MF0gPCAnNScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJb
MV07CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclstMV0gPSAnMCc7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNo
aWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA9PSBwcmVjaXNpb24gKyAxICYmIG1f
c2lnbmlmaWNhbmRbMF0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVy
Wy0xXSA9ICcxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51
bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVPZnNpZ25pZmljYW5kOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgaWYgKGkgPT0gcGxhY2VPZkRvdCArIDEgJiYgc2l6ZU9mc2lnbmlmaWNh
bmQgIT0gaSAmJiAhZG90QWxyZWFkeVdyaXR0ZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICpw
b2ludGVyID0gZG90OworICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAg
ICAgICAgICAgICAgZG90QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAg
ICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQgKyAxIDog
bWF4TGltaXQ7CisgICAgICAgICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IHNpemVPZk1TaWduaWZpY2FuZCAmJiBt
X3NpZ25pZmljYW5kW2kgKyAxXSA8ICc1JykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICgqcG9pbnRlciA9PSAnMCcgJiYgZG90QWxyZWFkeVdyaXR0ZW4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRl
ciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVu
KCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zaWduaWZp
Y2FuZFtpXSA9PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwb2lu
dGVyID09ICc5JyAmJiAqcG9pbnRlciAhPSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50ZXItLTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBvaW50ZXIg
PT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20g
PSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gc2hpZnRp
bmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
cG9pbnRlcisrOworICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IChtX2V4cG9uZW50IC0gc2l6ZU9mc2lnbmlmaWNhbmQpICsgMTsgaSsrKSB7Cisg
ICAgICAgICAgICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgIH0KKworICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisKKyAgICAgICAgaWYgKHRvU2hpZikK
KyAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOwor
CisgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICB9CisKKyAgICB2b2lkIGFwcGVuZChpbnQgbikKKyAgICB7CisgICAgICAgIGlmIChuIDwg
MCkgeworICAgICAgICAgICAgYXBwZW5kKCItIiwgMSk7CisgICAgICAgICAgICBuID0gLW47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIShuIC8gMTApKSB7CisgICAgICAgICAgICBjaGFyIGMg
PSBzdGF0aWNfY2FzdDxjaGFyPihuICsgJzAnKTsKKyAgICAgICAgICAgIGFwcGVuZCgmYywgMSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQgZGlnaXRzT2ZO
dW1iZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4obikpICsg
MSk7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4gbnVtYmVyKGRpZ2l0c09mTnVtYmVyICsgMSk7
CisgICAgICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyW2RpZ2l0c09mTnVtYmVyXTsKKworICAg
ICAgICAqcG9pbnRlciA9ICdcMCc7CisgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgKnBvaW50ZXIgPSAobiAlIDEwKSArICcwJzsKKyAgICAgICAgICAgIHBvaW50
ZXItLTsKKyAgICAgICAgICAgIG4gLz0gMTA7CisgICAgICAgIH0gd2hpbGUgKG4pOworICAgICAg
ICBhcHBlbmQoJm51bWJlclswXSwgZGlnaXRzT2ZOdW1iZXIpOworICAgIH0KKwogICAgIFN0cmlu
ZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAobV9zdHJpbmcuaXNOdWxsKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAyMTI4MDg5Li43MmM5ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMTAtMTkgIE9saXZlciBWYXJnYSAgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisg
ICAgICAgIEZpeCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIHRvIHVzZSBTdHJpbmdCdWls
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
NTEKKworICAgICAgICBSZXBsYWNlIHRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiAoKywgKz0sIGFu
ZCBWZWN0b3I8VWNoYXI+IGFwcGVuZCgpKQorICAgICAgICB0byB0aGUgbXVjaCBmYXN0ZXIgU3Ry
aW5nQnVpbGRlciBhcHBlbmQoKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgdGhpcyBpcyBvbmx5IGEgbWluaW1hbCBwZXJmb3Jt
YW5jZSB0d2Vhay4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisKIDIwMTEtMTAtMTkg
IFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkZWQgbWlzc2luZyBkdW1teSBwbGF0Zm9ybURlc2NyaXB0aW9uIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0NTY0ZTMxLi5hYzgwNDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTY4MiwxNyAr
NjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZm9ybWF0TnVtYmVyKGRvdWJs
ZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG51bWJlcik7Ci0KLSAgICBT
dHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgp
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIu
Y2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFTU0VSVF9VTlVTRUQobGVuZ3Ro
LCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWUgaW5zdGVhZCBvZiBh
IGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCArNjkyLDEwMCBAQCBTdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gY3NzVGV4
dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmluZyB0ZXh0OworICAgIFN0cmlu
Z0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19V
TktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
cmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NN
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiY20iOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTU06Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtbSI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJp
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInB0Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicGMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImRlZyIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmFkIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImdyYWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJtcyIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1f
dmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdzJyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklYTUUKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJTkc6Ci0gICAgICAgICAgICB0
ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgotICAgICAgICAgICAgdGV4
dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVu
dCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6IHsKICAgICAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhdHRyUGFyZW4sICgiYXR0
cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSBy
ZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX0NP
VU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwotICAgICAgICAgICAg
dGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnKScpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsKICAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFyZW4sICgiY291bnRlcigiKSk7
CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RTdHlsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgICAgIHRl
eHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50
b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmxl
ZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAg
ICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1
YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAg
ICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZh
bC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRW
YWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3Ao
KSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVmdCgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAg
ICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04OTQsMTQgKzkwMiwx
NCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0
ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5n
OjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgp
LT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0
KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAh
PSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsK
LSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBA
IC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBj
b25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hi
b2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2Fy
ZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlm
IChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJj
bGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09
IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxp
ZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwot
ICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5s
ZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRl
eHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJf
T1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFs
dWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJ
RVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hB
UEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5n
KCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3Nz
VGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlz
LCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0
dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMs
IGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111955</attachid>
            <date>2011-10-21 05:32:05 -0700</date>
            <delta_ts>2011-10-21 08:29:29 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>StringBuilder.patch</filename>
            <type>text/plain</type>
            <size>21865</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRlOWI0NmUuLjgxNmQ1NWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTE5ICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMTggIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsZWQgb3V0IGxhc3QgV2luZG93cyBidWls
ZCBmaXggYmVjYXVzZSBpdCB3YXMgd3JvbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1ZWRhYmVjLi45NjZlZTQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTI2LDYgKzI2
LDkgQEAKICNpZm5kZWYgU3RyaW5nQnVpbGRlcl9oCiAjZGVmaW5lIFN0cmluZ0J1aWxkZXJfaAog
CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVk
ZSA8d3RmL2R0b2EuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTc2LDYgKzc5LDI2NCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBhcHBlbmQoJmMsIDEpOwogICAgIH0KIAorICAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgZ2V0
UHJlY2lzaW9uKGludCBtX2V4cG9uZW50LCB1bnNpZ25lZCBtX3ByZWNpc2lvbiwgdW5zaWduZWQg
ZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gMDsKKworICAgICAgICBpZiAobV9leHBvbmVudCA8IDApIHsKKyAgICAgICAgICAgIGxlbmd0
aCArPSAtbV9leHBvbmVudCAtIDE7CisgICAgICAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb247
CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1f
cHJlY2lzaW9uIDw9IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCkKKyAgICAgICAgICAgIHJldHVy
biAwOworCisgICAgICAgIGxlbmd0aCArPSBtX3ByZWNpc2lvbiAtIGRpZ2l0c0JlZm9yZURlY2lt
YWxQb2ludDsKKworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIHN0YXRpYyBp
bnQgc2hpZnRpbmcoY2hhciogbnVtLCBpbnQgc2hpZnQpCisgICAgeworICAgICAgICAgICAgLy8g
I3NoaWZ0CisgICAgICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAobnVtW3Ar
MV0gIT0gJ1wwJyAmJiBwIDw9IHNoaWZ0ICYmIG51bVsxXSAhPSAnXDAnKSB7CisgICAgICAgICAg
ICAgICAgICAgIG51bVsgcCBdID0gbnVtW3ArMV07CisgICAgICAgICAgICAgICAgICAgIG51bVtw
KzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vICNmaWxsMAorICAgICAgICAgICAgd2hpbGUgKHAgPD0gc2hpZnQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbnVtWyBwIF0gPSAnMCc7CisgICAgICAgICAgICAgICAgICAgIG51
bVtwKzFdID0gJy4nOworICAgICAgICAgICAgICAgICAgICBudW1bcCsyXSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY2hlY2sm
c2V0CisgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoID0gc3RybGVuKG51bSk7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSBwICYmIChudW1baV0gPT0gJzAnIHx8
IG51bVtpXSA9PSAnLicpOyAtLWkpCisgICAgICAgICAgICAgICAgICAgIG51bVtpXT0wOworCisg
ICAgICAgICAgICAvLyBza2lwCisgICAgICAgICAgICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1b
MV0gPT0gJzAnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKworICAgICAgICAgICAg
aWYgKG51bVswXSA9PSAnMCcgJiYgbnVtWzFdICE9ICcuJykKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIDE7CisKKyAgICAgICAgICAgIGlmIChudW1bMF0gIT0gJzAnKQorICAgICAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICB9CisKKyAgICB2b2lk
IGFwcGVuZChkb3VibGUgZCkKKyAgICAgeworICAgICAgICAgYm9vbCBtX3NpZ247CisgICAgICAg
ICBpbnQgbV9leHBvbmVudDsKKyAgICAgICAgIER0b2FCdWZmZXIgbV9zaWduaWZpY2FuZDsKKyAg
ICAgICAgIHVuc2lnbmVkIG1fcHJlY2lzaW9uOworCisgICAgICAgICBib29sIGlzTmVnYXRpdmUg
PSBmYWxzZTsKKyAgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgIGlzTmVnYXRpdmUg
PSB0cnVlOworICAgICAgICAgICAgIGQgPSAtZDsKKyAgICAgICAgICAgICBhcHBlbmQoIi0iLCAx
KTsKKyAgICAgICAgIH0KKworICAgICAgICAgQVNTRVJUKGlzZmluaXRlKGQpKTsKKyAgICAgICAg
IGR0b2EobV9zaWduaWZpY2FuZCwgZCwgbV9zaWduLCBtX2V4cG9uZW50LCBtX3ByZWNpc2lvbik7
CisKKyAgICAgICAgIEFTU0VSVChtX3ByZWNpc2lvbik7CisgICAgICAgICAvLyBaZXJvIHNob3Vs
ZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgorICAgICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRb
MF0gIT0gJzAnIHx8ICFtX2V4cG9uZW50KTsKKyAgICAgICAgIC8vIE5vIHZhbHVlcyBvdGhlciB0
aGFuIHplcm8gc2hvdWxkIGhhdmUgYSBsZWFkaW5nIHplcm8uCisgICAgICAgICBBU1NFUlQobV9z
aWduaWZpY2FuZFswXSAhPSAnMCcgfHwgbV9wcmVjaXNpb24gPT0gMSk7CisgICAgICAgICAvLyBO
byB2YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAg
ICAgICAgQVNTRVJUKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnIHx8IG1fc2lnbmlmaWNhbmRbbV9w
cmVjaXNpb24gLSAxXSAhPSAnMCcpOworCisgICAgICAgICBjaGFyIHplcm8gPSAnMCc7CisgICAg
ICAgICBjaGFyIGRvdCA9ICcuJzsKKworICAgICAgICAgaW50IGFic29sdXRlRXhwID0gKG1fZXhw
b25lbnQgPCAwKSA/IG1fZXhwb25lbnQgKiAtMSA6IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQg
c2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWduaWZpY2FuZCk7CisgICAgICAgICBWZWN0
b3I8Y2hhciwgMzI+IG51bWJlcihhYnNvbHV0ZUV4cCArIHNpemVPZnNpZ25pZmljYW5kICsgMyk7
CisgICAgICAgICBjaGFyKiBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgIGludCBzaXpl
T2ZNU2lnbmlmaWNhbmQgPSBzaXplb2YobV9zaWduaWZpY2FuZCk7CisgICAgICAgICBpbnQgZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50ID0gbV9leHBvbmVudCArIDE7CisKKyAgICAgICAgIGludCBw
cmVjaXNpb24gPSBnZXRQcmVjaXNpb24obV9leHBvbmVudCwgbV9wcmVjaXNpb24sIGRpZ2l0c0Jl
Zm9yZURlY2ltYWxQb2ludCk7CisKKyAgICAgICAgIGJvb2wgZG90QWxyZWFkeVdyaXR0ZW4gPSBm
YWxzZTsKKyAgICAgICAgIGludCBtYXhMaW1pdCA9IDA7CisgICAgICAgICBpbnQgcGxhY2VPZkRv
dCA9IG1fZXhwb25lbnQ7CisgICAgICAgICBpbnQgbnVtYmVyT2ZaZXJvcyA9IChtX2V4cG9uZW50
ID4gMCkgPyAwIDogLW1fZXhwb25lbnQ7CisKKyAgICAgICAgIGJvb2wganVtcCA9IGZhbHNlOwor
ICAgICAgICAgYm9vbCB0b1NoaWYgPSBmYWxzZTsKKyAgICAgICAgIGludCBmcm9tID0gMDsKKyAg
ICAgICAgIGludCB2YWx1ZU9mU2hpZnQgPSAwOworCisgICAgICAgICBpZiAoIXByZWNpc2lvbikg
eworICAgICAgICAgICAgIGlmIChtX2V4cG9uZW50IDwgMCkgeworICAgICAgICAgICAgICAgIG1f
c2lnbmlmaWNhbmRbMl0gPSBtX3NpZ25pZmljYW5kWzFdOworICAgICAgICAgICAgICAgIG1fc2ln
bmlmaWNhbmRbMV0gPSBtX3NpZ25pZmljYW5kWzBdOworICAgICAgICAgICAgICAgIG1fc2lnbmlm
aWNhbmRbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50
ID0gMTsKKyAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICBpbnQgaSA9IDA7CisgICAgICAg
ICAgICAgZm9yICg7IGkgPCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgJiYgaSA8IHNpemVPZnNp
Z25pZmljYW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAqcG9pbnRlciA9IG1fc2lnbmlmaWNh
bmRbaV07CisgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgIGlmIChtX3NpZ25pZmljYW5kW2ldID4gJzQnKSB7CisgICAgICAgICAgICAgICAg
dG9TaGlmID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgcGxhY2VPZkRv
dCA9IDE7CisgICAgICAgICAgICAgICAgcHJlY2lzaW9uICs9IGRpZ2l0c0JlZm9yZURlY2ltYWxQ
b2ludDsKKyAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICAgICAgICAg
ICAgICAqcG9pbnRlciA9ICcwJzsKKyAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gZG90Owor
ICAgICAgICAgICAgICAgIHBvaW50ZXIgKz0gMjsKKyAgICAgICAgICAgICAgICB2YWx1ZU9mU2hp
ZnQgPSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisgICAgICAgICAgICAgICAgaWYgKG1fc2ln
bmlmaWNhbmRbMF0gPT0gJzAnKSB7CisgICAgICAgICAgICAgICAgICAgIG1heExpbWl0LS07Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCsrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICBqdW1wID0gdHJ1ZTsK
KworICAgICAgICAgaWYgKGp1bXApIHsKKyAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bWJlck9mWmVyb3M7IGkrKykgeworICAgICAgICAgICAgICAgICBpZiAoaSA9PSAxICYmICFk
b3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBkb3Q7
CisgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgICAgICAgICBk
b3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgKnBvaW50ZXIgPSB6ZXJvOworICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgICAgICAgICAgIG1heExpbWl0ID0gKGRvdEFscmVhZHlXcml0dGVuKSA/IG1heExpbWl0ICsg
MSA6IG1heExpbWl0OworICAgICAgICAgICAgICAgICBpZiAobWF4TGltaXQgPT0gcHJlY2lzaW9u
KSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA+IHByZWNpc2lvbiAr
IDEgfHwgKG51bWJlck9mWmVyb3MgPT0gKHByZWNpc2lvbiArIDEpICYmIG1fc2lnbmlmaWNhbmRb
MF0gPCAnNScpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJb
MV07CisgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclstMV0gPSAnMCc7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNo
aWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA9PSBwcmVjaXNpb24gKyAxICYmIG1f
c2lnbmlmaWNhbmRbMF0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVy
Wy0xXSA9ICcxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51
bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVPZnNpZ25pZmljYW5kOyBpKyspIHsKKyAg
ICAgICAgICAgICAgICAgaWYgKGkgPT0gcGxhY2VPZkRvdCArIDEgJiYgc2l6ZU9mc2lnbmlmaWNh
bmQgIT0gaSAmJiAhZG90QWxyZWFkeVdyaXR0ZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICpw
b2ludGVyID0gZG90OworICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAg
ICAgICAgICAgICAgZG90QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAg
ICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQgKyAxIDog
bWF4TGltaXQ7CisgICAgICAgICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgIGlmIChpICsgMSA8IHNpemVPZk1TaWduaWZpY2FuZCAmJiBt
X3NpZ25pZmljYW5kW2kgKyAxXSA8ICc1JykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHdo
aWxlICgqcG9pbnRlciA9PSAnMCcgJiYgZG90QWxyZWFkeVdyaXR0ZW4pCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRl
ciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOwor
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVu
KCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICBpZiAobV9zaWduaWZp
Y2FuZFtpXSA9PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpwb2lu
dGVyID09ICc5JyAmJiAqcG9pbnRlciAhPSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBvaW50ZXItLTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKnBvaW50ZXIg
PT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20g
PSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAg
ICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gc2hpZnRp
bmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICAgIGFw
cGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
cG9pbnRlcisrOworICAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IChtX2V4cG9uZW50IC0gc2l6ZU9mc2lnbmlmaWNhbmQpICsgMTsgaSsrKSB7Cisg
ICAgICAgICAgICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgIH0KKworICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisKKyAgICAgICAgaWYgKHRvU2hpZikK
KyAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOwor
CisgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOwor
ICAgICB9CisKKyAgICB2b2lkIGFwcGVuZChpbnQgbikKKyAgICB7CisgICAgICAgIGlmIChuIDwg
MCkgeworICAgICAgICAgICAgYXBwZW5kKCItIiwgMSk7CisgICAgICAgICAgICBuID0gLW47Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoIShuIC8gMTApKSB7CisgICAgICAgICAgICBjaGFyIGMg
PSBzdGF0aWNfY2FzdDxjaGFyPihuICsgJzAnKTsKKyAgICAgICAgICAgIGFwcGVuZCgmYywgMSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQgZGlnaXRzT2ZO
dW1iZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4obikpICsg
MSk7CisgICAgICAgIFZlY3RvcjxjaGFyLCAzMj4gbnVtYmVyKGRpZ2l0c09mTnVtYmVyICsgMSk7
CisgICAgICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyW2RpZ2l0c09mTnVtYmVyXTsKKworICAg
ICAgICAqcG9pbnRlciA9ICdcMCc7CisgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgZG8gewor
ICAgICAgICAgICAgKnBvaW50ZXIgPSAobiAlIDEwKSArICcwJzsKKyAgICAgICAgICAgIHBvaW50
ZXItLTsKKyAgICAgICAgICAgIG4gLz0gMTA7CisgICAgICAgIH0gd2hpbGUgKG4pOworICAgICAg
ICBhcHBlbmQoJm51bWJlclswXSwgZGlnaXRzT2ZOdW1iZXIpOworICAgIH0KKwogICAgIFN0cmlu
ZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAobV9zdHJpbmcuaXNOdWxsKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAyMTI4MDg5Li43MmM5ZDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTEtMTAtMTkgIE9saXZlciBWYXJnYSAgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisg
ICAgICAgIEZpeCBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIHRvIHVzZSBTdHJpbmdCdWls
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4
NTEKKworICAgICAgICBSZXBsYWNlIHRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiAoKywgKz0sIGFu
ZCBWZWN0b3I8VWNoYXI+IGFwcGVuZCgpKQorICAgICAgICB0byB0aGUgbXVjaCBmYXN0ZXIgU3Ry
aW5nQnVpbGRlciBhcHBlbmQoKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBObyBuZXcgdGVzdHMgdGhpcyBpcyBvbmx5IGEgbWluaW1hbCBwZXJmb3Jt
YW5jZSB0d2Vhay4KKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisKIDIwMTEtMTAtMTkg
IFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VG
TF0gQWRkZWQgbWlzc2luZyBkdW1teSBwbGF0Zm9ybURlc2NyaXB0aW9uIGZ1bmN0aW9uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA0NTY0ZTMxLi5hYzgwNDAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTY4MiwxNyAr
NjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZm9ybWF0TnVtYmVyKGRvdWJs
ZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG51bWJlcik7Ci0KLSAgICBT
dHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9yU3RyaW5nRGVjaW1hbCgp
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5nRGVjaW1hbChidWZmZXIu
Y2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFTU0VSVF9VTlVTRUQobGVuZ3Ro
LCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwgdmFsdWUgaW5zdGVhZCBvZiBh
IGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCArNjkyLDEwMCBAQCBTdHJpbmcg
Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gY3NzVGV4
dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmluZyB0ZXh0OworICAgIFN0cmlu
Z0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgICAgICBjYXNlIENTU19V
TktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNFUl9JTlRFR0VSOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1
ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSAr
ICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
cmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENT
U19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInB4
IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NN
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiY20iOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTU06Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtbSI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JTjoKLSAgICAg
ICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImluIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJp
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BUOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQiOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInB0Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicGMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImRlZyIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmFkIik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImdyYWQiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJtcyIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9y
bWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1f
dmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdzJyk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAgICAgLy8gRklYTUUKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJTkc6Ci0gICAgICAgICAgICB0
ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgotICAgICAgICAgICAgdGV4
dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpICsgIikiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5hbWUobV92YWx1ZS5pZGVu
dCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0FUVFI6IHsKICAgICAg
ICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBhdHRyUGFyZW4sICgiYXR0
cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNz
c1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7
CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSBy
ZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmlu
ZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX0NP
VU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigiOwotICAgICAgICAgICAg
dGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnKScpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsKICAgICAgICAgICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFyZW4sICgiY291bnRlcigiKSk7
CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkg
Y29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RTdHlsZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0KLSAgICAgICAgICAgIHRl
eHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50
b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHJlY3RWYWwtPmxl
ZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKIAotICAg
ICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCogcXVhZFZhbCA9IGdldFF1
YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1bHQ7Ci0gICAgICAgICAg
ICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAgICAgICAgICBhcHBlbmQo
cmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVDYXBhY2l0eSgzMik7Cisg
ICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOwogICAg
ICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZh
bC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+bGVmdCgpICE9IHF1YWRW
YWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdodCgpLT5jc3NUZXh0KCkp
OwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAhPSBxdWFkVmFsLT50b3Ao
KSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkgewogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZChy
ZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwtPnJpZ2h0KCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+bGVmdCgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAg
ICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04OTQsMTQgKzkwMiwx
NCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0
ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5n
OjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgp
LT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0
KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAh
PSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsK
LSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQo
KTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBA
IC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBj
b25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERhc2hi
b2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0KCkp
IHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hib2Fy
ZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsKKyAg
ICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAgIGlm
IChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBjaXJj
bGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV90eXBlID09
IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxp
ZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJlZ2lvbi0+bGVmdCgpLT5n
ZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkgKyAiICI7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpICsgIiAiOwot
ICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9wKCktPmNzc1RleHQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBl
bmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5s
ZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRl
eHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBjYXNlIENTU19QQVJTRVJf
T1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG1fdmFs
dWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywgMVUpOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5pZGVudCkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJ
RVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU0hB
UEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQgPSB0ZXh0LnRvU3RyaW5n
KCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0aGlzKSk7Ci0gICAgY3Nz
VGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlz
LCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9IHRydWU7Ci0gICAgcmV0
dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAogdm9pZCBDU1NQcmltaXRp
dmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMs
IGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111969</attachid>
            <date>2011-10-21 08:29:29 -0700</date>
            <delta_ts>2011-10-23 14:19:55 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>StringBuilder.patch</filename>
            <type>text/plain</type>
            <size>21770</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNDVkNDAuLjg0Yzg4NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTIxICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMjEgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBRdFNjcmlwdCBzb3Vy
Y2UgY29kZSBmcm9tIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oCmluZGV4IDVlZGFiZWMuLjdlNzY3Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaApAQCAtMjYsNiArMjYsOSBAQAog
I2lmbmRlZiBTdHJpbmdCdWlsZGVyX2gKICNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCiAKKyNpbmNs
dWRlIDxtYXRoLmg+CisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYv
ZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNzYsNiArNzksMjY0IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGFwcGVu
ZCgmYywgMSk7CiAgICAgfQogCisgICAgc3RhdGljIHVuc2lnbmVkIGdldFByZWNpc2lvbihpbnQg
bV9leHBvbmVudCwgdW5zaWduZWQgbV9wcmVjaXNpb24sIHVuc2lnbmVkIGRpZ2l0c0JlZm9yZURl
Y2ltYWxQb2ludCkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7CisKKyAgICAg
ICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICBsZW5ndGggKz0gLW1fZXhwb25l
bnQgLSAxOworICAgICAgICAgICAgbGVuZ3RoICs9IG1fcHJlY2lzaW9uOworICAgICAgICAgICAg
cmV0dXJuIGxlbmd0aDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtX3ByZWNpc2lvbiA8PSBk
aWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAg
ICBsZW5ndGggKz0gbV9wcmVjaXNpb24gLSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisKKyAg
ICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisKKyAgICBzdGF0aWMgaW50IHNoaWZ0aW5nKGNo
YXIqIG51bSwgaW50IHNoaWZ0KQorICAgIHsKKyAgICAgICAgLy8gI3NoaWZ0CisgICAgICAgIGlu
dCBwID0gMTsKKyAgICAgICAgd2hpbGUgKG51bVtwKzFdICE9ICdcMCcgJiYgcCA8PSBzaGlmdCAm
JiBudW1bMV0gIT0gJ1wwJykgeworICAgICAgICAgICAgICAgIG51bVsgcCBdID0gbnVtW3ArMV07
CisgICAgICAgICAgICAgICAgbnVtW3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgcCsrOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gI2ZpbGwwCisgICAgICAgIHdoaWxlIChwIDw9IHNoaWZ0
KSB7CisgICAgICAgICAgICAgICAgbnVtWyBwIF0gPSAnMCc7CisgICAgICAgICAgICAgICAgbnVt
W3ArMV0gPSAnLic7CisgICAgICAgICAgICAgICAgbnVtW3ArMl0gPSAwOworICAgICAgICAgICAg
ICAgIHArKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNoZWNrJnNldAorICAgICAgICBjb25z
dCBpbnQgbGVuZ3RoID0gc3RybGVuKG51bSk7CisgICAgICAgIGZvciAoaW50IGkgPSBsZW5ndGgg
LSAxOyBpID49IHAgJiYgKG51bVtpXSA9PSAnMCcgfHwgbnVtW2ldID09ICcuJyk7IC0taSkKKyAg
ICAgICAgICAgICAgICBudW1baV09MDsKKworICAgICAgICAvLyBza2lwCisgICAgICAgIGlmIChu
dW1bMF0gPT0gJzAnICYmIG51bVsxXSA9PSAnMCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIDI7
CisKKyAgICAgICAgaWYgKG51bVswXSA9PSAnMCcgJiYgbnVtWzFdICE9ICcuJykKKyAgICAgICAg
ICAgICAgICByZXR1cm4gMTsKKworICAgICAgICBpZiAobnVtWzBdICE9ICcwJykKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIHJldHVybiAyOworICAgIH0KKworICAgIHZvaWQgYXBw
ZW5kKGRvdWJsZSBkKQorICAgICB7CisgICAgICAgICBib29sIG1fc2lnbjsKKyAgICAgICAgIGlu
dCBtX2V4cG9uZW50OworICAgICAgICAgRHRvYUJ1ZmZlciBtX3NpZ25pZmljYW5kOworICAgICAg
ICAgdW5zaWduZWQgbV9wcmVjaXNpb247CisKKyAgICAgICAgIGJvb2wgaXNOZWdhdGl2ZSA9IGZh
bHNlOworICAgICAgICAgaWYgKGQgPCAwKSB7CisgICAgICAgICAgICAgaXNOZWdhdGl2ZSA9IHRy
dWU7CisgICAgICAgICAgICAgZCA9IC1kOworICAgICAgICAgICAgIGFwcGVuZCgiLSIsIDEpOwor
ICAgICAgICAgfQorCisgICAgICAgICBBU1NFUlQoaXNmaW5pdGUoZCkpOworICAgICAgICAgZHRv
YShtX3NpZ25pZmljYW5kLCBkLCBtX3NpZ24sIG1fZXhwb25lbnQsIG1fcHJlY2lzaW9uKTsKKwor
ICAgICAgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsKKyAgICAgICAgIC8vIFplcm8gc2hvdWxkIGFs
d2F5cyBoYXZlIGV4cG9uZW50IDAuCisgICAgICAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAh
PSAnMCcgfHwgIW1fZXhwb25lbnQpOworICAgICAgICAgLy8gTm8gdmFsdWVzIG90aGVyIHRoYW4g
emVybyBzaG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICAgICAgIEFTU0VSVChtX3NpZ25p
ZmljYW5kWzBdICE9ICcwJyB8fCBtX3ByZWNpc2lvbiA9PSAxKTsKKyAgICAgICAgIC8vIE5vIHZh
bHVlcyBvdGhlciB0aGFuIHplcm8gc2hvdWxkIGhhdmUgdHJhaWxpbmcgemVyb3MuCisgICAgICAg
ICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSA9PSAnMCcgfHwgbV9zaWduaWZpY2FuZFttX3ByZWNp
c2lvbiAtIDFdICE9ICcwJyk7CisKKyAgICAgICAgIGNoYXIgemVybyA9ICcwJzsKKyAgICAgICAg
IGNoYXIgZG90ID0gJy4nOworCisgICAgICAgICBpbnQgYWJzb2x1dGVFeHAgPSAobV9leHBvbmVu
dCA8IDApID8gbV9leHBvbmVudCAqIC0xIDogbV9leHBvbmVudDsKKyAgICAgICAgIGludCBzaXpl
T2ZzaWduaWZpY2FuZCA9IHN0cmxlbihtX3NpZ25pZmljYW5kKTsKKyAgICAgICAgIFZlY3Rvcjxj
aGFyLCAzMj4gbnVtYmVyKGFic29sdXRlRXhwICsgc2l6ZU9mc2lnbmlmaWNhbmQgKyAzKTsKKyAg
ICAgICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAgaW50IHNpemVPZk1T
aWduaWZpY2FuZCA9IHNpemVvZihtX3NpZ25pZmljYW5kKTsKKyAgICAgICAgIGludCBkaWdpdHNC
ZWZvcmVEZWNpbWFsUG9pbnQgPSBtX2V4cG9uZW50ICsgMTsKKworICAgICAgICAgaW50IHByZWNp
c2lvbiA9IGdldFByZWNpc2lvbihtX2V4cG9uZW50LCBtX3ByZWNpc2lvbiwgZGlnaXRzQmVmb3Jl
RGVjaW1hbFBvaW50KTsKKworICAgICAgICAgYm9vbCBkb3RBbHJlYWR5V3JpdHRlbiA9IGZhbHNl
OworICAgICAgICAgaW50IG1heExpbWl0ID0gMDsKKyAgICAgICAgIGludCBwbGFjZU9mRG90ID0g
bV9leHBvbmVudDsKKyAgICAgICAgIGludCBudW1iZXJPZlplcm9zID0gKG1fZXhwb25lbnQgPiAw
KSA/IDAgOiAtbV9leHBvbmVudDsKKworICAgICAgICAgYm9vbCBqdW1wID0gZmFsc2U7CisgICAg
ICAgICBib29sIHRvU2hpZiA9IGZhbHNlOworICAgICAgICAgaW50IGZyb20gPSAwOworICAgICAg
ICAgaW50IHZhbHVlT2ZTaGlmdCA9IDA7CisKKyAgICAgICAgIGlmICghcHJlY2lzaW9uKSB7Cisg
ICAgICAgICAgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgbV9zaWdu
aWZpY2FuZFsyXSA9IG1fc2lnbmlmaWNhbmRbMV07CisgICAgICAgICAgICAgICAgbV9zaWduaWZp
Y2FuZFsxXSA9IG1fc2lnbmlmaWNhbmRbMF07CisgICAgICAgICAgICAgICAgbV9zaWduaWZpY2Fu
ZFswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQgPSAx
OworICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAg
ICBmb3IgKDsgaSA8IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCAmJiBpIDwgc2l6ZU9mc2lnbmlm
aWNhbmQ7ICsraSkgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtp
XTsKKyAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgaWYgKG1fc2lnbmlmaWNhbmRbaV0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICB0b1No
aWYgPSB0cnVlOworICAgICAgICAgICAgICAgIGp1bXAgPSB0cnVlOworICAgICAgICAgICAgICAg
IGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwbGFjZU9mRG90ID0g
MTsKKyAgICAgICAgICAgICAgICBwcmVjaXNpb24gKz0gZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50
OworICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAgICAgICAg
ICpwb2ludGVyID0gJzAnOworICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSBkb3Q7CisgICAg
ICAgICAgICAgICAgcG9pbnRlciArPSAyOworICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCA9
IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludDsKKyAgICAgICAgICAgICAgICBpZiAobV9zaWduaWZp
Y2FuZFswXSA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4TGltaXQtLTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWVPZlNoaWZ0Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgIH0KKyAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgIGp1bXAgPSB0cnVlOworCisg
ICAgICAgICBpZiAoanVtcCkgeworICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
YmVyT2ZaZXJvczsgaSsrKSB7CisgICAgICAgICAgICAgICAgIGlmIChpID09IDEgJiYgIWRvdEFs
cmVhZHlXcml0dGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9IGRvdDsKKyAg
ICAgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICAgICAgIGRvdEFs
cmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAg
ICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0ZW4pID8gbWF4TGltaXQgKyAxIDog
bWF4TGltaXQ7CisgICAgICAgICAgICAgICAgIGlmIChtYXhMaW1pdCA9PSBwcmVjaXNpb24pIHsK
KyAgICAgICAgICAgICAgICAgICAgIGlmIChudW1iZXJPZlplcm9zID4gcHJlY2lzaW9uICsgMSB8
fCAobnVtYmVyT2ZaZXJvcyA9PSAocHJlY2lzaW9uICsgMSkgJiYgbV9zaWduaWZpY2FuZFswXSA8
ICc1JykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyID0gJm51bWJlclsxXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyWy0xXSA9ICcwJzsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAqcG9pbnRlciA9ICdcMCc7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gc2hpZnRp
bmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgIGlmIChudW1iZXJPZlplcm9zID09IHByZWNpc2lvbiArIDEgJiYgbV9zaWdu
aWZpY2FuZFswXSA+ICc0JykgeworICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbLTFd
ID0gJzEnOworICAgICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVy
W2Zyb21dKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZU9mc2lnbmlmaWNhbmQ7IGkrKykgeworICAgICAg
ICAgICAgICAgICBpZiAoaSA9PSBwbGFjZU9mRG90ICsgMSAmJiBzaXplT2ZzaWduaWZpY2FuZCAh
PSBpICYmICFkb3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICAgICAgKnBvaW50
ZXIgPSBkb3Q7CisgICAgICAgICAgICAgICAgICAgICBwb2ludGVyKys7CisgICAgICAgICAgICAg
ICAgICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgKnBvaW50ZXIgPSBtX3NpZ25pZmljYW5kW2ldOworICAgICAgICAgICAg
ICAgICBtYXhMaW1pdCA9IChkb3RBbHJlYWR5V3JpdHRlbikgPyBtYXhMaW1pdCArIDEgOiBtYXhM
aW1pdDsKKyAgICAgICAgICAgICAgICAgaWYgKG1heExpbWl0ID09IHByZWNpc2lvbikgeworICAg
ICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgc2l6ZU9mTVNpZ25pZmljYW5kICYmIG1fc2ln
bmlmaWNhbmRbaSArIDFdIDwgJzUnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KCpwb2ludGVyID09ICcwJyAmJiBkb3RBbHJlYWR5V3JpdHRlbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCpw
b2ludGVyID09IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0g
J1wwJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCgmbnVtYmVyW2Zyb21dLCBzdHJsZW4oJm51
bWJlcltmcm9tXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGlmIChtX3NpZ25pZmljYW5k
W2ldID09ICc5JykgeworICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKnBvaW50ZXIg
PT0gJzknICYmICpwb2ludGVyICE9IGRvdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cG9pbnRlci0tOworCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqcG9pbnRlciA9PSBk
b3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAqcG9pbnRlciArIDE7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHNo
aWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAgICAgICAg
ICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICAg
IGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygm
bnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgICAgYXBwZW5k
KCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBwb2lu
dGVyKys7CisgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgKG1fZXhwb25lbnQgLSBzaXplT2ZzaWduaWZpY2FuZCkgKyAxOyBpKyspIHsKKyAgICAg
ICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAg
fQorCisgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICBpZiAodG9TaGlmKQorICAg
ICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAg
ICAgICAgYXBwZW5kKCZudW1iZXJbZnJvbV0sIHN0cmxlbigmbnVtYmVyW2Zyb21dKSk7CisgICAg
IH0KKworICAgIHZvaWQgYXBwZW5kKGludCBuKQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAwKSB7
CisgICAgICAgICAgICBhcHBlbmQoIi0iLCAxKTsKKyAgICAgICAgICAgIG4gPSAtbjsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmICghKG4gLyAxMCkpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHN0
YXRpY19jYXN0PGNoYXI+KG4gKyAnMCcpOworICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBkaWdpdHNPZk51bWJl
ciA9IHN0YXRpY19jYXN0PGludD4obG9nMTAoc3RhdGljX2Nhc3Q8ZG91YmxlPihuKSkgKyAxKTsK
KyAgICAgICAgVmVjdG9yPGNoYXIsIDMyPiBudW1iZXIoZGlnaXRzT2ZOdW1iZXIgKyAxKTsKKyAg
ICAgICAgY2hhciogcG9pbnRlciA9ICZudW1iZXJbZGlnaXRzT2ZOdW1iZXJdOworCisgICAgICAg
ICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBkbyB7CisgICAg
ICAgICAgICAqcG9pbnRlciA9IChuICUgMTApICsgJzAnOworICAgICAgICAgICAgcG9pbnRlci0t
OworICAgICAgICAgICAgbiAvPSAxMDsKKyAgICAgICAgfSB3aGlsZSAobik7CisgICAgICAgIGFw
cGVuZCgmbnVtYmVyWzBdLCBkaWdpdHNPZk51bWJlcik7CisgICAgfQorCiAgICAgU3RyaW5nIHRv
U3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmIChtX3N0cmluZy5pc051bGwoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDZmYWMwYzEuLjdjMjY5NmEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAx
MS0xMC0yMSAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYudS1zemVnZWQuaHU+CisKKyAgICAg
ICAgRml4IENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgdG8gdXNlIFN0cmluZ0J1aWxkZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njg1MQor
CisgICAgICAgIFJlcGxhY2UgdGhlIHN0cmluZyBjb25jYXRlbmF0aW9uICgrLCArPSwgYW5kIFZl
Y3RvcjxVY2hhcj4gYXBwZW5kKCkpCisgICAgICAgIHRvIHRoZSBtdWNoIGZhc3RlciBTdHJpbmdC
dWlsZGVyIGFwcGVuZCgpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cyB0aGlzIGlzIG9ubHkgYSBtaW5pbWFsIHBlcmZvcm1hbmNl
IHR3ZWFrLgorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKwogMjAxMS0xMC0yMSAgQWxl
amFuZHJvIEcuIENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY2Fpcm9dIEZv
cndhcmQgZGVjbGFyYXRpb24gb2YgR3JhcGhpY3NDb250ZXh0U3RhdGUgdXNlcyBjbGFzcyBpbnN0
ZWFkIG9mIHN0cnVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5k
ZXggNWY5YTZlMS4uODcxOTE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwCkBAIC02ODIsMTcgKzY4Miw2IEBAIGludCBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0SWRl
bnQoKSBjb25zdAogICAgIHJldHVybiBtX3ZhbHVlLmlkZW50OwogfQogCi1zdGF0aWMgU3RyaW5n
IGZvcm1hdE51bWJlcihkb3VibGUgbnVtYmVyKQotewotICAgIERlY2ltYWxOdW1iZXIgZGVjaW1h
bChudW1iZXIpOwotCi0gICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihkZWNpbWFsLmJ1ZmZlckxlbmd0
aEZvclN0cmluZ0RlY2ltYWwoKSk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gZGVjaW1hbC50b1N0
cmluZ0RlY2ltYWwoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKLSAgICBB
U1NFUlRfVU5VU0VEKGxlbmd0aCwgbGVuZ3RoID09IGJ1ZmZlci5sZW5ndGgoKSk7Ci0KLSAgICBy
ZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwotfQotCiBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiByZXR1cm4gdGhlIG9yaWdpbmFs
IHZhbHVlIGluc3RlYWQgb2YgYSBnZW5lcmF0ZWQgb25lIChlLmcuIGNvbG9yCkBAIC03MDMsODAg
KzY5MiwxMDAgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIGNzc1RleHRDYWNoZSgpLmdldCh0aGlzKTsKICAgICB9CiAKLSAgICBTdHJp
bmcgdGV4dDsKKyAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICAgICAgY2FzZSBDU1NfVU5LTk9XTjoKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTlVNQkVSOgogICAgICAgICBjYXNlIENTU19Q
QVJTRVJfSU5URUdFUjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BFUkNFTlRBR0U6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICIlIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCclJyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1h
dE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92
YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImVtIik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfRVhTOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51
bWJlcihtX3ZhbHVlLm51bSkgKyAiZXgiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1
ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImV4Iik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfUkVNUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pICsgInJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicmVtIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfUFg6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJweCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgicHgiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19DTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgImNtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjbSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX01NOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAibW0iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoIm1tIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfSU46Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJpbiI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiaW4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19QVDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
InB0IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJwdCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1BDOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicGMi
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoInBjIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfREVH
OgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiZGVnIjsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCJkZWciKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19SQUQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyYWQiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoInJhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0dSQUQ6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJncmFkIjsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKCJncmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfTVM6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJtcyI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgibXMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TOgotICAg
ICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicyI7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgn
cycpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0haOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiaHoiOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImh6Iik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfS0haOgotICAgICAgICAgICAg
dGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAia2h6IjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJraHoiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19UVVJOOgotICAgICAgICAgICAg
dGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAidHVybiI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidHVybiIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0RJTUVOU0lPTjoKICAgICAg
ICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RS
SU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NTdHJpbmdJZk5lZWRlZCht
X3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1VS
SToKLSAgICAgICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFs
dWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ1cmwoIik7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX0lERU5UOgotICAgICAgICAgICAgdGV4dCA9IHZhbHVlT3JQcm9wZXJ0eU5h
bWUobV92YWx1ZS5pZGVudCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCh2YWx1ZU9yUHJvcGVy
dHlOYW1lKG1fdmFsdWUuaWRlbnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19BVFRSOiB7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
ZywgYXR0clBhcmVuLCAoImF0dHIoIikpOwpAQCAtNzg4LDEzICs3OTcsMTMgQEAgU3RyaW5nIENT
U1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwogCi0g
ICAgICAgICAgICB0ZXh0ID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZChyZXN1bHQudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIENTU19DT1VOVEVSX05BTUU6Ci0gICAgICAgICAgICB0ZXh0ID0gImNvdW50
ZXIoIjsKLSAgICAgICAgICAgIHRleHQgKz0gbV92YWx1ZS5zdHJpbmc7Ci0gICAgICAgICAgICB0
ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJjb3VudGVyKCIpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoJyknKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19DT1VOVEVSOiB7
CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgY291bnRlclBh
cmVuLCAoImNvdW50ZXIoIikpOwpAQCAtODE2LDggKzgyNSw3IEBAIFN0cmluZyBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChs
aXN0U3R5bGUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwotCi0gICAgICAgICAgICB0ZXh0ID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChyZXN1bHQudG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU19SRUNUOiB7CkBAIC04NDAsMjcgKzg0OCwyNyBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0
LmFwcGVuZChyZWN0VmFsLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKCcpJyk7CiAKLSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1FVQUQ6IHsKICAgICAgICAgICAgIFF1
YWQqIHF1YWRWYWwgPSBnZXRRdWFkVmFsdWUoKTsKLSAgICAgICAgICAgIFZlY3RvcjxVQ2hhcj4g
cmVzdWx0OwotICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMzIpOwot
ICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+dG9wKCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKKyAgICAgICAgICAgIHJlc3VsdC5yZXNl
cnZlQ2FwYWNpdHkoMzIpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT50b3Ao
KS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRW
YWwtPnRvcCgpIHx8IHF1YWRWYWwtPmJvdHRvbSgpICE9IHF1YWRWYWwtPnRvcCgpIHx8IHF1YWRW
YWwtPmxlZnQoKSAhPSBxdWFkVmFsLT50b3AoKSkgewogICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5yaWdo
dCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+
cmlnaHQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+Ym90dG9t
KCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+cmlnaHQoKSAhPSBxdWFkVmFsLT5sZWZ0
KCkpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAg
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5ib3R0b20oKS0+Y3Nz
VGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHF1YWRWYWwtPmxlZnQoKSAhPSBxdWFk
VmFsLT5yaWdodCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT5sZWZ0
KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1
YWRWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmc6OmFk
b3B0KHJlc3VsdCk7CisgICAgICAgICAgIHRleHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1JHQkNPTE9S
OgpAQCAtODk0LDE0ICs5MDIsMTQgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQocmVzdWx0KTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKFN0cmluZzo6YWRvcHQocmVzdWx0KSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QQUlSOgotICAgICAgICAgICAgdGV4dCA9IG1f
dmFsdWUucGFpci0+Zmlyc3QoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
bV92YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKG1fdmFs
dWUucGFpci0+c2Vjb25kKCkgIT0gbV92YWx1ZS5wYWlyLT5maXJzdCgpKSB7Ci0gICAgICAgICAg
ICAgICAgdGV4dCArPSAiICI7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnBhaXIt
PnNlY29uZCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsK
KyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPnNlY29uZCgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKERB
U0hCT0FSRF9TVVBQT1JUKQpAQCAtOTA5LDEyICs5MTcsMTIgQEAgU3RyaW5nIENTU1ByaW1pdGl2
ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIGZvciAoRGFzaGJvYXJkUmVnaW9u
KiByZWdpb24gPSBnZXREYXNoYm9hcmRSZWdpb25WYWx1ZSgpOyByZWdpb247IHJlZ2lvbiA9IHJl
Z2lvbi0+bV9uZXh0LmdldCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCF0ZXh0LmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAg
ICB0ZXh0ICs9ICJkYXNoYm9hcmQtcmVnaW9uKCI7Ci0gICAgICAgICAgICAgICAgdGV4dCArPSBy
ZWdpb24tPm1fbGFiZWw7CisgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoImRhc2hib2FyZC1y
ZWdpb24oIik7CisgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5tX2xhYmVsKTsK
ICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT5tX2lzQ2lyY2xlKQotICAgICAgICAgICAgICAg
ICAgICB0ZXh0ICs9ICIgY2lyY2xlIjsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQo
IiBjaXJjbGUiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWdpb24tPm1faXNSZWN0YW5n
bGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiByZWN0YW5nbGUiOworICAgICAgICAg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIHJlY3RhbmdsZSIpOwogICAgICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgaWYgKHJlZ2lv
bi0+dG9wKCktPm1fdHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0SWRlbnQo
KSA9PSBDU1NWYWx1ZUludmFsaWQpIHsKQEAgLTkyNiwzMiArOTM0LDM1IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIEFTU0VS
VChyZWdpb24tPmxlZnQoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgpICsg
IiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4
dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+Ym90dG9tKCkt
PmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPmxl
ZnQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24t
PnRvcCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcp
OworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPnJpZ2h0KCktPmNzc1Rl
eHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+Ym90dG9tKCktPmNzc1RleHQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAgIHRl
eHQuYXBwZW5kKHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgnKScpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAg
ICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOiB7Ci0gICAgICAgICAgICBjaGFyIGMgPSBzdGF0
aWNfY2FzdDxjaGFyPihtX3ZhbHVlLmlkZW50KTsKLSAgICAgICAgICAgIHRleHQgPSBTdHJpbmco
JmMsIDFVKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KG1fdmFs
dWUuaWRlbnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Q1NTX1BBUlNFUl9JREVOVElGSUVSOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5n
SWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVD
U1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX1NIQVBFOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUuc2hhcGUt
PmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc2hhcGUtPmNzc1Rl
eHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBTdHJpbmcgcmVzdWx0T2ZU
ZXh0ID0gdGV4dC50b1N0cmluZygpOwogICAgIEFTU0VSVCghY3NzVGV4dENhY2hlKCkuY29udGFp
bnModGhpcykpOwotICAgIGNzc1RleHRDYWNoZSgpLnNldCh0aGlzLCB0ZXh0KTsKKyAgICBjc3NU
ZXh0Q2FjaGUoKS5zZXQodGhpcywgcmVzdWx0T2ZUZXh0KTsKICAgICBtX2hhc0NhY2hlZENTU1Rl
eHQgPSB0cnVlOwotICAgIHJldHVybiB0ZXh0OworICAgIHJldHVybiByZXN1bHRPZlRleHQ7CiB9
CiAKIHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RI
YXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQo=
</data>
<flag name="review"
          id="109927"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112126</attachid>
            <date>2011-10-23 14:19:55 -0700</date>
            <delta_ts>2011-11-03 06:20:48 -0700</delta_ts>
            <desc>Fix CSSPrimitiveValue::cssText() to use StringBuilder and add two StringBuilder append overload</desc>
            <filename>klingreq.patch</filename>
            <type>text/plain</type>
            <size>21367</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDRmNDVkNDAuLjFkMTBlNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTEwLTIzICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTAtMjEgIFNpbW9uIEhhdXNtYW5uICA8
c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBRdFNjcmlwdCBzb3Vy
Y2UgY29kZSBmcm9tIFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmNwcAppbmRleCBlMTJkYTBkLi40YzRhNzkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCkBAIC0xNzAsNiAr
MTcwLDI2NCBAQCB2b2lkIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChjb25zdCBjaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgICooZGVzdCsrKSA9ICooY29uc3QgdW5zaWdu
ZWQgY2hhciopKGNoYXJhY3RlcnMrKyk7CiB9CiAKK3Vuc2lnbmVkIFN0cmluZ0J1aWxkZXI6Omdl
dFByZWNpc2lvbihpbnQgbV9leHBvbmVudCwgdW5zaWduZWQgbV9wcmVjaXNpb24sIHVuc2lnbmVk
IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCkKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSAwOwor
CisgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgbGVuZ3RoICs9IC1tX2V4cG9uZW50
IC0gMTsKKyAgICAgICBsZW5ndGggKz0gbV9wcmVjaXNpb247CisgICAgICAgcmV0dXJuIGxlbmd0
aDsKKyAgICB9CisKKyAgICBpZiAobV9wcmVjaXNpb24gPD0gZGlnaXRzQmVmb3JlRGVjaW1hbFBv
aW50KQorICAgICAgIHJldHVybiAwOworCisgICAgbGVuZ3RoICs9IG1fcHJlY2lzaW9uIC0gZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50OworCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKyAgICAKK2lu
dCBTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyhjaGFyKiBudW0sIGludCBzaGlmdCkKK3sKKyAgICAv
LyAjc2hpZnQKKyAgICBpbnQgcCA9IDE7CisgICAgd2hpbGUgKG51bVtwKzFdICE9ICdcMCcgJiYg
cCA8PSBzaGlmdCAmJiBudW1bMV0gIT0gJ1wwJykgeworICAgICAgICAgbnVtWyBwIF0gPSBudW1b
cCsxXTsKKyAgICAgICAgIG51bVtwKzFdID0gJy4nOworICAgICAgICAgcCsrOworICAgIH0KKwor
ICAgIC8vICNmaWxsMAorICAgIHdoaWxlIChwIDw9IHNoaWZ0KSB7CisgICAgICAgICBudW1bIHAg
XSA9ICcwJzsKKyAgICAgICAgIG51bVtwKzFdID0gJy4nOworICAgICAgICAgbnVtW3ArMl0gPSAw
OworICAgICAgICAgcCsrOworICAgIH0KKworICAgIC8vIGNoZWNrJnNldAorICAgIGNvbnN0IGlu
dCBsZW5ndGggPSBzdHJsZW4obnVtKTsKKyAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+
PSBwICYmIChudW1baV0gPT0gJzAnIHx8IG51bVtpXSA9PSAnLicpOyAtLWkpCisgICAgICAgICBu
dW1baV09MDsKKworICAgIC8vIHNraXAKKyAgICBpZiAobnVtWzBdID09ICcwJyAmJiBudW1bMV0g
PT0gJzAnKQorICAgICAgICAgcmV0dXJuIDI7CisKKyAgICBpZiAobnVtWzBdID09ICcwJyAmJiBu
dW1bMV0gIT0gJy4nKQorICAgICAgICAgcmV0dXJuIDE7CisKKyAgICBpZiAobnVtWzBdICE9ICcw
JykKKyAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAyOworfQorCit2b2lkIFN0cmluZ0J1
aWxkZXI6OmFwcGVuZChkb3VibGUgZCkKK3sKKyAgICBib29sIG1fc2lnbjsKKyAgICBpbnQgbV9l
eHBvbmVudDsKKyAgICBEdG9hQnVmZmVyIG1fc2lnbmlmaWNhbmQ7CisgICAgdW5zaWduZWQgbV9w
cmVjaXNpb247CisKKyAgICBib29sIGlzTmVnYXRpdmUgPSBmYWxzZTsKKyAgICBpZiAoZCA8IDAp
IHsKKyAgICAgICBpc05lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICBkID0gLWQ7CisgICAgICAgU3Ry
aW5nQnVpbGRlcjo6YXBwZW5kKCItIiwgMSk7CisgICAgfQorCisgICAgQVNTRVJUKGlzZmluaXRl
KGQpKTsKKyAgICBkdG9hKG1fc2lnbmlmaWNhbmQsIGQsIG1fc2lnbiwgbV9leHBvbmVudCwgbV9w
cmVjaXNpb24pOworCisgICAgQVNTRVJUKG1fcHJlY2lzaW9uKTsKKyAgICAvLyBaZXJvIHNob3Vs
ZCBhbHdheXMgaGF2ZSBleHBvbmVudCAwLgorICAgIEFTU0VSVChtX3NpZ25pZmljYW5kWzBdICE9
ICcwJyB8fCAhbV9leHBvbmVudCk7CisgICAgLy8gTm8gdmFsdWVzIG90aGVyIHRoYW4gemVybyBz
aG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICBBU1NFUlQobV9zaWduaWZpY2FuZFswXSAh
PSAnMCcgfHwgbV9wcmVjaXNpb24gPT0gMSk7CisgICAgLy8gTm8gdmFsdWVzIG90aGVyIHRoYW4g
emVybyBzaG91bGQgaGF2ZSB0cmFpbGluZyB6ZXJvcy4KKyAgICBBU1NFUlQobV9zaWduaWZpY2Fu
ZFswXSA9PSAnMCcgfHwgbV9zaWduaWZpY2FuZFttX3ByZWNpc2lvbiAtIDFdICE9ICcwJyk7CisK
KyAgICBjaGFyIHplcm8gPSAnMCc7CisgICAgY2hhciBkb3QgPSAnLic7CisKKyAgICBpbnQgYWJz
b2x1dGVFeHAgPSAobV9leHBvbmVudCA8IDApID8gbV9leHBvbmVudCAqIC0xIDogbV9leHBvbmVu
dDsKKyAgICBpbnQgc2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4obV9zaWduaWZpY2FuZCk7Cisg
ICAgVmVjdG9yPGNoYXIsIDMyPiBudW1iZXIoYWJzb2x1dGVFeHAgKyBzaXplT2ZzaWduaWZpY2Fu
ZCArIDMpOworICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgIGludCBzaXplT2ZN
U2lnbmlmaWNhbmQgPSBzaXplb2YobV9zaWduaWZpY2FuZCk7CisgICAgaW50IGRpZ2l0c0JlZm9y
ZURlY2ltYWxQb2ludCA9IG1fZXhwb25lbnQgKyAxOworCisgICAgaW50IHByZWNpc2lvbiA9IGdl
dFByZWNpc2lvbihtX2V4cG9uZW50LCBtX3ByZWNpc2lvbiwgZGlnaXRzQmVmb3JlRGVjaW1hbFBv
aW50KTsKKworICAgIGJvb2wgZG90QWxyZWFkeVdyaXR0ZW4gPSBmYWxzZTsKKyAgICBpbnQgbWF4
TGltaXQgPSAwOworICAgIGludCBwbGFjZU9mRG90ID0gbV9leHBvbmVudDsKKyAgICBpbnQgbnVt
YmVyT2ZaZXJvcyA9IChtX2V4cG9uZW50ID4gMCkgPyAwIDogLW1fZXhwb25lbnQ7CisKKyAgICBi
b29sIGp1bXAgPSBmYWxzZTsKKyAgICBib29sIHRvU2hpZiA9IGZhbHNlOworICAgIGludCBmcm9t
ID0gMDsKKyAgICBpbnQgdmFsdWVPZlNoaWZ0ID0gMDsKKworICAgIGlmICghcHJlY2lzaW9uKSB7
CisgICAgICAgaWYgKG1fZXhwb25lbnQgPCAwKSB7CisgICAgICAgICBtX3NpZ25pZmljYW5kWzJd
ID0gbV9zaWduaWZpY2FuZFsxXTsKKyAgICAgICAgIG1fc2lnbmlmaWNhbmRbMV0gPSBtX3NpZ25p
ZmljYW5kWzBdOworICAgICAgICAgbV9zaWduaWZpY2FuZFswXSA9ICcwJzsKKyAgICAgICAgIGRp
Z2l0c0JlZm9yZURlY2ltYWxQb2ludCA9IDE7CisgICAgICAgfQorCisgICAgICAgaW50IGkgPSAw
OworICAgICAgIGZvciAoOyBpIDwgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50ICYmIGkgPCBzaXpl
T2ZzaWduaWZpY2FuZDsgKytpKSB7CisgICAgICAgICAqcG9pbnRlciA9IG1fc2lnbmlmaWNhbmRb
aV07CisgICAgICAgICBwb2ludGVyKys7CisgICAgICAgfQorCisgICAgICAgaWYgKG1fc2lnbmlm
aWNhbmRbaV0gPiAnNCcpIHsKKyAgICAgICAgIHRvU2hpZiA9IHRydWU7CisgICAgICAgICBqdW1w
ID0gdHJ1ZTsKKyAgICAgICAgIGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgIHBs
YWNlT2ZEb3QgPSAxOworICAgICAgICAgcHJlY2lzaW9uICs9IGRpZ2l0c0JlZm9yZURlY2ltYWxQ
b2ludDsKKyAgICAgICAgIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgICAgICAgKnBvaW50ZXIg
PSAnMCc7CisgICAgICAgICBwb2ludGVyWzFdID0gZG90OworICAgICAgICAgcG9pbnRlciArPSAy
OworICAgICAgICAgdmFsdWVPZlNoaWZ0ID0gZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50OworICAg
ICAgICAgaWYgKG1fc2lnbmlmaWNhbmRbMF0gPT0gJzAnKSB7CisgICAgICAgICAgICBtYXhMaW1p
dC0tOworICAgICAgICAgICAgdmFsdWVPZlNoaWZ0Kys7CisgICAgICAgICB9CisgICAgICAgfQor
ICAgIH0gZWxzZQorICAgICAgIGp1bXAgPSB0cnVlOworCisgICAgaWYgKGp1bXApIHsKKyAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mWmVyb3M7IGkrKykgeworICAgICAgICAgIGlm
IChpID09IDEgJiYgIWRvdEFscmVhZHlXcml0dGVuKSB7CisgICAgICAgICAgICAgKnBvaW50ZXIg
PSBkb3Q7CisgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAgIGRvdEFscmVhZHlX
cml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICB9CisgICAgICAgICAgKnBvaW50ZXIgPSB6ZXJvOwor
ICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICBtYXhMaW1pdCA9IChkb3RBbHJlYWR5V3Jp
dHRlbikgPyBtYXhMaW1pdCArIDEgOiBtYXhMaW1pdDsKKyAgICAgICAgICBpZiAobWF4TGltaXQg
PT0gcHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgaWYgKG51bWJlck9mWmVyb3MgPiBwcmVjaXNp
b24gKyAxIHx8IChudW1iZXJPZlplcm9zID09IChwcmVjaXNpb24gKyAxKSAmJiBtX3NpZ25pZmlj
YW5kWzBdIDwgJzUnKSkgeworICAgICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJbMV07Cisg
ICAgICAgICAgICAgICBwb2ludGVyWy0xXSA9ICcwJzsKKyAgICAgICAgICAgICAgICpwb2ludGVy
ID0gJ1wwJzsKKworICAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAgICAgICAgICAgICAg
IGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAg
ICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVuKCZudW1iZXJb
ZnJvbV0pKTsKKyAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgaWYgKG51bWJlck9mWmVyb3MgPT0gcHJlY2lzaW9uICsgMSAmJiBtX3NpZ25pZmljYW5k
WzBdID4gJzQnKSB7CisgICAgICAgICAgICAgICBwb2ludGVyWy0xXSA9ICcxJzsKKyAgICAgICAg
ICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAg
ICAgICAgICAgICAgICAgIGZyb20gPSBzaGlmdGluZygmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQp
OworCisgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltmcm9tXSwg
c3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IHNpemVPZnNpZ25pZmljYW5kOyBpKyspIHsKKyAgICAgICAgICBpZiAoaSA9PSBwbGFjZU9mRG90
ICsgMSAmJiBzaXplT2ZzaWduaWZpY2FuZCAhPSBpICYmICFkb3RBbHJlYWR5V3JpdHRlbikgewor
ICAgICAgICAgICAgICpwb2ludGVyID0gZG90OworICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAg
ICAgICAgICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgfQorICAgICAg
ICAgICpwb2ludGVyID0gbV9zaWduaWZpY2FuZFtpXTsKKyAgICAgICAgICBtYXhMaW1pdCA9IChk
b3RBbHJlYWR5V3JpdHRlbikgPyBtYXhMaW1pdCArIDEgOiBtYXhMaW1pdDsKKyAgICAgICAgICBp
ZiAobWF4TGltaXQgPT0gcHJlY2lzaW9uKSB7CisgICAgICAgICAgICAgaWYgKGkgKyAxIDwgc2l6
ZU9mTVNpZ25pZmljYW5kICYmIG1fc2lnbmlmaWNhbmRbaSArIDFdIDwgJzUnKSB7CisgICAgICAg
ICAgICAgICB3aGlsZSAoKnBvaW50ZXIgPT0gJzAnICYmIGRvdEFscmVhZHlXcml0dGVuKQorICAg
ICAgICAgICAgICAgICAgIHBvaW50ZXItLTsKKyAgICAgICAgICAgICAgICBpZiAoKnBvaW50ZXIg
PT0gZG90KQorICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICAgICAgICAg
ICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisg
ICAgICAgICAgICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlm
dCk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltmcm9t
XSwgc3RybGVuKCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKG1fc2lnbmlmaWNhbmRbaV0gPT0gJzknKSB7
CisgICAgICAgICAgICAgICAgd2hpbGUgKCpwb2ludGVyID09ICc5JyAmJiAqcG9pbnRlciAhPSBk
b3QpCisgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisKKyAgICAgICAgICAgICAgICBpZiAo
KnBvaW50ZXIgPT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci0tOworICAgICAg
ICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAgICAgICAgICAgICBwb2lu
dGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAg
ICAgICAgICAgZnJvbSA9IHNoaWZ0aW5nKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAg
ICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVu
KCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAgICAgICAgICAg
ICAgcG9pbnRlclsxXSA9ICdcMCc7CisKKyAgICAgICAgICAgICAgaWYgKHRvU2hpZikKKyAgICAg
ICAgICAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltmcm9tXSwgc3RybGVu
KCZudW1iZXJbZnJvbV0pKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICB9Cisg
ICAgICAgICAgcG9pbnRlcisrOworICAgICAgIH0KKyAgICB9CisgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAobV9leHBvbmVudCAtIHNpemVPZnNpZ25pZmljYW5kKSArIDE7IGkrKykgeworICAgICAg
ICpwb2ludGVyID0gemVybzsKKyAgICAgICBwb2ludGVyKys7CisgICAgfQorCisgICAgKnBvaW50
ZXIgPSAnXDAnOworCisgICAgaWYgKHRvU2hpZikKKyAgICAgICBmcm9tID0gc2hpZnRpbmcoJm51
bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmbnVt
YmVyW2Zyb21dLCBzdHJsZW4oJm51bWJlcltmcm9tXSkpOworfQorCit2b2lkIFN0cmluZ0J1aWxk
ZXI6OmFwcGVuZChpbnQgbikKK3sKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICBTdHJpbmdCdWls
ZGVyOjphcHBlbmQoIi0iLCAxKTsKKyAgICAgICBuID0gLW47CisgICAgfQorCisgICAgaWYgKCEo
biAvIDEwKSkgeworICAgICAgIGNoYXIgYyA9IHN0YXRpY19jYXN0PGNoYXI+KG4gKyAnMCcpOwor
ICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmYywgMSk7CisgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGludCBkaWdpdHNPZk51bWJlciA9IHN0YXRpY19jYXN0PGludD4obG9nMTAoc3Rh
dGljX2Nhc3Q8ZG91YmxlPihuKSkgKyAxKTsKKyAgICBWZWN0b3I8Y2hhciwgMzI+IG51bWJlcihk
aWdpdHNPZk51bWJlciArIDEpOworICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyW2RpZ2l0c09m
TnVtYmVyXTsKKworICAgICpwb2ludGVyID0gJ1wwJzsKKyAgICBwb2ludGVyLS07CisgICAgZG8g
eworICAgICAgICpwb2ludGVyID0gKG4gJSAxMCkgKyAnMCc7CisgICAgICAgcG9pbnRlci0tOwor
ICAgICAgIG4gLz0gMTA7CisgICAgfSB3aGlsZSAobik7CisgICAgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKCZudW1iZXJbMF0sIGRpZ2l0c09mTnVtYmVyKTsKK30KKwogdm9pZCBTdHJpbmdCdWlsZGVy
OjpzaHJpbmtUb0ZpdCgpCiB7CiAgICAgLy8gSWYgdGhlIGJ1ZmZlciBpcyBhdCBsZWFzdCA4MCUg
ZnVsbCwgZG9uJ3QgYm90aGVyIGNvcHlpbmcuIE5lZWQgdG8gdHVuZSB0aGlzIGhldXJpc3RpYyEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCmluZGV4
IDVlZGFiZWMuLjIwNWZkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaApAQCAtMjYsNiArMjYsOSBAQAogI2lmbmRlZiBTdHJpbmdCdWlsZGVy
X2gKICNkZWZpbmUgU3RyaW5nQnVpbGRlcl9oCiAKKyNpbmNsdWRlIDxtYXRoLmg+CisjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNzYsNiAr
NzksMTQgQEAgcHVibGljOgogICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgdW5zaWduZWQgZ2V0UHJlY2lzaW9uKGludCBtX2V4cG9uZW50LCB1bnNpZ25lZCBt
X3ByZWNpc2lvbiwgdW5zaWduZWQgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KTsKKworICAgIHN0
YXRpYyBpbnQgc2hpZnRpbmcoY2hhciogbnVtLCBpbnQgc2hpZnQpOworCisgICAgdm9pZCBhcHBl
bmQoZG91YmxlKTsKKworICAgIHZvaWQgYXBwZW5kKGludCk7CisKICAgICBTdHJpbmcgdG9TdHJp
bmcoKQogICAgIHsKICAgICAgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggNmZhYzBjMS4uMzI2ODViMiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDExLTEw
LTIzICBPbGl2ZXIgVmFyZ2EgIDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBG
aXggQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlci4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCisKKyAg
ICAgICAgUmVwbGFjZSB0aGUgc3RyaW5nIGNvbmNhdGVuYXRpb24gKCssICs9LCBhbmQgVmVjdG9y
PFVjaGFyPiBhcHBlbmQoKSkKKyAgICAgICAgdG8gdGhlIG11Y2ggZmFzdGVyIFN0cmluZ0J1aWxk
ZXIgYXBwZW5kKCkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIHRoaXMgaXMgb25seSBhIG1pbmltYWwgcGVyZm9ybWFuY2UgdHdl
YWsuCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQpOgorCiAyMDExLTEwLTIxICBBbGVqYW5k
cm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjYWlyb10gRm9yd2Fy
ZCBkZWNsYXJhdGlvbiBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZSB1c2VzIGNsYXNzIGluc3RlYWQg
b2Ygc3RydWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRleCA1
ZjlhNmUxLi44NzE5MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5j
cHAKQEAgLTY4MiwxNyArNjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcgZm9y
bWF0TnVtYmVyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG51
bWJlcik7Ci0KLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3RoRm9y
U3RyaW5nRGVjaW1hbCgpKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3RyaW5n
RGVjaW1hbChidWZmZXIuY2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFTU0VS
VF9VTlVTRUQobGVuZ3RoLCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJldHVy
biBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6
Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwgdmFs
dWUgaW5zdGVhZCBvZiBhIGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCArNjky
LDEwMCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAg
ICByZXR1cm4gY3NzVGV4dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmluZyB0
ZXh0OworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAg
ICAgICBjYXNlIENTU19VTktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BBUlNF
Ul9JTlRFR0VSOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSk7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBmb3Jt
YXROdW1iZXIobV92YWx1ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92
YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92
YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVl
Lm51bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfTU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVt
KSArICJtbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsg
ImluIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKCJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X1BUOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHQi
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoInB0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfUEM6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6Ci0g
ICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgicmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KCJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAgICAg
ICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAgICAg
IHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdzJyk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0ZXh0
ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAgICAg
ICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJTkc6
Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmlu
Zyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFs
dWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJOgot
ICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5z
dHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZSht
X3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0eU5h
bWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NT
X0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBh
dHRyUGFyZW4sICgiYXR0cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NTUHJp
bWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCht
X3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAgICAg
ICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5k
KHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRlcigi
OwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRleHQg
Kz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAgICAg
ICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgn
KScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsKICAg
ICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFyZW4s
ICgiY291bnRlcigiKSk7CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpc3RT
dHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0K
LSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAgICAg
ICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVhZCog
cXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiByZXN1
bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0gICAg
ICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAgICAg
ICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2VydmVD
YXBhY2l0eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgpLT5j
c3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+
dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZhbC0+
bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0KCkt
PmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5yaWdo
dCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20oKSAh
PSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQoKSkg
ewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOworICAg
ICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0
KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRWYWwt
PnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQoKS0+
Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVhZFZh
bC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRvcHQo
cmVzdWx0KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBA
IC04OTQsMTQgKzkwMiwxNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBj
b25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0g
ICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoU3RyaW5nOjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1
ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3Zh
bHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5w
YWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAg
ICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vj
b25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAg
ICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJP
QVJEX1NVUFBPUlQpCkBAIC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJl
Z2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9u
LT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRl
eHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lv
bi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lv
bigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAg
ICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAg
IHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNp
cmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkK
LSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50
b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgpID09
IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1ByaW1p
dGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
Z2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKLSAg
ICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAiICI7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0KCkg
KyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+Y3Nz
VGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVmdCgp
LT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+dG9w
KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4dCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAg
ICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5h
cHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcp
Jyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAgICBj
YXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRpY19j
YXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygmYywg
MVUpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1ZS5p
ZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1Nf
UEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5l
ZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0
cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+Y3Nz
VGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4dCgp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRleHQg
PSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlucyh0
aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1RleHRD
YWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4dCA9
IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0KIAog
dm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>
<flag name="review"
          id="110126"
          type_id="1"
          status="-"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="110127"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113473</attachid>
            <date>2011-11-03 06:20:48 -0700</date>
            <delta_ts>2011-11-03 10:00:25 -0700</delta_ts>
            <desc>Correcting</desc>
            <filename>sbuilder.patch</filename>
            <type>text/plain</type>
            <size>23137</size>
            <attacher name="Oliver Varga">voliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk4OGY3NTAuLmRiMDBlNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTAzICBPbGl2ZXIgVmFyZ2Eg
IDx2b2xpdmVyQGluZi51LXN6ZWdlZC5odT4KKworICAgICAgICBGaXggQ1NTUHJpbWl0aXZlVmFs
dWU6OmNzc1RleHQoKSB0byB1c2UgU3RyaW5nQnVpbGRlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBBZGQgdHdvIG92ZXJs
b2FkcyB0aGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKCkgKGFwcGVuZChkb3VibGUpLCBhcHBlbmQo
aW50KSkuCisgICAgICAgIFRoaXMgaXMgYW4gZXF1aXZhbGVudCBvZiB0aGUgcHJldmlvdXMgQ1NT
UHJpbWl0aXZlVmFsdWU6OmZvcm1hdE51bWJlcgorICAgICAgICBidXQgaXQgd29ya3MgZGlyZWN0
bHkgd2l0aCB0aGUgU3RyaW5nQnVpbGRlciwgYW5kIGl0IGlzIG11Y2ggZmFzdGVyLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oOgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpnZXRQcmVjaXNpb24p
OgorICAgICAgICAoV1RGOjpTdHJpbmdCdWlsZGVyOjpzaGlmdGluZyk6CisgICAgICAgIChXVEY6
OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6CisKIDIwMTEtMTEtMDIgIEZpbGlwIFBpemxvICA8ZnBp
emxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgaW5saW5pbmcgYnJlYWtzIGZ1bmN0aW9uLmFy
Z3VtZW50c1tzb21ldGhpbmddIGlmIHRoZSBhcmd1bWVudCBiZWluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCmluZGV4IGUxMmRhMGQuLmNl
YmNkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVp
bGRlci5jcHAKQEAgLTI1LDYgKzI1LDggQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIlN0cmluZ0J1aWxkZXIuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi9kdG9hLmg+CiAKICNpbmNsdWRlICJXVEZTdHJpbmcuaCIKIApAQCAtMTcwLDYgKzE3
MiwyNjYgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgY2hhciogY2hhcmFjdGVy
cywgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICAqKGRlc3QrKykgPSAqKGNvbnN0IHVuc2lnbmVk
IGNoYXIqKShjaGFyYWN0ZXJzKyspOwogfQogCisvLyBJcyBpcyB1c2VkIGJ5IGFwcGVuZChkb3Vi
bGUpLiBSZXR1cm4gdGhlIHByZWNpc2lvbiBvZiB0aGUgdGhlIHJlc3VsdCBudW1iZXIuCit1bnNp
Z25lZCBTdHJpbmdCdWlsZGVyOjpwcmVjaXNpb25PZlJlc3VsdChpbnQgZXhwb25lbnQsIHVuc2ln
bmVkIHByZWNpc2lvbiwgdW5zaWduZWQgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KQoreworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IDA7CisKKyAgICBpZiAoZXhwb25lbnQgPCAwKSB7CisgICAgICAg
IGxlbmd0aCArPSAtZXhwb25lbnQgLSAxOworICAgICAgICBsZW5ndGggKz0gcHJlY2lzaW9uOwor
ICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIGlmIChwcmVjaXNpb24gPD0gZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIGxlbmd0aCAr
PSBwcmVjaXNpb24gLSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisKKyAgICByZXR1cm4gbGVu
Z3RoOworfQorCisvLyBJcyBpcyB1c2VkIGJ5IGFwcGVuZChkb3VibGUpLiBJZiB0aGUgaW5wdXQg
bnVtYmVyIGlzIGxpa2UgJzk5OS45OTknLCBhbmQgdGhlIHZhbHVlIG9mIHRoZSByb3VuZGluZyBp
cyAwIHdlIGhhdmUgdG8gbW92ZSBmb3J3YXJkIHRoZSBjYXJyeQorLy8gb3ZlciB0aGUgZGVjaW1h
bCBwb2ludC4gVGhpcyBraW5kIG9mIHJvdW5kaW5nIGltcGxlbWVudGVkIHRoZSBudW1iZXIgbGVz
cyB0aGVuIDEgYW5kIG1vcmUgdGhhbiAwLCBhbmQgYmVmb3JlIHRoZSByb3VuZGluZyB3ZSBjb252
ZXJ0ICc5OTkuOTk5JworLy8gdG8gJzAuOTk5OTk5Jy4gVGhlIGZpcnN0RGlnaXRPZk9yaWdpbmFs
TnVtYmVyKCkgaGVscHMgZ2V0IHRoZSByZWFsIG51bWJlciBiYWNrLgoraW50IFN0cmluZ0J1aWxk
ZXI6OmZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKGNoYXIqIG51bWJlclRvU2hpZnRpbmcsIGlu
dCBtZWFzdXJlbWVudE9mU2hpZnQpCit7CisgICAgLy8gI3NoaWZ0CisgICAgaW50IHAgPSAxOwor
ICAgIHdoaWxlIChudW1iZXJUb1NoaWZ0aW5nW3ArMV0gIT0gJ1wwJyAmJiBwIDw9IG1lYXN1cmVt
ZW50T2ZTaGlmdCAmJiBudW1iZXJUb1NoaWZ0aW5nWzFdICE9ICdcMCcpIHsKKyAgICAgICAgbnVt
YmVyVG9TaGlmdGluZ1sgcCBdID0gbnVtYmVyVG9TaGlmdGluZ1twKzFdOworICAgICAgICBudW1i
ZXJUb1NoaWZ0aW5nW3ArMV0gPSAnLic7CisgICAgICAgIHArKzsKKyAgICB9CisKKyAgICAvLyAj
ZmlsbDAKKyAgICB3aGlsZSAocCA8PSBtZWFzdXJlbWVudE9mU2hpZnQpIHsKKyAgICAgICAgbnVt
YmVyVG9TaGlmdGluZ1sgcCBdID0gJzAnOworICAgICAgICBudW1iZXJUb1NoaWZ0aW5nW3ArMV0g
PSAnLic7CisgICAgICAgIG51bWJlclRvU2hpZnRpbmdbcCsyXSA9IDA7CisgICAgICAgIHArKzsK
KyAgICB9CisKKyAgICAvLyBjaGVjayZzZXQKKyAgICBjb25zdCBpbnQgbGVuZ3RoID0gc3RybGVu
KG51bWJlclRvU2hpZnRpbmcpOworICAgIGZvciAoaW50IGkgPSBsZW5ndGggLSAxOyBpID49IHAg
JiYgKG51bWJlclRvU2hpZnRpbmdbaV0gPT0gJzAnIHx8IG51bWJlclRvU2hpZnRpbmdbaV0gPT0g
Jy4nKTsgLS1pKQorICAgICAgICBudW1iZXJUb1NoaWZ0aW5nW2ldPTA7CisKKyAgICAvLyBza2lw
CisgICAgaWYgKG51bWJlclRvU2hpZnRpbmdbMF0gPT0gJzAnICYmIG51bWJlclRvU2hpZnRpbmdb
MV0gPT0gJzAnKQorICAgICAgICByZXR1cm4gMjsKKworICAgIGlmIChudW1iZXJUb1NoaWZ0aW5n
WzBdID09ICcwJyAmJiBudW1iZXJUb1NoaWZ0aW5nWzFdICE9ICcuJykKKyAgICAgICAgcmV0dXJu
IDE7CisKKyAgICBpZiAobnVtYmVyVG9TaGlmdGluZ1swXSAhPSAnMCcpCisgICAgICAgIHJldHVy
biAwOworCisgICAgcmV0dXJuIDI7Cit9CisKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGRv
dWJsZSBkKQoreworICAgIGJvb2wgc2lnbjsKKyAgICBpbnQgZXhwb25lbnQ7CisgICAgRHRvYUJ1
ZmZlciBzaWduaWZpY2FuZDsKKyAgICB1bnNpZ25lZCBwcmVjaXNpb247CisKKyAgICBpZiAoZCA8
IDApIHsKKyAgICAgICAgZCA9IC1kOworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoIi0i
LCAxKTsKKyAgICB9CisKKyAgICBBU1NFUlQoaXNmaW5pdGUoZCkpOworICAgIGR0b2Eoc2lnbmlm
aWNhbmQsIGQsIHNpZ24sIGV4cG9uZW50LCBwcmVjaXNpb24pOworCisgICAgQVNTRVJUKHByZWNp
c2lvbik7CisgICAgLy8gWmVybyBzaG91bGQgYWx3YXlzIGhhdmUgZXhwb25lbnQgMC4KKyAgICBB
U1NFUlQoc2lnbmlmaWNhbmRbMF0gIT0gJzAnIHx8ICFleHBvbmVudCk7CisgICAgLy8gTm8gdmFs
dWVzIG90aGVyIHRoYW4gemVybyBzaG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICBBU1NF
UlQoc2lnbmlmaWNhbmRbMF0gIT0gJzAnIHx8IHByZWNpc2lvbiA9PSAxKTsKKyAgICAvLyBObyB2
YWx1ZXMgb3RoZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAgIEFT
U0VSVChzaWduaWZpY2FuZFswXSA9PSAnMCcgfHwgc2lnbmlmaWNhbmRbcHJlY2lzaW9uIC0gMV0g
IT0gJzAnKTsKKworICAgIGNoYXIgemVybyA9ICcwJzsKKyAgICBjaGFyIGRvdCA9ICcuJzsKKwor
ICAgIGludCBhYnNvbHV0ZUV4cCA9IChleHBvbmVudCA8IDApID8gZXhwb25lbnQgKiAtMSA6IGV4
cG9uZW50OworICAgIGludCBzaXplT2ZzaWduaWZpY2FuZCA9IHN0cmxlbihzaWduaWZpY2FuZCk7
CisgICAgVmVjdG9yPGNoYXIsIDMyPiBudW1iZXIoYWJzb2x1dGVFeHAgKyBzaXplT2ZzaWduaWZp
Y2FuZCArIDMpOworICAgIGNoYXIqIHBvaW50ZXIgPSAmbnVtYmVyWzBdOworICAgIGludCBzaXpl
T2ZNU2lnbmlmaWNhbmQgPSBzaXplb2Yoc2lnbmlmaWNhbmQpOworICAgIGludCBkaWdpdHNCZWZv
cmVEZWNpbWFsUG9pbnQgPSBleHBvbmVudCArIDE7CisKKyAgICBpbnQgcHJlY2lzaW9uT2ZSZXN1
bHROdW1iZXIgPSBwcmVjaXNpb25PZlJlc3VsdChleHBvbmVudCwgcHJlY2lzaW9uLCBkaWdpdHNC
ZWZvcmVEZWNpbWFsUG9pbnQpOworCisgICAgYm9vbCBkb3RBbHJlYWR5V3JpdHRlbiA9IGZhbHNl
OworICAgIGludCBtYXhMaW1pdCA9IDA7CisgICAgaW50IHBsYWNlT2ZEb3QgPSBleHBvbmVudDsK
KyAgICBpbnQgbnVtYmVyT2ZaZXJvcyA9IChleHBvbmVudCA+IDApID8gMCA6IC1leHBvbmVudDsK
KworICAgIGJvb2wganVtcCA9IGZhbHNlOworICAgIGJvb2wgdG9TaGlmID0gZmFsc2U7CisgICAg
aW50IHBsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlciA9IDA7CisgICAgaW50IHZhbHVl
T2ZTaGlmdCA9IDA7CisKKyAgICBpZiAoIXByZWNpc2lvbk9mUmVzdWx0TnVtYmVyKSB7CisgICAg
ICAgIGlmIChleHBvbmVudCA8IDApIHsKKyAgICAgICAgICAgIHNpZ25pZmljYW5kWzJdID0gc2ln
bmlmaWNhbmRbMV07CisgICAgICAgICAgICBzaWduaWZpY2FuZFsxXSA9IHNpZ25pZmljYW5kWzBd
OworICAgICAgICAgICAgc2lnbmlmaWNhbmRbMF0gPSAnMCc7CisgICAgICAgICAgICBkaWdpdHNC
ZWZvcmVEZWNpbWFsUG9pbnQgPSAxOworICAgICAgICB9CisKKyAgICAgICAgaW50IGkgPSAwOwor
ICAgICAgICBmb3IgKDsgaSA8IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludCAmJiBpIDwgc2l6ZU9m
c2lnbmlmaWNhbmQ7ICsraSkgeworICAgICAgICAgICAgKnBvaW50ZXIgPSBzaWduaWZpY2FuZFtp
XTsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzaWdu
aWZpY2FuZFtpXSA+ICc0JykgeworICAgICAgICAgICAgdG9TaGlmID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGp1bXAgPSB0cnVlOworICAgICAgICAgICAgZG90QWxyZWFkeVdyaXR0ZW4gPSB0cnVlOwor
ICAgICAgICAgICAgcGxhY2VPZkRvdCA9IDE7CisgICAgICAgICAgICBwcmVjaXNpb25PZlJlc3Vs
dE51bWJlciArPSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQ7CisgICAgICAgICAgICBwb2ludGVy
ID0gJm51bWJlclswXTsKKyAgICAgICAgICAgICpwb2ludGVyID0gJzAnOworICAgICAgICAgICAg
cG9pbnRlclsxXSA9IGRvdDsKKyAgICAgICAgICAgIHBvaW50ZXIgKz0gMjsKKyAgICAgICAgICAg
IHZhbHVlT2ZTaGlmdCA9IGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludDsKKyAgICAgICAgICAgIGlm
IChzaWduaWZpY2FuZFswXSA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICBtYXhMaW1pdC0tOwor
ICAgICAgICAgICAgICAgIHZhbHVlT2ZTaGlmdCsrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSBlbHNlCisgICAgICAgIGp1bXAgPSB0cnVlOworCisgICAgaWYgKGp1bXApIHsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZlplcm9zOyBpKyspIHsKKyAgICAgICAg
ICAgIGlmIChpID09IDEgJiYgIWRvdEFscmVhZHlXcml0dGVuKSB7CisgICAgICAgICAgICAgICAg
KnBvaW50ZXIgPSBkb3Q7CisgICAgICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICAgICAg
ICAgIGRvdEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICpwb2ludGVyID0gemVybzsKKyAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgIG1h
eExpbWl0ID0gKGRvdEFscmVhZHlXcml0dGVuKSA/IG1heExpbWl0ICsgMSA6IG1heExpbWl0Owor
ICAgICAgICAgICAgaWYgKG1heExpbWl0ID09IHByZWNpc2lvbk9mUmVzdWx0TnVtYmVyKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG51bWJlck9mWmVyb3MgPiBwcmVjaXNpb25PZlJlc3VsdE51bWJl
ciArIDEgfHwgKG51bWJlck9mWmVyb3MgPT0gKHByZWNpc2lvbk9mUmVzdWx0TnVtYmVyICsgMSkg
JiYgc2lnbmlmaWNhbmRbMF0gPCAnNScpKSB7CisgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIg
PSAmbnVtYmVyWzFdOworICAgICAgICAgICAgICAgICAgICBwb2ludGVyWy0xXSA9ICcwJzsKKyAg
ICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAnOworCisgICAgICAgICAgICAgICAgICAg
IGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZU9mRmlyc3REaWdpdE9m
T3JpZ2luYWxOdW1iZXIgPSBmaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcigmbnVtYmVyWzBdLCB2
YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVu
ZCgmbnVtYmVyW3BsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0sIHN0cmxlbigmbnVt
YmVyW3BsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVt
YmVyT2ZaZXJvcyA9PSBwcmVjaXNpb25PZlJlc3VsdE51bWJlciArIDEgJiYgc2lnbmlmaWNhbmRb
MF0gPiAnNCcpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9pbnRlclstMV0gPSAnMSc7CisgICAg
ICAgICAgICAgICAgICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICBp
ZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VPZkZpcnN0RGlnaXRPZk9y
aWdpbmFsTnVtYmVyID0gZmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIoJm51bWJlclswXSwgdmFs
dWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQo
Jm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJsZW4oJm51bWJl
cltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplT2ZzaWduaWZpY2FuZDsgaSsrKSB7Cisg
ICAgICAgICAgICBpZiAoaSA9PSBwbGFjZU9mRG90ICsgMSAmJiBzaXplT2ZzaWduaWZpY2FuZCAh
PSBpICYmICFkb3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0g
ZG90OworICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICBkb3RBbHJl
YWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcG9pbnRlciA9
IHNpZ25pZmljYW5kW2ldOworICAgICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdyaXR0
ZW4pID8gbWF4TGltaXQgKyAxIDogbWF4TGltaXQ7CisgICAgICAgICAgICBpZiAobWF4TGltaXQg
PT0gcHJlY2lzaW9uT2ZSZXN1bHROdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSArIDEg
PCBzaXplT2ZNU2lnbmlmaWNhbmQgJiYgc2lnbmlmaWNhbmRbaSArIDFdIDwgJzUnKSB7CisgICAg
ICAgICAgICAgICAgICAgIHdoaWxlICgqcG9pbnRlciA9PSAnMCcgJiYgZG90QWxyZWFkeVdyaXR0
ZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICAgICAg
ICAgIGlmICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAqcG9pbnRl
ciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOworCisgICAg
ICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICBwbGFj
ZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIgPSBmaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJl
cigmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAgICAgICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXI6OmFwcGVuZCgmbnVtYmVyW3BsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJl
cl0sIHN0cmxlbigmbnVtYmVyW3BsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0pKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoc2lnbmlmaWNhbmRbaV0gPT0gJzknKSB7CisgICAgICAgICAgICAgICAgICAg
IHdoaWxlICgqcG9pbnRlciA9PSAnOScgJiYgKnBvaW50ZXIgIT0gZG90KQorICAgICAgICAgICAg
ICAgICAgICAgICAgcG9pbnRlci0tOworCisgICAgICAgICAgICAgICAgICAgIGlmICgqcG9pbnRl
ciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAg
ICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOworICAgICAgICAgICAgICAgICAgICBw
b2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGxhY2VPZkZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyID0g
Zmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKwor
ICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltwbGFjZU9m
Rmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJsZW4oJm51bWJlcltwbGFjZU9mRmlyc3RE
aWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsg
MTsKKyAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAg
IGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgIHBsYWNlT2ZGaXJzdERpZ2l0T2ZPcmln
aW5hbE51bWJlciA9IGZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKCZudW1iZXJbMF0sIHZhbHVl
T2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJl
cltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJsZW4oJm51bWJlcltwbGFj
ZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICB9CisgICAg
fQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGV4cG9uZW50IC0gc2l6ZU9mc2lnbmlmaWNhbmQp
ICsgMTsgaSsrKSB7CisgICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgcG9pbnRlcisr
OworICAgIH0KKworICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgIGlmICh0b1NoaWYpCisgICAg
ICAgIHBsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlciA9IGZpcnN0RGlnaXRPZk9yaWdp
bmFsTnVtYmVyKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisKKyAgICBTdHJpbmdCdWlsZGVy
OjphcHBlbmQoJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJs
ZW4oJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7Cit9CisKK3Zv
aWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGludCBuKQoreworICAgIGlmIChuIDwgMCkgeworICAg
ICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoIi0iLCAxKTsKKyAgICAgICAgbiA9IC1uOworICAg
IH0KKworICAgIGlmICghKG4gLyAxMCkpIHsKKyAgICAgICAgY2hhciBjID0gc3RhdGljX2Nhc3Q8
Y2hhcj4obiArICcwJyk7CisgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmYywgMSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZGlnaXRzT2ZOdW1iZXIgPSBzdGF0aWNf
Y2FzdDxpbnQ+KGxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4obikpICsgMSk7CisgICAgVmVjdG9y
PGNoYXIsIDMyPiBudW1iZXIoZGlnaXRzT2ZOdW1iZXIgKyAxKTsKKyAgICBjaGFyKiBwb2ludGVy
ID0gJm51bWJlcltkaWdpdHNPZk51bWJlcl07CisKKyAgICAqcG9pbnRlciA9ICdcMCc7CisgICAg
cG9pbnRlci0tOworICAgIGRvIHsKKyAgICAgICAgKnBvaW50ZXIgPSAobiAlIDEwKSArICcwJzsK
KyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBuIC89IDEwOworICAgIH0gd2hpbGUgKG4pOwor
ICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmbnVtYmVyWzBdLCBkaWdpdHNPZk51bWJlcik7Cit9
CisKIHZvaWQgU3RyaW5nQnVpbGRlcjo6c2hyaW5rVG9GaXQoKQogewogICAgIC8vIElmIHRoZSBi
dWZmZXIgaXMgYXQgbGVhc3QgODAlIGZ1bGwsIGRvbid0IGJvdGhlciBjb3B5aW5nLiBOZWVkIHRv
IHR1bmUgdGhpcyBoZXVyaXN0aWMhCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaAppbmRleCA1ZWRhYmVjLi42NTEwMmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgKQEAgLTc2LDYgKzc2LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIGFwcGVuZCgmYywgMSk7CiAgICAgfQogCisgICAgdm9pZCBh
cHBlbmQoZG91YmxlKTsKKworICAgIHZvaWQgYXBwZW5kKGludCk7CisKICAgICBTdHJpbmcgdG9T
dHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKG1fc3RyaW5nLmlzTnVsbCgpKSB7CkBAIC0xMzMs
NiArMTM3LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYWxsb2NhdGVCdWZmZXIodW5zaWduZWQg
cmVxdWlyZWRMZW5ndGgpOwogICAgIFVDaGFyKiBhcHBlbmRVbmluaXRpYWxpemVkKHVuc2lnbmVk
IGxlbmd0aCk7CiAgICAgdm9pZCByZWlmeVN0cmluZygpOworICAgIHN0YXRpYyB1bnNpZ25lZCBw
cmVjaXNpb25PZlJlc3VsdChpbnQsIHVuc2lnbmVkLCB1bnNpZ25lZCk7CisgICAgc3RhdGljIGlu
dCBmaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcihjaGFyKiwgaW50KTsKIAogICAgIHVuc2lnbmVk
IG1fbGVuZ3RoOwogICAgIFN0cmluZyBtX3N0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNDZmYzRiLi4y
ZTBhYzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMDMgIE9saXZlciBW
YXJnYSAgPHZvbGl2ZXJAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIEZpeCBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3NzVGV4dCgpIHRvIHVzZSBTdHJpbmdCdWlsZGVyLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBSZXBsYWNl
IHRoZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiAoKywgKz0sIGFuZCBWZWN0b3I8VWNoYXI+IGFwcGVu
ZCgpKQorICAgICAgICB0byB0aGUgbXVjaCBmYXN0ZXIgU3RyaW5nQnVpbGRlciBhcHBlbmQoKS4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcg
dGVzdHMgdGhpcyBpcyBvbmx5IGEgbWluaW1hbCBwZXJmb3JtYW5jZSB0d2Vhay4KKworICAgICAg
ICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisKIDIwMTEtMTEtMDIgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBDU1Agc2hvdWxkIGhhbmRsZSBlbXB0eSBVUkxzIGFzIGFn
cmVlZCBhdCBUUEFDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRl
eCA1ZjlhNmUxLi44NzE5MTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1
ZS5jcHAKQEAgLTY4MiwxNyArNjgyLDYgQEAgaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpnZXRJZGVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fdmFsdWUuaWRlbnQ7CiB9CiAKLXN0YXRpYyBTdHJpbmcg
Zm9ybWF0TnVtYmVyKGRvdWJsZSBudW1iZXIpCi17Ci0gICAgRGVjaW1hbE51bWJlciBkZWNpbWFs
KG51bWJlcik7Ci0KLSAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKGRlY2ltYWwuYnVmZmVyTGVuZ3Ro
Rm9yU3RyaW5nRGVjaW1hbCgpKTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBkZWNpbWFsLnRvU3Ry
aW5nRGVjaW1hbChidWZmZXIuY2hhcmFjdGVycygpLCBidWZmZXIubGVuZ3RoKCkpOwotICAgIEFT
U0VSVF9VTlVTRUQobGVuZ3RoLCBsZW5ndGggPT0gYnVmZmVyLmxlbmd0aCgpKTsKLQotICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7Ci19Ci0KIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHJldHVybiB0aGUgb3JpZ2luYWwg
dmFsdWUgaW5zdGVhZCBvZiBhIGdlbmVyYXRlZCBvbmUgKGUuZy4gY29sb3IKQEAgLTcwMyw4MCAr
NjkyLDEwMCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAg
ICAgICByZXR1cm4gY3NzVGV4dENhY2hlKCkuZ2V0KHRoaXMpOwogICAgIH0KIAotICAgIFN0cmlu
ZyB0ZXh0OworICAgIFN0cmluZ0J1aWxkZXIgdGV4dDsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewog
ICAgICAgICBjYXNlIENTU19VTktOT1dOOgogICAgICAgICAgICAgLy8gRklYTUUKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19OVU1CRVI6CiAgICAgICAgIGNhc2UgQ1NTX1BB
UlNFUl9JTlRFR0VSOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51
bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfUEVSQ0VOVEFHRToKLSAgICAgICAgICAgIHRleHQgPSBm
b3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIiUiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
bV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyUnKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU19FTVM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJlbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3Zh
bHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZW0iKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19FWFM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVt
YmVyKG1fdmFsdWUubnVtKSArICJleCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVl
Lm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZXgiKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19SRU1TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJl
cihtX3ZhbHVlLm51bSkgKyAicmVtIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJyZW0iKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19QWDoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIo
bV92YWx1ZS5udW0pICsgInB4IjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVt
KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJweCIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX0NNOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3Zh
bHVlLm51bSkgKyAiY20iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNtIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfTU06Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUu
bnVtKSArICJtbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgibW0iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19JTjoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
ICsgImluIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJpbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX1BUOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAi
cHQiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoInB0Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1Nf
UEM6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJwYyI7
CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0
LmFwcGVuZCgicGMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ERUc6
Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJkZWciOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImRlZyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JBRDoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInJhZCI7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgicmFkIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfR1JBRDoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImdyYWQiOwor
ICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5h
cHBlbmQoImdyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19NUzoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgIm1zIjsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJtcyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1M6Ci0gICAg
ICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJzIjsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCdz
Jyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSFo6Ci0gICAgICAgICAg
ICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJoeiI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiaHoiKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19LSFo6Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJraHoiOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImtoeiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1RVUk46Ci0gICAgICAgICAgICB0
ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJ0dXJuIjsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJ0dXJuIik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfRElNRU5TSU9OOgogICAgICAg
ICAgICAgLy8gRklYTUUKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19TVFJJ
Tkc6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
dmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVVJJ
OgotICAgICAgICAgICAgdGV4dCA9ICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1
ZS5zdHJpbmcpICsgIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInVybCgiKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTVVJMSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsK
KyAgICAgICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBDU1NfSURFTlQ6Ci0gICAgICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFt
ZShtX3ZhbHVlLmlkZW50KTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHZhbHVlT3JQcm9wZXJ0
eU5hbWUobV92YWx1ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTX0FUVFI6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBhdHRyUGFyZW4sICgiYXR0cigiKSk7CkBAIC03ODgsMTMgKzc5NywxMyBAQCBTdHJpbmcgQ1NT
UHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgcmVzdWx0LmFwcGVu
ZChtX3ZhbHVlLnN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAKLSAg
ICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTX0NPVU5URVJfTkFNRToKLSAgICAgICAgICAgIHRleHQgPSAiY291bnRl
cigiOwotICAgICAgICAgICAgdGV4dCArPSBtX3ZhbHVlLnN0cmluZzsKLSAgICAgICAgICAgIHRl
eHQgKz0gIikiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImNvdW50ZXIoIik7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgnKScpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0NPVU5URVI6IHsK
ICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBjb3VudGVyUGFy
ZW4sICgiY291bnRlcigiKSk7CkBAIC04MTYsOCArODI1LDcgQEAgU3RyaW5nIENTU1ByaW1pdGl2
ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxp
c3RTdHlsZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7
Ci0KLSAgICAgICAgICAgIHRleHQgPSByZXN1bHQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHRl
eHQuYXBwZW5kKHJlc3VsdC50b1N0cmluZygpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ1NTX1JFQ1Q6IHsKQEAgLTg0MCwyNyArODQ4LDI3IEBAIFN0cmlu
ZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICByZXN1bHQu
YXBwZW5kKHJlY3RWYWwtPmxlZnQoKS0+Y3NzVGV4dCgpKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUVVBRDogewogICAgICAgICAgICAgUXVh
ZCogcXVhZFZhbCA9IGdldFF1YWRWYWx1ZSgpOwotICAgICAgICAgICAgVmVjdG9yPFVDaGFyPiBy
ZXN1bHQ7Ci0gICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSgzMik7Ci0g
ICAgICAgICAgICBhcHBlbmQocmVzdWx0LCBxdWFkVmFsLT50b3AoKS0+Y3NzVGV4dCgpKTsKKyAg
ICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0LnJlc2Vy
dmVDYXBhY2l0eSgzMik7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnRvcCgp
LT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgaWYgKHF1YWRWYWwtPnJpZ2h0KCkgIT0gcXVhZFZh
bC0+dG9wKCkgfHwgcXVhZFZhbC0+Ym90dG9tKCkgIT0gcXVhZFZhbC0+dG9wKCkgfHwgcXVhZFZh
bC0+bGVmdCgpICE9IHF1YWRWYWwtPnRvcCgpKSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnICcpOwotICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPnJpZ2h0
KCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5y
aWdodCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgIGlmIChxdWFkVmFsLT5ib3R0b20o
KSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5yaWdodCgpICE9IHF1YWRWYWwtPmxlZnQo
KSkgewogICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAg
ICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NUZXh0KCkpOwor
ICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPmJvdHRvbSgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAocXVhZFZhbC0+bGVmdCgpICE9IHF1YWRW
YWwtPnJpZ2h0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAn
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1YWRWYWwtPmxlZnQo
KS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocXVh
ZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGV4dCA9IFN0cmluZzo6YWRv
cHQocmVzdWx0KTsKKyAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6
CkBAIC04OTQsMTQgKzkwMiwxNCBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQo
KSBjb25zdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7
Ci0gICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAg
dGV4dC5hcHBlbmQoU3RyaW5nOjphZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92
YWx1ZS5wYWlyLT5maXJzdCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCht
X3ZhbHVlLnBhaXItPmZpcnN0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1
ZS5wYWlyLT5zZWNvbmQoKSAhPSBtX3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAg
ICAgICB0ZXh0ICs9ICIgIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+
c2Vjb25kKCktPmNzc1RleHQoKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwor
ICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1Rl
eHQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCkBAIC05MDksMTIgKzkxNywxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZl
VmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24q
IHJlZ2lvbiA9IGdldERhc2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVn
aW9uLT5tX25leHQuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgp
KQogICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAg
IHRleHQgKz0gImRhc2hib2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJl
Z2lvbi0+bV9sYWJlbDsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJl
Z2lvbigiKTsKKyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwog
ICAgICAgICAgICAgICAgIGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAg
ICAgIHRleHQgKz0gIiBjaXJjbGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgi
IGNpcmNsZSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3Rhbmds
ZSkKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAg
ICAgICAgICAgIHRleHQuYXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9u
LT50b3AoKS0+bV90eXBlID09IENTU19JREVOVCAmJiByZWdpb24tPnRvcCgpLT5nZXRJZGVudCgp
ID09IENTU1ZhbHVlSW52YWxpZCkgewpAQCAtOTI2LDMyICs5MzQsMzUgQEAgU3RyaW5nIENTU1By
aW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlZ2lvbi0+bGVmdCgpLT5nZXRJZGVudCgpID09IENTU1ZhbHVlSW52YWxpZCk7CiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsK
LSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24tPnRvcCgpLT5jc3NUZXh0KCkgKyAi
ICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5yaWdodCgpLT5jc3NUZXh0
KCkgKyAiICI7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT5ib3R0b20oKS0+
Y3NzVGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bGVm
dCgpLT5jc3NUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+
dG9wKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7
CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+cmlnaHQoKS0+Y3NzVGV4
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGV4dC5hcHBlbmQocmVnaW9uLT5ib3R0b20oKS0+Y3NzVGV4dCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4
dC5hcHBlbmQocmVnaW9uLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIHRleHQgKz0gIikiOworICAgICAgICAgICAgICAgIHRleHQuYXBwZW5k
KCcpJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAg
ICBjYXNlIENTU19QQVJTRVJfT1BFUkFUT1I6IHsKLSAgICAgICAgICAgIGNoYXIgYyA9IHN0YXRp
Y19jYXN0PGNoYXI+KG1fdmFsdWUuaWRlbnQpOwotICAgICAgICAgICAgdGV4dCA9IFN0cmluZygm
YywgMVUpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoc3RhdGljX2Nhc3Q8Y2hhcj4obV92YWx1
ZS5pZGVudCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NfUEFSU0VSX0lERU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJ
Zk5lZWRlZChtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChxdW90ZUNT
U1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfU0hBUEU6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5zaGFwZS0+
Y3NzVGV4dCgpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5zaGFwZS0+Y3NzVGV4
dCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIFN0cmluZyByZXN1bHRPZlRl
eHQgPSB0ZXh0LnRvU3RyaW5nKCk7CiAgICAgQVNTRVJUKCFjc3NUZXh0Q2FjaGUoKS5jb250YWlu
cyh0aGlzKSk7Ci0gICAgY3NzVGV4dENhY2hlKCkuc2V0KHRoaXMsIHRleHQpOworICAgIGNzc1Rl
eHRDYWNoZSgpLnNldCh0aGlzLCByZXN1bHRPZlRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4
dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdE9mVGV4dDsKIH0K
IAogdm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhh
c2hTZXQ8S1VSTD4mIHVybHMsIGNvbnN0IENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCg==
</data>
<flag name="review"
          id="111855"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="111856"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121666</attachid>
            <date>2012-01-09 07:00:27 -0800</date>
            <delta_ts>2012-02-25 13:00:34 -0800</delta_ts>
            <desc>Correcting v2</desc>
            <filename>0001-Source-JavaScriptCore-Added-a-new-class-NumericForma.patch</filename>
            <type>text/plain</type>
            <size>29760</size>
            <attacher name="Szilard Ledan">szledan</attacher>
            
              <data encoding="base64">RnJvbSA5NGU4OWFlNmM3N2UyODBmMjUwMjY4YmMyZjViYjVhNDBiMWI5Zjg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTemlsYXJkIExlZGFuIDxMZWRhbi1NdW50ZWFuLlN6aWxhcmRA
c3R1ZC51LXN6ZWdlZC5odT4KRGF0ZTogTW9uLCA5IEphbiAyMDEyIDA2OjQwOjAxIC0wODAwClN1
YmplY3Q6IFtQQVRDSF0gU291cmNlL0phdmFTY3JpcHRDb3JlOiBBZGRlZCBhIG5ldyBjbGFzczog
TnVtZXJpY0Zvcm1hdHRpbmcuCiBUaGUgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGRvdWJsZSkgZnVu
Y3Rpb24gdXNlcyBpdC4KIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
Njg1MQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIHd0Zi90ZXh0L051bWVyaWNGb3Jt
YXR0aW5nLmNwcDogQWRkZWQuCihXVEY6Ok51bWVyaWNGb3JtYXR0aW5nOjpwcmVjaXNpb25PZlJl
c3VsdCk6CihXVEY6Ok51bWVyaWNGb3JtYXR0aW5nOjpmaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJl
cik6Ciogd3RmL3RleHQvTnVtZXJpY0Zvcm1hdHRpbmcuaDogQWRkZWQuCiogd3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5jcHA6CihXVEY6OlN0cmluZ0J1aWxkZXI6OmFwcGVuZCk6Ciogd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oOgoqIHd0Zi93dGYucHJvOgoKU291cmNlL1dlYkNvcmU6IENoYW5nZWQg
dGhlIHN0cmluZyB0byBTdHJpbmdCdWlsZGVyIGluIGN1c3RvbUNzc1RleHQgZnVuY3Rpb24uIFRo
aXMKZnVuY3Rpb24gdXNlcyB0aGUgU3RyaW5nQnVpbGRlcidzIGFwcGVuZChkb3VibGUpIG1ldGhv
ZC4KaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2ODUxCgpObyBuZXcg
dGVzdHMuIChPT1BTISkKCiogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KToKLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAgMTcgKysKIC4uLi9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9OdW1lcmljRm9ybWF0dGluZy5jcHAgIHwgICA5MyArKysrKysrKysKIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9OdW1lcmljRm9ybWF0dGluZy5oIHwgICA1MCAr
KysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwICAg
fCAgMjEwICsrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oICAgICB8ICAgIDQgKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi93dGYucHJvICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTEgKwogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCAgICAgICAgICAgfCAgMTQwICsrKysrKysrLS0tLS0t
CiA4IGZpbGVzIGNoYW5nZWQsIDQ3MCBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKIGNy
ZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvTnVtZXJpY0Zv
cm1hdHRpbmcuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L051bWVyaWNGb3JtYXR0aW5nLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
NDMwODhiLi4wMjY0YzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBA
QAorMjAxMi0wMS0wOSAgU3ppbGFyZCBMZWRhbiAgPExlZGFuLU11bnRlYW4uU3ppbGFyZEBzdHVk
LnUtc3plZ2VkLmh1PgorCisgICAgICAgIEFkZGVkIGEgbmV3IGNsYXNzOiBOdW1lcmljRm9ybWF0
dGluZy4gVGhlIFN0cmluZ0J1aWxkZXI6OmFwcGVuZChkb3VibGUpCisgICAgICAgIGZ1bmN0aW9u
IHVzZXMgaXQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njg1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd3RmL3RleHQvTnVtZXJpY0Zvcm1hdHRpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
TnVtZXJpY0Zvcm1hdHRpbmc6OnByZWNpc2lvbk9mUmVzdWx0KToKKyAgICAgICAgKFdURjo6TnVt
ZXJpY0Zvcm1hdHRpbmc6OmZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKToKKyAgICAgICAgKiB3
dGYvdGV4dC9OdW1lcmljRm9ybWF0dGluZy5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nQnVpbGRlcjo6YXBwZW5kKToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgICogd3RmL3d0Zi5w
cm86CisKIDIwMTItMDEtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBERkc6IFRoZSBhc3NlcnRpb24gdGhhdCBhIGRvdWJsZS12b3RlZCB2YXJpYWJsZSBjYW5u
b3QgYmVjb21lIGRvdWJsZS11bnZvdGVkIGlzIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvTnVtZXJpY0Zvcm1hdHRpbmcuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L051bWVyaWNGb3JtYXR0aW5nLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4yYjNlNWUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L051bWVyaWNGb3JtYXR0aW5nLmNwcApAQCAtMCwwICsxLDkz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIFVuaXZlcnNpdHkgb2YgU3plZ2VkCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgT2xpdmVyIFZhcmdhCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU3pp
bGFyZCBMZWRhbgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VU5JVkVSU0lUWSBPRiBTWkVHRUQgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBV
TklWRVJTSVRZIE9GIFNaRUdFRCBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOdW1lcmlj
Rm9ybWF0dGluZy5oIgorCituYW1lc3BhY2UgV1RGIHsKKworLy8gSXQgaXMgdXNlZCBieSBhcHBl
bmQoZG91YmxlKS4gUmV0dXJuIHRoZSBwcmVjaXNpb24gb2YgdGhlIHRoZSByZXN1bHQgbnVtYmVy
LgordW5zaWduZWQgTnVtZXJpY0Zvcm1hdHRpbmc6OnByZWNpc2lvbk9mUmVzdWx0KGludCBleHBv
bmVudCwgdW5zaWduZWQgcHJlY2lzaW9uLCB1bnNpZ25lZCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9p
bnQpCit7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKKworICAgIGlmIChleHBvbmVudCA8IDAp
IHsKKyAgICAgICAgbGVuZ3RoICs9IC1leHBvbmVudCAtIDE7CisgICAgICAgIGxlbmd0aCArPSBw
cmVjaXNpb247CisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgaWYgKHByZWNp
c2lvbiA8PSBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgbGVuZ3RoICs9IHByZWNpc2lvbiAtIGRpZ2l0c0JlZm9yZURlY2ltYWxQb2ludDsKKworICAg
IHJldHVybiBsZW5ndGg7Cit9CisKKy8vIEl0IGlzIHVzZWQgYnkgYXBwZW5kKGRvdWJsZSkuIElm
IHRoZSBpbnB1dCBudW1iZXIgaXMgbGlrZSAnOTk5Ljk5OScsIGFuZCB0aGUKKy8vIHZhbHVlIG9m
IHRoZSByb3VuZGluZyBpcyAwIHdlIGhhdmUgdG8gbW92ZSBmb3J3YXJkIHRoZSBjYXJyeSBvdmVy
IHRoZSBkZWNpbWFsCisvLyBwb2ludC4gVGhpcyBraW5kIG9mIHJvdW5kaW5nIGltcGxlbWVudGVk
IHRoZSBudW1iZXIgbGVzcyB0aGVuIDEgYW5kIG1vcmUgdGhhbiAwLAorLy8gYW5kIGJlZm9yZSB0
aGUgcm91bmRpbmcgd2UgY29udmVydCAnOTk5Ljk5OScgdG8gJzAuOTk5OTk5Jy4KKy8vIFRoZSBm
aXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcigpIGhlbHBzIGdldCB0aGUgcmVhbCBudW1iZXIgYmFj
ay4KK2ludCBOdW1lcmljRm9ybWF0dGluZzo6Zmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIoY2hh
ciogbnVtYmVyLCBpbnQgbWVhc3VyZW1lbnRPZlNoaWZ0KQoreworICAgIC8vICNzaGlmdAorICAg
IGludCBwID0gMTsKKyAgICB3aGlsZSAobnVtYmVyW3AgKyAxXSAhPSAnXDAnICYmIHAgPD0gbWVh
c3VyZW1lbnRPZlNoaWZ0ICYmIG51bWJlclsxXSAhPSAnXDAnKSB7CisgICAgICAgIG51bWJlcltw
XSA9IG51bWJlcltwICsgMV07CisgICAgICAgIG51bWJlcltwICsgMV0gPSAnLic7CisgICAgICAg
IHArKzsKKyAgICB9CisKKyAgICAvLyAjZmlsbDAKKyAgICB3aGlsZSAocCA8PSBtZWFzdXJlbWVu
dE9mU2hpZnQpIHsKKyAgICAgICAgbnVtYmVyW3BdID0gJzAnOworICAgICAgICBudW1iZXJbcCAr
IDFdID0gJy4nOworICAgICAgICBudW1iZXJbcCArIDJdID0gMDsKKyAgICAgICAgcCsrOworICAg
IH0KKworICAgIC8vIGNoZWNrJnNldAorICAgIGNvbnN0IGludCBsZW5ndGggPSBzdHJsZW4obnVt
YmVyKTsKKyAgICBmb3IgKGludCBpID0gbGVuZ3RoIC0gMTsgaSA+PSBwICYmIChudW1iZXJbaV0g
PT0gJzAnIHx8IG51bWJlcltpXSA9PSAnLicpOyAtLWkpCisgICAgICAgIG51bWJlcltpXSA9IDA7
CisKKyAgICAvLyBza2lwCisgICAgaWYgKG51bWJlclswXSA9PSAnMCcgJiYgbnVtYmVyWzFdID09
ICcwJykKKyAgICAgICAgcmV0dXJuIDI7CisKKyAgICBpZiAobnVtYmVyWzBdID09ICcwJyAmJiBu
dW1iZXJbMV0gIT0gJy4nKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmIChudW1iZXJbMF0g
IT0gJzAnKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAyOworfQorCit9IC8vIG5h
bWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9O
dW1lcmljRm9ybWF0dGluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L051bWVy
aWNGb3JtYXR0aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0YTcw
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9OdW1l
cmljRm9ybWF0dGluZy5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyAqIENvcHlyaWdodCAoQykgMjAxMSBPbGl2ZXIgVmFy
Z2EKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTemlsYXJkIExlZGFuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBVTklWRVJTSVRZIE9GIFNaRUdFRCBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFVOSVZFUlNJVFkgT0YgU1pFR0VEIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
VEZfTnVtZXJpY0Zvcm1hdHRpbmdfaAorI2RlZmluZSBXVEZfTnVtZXJpY0Zvcm1hdHRpbmdfaAor
CisjaW5jbHVkZSAic3RyaW5nLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBOdW1lcmlj
Rm9ybWF0dGluZyB7CitwdWJsaWM6CisgICAgLy8gSXMgaXMgdXNlZCBieSBhcHBlbmQoZG91Ymxl
KS4gUmV0dXJuIHRoZSBwcmVjaXNpb24gb2YgdGhlIHRoZSByZXN1bHQgbnVtYmVyLgorICAgIHVu
c2lnbmVkIHByZWNpc2lvbk9mUmVzdWx0KGludCBleHBvbmVudCwgdW5zaWduZWQgcHJlY2lzaW9u
LCB1bnNpZ25lZCBkaWdpdHNCZWZvcmVEZWNpbWFsUG9pbnQpOworCisgICAgLy8gSXMgaXMgdXNl
ZCBieSBhcHBlbmQoZG91YmxlKS4gSWYgdGhlIGlucHV0IG51bWJlciBpcyBsaWtlICc5OTkuOTk5
JywgYW5kIHRoZSB2YWx1ZSBvZiB0aGUgcm91bmRpbmcgaXMgMCB3ZSBoYXZlIHRvIG1vdmUgZm9y
d2FyZCB0aGUgY2FycnkKKyAgICAvLyBvdmVyIHRoZSBkZWNpbWFsIHBvaW50LiBUaGlzIGtpbmQg
b2Ygcm91bmRpbmcgaW1wbGVtZW50ZWQgdGhlIG51bWJlciBsZXNzIHRoZW4gMSBhbmQgbW9yZSB0
aGFuIDAsIGFuZCBiZWZvcmUgdGhlIHJvdW5kaW5nIHdlIGNvbnZlcnQgJzk5OS45OTknCisgICAg
Ly8gdG8gJzAuOTk5OTk5Jy4gVGhlIGZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKCkgaGVscHMg
Z2V0IHRoZSByZWFsIG51bWJlciBiYWNrLgorICAgIGludCBmaXJzdERpZ2l0T2ZPcmlnaW5hbE51
bWJlcihjaGFyKiBudW1iZXJUb1NoaWZ0aW5nLCBpbnQgbWVhc3VyZW1lbnRPZlNoaWZ0KTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6Ok51bWVyaWNGb3JtYXR0aW5nOwor
CisjZW5kaWYgLy8gV1RGX051bWVyaWNGb3JtYXR0aW5nX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcAppbmRleCA2ZDNjMzEwLi45ZGU1Mjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
Y3BwCkBAIC0yNSw5ICsyNSwxNCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U3RyaW5nQnVpbGRlci5oIgorI2luY2x1ZGUgIk51bWVyaWNGb3JtYXR0aW5nLmgiCisjaW5jbHVk
ZSA8d3RmL01hdGhFeHRyYXMuaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5oPgogCiAjaW5jbHVkZSAi
V1RGU3RyaW5nLmgiCiAKKyNpbmNsdWRlIDxzdGRpby5oPgorCiBuYW1lc3BhY2UgV1RGIHsKIAog
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1pbmltdW1DYXBhY2l0eSA9IDE2OwpAQCAtMjg1LDYgKzI5
MCwyMTEgQEAgdm9pZCBTdHJpbmdCdWlsZGVyOjphcHBlbmQoY29uc3QgTENoYXIqIGNoYXJhY3Rl
cnMsIHVuc2lnbmVkIGxlbmd0aCkKICAgICB9CiB9CiAKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBw
ZW5kKGRvdWJsZSBkKQoreworICAgIGJvb2wgc2lnbjsKKyAgICBpbnQgZXhwb25lbnQ7CisgICAg
RHRvYUJ1ZmZlciBzaWduaWZpY2FuZDsKKyAgICB1bnNpZ25lZCBwcmVjaXNpb247CisgICAgTnVt
ZXJpY0Zvcm1hdHRpbmcgbnVtZXJpY0Zvcm1hdHRpbmc7CisKKyAgICBpZiAoZCA8IDApIHsKKyAg
ICAgICAgZCA9IC1kOworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoIi0iLCAxKTsKKyAg
ICB9CisKKyAgICBBU1NFUlQoaXNmaW5pdGUoZCkpOworICAgIGR0b2Eoc2lnbmlmaWNhbmQsIGQs
IHNpZ24sIGV4cG9uZW50LCBwcmVjaXNpb24pOworCisgICAgQVNTRVJUKHByZWNpc2lvbik7Cisg
ICAgLy8gWmVybyBzaG91bGQgYWx3YXlzIGhhdmUgZXhwb25lbnQgMC4KKyAgICBBU1NFUlQoc2ln
bmlmaWNhbmRbMF0gIT0gJzAnIHx8ICFleHBvbmVudCk7CisgICAgLy8gTm8gdmFsdWVzIG90aGVy
IHRoYW4gemVybyBzaG91bGQgaGF2ZSBhIGxlYWRpbmcgemVyby4KKyAgICBBU1NFUlQoc2lnbmlm
aWNhbmRbMF0gIT0gJzAnIHx8IHByZWNpc2lvbiA9PSAxKTsKKyAgICAvLyBObyB2YWx1ZXMgb3Ro
ZXIgdGhhbiB6ZXJvIHNob3VsZCBoYXZlIHRyYWlsaW5nIHplcm9zLgorICAgIEFTU0VSVChzaWdu
aWZpY2FuZFswXSA9PSAnMCcgfHwgc2lnbmlmaWNhbmRbcHJlY2lzaW9uIC0gMV0gIT0gJzAnKTsK
KworICAgIHByaW50ZigiZGVidWc6IGV4cG9uZW50OiVkIHByZWNpc2lvbjolZFxuIiwgZXhwb25l
bnQsIHByZWNpc2lvbik7CisKKyAgICBjaGFyIHplcm8gPSAnMCc7CisgICAgY2hhciBkb3QgPSAn
Lic7CisKKyAgICBpbnQgYWJzb2x1dGVFeHAgPSAoZXhwb25lbnQgPCAwKSA/IGV4cG9uZW50ICog
LTEgOiBleHBvbmVudDsKKyAgICBpbnQgc2l6ZU9mc2lnbmlmaWNhbmQgPSBzdHJsZW4oc2lnbmlm
aWNhbmQpOworICAgIFZlY3RvcjxjaGFyLCAzMj4gbnVtYmVyKGFic29sdXRlRXhwICsgc2l6ZU9m
c2lnbmlmaWNhbmQgKyAzKTsKKyAgICBjaGFyKiBwb2ludGVyID0gJm51bWJlclswXTsKKyAgICBp
bnQgc2l6ZU9mTVNpZ25pZmljYW5kID0gc2l6ZW9mKHNpZ25pZmljYW5kKTsKKyAgICBpbnQgZGln
aXRzQmVmb3JlRGVjaW1hbFBvaW50ID0gZXhwb25lbnQgKyAxOworCisgICAgaW50IHByZWNpc2lv
bk9mUmVzdWx0TnVtYmVyID0gbnVtZXJpY0Zvcm1hdHRpbmcucHJlY2lzaW9uT2ZSZXN1bHQoZXhw
b25lbnQsIHByZWNpc2lvbiwgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50KTsKKworICAgIGJvb2wg
ZG90QWxyZWFkeVdyaXR0ZW4gPSBmYWxzZTsKKyAgICBpbnQgbWF4TGltaXQgPSAwOworICAgIGlu
dCBwbGFjZU9mRG90ID0gZXhwb25lbnQ7CisgICAgaW50IG51bWJlck9mWmVyb3MgPSAoZXhwb25l
bnQgPiAwKSA/IDAgOiAtZXhwb25lbnQ7CisKKyAgICBib29sIGp1bXAgPSBmYWxzZTsKKyAgICBi
b29sIHRvU2hpZiA9IGZhbHNlOworICAgIGludCBwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxO
dW1iZXIgPSAwOworICAgIGludCB2YWx1ZU9mU2hpZnQgPSAwOworCisgICAgaWYgKCFwcmVjaXNp
b25PZlJlc3VsdE51bWJlcikgeworICAgICAgICBpZiAoZXhwb25lbnQgPCAwKSB7CisgICAgICAg
ICAgICBzaWduaWZpY2FuZFsyXSA9IHNpZ25pZmljYW5kWzFdOworICAgICAgICAgICAgc2lnbmlm
aWNhbmRbMV0gPSBzaWduaWZpY2FuZFswXTsKKyAgICAgICAgICAgIHNpZ25pZmljYW5kWzBdID0g
JzAnOworICAgICAgICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbFBvaW50ID0gMTsKKyAgICAgICAg
fQorCisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCBkaWdpdHNCZWZvcmVE
ZWNpbWFsUG9pbnQgJiYgaSA8IHNpemVPZnNpZ25pZmljYW5kOyArK2kpIHsKKyAgICAgICAgICAg
ICpwb2ludGVyID0gc2lnbmlmaWNhbmRbaV07CisgICAgICAgICAgICBwb2ludGVyKys7CisgICAg
ICAgIH0KKworICAgICAgICBpZiAoc2lnbmlmaWNhbmRbaV0gPiAnNCcpIHsKKyAgICAgICAgICAg
IHRvU2hpZiA9IHRydWU7CisgICAgICAgICAgICBqdW1wID0gdHJ1ZTsKKyAgICAgICAgICAgIGRv
dEFscmVhZHlXcml0dGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHBsYWNlT2ZEb3QgPSAxOworICAg
ICAgICAgICAgcHJlY2lzaW9uT2ZSZXN1bHROdW1iZXIgKz0gZGlnaXRzQmVmb3JlRGVjaW1hbFBv
aW50OworICAgICAgICAgICAgcG9pbnRlciA9ICZudW1iZXJbMF07CisgICAgICAgICAgICAqcG9p
bnRlciA9ICcwJzsKKyAgICAgICAgICAgIHBvaW50ZXJbMV0gPSBkb3Q7CisgICAgICAgICAgICBw
b2ludGVyICs9IDI7CisgICAgICAgICAgICB2YWx1ZU9mU2hpZnQgPSBkaWdpdHNCZWZvcmVEZWNp
bWFsUG9pbnQ7CisgICAgICAgICAgICBpZiAoc2lnbmlmaWNhbmRbMF0gPT0gJzAnKSB7CisgICAg
ICAgICAgICAgICAgbWF4TGltaXQtLTsKKyAgICAgICAgICAgICAgICB2YWx1ZU9mU2hpZnQrKzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBqdW1wID0gdHJ1
ZTsKKworICAgIGlmIChqdW1wKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVy
T2ZaZXJvczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSA9PSAxICYmICFkb3RBbHJlYWR5V3Jp
dHRlbikgeworICAgICAgICAgICAgICAgICpwb2ludGVyID0gZG90OworICAgICAgICAgICAgICAg
IHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICBkb3RBbHJlYWR5V3JpdHRlbiA9IHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAqcG9pbnRlciA9IHplcm87CisgICAgICAgICAgICBw
b2ludGVyKys7CisgICAgICAgICAgICBtYXhMaW1pdCA9IChkb3RBbHJlYWR5V3JpdHRlbikgPyBt
YXhMaW1pdCArIDEgOiBtYXhMaW1pdDsKKyAgICAgICAgICAgaWYgKG1heExpbWl0ID09IHByZWNp
c2lvbk9mUmVzdWx0TnVtYmVyKSB7CisgICAgICAgICAgICAgICAgaWYgKG51bWJlck9mWmVyb3Mg
PiBwcmVjaXNpb25PZlJlc3VsdE51bWJlciArIDEgfHwgKG51bWJlck9mWmVyb3MgPT0gKHByZWNp
c2lvbk9mUmVzdWx0TnVtYmVyICsgMSkgJiYgc2lnbmlmaWNhbmRbMF0gPCAnNScpKSB7CisgICAg
ICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAmbnVtYmVyWzFdOworICAgICAgICAgICAgICAgICAg
ICBwb2ludGVyWy0xXSA9ICcwJzsKKyAgICAgICAgICAgICAgICAgICAgKnBvaW50ZXIgPSAnXDAn
OworCisgICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAg
ICAgICBwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIgPSBudW1lcmljRm9ybWF0dGlu
Zy5maXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcigmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOwor
CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmbnVtYmVyW3BsYWNl
T2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0sIHN0cmxlbigmbnVtYmVyW3BsYWNlT2ZGaXJz
dERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobnVtYmVyT2ZaZXJvcyA9PSBw
cmVjaXNpb25PZlJlc3VsdE51bWJlciArIDEgJiYgc2lnbmlmaWNhbmRbMF0gPiAnNCcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcG9pbnRlclstMV0gPSAnMSc7CisgICAgICAgICAgICAgICAgICAg
ICpwb2ludGVyID0gJ1wwJzsKKworICAgICAgICAgICAgICAgICAgICBpZiAodG9TaGlmKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGxhY2VPZkZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyID0g
bnVtZXJpY0Zvcm1hdHRpbmcuZmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIoJm51bWJlclswXSwg
dmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBl
bmQoJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJsZW4oJm51
bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplT2ZzaWduaWZpY2FuZDsgaSsrKSB7
CisgICAgICAgICAgICBpZiAoaSA9PSBwbGFjZU9mRG90ICsgMSAmJiBzaXplT2ZzaWduaWZpY2Fu
ZCAhPSBpICYmICFkb3RBbHJlYWR5V3JpdHRlbikgeworICAgICAgICAgICAgICAgICpwb2ludGVy
ID0gZG90OworICAgICAgICAgICAgICAgIHBvaW50ZXIrKzsKKyAgICAgICAgICAgICAgICBkb3RB
bHJlYWR5V3JpdHRlbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcG9pbnRl
ciA9IHNpZ25pZmljYW5kW2ldOworICAgICAgICAgICAgbWF4TGltaXQgPSAoZG90QWxyZWFkeVdy
aXR0ZW4pID8gbWF4TGltaXQgKyAxIDogbWF4TGltaXQ7CisgICAgICAgICAgICBpZiAobWF4TGlt
aXQgPT0gcHJlY2lzaW9uT2ZSZXN1bHROdW1iZXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSAr
IDEgPCBzaXplT2ZNU2lnbmlmaWNhbmQgJiYgc2lnbmlmaWNhbmRbaSArIDFdIDwgJzUnKSB7Cisg
ICAgICAgICAgICAgICAgICAgIHdoaWxlICgqcG9pbnRlciA9PSAnMCcgJiYgZG90QWxyZWFkeVdy
aXR0ZW4pCisgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyLS07CisgICAgICAgICAgICAg
ICAgICAgIGlmICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICAqcG9p
bnRlciA9ICdcMCc7CisgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJbMV0gPSAnXDAnOworCisg
ICAgICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAgICAgICAgICAgICAgICAgICAgICBw
bGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXIgPSBudW1lcmljRm9ybWF0dGluZy5maXJz
dERpZ2l0T2ZPcmlnaW5hbE51bWJlcigmbnVtYmVyWzBdLCB2YWx1ZU9mU2hpZnQpOworCisgICAg
ICAgICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmbnVtYmVyW3BsYWNlT2ZGaXJz
dERpZ2l0T2ZPcmlnaW5hbE51bWJlcl0sIHN0cmxlbigmbnVtYmVyW3BsYWNlT2ZGaXJzdERpZ2l0
T2ZPcmlnaW5hbE51bWJlcl0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2lnbmlmaWNhbmRbaV0gPT0gJzknKSB7
CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgqcG9pbnRlciA9PSAnOScgJiYgKnBvaW50ZXIg
IT0gZG90KQorICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci0tOworCisgICAgICAgICAg
ICAgICAgICAgIGlmICgqcG9pbnRlciA9PSBkb3QpCisgICAgICAgICAgICAgICAgICAgICAgICBw
b2ludGVyLS07CisgICAgICAgICAgICAgICAgICAgICpwb2ludGVyID0gKnBvaW50ZXIgKyAxOwor
ICAgICAgICAgICAgICAgICAgICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAodG9TaGlmKQorICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VPZkZpcnN0RGln
aXRPZk9yaWdpbmFsTnVtYmVyID0gbnVtZXJpY0Zvcm1hdHRpbmcuZmlyc3REaWdpdE9mT3JpZ2lu
YWxOdW1iZXIoJm51bWJlclswXSwgdmFsdWVPZlNoaWZ0KTsKKworICAgICAgICAgICAgICAgICAg
ICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2lu
YWxOdW1iZXJdLCBzdHJsZW4oJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1i
ZXJdKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAqcG9pbnRlciA9ICpwb2ludGVyICsgMTsKKyAgICAgICAgICAgICAg
ICBwb2ludGVyWzFdID0gJ1wwJzsKKworICAgICAgICAgICAgICAgIGlmICh0b1NoaWYpCisgICAg
ICAgICAgICAgICAgICAgIHBsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlciA9IG51bWVy
aWNGb3JtYXR0aW5nLmZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKCZudW1iZXJbMF0sIHZhbHVl
T2ZTaGlmdCk7CisKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJl
cltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdLCBzdHJsZW4oJm51bWJlcltwbGFj
ZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxOdW1iZXJdKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9pbnRlcisrOworICAgICAgICB9CisgICAg
fQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGV4cG9uZW50IC0gc2l6ZU9mc2lnbmlmaWNhbmQp
ICsgMTsgaSsrKSB7CisgICAgICAgICpwb2ludGVyID0gemVybzsKKyAgICAgICAgcG9pbnRlcisr
OworICAgIH0KKworICAgICpwb2ludGVyID0gJ1wwJzsKKworICAgIGlmICh0b1NoaWYpCisgICAg
ICAgIHBsYWNlT2ZGaXJzdERpZ2l0T2ZPcmlnaW5hbE51bWJlciA9IG51bWVyaWNGb3JtYXR0aW5n
LmZpcnN0RGlnaXRPZk9yaWdpbmFsTnVtYmVyKCZudW1iZXJbMF0sIHZhbHVlT2ZTaGlmdCk7CisK
KyAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3Jp
Z2luYWxOdW1iZXJdLCBzdHJsZW4oJm51bWJlcltwbGFjZU9mRmlyc3REaWdpdE9mT3JpZ2luYWxO
dW1iZXJdKSk7Cit9CisKK3ZvaWQgU3RyaW5nQnVpbGRlcjo6YXBwZW5kKGludCBuKQoreworICAg
IGlmIChuIDwgMCkgeworICAgICAgICBTdHJpbmdCdWlsZGVyOjphcHBlbmQoIi0iLCAxKTsKKyAg
ICAgICAgbiA9IC1uOworICAgIH0KKworICAgIGlmICghKG4gLyAxMCkpIHsKKyAgICAgICAgY2hh
ciBjID0gc3RhdGljX2Nhc3Q8Y2hhcj4obiArICcwJyk7CisgICAgICAgIFN0cmluZ0J1aWxkZXI6
OmFwcGVuZCgmYywgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgZGlnaXRz
T2ZOdW1iZXIgPSBzdGF0aWNfY2FzdDxpbnQ+KGxvZzEwKHN0YXRpY19jYXN0PGRvdWJsZT4obikp
ICsgMSk7CisgICAgVmVjdG9yPGNoYXIsIDMyPiBudW1iZXIoZGlnaXRzT2ZOdW1iZXIgKyAxKTsK
KyAgICBjaGFyKiBwb2ludGVyID0gJm51bWJlcltkaWdpdHNPZk51bWJlcl07CisKKyAgICAqcG9p
bnRlciA9ICdcMCc7CisgICAgcG9pbnRlci0tOworICAgIGRvIHsKKyAgICAgICAgKnBvaW50ZXIg
PSAobiAlIDEwKSArICcwJzsKKyAgICAgICAgcG9pbnRlci0tOworICAgICAgICBuIC89IDEwOwor
ICAgIH0gd2hpbGUgKG4pOworICAgIFN0cmluZ0J1aWxkZXI6OmFwcGVuZCgmbnVtYmVyWzBdLCBk
aWdpdHNPZk51bWJlcik7Cit9CisKIHZvaWQgU3RyaW5nQnVpbGRlcjo6c2hyaW5rVG9GaXQoKQog
ewogICAgIC8vIElmIHRoZSBidWZmZXIgaXMgYXQgbGVhc3QgODAlIGZ1bGwsIGRvbid0IGJvdGhl
ciBjb3B5aW5nLiBOZWVkIHRvIHR1bmUgdGhpcyBoZXVyaXN0aWMhCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaAppbmRleCBkYTFlODMyLi5hYjFjODNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmgK
QEAgLTEwNCw2ICsxMDQsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsK
ICAgICB9CiAKKyAgICB2b2lkIGFwcGVuZChkb3VibGUpOworCisgICAgdm9pZCBhcHBlbmQoaW50
KTsKKwogICAgIFN0cmluZyB0b1N0cmluZygpCiAgICAgewogICAgICAgICBpZiAobV9zdHJpbmcu
aXNOdWxsKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnBy
byBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvd3RmLnBybwppbmRleCA0YzU3NWUzLi4wMWU4
ZTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3d0Zi5wcm8KKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi93dGYucHJvCkBAIC0xNjYsNyArMTY2LDggQEAgSEVB
REVSUyArPSBcCiAgICAgVmVjdG9yLmggXAogICAgIFZlY3RvclRyYWl0cy5oIFwKICAgICBWTVRh
Z3MuaCBcCi0gICAgV1RGVGhyZWFkRGF0YS5oCisgICAgV1RGVGhyZWFkRGF0YS5oIFwKKyAgICB0
ZXh0L051bWVyaWNGb3JtYXR0aW5nLmgKIAogCiB1bml4OiBIRUFERVJTICs9IFRocmVhZElkZW50
aWZpZXJEYXRhUHRocmVhZHMuaApAQCAtMjIwLDcgKzIyMSw4IEBAIFNPVVJDRVMgKz0gXAogICAg
IHRleHQvV1RGU3RyaW5nLmNwcCBcCiAgICAgdW5pY29kZS9Db2xsYXRvckRlZmF1bHQuY3BwIFwK
ICAgICB1bmljb2RlL2ljdS9Db2xsYXRvcklDVS5jcHAgXAotICAgIHVuaWNvZGUvVVRGOC5jcHAK
KyAgICB1bmljb2RlL1VURjguY3BwIFwKKyAgICB0ZXh0L051bWVyaWNGb3JtYXR0aW5nLmNwcAog
CiB1bml4OiBTT1VSQ0VTICs9IFwKICAgICBPU0FsbG9jYXRvclBvc2l4LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggMjcwYjU5ZS4uNzAwNjQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTAxLTA5ICBTemlsYXJkIExlZGFuICA8TGVkYW4tTXVudGVhbi5TemlsYXJkQHN0dWQudS1zemVn
ZWQuaHU+CisKKyAgICAgICAgQ2hhbmdlZCB0aGUgc3RyaW5nIHRvIFN0cmluZ0J1aWxkZXIgaW4g
Y3VzdG9tQ3NzVGV4dCBmdW5jdGlvbi4gVGhpcworICAgICAgICBmdW5jdGlvbiB1c2VzIHRoZSBT
dHJpbmdCdWlsZGVyJ3MgYXBwZW5kKGRvdWJsZSkgbWV0aG9kLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY4NTEKKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCk6CisKIDIwMTIt
MDEtMDMgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBIVE1MQ29u
c3RydWN0aW9uU2l0ZTo6YXR0YWNoIHNob3VsZG4ndCByZXR1cm4gYSB2YWx1ZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXggYTQzOWNiZi4uNGM3YmZhOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBAIC02NzQsMTYgKzY3NCwx
NiBAQCBQYWlyKiBDU1NQcmltaXRpdmVWYWx1ZTo6Z2V0UGFpclZhbHVlKEV4Y2VwdGlvbkNvZGUm
IGVjKSBjb25zdAogICAgIHJldHVybiBtX3ZhbHVlLnBhaXI7CiB9CiAKLXN0YXRpYyBTdHJpbmcg
Zm9ybWF0TnVtYmVyKGRvdWJsZSBudW1iZXIpCisvKnN0YXRpYyBTdHJpbmcgZm9ybWF0TnVtYmVy
KGRvdWJsZSBudW1iZXIpCiB7CiAgICAgRGVjaW1hbE51bWJlciBkZWNpbWFsKG51bWJlcik7CiAK
LSAgICBTdHJpbmdCdWZmZXI8VUNoYXI+IGJ1ZmZlcihkZWNpbWFsLmJ1ZmZlckxlbmd0aEZvclN0
cmluZ0RlY2ltYWwoKSk7CisgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlcihkZWNpbWFsLmJ1ZmZlckxl
bmd0aEZvclN0cmluZ0RlY2ltYWwoKSk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gZGVjaW1hbC50
b1N0cmluZ0RlY2ltYWwoYnVmZmVyLmNoYXJhY3RlcnMoKSwgYnVmZmVyLmxlbmd0aCgpKTsKICAg
ICBBU1NFUlRfVU5VU0VEKGxlbmd0aCwgbGVuZ3RoID09IGJ1ZmZlci5sZW5ndGgoKSk7CiAKICAg
ICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOwotfQorfSovCiAKIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CkBAIC02OTUsODAgKzY5NSwxMDAg
QEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGNzc1RleHRDYWNoZSgpLmdldCh0aGlzKTsKICAgICB9CiAKLSAgICBTdHJpbmcg
dGV4dDsKKyAgICBTdHJpbmdCdWlsZGVyIHRleHQ7CiAgICAgc3dpdGNoIChtX3ByaW1pdGl2ZVVu
aXRUeXBlKSB7CiAgICAgICAgIGNhc2UgQ1NTX1VOS05PV046CiAgICAgICAgICAgICAvLyBGSVhN
RQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX05VTUJFUjoKICAgICAgICAg
Y2FzZSBDU1NfUEFSU0VSX0lOVEVHRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVy
KG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19QRVJDRU5UQUdFOgotICAgICAgICAg
ICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAiJSI7CisgICAgICAgICAgICB0
ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnJScpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VNUzoKLSAgICAgICAgICAgIHRl
eHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImVtIjsKKyAgICAgICAgICAgIHRleHQu
YXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJlbSIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0VYUzoKLSAgICAgICAgICAgIHRleHQg
PSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImV4IjsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJleCIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1JFTVM6Ci0gICAgICAgICAgICB0ZXh0ID0g
Zm9ybWF0TnVtYmVyKG1fdmFsdWUubnVtKSArICJyZW0iOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInJlbSIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1BYOgotICAgICAgICAgICAgdGV4dCA9IGZv
cm1hdE51bWJlcihtX3ZhbHVlLm51bSkgKyAicHgiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQo
bV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoInB4Iik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfQ006Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0
TnVtYmVyKG1fdmFsdWUubnVtKSArICJjbSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3Zh
bHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY20iKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19NTToKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1i
ZXIobV92YWx1ZS5udW0pICsgIm1tIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUu
bnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKCJtbSIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX0lOOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlciht
X3ZhbHVlLm51bSkgKyAiaW4iOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0p
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQoImluIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfUFQ6Ci0gICAgICAgICAgICB0ZXh0ID0gZm9ybWF0TnVtYmVyKG1fdmFs
dWUubnVtKSArICJwdCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7Cisg
ICAgICAgICAgICB0ZXh0LmFwcGVuZCgicHQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIENTU19QQzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5u
dW0pICsgInBjIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCJwYyIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX0RFRzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0p
ICsgImRlZyI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiZGVnIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAicmFkIjsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAg
ICAgIHRleHQuYXBwZW5kKCJyYWQiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IENTU19HUkFEOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAiZ3JhZCI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAg
ICAgICB0ZXh0LmFwcGVuZCgiZ3JhZCIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX01TOgotICAgICAgICAgICAgdGV4dCA9IGZvcm1hdE51bWJlcihtX3ZhbHVlLm51bSkg
KyAibXMiOworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAg
ICAgdGV4dC5hcHBlbmQoIm1zIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBD
U1NfUzoKLSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInMi
OworICAgICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQoInMiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19IWjoK
LSAgICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImh6IjsKKyAg
ICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUubnVtKTsKKyAgICAgICAgICAgIHRleHQuYXBw
ZW5kKCJoeiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX0tIWjoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgImtoeiI7CisgICAg
ICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLm51bSk7CisgICAgICAgICAgICB0ZXh0LmFwcGVu
ZCgia2h6Iik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfVFVSTjoKLSAg
ICAgICAgICAgIHRleHQgPSBmb3JtYXROdW1iZXIobV92YWx1ZS5udW0pICsgInR1cm4iOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQobV92YWx1ZS5udW0pOworICAgICAgICAgICAgdGV4dC5hcHBl
bmQoInR1cm4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19ESU1FTlNJ
T046CiAgICAgICAgICAgICAvLyBGSVhNRQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX1NUUklORzoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVk
KG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHF1b3RlQ1NTU3RyaW5n
SWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5l
ZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgidXJs
KCIpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVl
LnN0cmluZykpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoJyknKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKLSAgICAgICAgICAgIHRleHQgPSB2YWx1ZU9y
UHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQodmFs
dWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfQVRUUjogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIGF0dHJQYXJlbiwgKCJhdHRyKCIpKTsKQEAgLTc4MCwxMyArODAwLDEzIEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKIAotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0cmluZygpOworICAg
ICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgotICAgICAgICAg
ICAgdGV4dCA9ICJjb3VudGVyKCI7Ci0gICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUuc3RyaW5n
OwotICAgICAgICAgICAgdGV4dCArPSAiKSI7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiY291
bnRlcigiKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAg
ICAgICAgIHRleHQuYXBwZW5kKCcpJyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBDU1NfQ09VTlRFUjogewogICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGNvdW50ZXJQYXJlbiwgKCJjb3VudGVyKCIpKTsKQEAgLTgwOCw4ICs4MjgsNyBAQCBT
dHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICAg
ICAgICAgIHJlc3VsdC5hcHBlbmQobGlzdFN0eWxlKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoJyknKTsKLQotICAgICAgICAgICAgdGV4dCA9IHJlc3VsdC50b1N0
cmluZygpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUkVDVDogewpAQCAt
ODMyLDI3ICs4NTEsMjcgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkgY29uc3QKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVjdFZhbC0+bGVmdCgpLT5jc3NU
ZXh0KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnKScpOwogCi0gICAgICAgICAgICB0
ZXh0ID0gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZXN1bHQu
dG9TdHJpbmcoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IENTU19RVUFEOiB7CiAgICAgICAgICAgICBRdWFkKiBxdWFkVmFsID0gZ2V0UXVhZFZhbHVlKCk7
Ci0gICAgICAgICAgICBWZWN0b3I8VUNoYXI+IHJlc3VsdDsKLSAgICAgICAgICAgIHJlc3VsdC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMyKTsKLSAgICAgICAgICAgIGFwcGVuZChyZXN1bHQsIHF1
YWRWYWwtPnRvcCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1
bHQ7CisgICAgICAgICAgICByZXN1bHQucmVzZXJ2ZUNhcGFjaXR5KDMyKTsKKyAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQocXVhZFZhbC0+dG9wKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICBp
ZiAocXVhZFZhbC0+cmlnaHQoKSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5ib3R0b20o
KSAhPSBxdWFkVmFsLT50b3AoKSB8fCBxdWFkVmFsLT5sZWZ0KCkgIT0gcXVhZFZhbC0+dG9wKCkp
IHsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcgJyk7Ci0gICAgICAgICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+cmlnaHQoKS0+Y3NzVGV4dCgpKTsKKyAgICAgICAgICAg
ICAgICByZXN1bHQuYXBwZW5kKHF1YWRWYWwtPnJpZ2h0KCktPmNzc1RleHQoKSk7CiAgICAgICAg
ICAgICAgICAgaWYgKHF1YWRWYWwtPmJvdHRvbSgpICE9IHF1YWRWYWwtPnRvcCgpIHx8IHF1YWRW
YWwtPnJpZ2h0KCkgIT0gcXVhZFZhbC0+bGVmdCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgYXBwZW5kKHJlc3VsdCwgcXVh
ZFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQocXVhZFZhbC0+Ym90dG9tKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChxdWFkVmFsLT5sZWZ0KCkgIT0gcXVhZFZhbC0+cmlnaHQoKSkgewogICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgICAgICAgICAg
YXBwZW5kKHJlc3VsdCwgcXVhZFZhbC0+bGVmdCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChxdWFkVmFsLT5sZWZ0KCktPmNzc1RleHQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0ZXh0ID0gU3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4
dC5hcHBlbmQocmVzdWx0LnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBDU1NfUkdCQ09MT1I6CkBAIC04ODYsMTQgKzkwNSwxNCBAQCBTdHJp
bmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7Ci0gICAgICAgICAgICB0ZXh0ID0g
U3RyaW5nOjphZG9wdChyZXN1bHQpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQoU3RyaW5nOjph
ZG9wdChyZXN1bHQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTX1BBSVI6Ci0gICAgICAgICAgICB0ZXh0ID0gbV92YWx1ZS5wYWlyLT5maXJzdCgpLT5j
c3NUZXh0KCk7CisgICAgICAgICAgICB0ZXh0LmFwcGVuZChtX3ZhbHVlLnBhaXItPmZpcnN0KCkt
PmNzc1RleHQoKSk7CiAgICAgICAgICAgICBpZiAobV92YWx1ZS5wYWlyLT5zZWNvbmQoKSAhPSBt
X3ZhbHVlLnBhaXItPmZpcnN0KCkpIHsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgIjsKLSAg
ICAgICAgICAgICAgICB0ZXh0ICs9IG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKTsK
KyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOworICAgICAgICAgICAgICAgIHRleHQu
YXBwZW5kKG1fdmFsdWUucGFpci0+c2Vjb25kKCktPmNzc1RleHQoKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC05
MDEsMTIgKzkyMCwxMiBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgICAgICAgICAgZm9yIChEYXNoYm9hcmRSZWdpb24qIHJlZ2lvbiA9IGdldERh
c2hib2FyZFJlZ2lvblZhbHVlKCk7IHJlZ2lvbjsgcmVnaW9uID0gcmVnaW9uLT5tX25leHQuZ2V0
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAg
ICAgICAgICB0ZXh0LmFwcGVuZCgnICcpOwotICAgICAgICAgICAgICAgIHRleHQgKz0gImRhc2hi
b2FyZC1yZWdpb24oIjsKLSAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+bV9sYWJlbDsK
KyAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiZGFzaGJvYXJkLXJlZ2lvbigiKTsKKyAgICAg
ICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPm1fbGFiZWwpOwogICAgICAgICAgICAgICAg
IGlmIChyZWdpb24tPm1faXNDaXJjbGUpCi0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiBj
aXJjbGUiOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgiIGNpcmNsZSIpOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKHJlZ2lvbi0+bV9pc1JlY3RhbmdsZSkKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dCArPSAiIHJlY3RhbmdsZSI7CisgICAgICAgICAgICAgICAgICAgIHRleHQu
YXBwZW5kKCIgcmVjdGFuZ2xlIik7CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAocmVnaW9uLT50b3AoKS0+bV9wcmlt
aXRpdmVVbml0VHlwZSA9PSBDU1NfSURFTlQgJiYgcmVnaW9uLT50b3AoKS0+Z2V0SWRlbnQoKSA9
PSBDU1NWYWx1ZUludmFsaWQpIHsKQEAgLTkxOCwzMiArOTM3LDM1IEBAIFN0cmluZyBDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChyZWdpb24tPmxlZnQoKS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUludmFsaWQpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcg
Jyk7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gcmVnaW9uLT50b3AoKS0+Y3NzVGV4dCgp
ICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+cmlnaHQoKS0+Y3Nz
VGV4dCgpICsgIiAiOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9IHJlZ2lvbi0+Ym90dG9t
KCktPmNzc1RleHQoKSArICIgIjsKLSAgICAgICAgICAgICAgICAgICAgdGV4dCArPSByZWdpb24t
PmxlZnQoKS0+Y3NzVGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdp
b24tPnRvcCgpLT5jc3NUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZCgn
ICcpOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmFwcGVuZChyZWdpb24tPnJpZ2h0KCktPmNz
c1RleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICAgICAgICAgIHRleHQuYXBwZW5kKHJlZ2lvbi0+Ym90dG9tKCktPmNzc1RleHQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHQuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICAgICAgICAg
IHRleHQuYXBwZW5kKHJlZ2lvbi0+bGVmdCgpLT5jc3NUZXh0KCkpOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICAgICAgICAgICAgICB0ZXh0LmFw
cGVuZCgnKScpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAg
ICAgICAgY2FzZSBDU1NfUEFSU0VSX09QRVJBVE9SOiB7Ci0gICAgICAgICAgICBjaGFyIGMgPSBz
dGF0aWNfY2FzdDxjaGFyPihtX3ZhbHVlLmlkZW50KTsKLSAgICAgICAgICAgIHRleHQgPSBTdHJp
bmcoJmMsIDFVKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKHN0YXRpY19jYXN0PGNoYXI+KG1f
dmFsdWUuaWRlbnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgQ1NTX1BBUlNFUl9JREVOVElGSUVSOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3Ry
aW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dC5hcHBlbmQocXVv
dGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1NIQVBFOgotICAgICAgICAgICAgdGV4dCA9IG1fdmFsdWUuc2hh
cGUtPmNzc1RleHQoKTsKKyAgICAgICAgICAgIHRleHQuYXBwZW5kKG1fdmFsdWUuc2hhcGUtPmNz
c1RleHQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBTdHJpbmcgcmVzdWx0
VGV4dCA9IHRleHQudG9TdHJpbmcoKTsKICAgICBBU1NFUlQoIWNzc1RleHRDYWNoZSgpLmNvbnRh
aW5zKHRoaXMpKTsKLSAgICBjc3NUZXh0Q2FjaGUoKS5zZXQodGhpcywgdGV4dCk7CisgICAgY3Nz
VGV4dENhY2hlKCkuc2V0KHRoaXMsIHJlc3VsdFRleHQpOwogICAgIG1faGFzQ2FjaGVkQ1NTVGV4
dCA9IHRydWU7Ci0gICAgcmV0dXJuIHRleHQ7CisgICAgcmV0dXJuIHJlc3VsdFRleHQ7CiB9CiAK
IHZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNo
U2V0PEtVUkw+JiB1cmxzLCBjb25zdCBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQotLSAKMS43
LjUuNAoK
</data>
<flag name="review"
          id="122219"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="122220"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>