<?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>107779</bug_id>
          
          <creation_ts>2013-01-23 20:24:52 -0800</creation_ts>
          <short_desc>Split CSSOMWrapper data and functions out from StyleResolver into its own class</short_desc>
          <delta_ts>2013-01-30 21:05:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89879</blocked>
    
    <blocked>107777</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dominicc</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>815001</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-23 20:24:52 -0800</bug_when>
    <thetext>This will be a separated patch from https://bugs.webkit.org/show_bug.cgi?id=107777.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815100</commentid>
    <comment_count>1</comment_count>
      <attachid>184407</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-23 22:50:55 -0800</bug_when>
    <thetext>Created attachment 184407
factor CSSOMWrapper logic into a CSSOMWrapper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815268</commentid>
    <comment_count>2</comment_count>
      <attachid>184407</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-01-24 02:19:44 -0800</bug_when>
    <thetext>Comment on attachment 184407
factor CSSOMWrapper logic into a CSSOMWrapper

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

Why should this be in a separate class? What is the purpose of this change?
CSSOMWrapper is a bad name for this class, as we already have CSSOM wrappers in WebKit, and this class has very little to do with them.

&gt; Source/WebCore/css/StyleResolver.cpp:296
&gt; +    , m_cssomWrapper()

This line is not needed.

&gt; Source/WebCore/css/StyleResolver.h:455
&gt; +    CSSOMWrapper&amp; cssomWrapepr() { return m_cssomWrapper; }

This name is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817555</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-28 00:02:09 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #2)
&gt; (From update of attachment 184407 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184407&amp;action=review
&gt; 
&gt; Why should this be in a separate class? What is the purpose of this change?
&gt; CSSOMWrapper is a bad name for this class, as we already have CSSOM wrappers in WebKit, and this class has very little to do with them.

Good point. Sorry for the lack of the explanation in this patch.

This patch was a separated patch from bug 107777 as mentioned in comment #0. The WIP patch in 107777 requires this change so we can pass CSSOMWrapper&apos;s instance, instead of StyleResolver, to DocumentRuleSet::appendAuthorStyleSheets().
I&apos;d like to avoid passing StyleResolver here. I&apos;d like to minimize the dependency from the separated class to the StyleResolver.

Another motivation is to collect related functions and related data into its own class so we can avoid having static functions in StyleResolver. I think the reason is similar to https://bugs.webkit.org/show_bug.cgi?id=89879, which is a META bug.


&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:296
&gt; &gt; +    , m_cssomWrapper()
&gt; 
&gt; This line is not needed.
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:455
&gt; &gt; +    CSSOMWrapper&amp; cssomWrapepr() { return m_cssomWrapper; }
&gt; 
&gt; This name is wrong.

Let me re-think good naming. If you have any ideas, please let me know it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817602</commentid>
    <comment_count>4</comment_count>
      <attachid>184953</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-28 01:32:17 -0800</bug_when>
    <thetext>Created attachment 184953
Rename CSSOMWrapper to CSSOMWrapperForInspector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817724</commentid>
    <comment_count>5</comment_count>
      <attachid>184953</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-28 06:40:00 -0800</bug_when>
    <thetext>Comment on attachment 184953
Rename CSSOMWrapper to CSSOMWrapperForInspector.

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

I am not a reviewer, but I caught a mispelling noted inline. Also some comments inline.

&gt; Source/WebCore/ChangeLog:23
&gt; +        (WebCore::CSSOMWrapperForInspector::collectFromSheet):

I notice that a lot of inspector-related types start with Inspector, so what about

InspectorCSSOMWrappers

? It is two chars shorter :)

Also makes me wonder if we can deport it to WebCore/inspector in a future change… what do you think?

&gt; Source/WebCore/css/StyleResolver.cpp:-229
&gt; -static void collectCSSOMWrappers(HashMap&lt;StyleRule*, RefPtr&lt;CSSStyleRule&gt; &gt;&amp;, ListType*);

Looks like this code already used the term &quot;wrapper&quot;, but it does look confusing, these are CSSOM objects and not JavaScript wrappers. Might make sense to do a renaming in a follow-up patch. (Are CSSOM objects referred to as &quot;wrappers&quot; elsewhere? Maybe there is precedent I am just not aware of.)

&gt; Source/WebCore/css/StyleResolver.h:139
&gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);

I think moving this to its own class is a huge win. Of course this WARNING is not visible at call sites, and

StyleResolver::ensureAll

looks innocuous;

CSSOMWrapperForInspector::ensureAll

is way more likely to be detected as bogus if used in the wrong context.

&gt; Source/WebCore/css/StyleResolver.h:455
&gt; +    CSSOMWrapperForInspector&amp; cssomWrapeprForInspector() { return m_cssomWrapperForInspector; }

Wrapepr =&gt; Wrapper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817791</commentid>
    <comment_count>6</comment_count>
      <attachid>184953</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-28 09:05:21 -0800</bug_when>
    <thetext>Comment on attachment 184953
Rename CSSOMWrapper to CSSOMWrapperForInspector.

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

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:-229
&gt;&gt; -static void collectCSSOMWrappers(HashMap&lt;StyleRule*, RefPtr&lt;CSSStyleRule&gt; &gt;&amp;, ListType*);
&gt; 
&gt; Looks like this code already used the term &quot;wrapper&quot;, but it does look confusing, these are CSSOM objects and not JavaScript wrappers. Might make sense to do a renaming in a follow-up patch. (Are CSSOM objects referred to as &quot;wrappers&quot; elsewhere? Maybe there is precedent I am just not aware of.)

Kling/Antti recently made a pretty cool optimization, where CSSOM objects are actually created on demand, rather than by default, allowing most of CSS machinery function without lugging the CSSOM objects around. The &quot;wrapper&quot; here refers to the object that is created on demand.

&gt; Source/WebCore/css/StyleResolver.h:135
&gt; +class CSSOMWrapperForInspector {

Nitpicking the name: it&apos;s not really a wrapper, it&apos;s a bunch of wrappers. So, at the very least, it&apos;s CSSOMWrappersForInspector. I like Dominic&apos;s InspectorCSSOMWrappers suggestion.

&gt;&gt; Source/WebCore/css/StyleResolver.h:139
&gt;&gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);
&gt; 
&gt; I think moving this to its own class is a huge win. Of course this WARNING is not visible at call sites, and
&gt; 
&gt; StyleResolver::ensureAll
&gt; 
&gt; looks innocuous;
&gt; 
&gt; CSSOMWrapperForInspector::ensureAll
&gt; 
&gt; is way more likely to be detected as bogus if used in the wrong context.

Yup, I agree.

&gt;&gt; Source/WebCore/css/StyleResolver.h:455
&gt;&gt; +    CSSOMWrapperForInspector&amp; cssomWrapeprForInspector() { return m_cssomWrapperForInspector; }
&gt; 
&gt; Wrapepr =&gt; Wrapper

Derp!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818630</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-28 23:52:58 -0800</bug_when>
    <thetext>Thank you for the review. Let me upload a new patch soon.

(In reply to comment #5)
&gt; (From update of attachment 184953 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184953&amp;action=review
&gt; 
&gt; I am not a reviewer, but I caught a mispelling noted inline. Also some comments inline.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:23
&gt; &gt; +        (WebCore::CSSOMWrapperForInspector::collectFromSheet):
&gt; 
&gt; I notice that a lot of inspector-related types start with Inspector, so what about
&gt; 
&gt; InspectorCSSOMWrappers
&gt; 
&gt; ? It is two chars shorter :)

That makes sense to me. A nice name. Done.

&gt; 
&gt; Also makes me wonder if we can deport it to WebCore/inspector in a future change… what do you think?

Sounds good. I think we can. Let me do that later in a future change.

&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.cpp:-229
&gt; &gt; -static void collectCSSOMWrappers(HashMap&lt;StyleRule*, RefPtr&lt;CSSStyleRule&gt; &gt;&amp;, ListType*);
&gt; 
&gt; Looks like this code already used the term &quot;wrapper&quot;, but it does look confusing, these are CSSOM objects and not JavaScript wrappers. Might make sense to do a renaming in a follow-up patch. (Are CSSOM objects referred to as &quot;wrappers&quot; elsewhere? Maybe there is precedent I am just not aware of.)
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:139
&gt; &gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);
&gt; 
&gt; I think moving this to its own class is a huge win. Of course this WARNING is not visible at call sites, and
&gt; 
&gt; StyleResolver::ensureAll
&gt; 
&gt; looks innocuous;
&gt; 
&gt; CSSOMWrapperForInspector::ensureAll
&gt; 
&gt; is way more likely to be detected as bogus if used in the wrong context.
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:455
&gt; &gt; +    CSSOMWrapperForInspector&amp; cssomWrapeprForInspector() { return m_cssomWrapperForInspector; }
&gt; 
&gt; Wrapepr =&gt; Wrapper

Ops. Fixed.

(In reply to comment #6)
&gt; (From update of attachment 184953 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184953&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.cpp:-229
&gt; &gt;&gt; -static void collectCSSOMWrappers(HashMap&lt;StyleRule*, RefPtr&lt;CSSStyleRule&gt; &gt;&amp;, ListType*);
&gt; &gt; 
&gt; &gt; Looks like this code already used the term &quot;wrapper&quot;, but it does look confusing, these are CSSOM objects and not JavaScript wrappers. Might make sense to do a renaming in a follow-up patch. (Are CSSOM objects referred to as &quot;wrappers&quot; elsewhere? Maybe there is precedent I am just not aware of.)
&gt; 
&gt; Kling/Antti recently made a pretty cool optimization, where CSSOM objects are actually created on demand, rather than by default, allowing most of CSS machinery function without lugging the CSSOM objects around. The &quot;wrapper&quot; here refers to the object that is created on demand.
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:135
&gt; &gt; +class CSSOMWrapperForInspector {
&gt; 
&gt; Nitpicking the name: it&apos;s not really a wrapper, it&apos;s a bunch of wrappers. So, at the very least, it&apos;s CSSOMWrappersForInspector. I like Dominic&apos;s InspectorCSSOMWrappers suggestion.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.h:139
&gt; &gt;&gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);
&gt; &gt; 
&gt; &gt; I think moving this to its own class is a huge win. Of course this WARNING is not visible at call sites, and
&gt; &gt; 
&gt; &gt; StyleResolver::ensureAll
&gt; &gt; 
&gt; &gt; looks innocuous;
&gt; &gt; 
&gt; &gt; CSSOMWrapperForInspector::ensureAll
&gt; &gt; 
&gt; &gt; is way more likely to be detected as bogus if used in the wrong context.
&gt; 
&gt; Yup, I agree.
&gt; 
&gt; &gt;&gt; Source/WebCore/css/StyleResolver.h:455
&gt; &gt;&gt; +    CSSOMWrapperForInspector&amp; cssomWrapeprForInspector() { return m_cssomWrapperForInspector; }
&gt; &gt; 
&gt; &gt; Wrapepr =&gt; Wrapper
&gt; 
&gt; Derp!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818635</commentid>
    <comment_count>8</comment_count>
      <attachid>185180</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-28 23:56:40 -0800</bug_when>
    <thetext>Created attachment 185180
Fixed typo. Renamed to InspectorCSSOMWrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818692</commentid>
    <comment_count>9</comment_count>
      <attachid>185180</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-01-29 01:06:18 -0800</bug_when>
    <thetext>Comment on attachment 185180
Fixed typo. Renamed to InspectorCSSOMWrappers.

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

&gt; Source/WebCore/css/StyleResolver.h:137
&gt; +    // WARNING. This will construct CSSOM wrappers for all style rules and cache then in a map for significant memory cost.

Nit: s/then/them/
Actually, this message is explaining not only this function but also this whole class.

Probably we could do this collect thing in the constructor and have this class as a OwnPtr. Then lifecycle will be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818791</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-29 03:20:24 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 185180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:137
&gt; &gt; +    // WARNING. This will construct CSSOM wrappers for all style rules and cache then in a map for significant memory cost.
&gt; 
&gt; Nit: s/then/them/
&gt; Actually, this message is explaining not only this function but also this whole class.
&gt; 
&gt; Probably we could do this collect thing in the constructor and have this class as a OwnPtr. Then lifecycle will be clearer.

Good point.
Although I don&apos;t have an intention to introduce any behavior changes in this patch, the mentioned point can be another good reason to factor this into itw own class.

Let me investigate how InspectorCSSOMWrappers is used in real case later. I think that can be done in a following patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819022</commentid>
    <comment_count>11</comment_count>
      <attachid>185180</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-29 09:38:18 -0800</bug_when>
    <thetext>Comment on attachment 185180
Fixed typo. Renamed to InspectorCSSOMWrappers.

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

&gt; Source/WebCore/ChangeLog:21
&gt; +        (WebCore):

It&apos;s good WebKit practice to describe changes in the ChangeLog.

&gt; Source/WebCore/css/StyleResolver.h:139
&gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);

Still nitpicking names, sorry. ensureAll and collectFromSheet are complementary. The first one makes wrappers for all available stylesheets. The other one makes additional wrappers for a newly added stylesheet -- but only if the first one ran beforehand.

So maybe collectFromSheet&apos;s name should reflect that? ensureNewSheet?

Or at least, collectFromSheetIfNeeded?

&gt; Source/WebCore/css/StyleResolver.h:150
&gt; +    void collect(ListType*);
&gt; +
&gt; +    void collect(DocumentStyleSheetCollection*);
&gt; +    void collect(const Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp;);
&gt; +    void collect(HashSet&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp; sheetWrapperSet, StyleSheetContents*);

These are probably fine, but the same name overloaded over different arguments seems sad, especially given they are all private. Overloading might be a good API strategy, but here it&apos;s just not necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819024</commentid>
    <comment_count>12</comment_count>
      <attachid>185180</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-29 09:44:25 -0800</bug_when>
    <thetext>Comment on attachment 185180
Fixed typo. Renamed to InspectorCSSOMWrappers.

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:974
&gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));

Looking at the callsite, &quot;ensureAll&quot; is the one that has the wrong name. It should just be a &quot;get&quot;. Then what do we do with the StyleSheetCollection argument? :-\</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819831</commentid>
    <comment_count>13</comment_count>
      <attachid>185404</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-29 23:17:54 -0800</bug_when>
    <thetext>Created attachment 185404
No longer overloading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819836</commentid>
    <comment_count>14</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-29 23:28:52 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #11)
&gt; (From update of attachment 185180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:21
&gt; &gt; +        (WebCore):
&gt; 
&gt; It&apos;s good WebKit practice to describe changes in the ChangeLog.

Done.

&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:139
&gt; &gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);
&gt; 
&gt; Still nitpicking names, sorry. ensureAll and collectFromSheet are complementary. The first one makes wrappers for all available stylesheets. The other one makes additional wrappers for a newly added stylesheet -- but only if the first one ran beforehand.
&gt; 
&gt; So maybe collectFromSheet&apos;s name should reflect that? ensureNewSheet?
&gt; 
&gt; Or at least, collectFromSheetIfNeeded?

I like collectFromStyleSheet.

&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:150
&gt; &gt; +    void collect(ListType*);
&gt; &gt; +
&gt; &gt; +    void collect(DocumentStyleSheetCollection*);
&gt; &gt; +    void collect(const Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp;);
&gt; &gt; +    void collect(HashSet&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp; sheetWrapperSet, StyleSheetContents*);
&gt; 
&gt; These are probably fine, but the same name overloaded over different arguments seems sad, especially given they are all private. Overloading might be a good API strategy, but here it&apos;s just not necessary.

Done. I&apos;ve named these functions explicitly.

I don&apos;t have a strong opinion about that. I guess the original intention about overloading is to use the same name to the template&lt;ListType*&gt; function.
Maybe explicit is better than implicit here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819837</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-29 23:29:34 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Thank you for the review.
&gt; 
&gt; (In reply to comment #11)
&gt; &gt; (From update of attachment 185180 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:21
&gt; &gt; &gt; +        (WebCore):
&gt; &gt; 
&gt; &gt; It&apos;s good WebKit practice to describe changes in the ChangeLog.
&gt; 
&gt; Done.
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/StyleResolver.h:139
&gt; &gt; &gt; +    CSSStyleRule* ensureAll(StyleRule*, DocumentStyleSheetCollection*);
&gt; &gt; 
&gt; &gt; Still nitpicking names, sorry. ensureAll and collectFromSheet are complementary. The first one makes wrappers for all available stylesheets. The other one makes additional wrappers for a newly added stylesheet -- but only if the first one ran beforehand.
&gt; &gt; 
&gt; &gt; So maybe collectFromSheet&apos;s name should reflect that? ensureNewSheet?
&gt; &gt; 
&gt; &gt; Or at least, collectFromSheetIfNeeded?
&gt; 
&gt; I like collectFromStyleSheet.

s/collectFromStyleSheet/collectFromStyleSheetIfNeeded/.

&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/StyleResolver.h:150
&gt; &gt; &gt; +    void collect(ListType*);
&gt; &gt; &gt; +
&gt; &gt; &gt; +    void collect(DocumentStyleSheetCollection*);
&gt; &gt; &gt; +    void collect(const Vector&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp;);
&gt; &gt; &gt; +    void collect(HashSet&lt;RefPtr&lt;CSSStyleSheet&gt; &gt;&amp; sheetWrapperSet, StyleSheetContents*);
&gt; &gt; 
&gt; &gt; These are probably fine, but the same name overloaded over different arguments seems sad, especially given they are all private. Overloading might be a good API strategy, but here it&apos;s just not necessary.
&gt; 
&gt; Done. I&apos;ve named these functions explicitly.
&gt; 
&gt; I don&apos;t have a strong opinion about that. I guess the original intention about overloading is to use the same name to the template&lt;ListType*&gt; function.
&gt; Maybe explicit is better than implicit here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819840</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-29 23:31:09 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 185180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:974
&gt; &gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));
&gt; 
&gt; Looking at the callsite, &quot;ensureAll&quot; is the one that has the wrong name. It should just be a &quot;get&quot;. Then what do we do with the StyleSheetCollection argument? :-\

Hmm.. &apos;ensureAllAndGet&apos;? or &apos;getWithEnsuringAll&apos;? What is the best name? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820215</commentid>
    <comment_count>17</comment_count>
      <attachid>185404</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-30 08:15:35 -0800</bug_when>
    <thetext>Comment on attachment 185404
No longer overloading.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Factored CSSOMWrapper logic and data out from StyleResolver into a

Does this sentence add anything that is not in the summary line?

&gt; Source/WebCore/ChangeLog:15
&gt; +        in a following patch (bug 107780), I&apos;ll move a

Nit: No need for the trailing &quot;a&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820219</commentid>
    <comment_count>18</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2013-01-30 08:19:48 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #12)
&gt; &gt; (From update of attachment 185180 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:974
&gt; &gt; &gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));
&gt; &gt; 
&gt; &gt; Looking at the callsite, &quot;ensureAll&quot; is the one that has the wrong name. It should just be a &quot;get&quot;. Then what do we do with the StyleSheetCollection argument? :-\
&gt; 
&gt; Hmm.. &apos;ensureAllAndGet&apos;? or &apos;getWithEnsuringAll&apos;? What is the best name? :)

What about getWrapperForRuleInSheets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820289</commentid>
    <comment_count>19</comment_count>
      <attachid>185404</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-30 10:07:18 -0800</bug_when>
    <thetext>Comment on attachment 185404
No longer overloading.

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

&gt; Source/WebCore/css/StyleResolver.h:135
&gt; +class InspectorCSSOMWrappers {

The obvious thing to do here is to let this guy hold a ref to DocumentStyleSheetCollection. But that&apos;s extra weight :-\

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:962
&gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));

The next easiest thing is to split up this callsite to first &quot;collectAllSheets&quot;, and then &quot;get&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821025</commentid>
    <comment_count>20</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-30 20:25:16 -0800</bug_when>
    <thetext>Thank you for the review. Let me upload a new patch soon.

(In reply to comment #17)
&gt; (From update of attachment 185404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185404&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Factored CSSOMWrapper logic and data out from StyleResolver into a
&gt; 
&gt; Does this sentence add anything that is not in the summary line?

That&apos;s redundant. Removed.

&gt; 
&gt; &gt; Source/WebCore/ChangeLog:15
&gt; &gt; +        in a following patch (bug 107780), I&apos;ll move a
&gt; 
&gt; Nit: No need for the trailing &quot;a&quot; here.

Done.

(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; (In reply to comment #12)
&gt; &gt; &gt; (From update of attachment 185180 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185180&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:974
&gt; &gt; &gt; &gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));
&gt; &gt; &gt; 
&gt; &gt; &gt; Looking at the callsite, &quot;ensureAll&quot; is the one that has the wrong name. It should just be a &quot;get&quot;. Then what do we do with the StyleSheetCollection argument? :-\
&gt; &gt; 
&gt; &gt; Hmm.. &apos;ensureAllAndGet&apos;? or &apos;getWithEnsuringAll&apos;? What is the best name? :)
&gt; 
&gt; What about getWrapperForRuleInSheets?

Okay. I&apos;ve renamed it.


(In reply to comment #19)
&gt; (From update of attachment 185404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=185404&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/StyleResolver.h:135
&gt; &gt; +class InspectorCSSOMWrappers {
&gt; 
&gt; The obvious thing to do here is to let this guy hold a ref to DocumentStyleSheetCollection. But that&apos;s extra weight :-\
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:962
&gt; &gt; +        m_currentSelectorProfile-&gt;startSelector(styleResolver-&gt;inspectorCSSOMWrappers().ensureAll(rule, styleResolver-&gt;document()-&gt;styleSheetCollection()));
&gt; 
&gt; The next easiest thing is to split up this callsite to first &quot;collectAllSheets&quot;, and then &quot;get&quot;.

I don&apos;t want to split this into two functions until there is a strong requirement.
If we split this into two functions, we have to check whether all callers call them sequentially.
I am afraid that will cause potential misusage of APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821027</commentid>
    <comment_count>21</comment_count>
      <attachid>185667</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-01-30 20:26:37 -0800</bug_when>
    <thetext>Created attachment 185667
Addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821033</commentid>
    <comment_count>22</comment_count>
      <attachid>185667</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-01-30 20:37:10 -0800</bug_when>
    <thetext>Comment on attachment 185667
Addressed.

you wore me down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821048</commentid>
    <comment_count>23</comment_count>
      <attachid>185667</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 21:05:31 -0800</bug_when>
    <thetext>Comment on attachment 185667
Addressed.

Clearing flags on attachment: 185667

Committed r141373: &lt;http://trac.webkit.org/changeset/141373&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821049</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 21:05:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184407</attachid>
            <date>2013-01-23 22:50:55 -0800</date>
            <delta_ts>2013-01-28 01:32:14 -0800</delta_ts>
            <desc>factor CSSOMWrapper logic into a CSSOMWrapper</desc>
            <filename>bug-107779-20130124154747.patch</filename>
            <type>text/plain</type>
            <size>15248</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwOThmZWZlMTFmMmVj
NjFiOWVjMzQxNTIzMzlhMDRhM2MyNjRhNy4uM2RkNDIxNGZhNjBiNTg3MGM5YmQwNjhiZDljMDQx
NDU1YWFiNzM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBDU1NPTVdyYXBw
ZXIgZGF0YSBhbmQgZnVuY3Rpb25zIG91dCBmcm9tIFN0eWxlUmVzb2x2ZXIgaW50byBpdHMgb3du
IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc3NzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
YWN0b3JlZCBDU1NPTSBsb2dpYyBhbmQgZGF0YSBvdXQgZnJvbSBTdHlsZVJlc29sdmVyIGludG8g
YQorICAgICAgICBDU1NPTVdyYXBwZXIgY2xhc3MuICBTaW5jZSBDU1NPTVdyYXBwZXIgZGVwZW5k
cyBvbiBzdGF0aWMKKyAgICAgICAgdmFyaWFibGVzIGluIFN0eWxlUmVzb2x2ZXIuY3BwLCB0aGlz
IHBhdGNoIGRvZXMgbm90IGV4dHJhY3QgYSBuZXcKKyAgICAgICAgY2xhc3MgaW50byBhIG5ldyBm
aWxlLiBUaGF0IGFsc28gbWFrZXMgYSByZXZpZXcgZWFzaWVyIHNpbmNlIGl0CisgICAgICAgIHBy
b2R1Y2VzIHJlYWRhYmxlIGRpZmZzLgorCisgICAgICAgIEFmdGVyIHdlIGZhY3RvciBzdGF0aWMg
ZGVmYXVsdCBzdHlsZSBzaGVldHMgdmFyaWFibGVzIGluIGEKKyAgICAgICAgZm9sbG93aW5nIHBh
dGNoLCBJJ2xsIG1vdmUgYSBDU1NPTVdyYXBwZXIgaW50byBhIGl0cyBvd24gZmlsZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UganVzdCByZWZhY3RvcmluZy4KKworICAgICAgICAq
IGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NPTVdyYXBwZXI6OmNvbGxlY3RGcm9tU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
T01XcmFwcGVyOjpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU09NV3JhcHBlcjo6ZW5z
dXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NP
TVdyYXBwZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVz
b2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5o
OgorICAgICAgICAoQ1NTT01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
U3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjc3NvbVdy
YXBlcHIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFByb2Nlc3NSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorCiAyMDEz
LTAxLTIzICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBb
UmVmYWN0b3JpbmddIFJlbW92ZSBlbGVtZW50UGFyZW50U3R5bGUgZnJvbSBTZWxlY3RvckNoZWNr
ZXJDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYzNlZTcyMGQy
MGVmMDYxNDVjMWI2MTliN2Q3MDQ5MWE4MzE0ZGIwZS4uZTYwNDc5OTE1M2Y1MTkzMzA5YjU0MWQ1
NWJlNjhjNmIxMGRiZDQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAt
MjI1LDggKzIyNSw2IEBAIFJlbmRlclN0eWxlKiBTdHlsZVJlc29sdmVyOjpzX3N0eWxlTm90WWV0
QXZhaWxhYmxlOwogCiBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpOwogc3RhdGlj
IHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwotdGVtcGxhdGUgPGNsYXNzIExpc3RUeXBl
Pgotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBS
ZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiwgTGlzdFR5cGUqKTsKIAogLy8gRklYTUU6IEl0IHdvdWxk
IGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlzIGlzIGlu
IHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNoYXIqIHNp
bXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJsb2NrfWhl
YWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1c3tvdXRs
aW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn1hOi13ZWJraXQtYW55LWxpbmt7
Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTotd2Via2l0LWFu
eS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKQEAgLTI5NSw2ICsyOTMs
NyBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAgICAgLCBtX2hhc1BlbmRpbmdTaGFkZXJzKGZh
bHNlKQogI2VuZGlmCiAgICAgLCBtX3N0eWxlTWFwKHRoaXMpCisgICAgLCBtX2Nzc29tV3JhcHBl
cigpCiB7CiAgICAgRWxlbWVudCogcm9vdCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsK
IApAQCAtMzkxLDggKzM5MCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU3R5
bGVTaGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQCiAjZW5kaWYKIAog
ICAgICAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVt
LCB0aGlzKTsKLSAgICAgICAgaWYgKCFtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NP
TVdyYXBwZXJNYXAsIGNzc1NoZWV0KTsKKyAgICAgICAgbV9jc3NvbVdyYXBwZXIuY29sbGVjdEZy
b21TaGVldChjc3NTaGVldCk7CiAgICAgfQogICAgIG1fYXV0aG9yU3R5bGUtPnNocmlua1RvRml0
KCk7CiAgICAgY29sbGVjdEZlYXR1cmVzKCk7CkBAIC0yNjYwLDggKzI2NTgsMTQgQEAgU3RyaW5n
IFN0eWxlUmVzb2x2ZXI6OnBhZ2VOYW1lKGludCAvKiBwYWdlSW5kZXggKi8pIGNvbnN0CiAgICAg
cmV0dXJuICIiOwogfQogCit2b2lkIENTU09NV3JhcHBlcjo6Y29sbGVjdEZyb21TaGVldChDU1NT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0KQoreworICAgIGlmICghbV9zdHlsZVJ1bGVUb0NTU09NV3Jh
cHBlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIGNvbGxlY3Qoc3R5bGVTaGVldCk7Cit9CisKIHRl
bXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KLXN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwg
TGlzdFR5cGUqIGxpc3RUeXBlKQordm9pZCBDU1NPTVdyYXBwZXI6OmNvbGxlY3QoTGlzdFR5cGUq
IGxpc3RUeXBlKQogewogICAgIGlmICghbGlzdFR5cGUpCiAgICAgICAgIHJldHVybjsKQEAgLTI2
NzAsMjggKzI2NzQsMjggQEAgc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1h
cDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmEKICAgICAgICAgQ1NTUnVs
ZSogY3NzUnVsZSA9IGxpc3RUeXBlLT5pdGVtKGkpOwogICAgICAgICBzd2l0Y2ggKGNzc1J1bGUt
PnR5cGUoKSkgewogICAgICAgICBjYXNlIENTU1J1bGU6OklNUE9SVF9SVUxFOgotICAgICAgICAg
ICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0
UnVsZSo+KGNzc1J1bGUpLT5zdHlsZVNoZWV0KCkpOworICAgICAgICAgICAgY29sbGVjdChzdGF0
aWNfY2FzdDxDU1NJbXBvcnRSdWxlKj4oY3NzUnVsZSktPnN0eWxlU2hlZXQoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgotICAgICAgICAg
ICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTTWVkaWFS
dWxlKj4oY3NzUnVsZSkpOworICAgICAgICAgICAgY29sbGVjdChzdGF0aWNfY2FzdDxDU1NNZWRp
YVJ1bGUqPihjc3NSdWxlKSk7CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTM19D
T05ESVRJT05BTF9SVUxFUykKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVVBQT1JUU19SVUxFOgot
ICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8
Q1NTU3VwcG9ydHNSdWxlKj4oY3NzUnVsZSkpOworICAgICAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMoc3RhdGljX2Nhc3Q8Q1NTU3VwcG9ydHNSdWxlKj4oY3NzUnVsZSkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2Ug
Q1NTUnVsZTo6V0VCS0lUX1JFR0lPTl9SVUxFOgotICAgICAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGNzc1J1
bGUpKTsKKyAgICAgICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVs
ZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNI
QURPV19ET00pCiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6SE9TVF9SVUxFOgotICAgICAgICAgICAg
Y29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTSG9zdFJ1bGUq
Pihjc3NSdWxlKSk7CisgICAgICAgICAgICBjb2xsZWN0KHN0YXRpY19jYXN0PENTU0hvc3RSdWxl
Kj4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBD
U1NSdWxlOjpTVFlMRV9SVUxFOgotICAgICAgICAgICAgd3JhcHBlck1hcC5hZGQoc3RhdGljX2Nh
c3Q8Q1NTU3R5bGVSdWxlKj4oY3NzUnVsZSktPnN0eWxlUnVsZSgpLCBzdGF0aWNfY2FzdDxDU1NT
dHlsZVJ1bGUqPihjc3NSdWxlKSk7CisgICAgICAgICAgICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFw
cGVyTWFwLmFkZChzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NSdWxlKS0+c3R5bGVSdWxl
KCksIHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjk5LDQ1ICsy
NzAzLDUyIEBAIHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVS
dWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhCiAgICAgfQogfQogCi1zdGF0aWMgdm9p
ZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHls
ZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNo
ZWV0V3JhcHBlclNldCwgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KQordm9pZCBDU1NP
TVdyYXBwZXI6OmNvbGxlY3QoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRX
cmFwcGVyU2V0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFz
dHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0
eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHN0eWxlU2hlZXQpOwogICAg
IHNoZWV0V3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3RDU1NP
TVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBjb2xs
ZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdENT
U09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3
cmFwcGVyTWFwLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykK
K3ZvaWQgQ1NTT01XcmFwcGVyOjpjb2xsZWN0KGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVT
aGVldD4gPiYgc2hlZXRzKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMu
c2l6ZSgpOyArK2kpCi0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHNo
ZWV0c1tpXS5nZXQoKSk7CisgICAgICAgIGNvbGxlY3Qoc2hlZXRzW2ldLmdldCgpKTsKIH0KIAot
c3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQ
dHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbikKK3ZvaWQgQ1NTT01XcmFwcGVyOjpjb2xsZWN0KERv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xsZWN0aW9uKQogewotICAg
IGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5h
Y3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsKLSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFw
cGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+cGFnZVVzZXJTaGVldCgpKTsKLSAgICBjb2xs
ZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+aW5qZWN0
ZWRVc2VyU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1h
cCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmRvY3VtZW50VXNlclN0eWxlU2hlZXRzKCkpOworICAg
IGNvbGxlY3Qoc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkp
OworICAgIGNvbGxlY3Qoc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQoKSk7Cisg
ICAgY29sbGVjdChzdHlsZVNoZWV0Q29sbGVjdGlvbi0+aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMo
KSk7CisgICAgY29sbGVjdChzdHlsZVNoZWV0Q29sbGVjdGlvbi0+ZG9jdW1lbnRVc2VyU3R5bGVT
aGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogU3R5bGVSZXNvbHZlcjo6ZW5zdXJlRnVsbENT
U09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUpCitDU1NTdHlsZVJ1bGUqIENT
U09NV3JhcHBlcjo6ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUq
IHJ1bGUsIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xsZWN0aW9u
KQogewogICAgIGlmIChtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHkoKSkgewot
ICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFw
LCBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsK
LSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1h
cCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBkZWZhdWx0U3R5bGVTaGVldCk7Ci0gICAg
ICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1f
c3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgcXVpcmtzU3R5bGVTaGVldCk7Ci0gICAgICAgIGNv
bGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVT
aGVldENTU09NV3JhcHBlclNldCwgc3ZnU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RDU1NP
TVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09N
V3JhcHBlclNldCwgbWF0aE1MU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09NV3JhcHBl
clNldCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwotICAgICAgICBjb2xsZWN0Q1NTT01XcmFw
cGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBtX3N0eWxlU2hlZXRDU1NPTVdyYXBw
ZXJTZXQsIGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxlU2hl
ZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKKyAgICAgICAgY29s
bGVjdChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIGRlZmF1bHRTdHlsZVNoZWV0KTsKKyAg
ICAgICAgY29sbGVjdChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHF1aXJrc1N0eWxlU2hl
ZXQpOworICAgICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc3ZnU3R5
bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3QobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBt
YXRoTUxTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxlU2hlZXRDU1NPTVdyYXBw
ZXJTZXQsIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQsIGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKIAotICAgICAgICBj
b2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBkb2N1bWVu
dCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpKTsKKyAgICAgICAgY29sbGVjdChzdHlsZVNoZWV0
Q29sbGVjdGlvbik7CiAgICAgfQogICAgIHJldHVybiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVy
TWFwLmdldChydWxlKS5nZXQoKTsKIH0KIAordm9pZCBDU1NPTVdyYXBwZXI6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9y
eVR5cGVzOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBw
ZXJNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCk7
Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVy
dHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5p
dEVsZW1lbnQoMCk7CkBAIC01NDM5LDggKzU0NTAsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
CiAgICAgaW5mby5hZGRNZW1iZXIobV9mb250U2VsZWN0b3IpOwogICAgIGluZm8uYWRkTWVtYmVy
KG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7CiAgICAgaW5mby5pZ25vcmVN
ZW1iZXIobV9zdHlsZUJ1aWxkZXIpOwotICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlclNldCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jc3NvbVdyYXBwZXIpOwogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNWRykKICAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRp
bmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRl
eCBiYzU0MzJmZTNlNmZlNjE1YmU3YjA3MDFiZjc4ZDFhNDMxZWJlYjU0Li5hYjhkMjRhNzMxNWVl
YzIzM2RjMzA0NWFlNTRkM2FjM2ZmODY5MjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgKQEAgLTEzMiw2ICsxMzIsMjcgQEAgZW51bSBSdWxlTWF0Y2hpbmdCZWhhdmlvciB7CiAgICAg
TWF0Y2hPbmx5VXNlckFnZW50UnVsZXMsCiB9OwogCitjbGFzcyBDU1NPTVdyYXBwZXIgeworcHVi
bGljOgorICAgIC8vIFdBUk5JTkcuIFRoaXMgd2lsbCBjb25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMg
Zm9yIGFsbCBzdHlsZSBydWxlcyBhbmQgY2FjaGUgdGhlbiBpbiBhIG1hcCBmb3Igc2lnbmlmaWNh
bnQgbWVtb3J5IGNvc3QuCisgICAgLy8gSXQgaXMgaGVyZSB0byBzdXBwb3J0IGluc3BlY3Rvci4g
RG9uJ3QgdXNlIGZvciBhbnkgcmVndWxhciBlbmdpbmUgZnVuY3Rpb25zLgorICAgIENTU1N0eWxl
UnVsZSogZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqLCBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKik7CisgICAgdm9pZCBjb2xsZWN0RnJvbVNoZWV0KENT
U1N0eWxlU2hlZXQqKTsKKworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OworCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4K
KyAgICB2b2lkIGNvbGxlY3QoTGlzdFR5cGUqKTsKKworICAgIHZvaWQgY29sbGVjdChEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uKik7CisgICAgdm9pZCBjb2xsZWN0KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYpOworICAgIHZvaWQgY29sbGVjdChIYXNoU2V0PFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldFdyYXBwZXJTZXQsIFN0eWxlU2hlZXRDb250ZW50cyop
OworCisgICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+IG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CisgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQ7Cit9OworCiAvLyBUaGlzIGNsYXNzIHNl
bGVjdHMgYSBSZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2VkIG9uIGEgY29sbGVj
dGlvbiBvZiBzdHlsZXNoZWV0cy4KIGNsYXNzIFN0eWxlUmVzb2x2ZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTI3NSwxMCArMjk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNyZWF0ZVRyYW5zZm9y
bU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKTsK
ICAgICAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7Ci0gICAg
Ci0gICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3Ig
YWxsIHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVuIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBt
ZW1vcnkgY29zdC4KLSAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24n
dCB1c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxl
KiBlbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSopOwogCiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NW
YWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOwpAQCAtNDM1LDYgKzQ1Miw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1p
dGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUg
bXVsdGlwbGllciA9IDEpOwogCiAgICAgQ1NTVG9TdHlsZU1hcCogc3R5bGVNYXAoKSB7IHJldHVy
biAmbV9zdHlsZU1hcDsgfQorICAgIENTU09NV3JhcHBlciYgY3Nzb21XcmFwZXByKCkgeyByZXR1
cm4gbV9jc3NvbVdyYXBwZXI7IH0KIAogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OwogICAgIApAQCAtNTI2LDkgKzU0NCw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZTsKICAgICBib29sIG1fYXBwbHlQ
cm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsKICAgICBjb25zdCBTdHlsZUJ1aWxkZXImIG1fc3R5
bGVCdWlsZGVyOwotICAgIAotICAgIEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxl
UnVsZT4gPiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOwotICAgIEhhc2hTZXQ8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4gbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0OwogCiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQogICAgIGJvb2wgbV9oYXNQZW5kaW5nU2hhZGVyczsKQEAgLTU0MCw2
ICs1NTUsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFN0eWxlU2NvcGVSZXNvbHZlcj4gbV9z
Y29wZVJlc29sdmVyOwogICAgIENTU1RvU3R5bGVNYXAgbV9zdHlsZU1hcDsKKyAgICBDU1NPTVdy
YXBwZXIgbV9jc3NvbVdyYXBwZXI7CiAKICAgICBmcmllbmQgY2xhc3MgU3R5bGVCdWlsZGVyOwog
ICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMmLCBjb25z
dCBNYXRjaGVkUHJvcGVydGllcyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggM2FhZjAzOTU5OGM2M2Y5YzFmZTQ2YmU5OGZmMTFjZTk1
Y2IzZTM2YS4uZDA5NTViZTllYzFiYzJiODg3NjQ4NTY0ZWQyMjAxYTNmNjhiZDgwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC05NTks
NyArOTU5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+
IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm8KIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OndpbGxNYXRjaFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyKQogewogICAgIGlmIChtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUpCi0gICAgICAgIG1f
Y3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3RvcihzdHlsZVJlc29sdmVyLT5lbnN1
cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUpKTsKKyAgICAgICAgbV9jdXJyZW50
U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2ZXItPmNzc29tV3JhcGVw
cigpLmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZSwgc3R5bGVSZXNvbHZl
ci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSkpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQpAQCAtOTcxLDcgKzk3MSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1hdGNoUnVsZShib29sIG1hdGNoZWQpCiB2
b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUHJvY2Vzc1J1bGUoU3R5bGVSdWxlKiBydWxlLCBT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmIChtX2N1cnJlbnRTZWxlY3Rv
clByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3Rv
cihzdHlsZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUp
KTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxl
UmVzb2x2ZXItPmNzc29tV3JhcGVwcigpLmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0
b3IocnVsZSwgc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24o
KSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRQcm9jZXNzUnVsZSgpCkBAIC0x
MTI1LDcgKzExMjUsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IElu
c3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTUwogICAgIC8vIFNpbmNlIHRo
ZSBpbnNwZWN0b3Igd2FudHMgdG8gd2FsayB0aGUgcGFyZW50IGNoYWluLCB3ZSBjb25zdHJ1Y3Qg
dGhlIGZ1bGwgd3JhcHBlcnMgaGVyZS4KICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBmYWN0
b3JlZCBiZXR0ZXIuIFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50IHNob3VsZCBy
ZXR1cm4gYSBTdHlsZVJ1bGUgdmVjdG9yLCBub3QgYSBDU1NSdWxlTGlzdC4KICAgICBpZiAoIXJ1
bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkgewotICAgICAgICBydWxlID0gc3R5bGVSZXNvbHZlci0+
ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihydWxlLT5zdHlsZVJ1bGUoKSk7Cisg
ICAgICAgIHJ1bGUgPSBzdHlsZVJlc29sdmVyLT5jc3NvbVdyYXBlcHIoKS5lbnN1cmVGdWxsQ1NT
T01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUtPnN0eWxlUnVsZSgpLCBzdHlsZVJlc29sdmVyLT5k
b2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpKTsKICAgICAgICAgaWYgKCFydWxlKQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184953</attachid>
            <date>2013-01-28 01:32:17 -0800</date>
            <delta_ts>2013-01-28 23:56:37 -0800</delta_ts>
            <desc>Rename CSSOMWrapper to CSSOMWrapperForInspector.</desc>
            <filename>bug-107779-20130128182904.patch</filename>
            <type>text/plain</type>
            <size>15172</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwOThmZWZlMTFmMmVj
NjFiOWVjMzQxNTIzMzlhMDRhM2MyNjRhNy4uZGRjMjNmZWU0ZDgzOGEyYzQ3NmRiNjg5ZTA0MzI2
OTE4ZjFmNmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBDU1NPTVdyYXBw
ZXIgZGF0YSBhbmQgZnVuY3Rpb25zIG91dCBmcm9tIFN0eWxlUmVzb2x2ZXIgaW50byBpdHMgb3du
IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RmFjdG9yZWQgQ1NTT01XcmFwcGVyIGxvZ2ljIGFuZCBkYXRhIG91dCBmcm9tIFN0eWxlUmVzb2x2
ZXIgaW50byBhCisgICAgICAgIENTU09NV3JhcHBlckZvckluc3BlY3RvciBjbGFzcy4gIFNpbmNl
IENTU09NV3JhcHBlckZvckluc3BlY3RvcgorICAgICAgICBkZXBlbmRzIG9uIHN0YXRpYyB2YXJp
YWJsZXMgZGVmaW5lZCBpbiBTdHlsZVJlc29sdmVyLmNwcCwgdGhpcworICAgICAgICBwYXRjaCBk
b2VzIG5vdCBleHRyYWN0IGEgbmV3IGNsYXNzIGludG8gYSBuZXcgZmlsZSwgd2hpY2ggbWFrZXMg
YQorICAgICAgICByZXZpZXcgZWFzaWVyIHNpbmNlIGl0IHByb2R1Y2VzIHJlYWRhYmxlIGRpZmZz
LgorCisgICAgICAgIEFmdGVyIHdlIGZhY3RvciBzdGF0aWMgdmFyaWFibGVzIHJlbGF0ZWQgdG8g
ZGVmYXVsdCBzdHlsZSBzaGVldHMKKyAgICAgICAgaW4gYSBmb2xsb3dpbmcgcGF0Y2ggKGJ1ZyAx
MDc3ODApLCBJJ2xsIG1vdmUgYQorICAgICAgICBDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IgaW50
byBhIGl0cyBvd24gZmlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UganVzdCBy
ZWZhY3RvcmluZy4KKworICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9y
U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTT01XcmFwcGVyRm9ySW5zcGVjdG9y
Ojpjb2xsZWN0RnJvbVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU09NV3JhcHBlckZvcklu
c3BlY3Rvcjo6Y29sbGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NPTVdyYXBwZXJGb3JJbnNw
ZWN0b3I6OmVuc3VyZUFsbCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NPTVdyYXBwZXJGb3JJbnNw
ZWN0b3I6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgor
ICAgICAgICAoQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
Ojpjc3NvbVdyYXBlcHJGb3JJbnNwZWN0b3IpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2ls
bE1hdGNoUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFBy
b2Nlc3NSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9i
amVjdEZvclJ1bGUpOgorCiAyMDEzLTAxLTIzICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBbUmVmYWN0b3JpbmddIFJlbW92ZSBlbGVtZW50UGFyZW50U3R5
bGUgZnJvbSBTZWxlY3RvckNoZWNrZXJDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAKaW5kZXggYzNlZTcyMGQyMGVmMDYxNDVjMWI2MTliN2Q3MDQ5MWE4MzE0ZGIwZS4uODIx
NjZiZTU1Nzc5YTYyY2JlNzQ3OGFmN2NiNzZkZjA3NmNiMDFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVJlc29sdmVyLmNwcApAQCAtMjI1LDggKzIyNSw2IEBAIFJlbmRlclN0eWxlKiBTdHlsZVJl
c29sdmVyOjpzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogCiBzdGF0aWMgdm9pZCBsb2FkRnVsbERl
ZmF1bHRTdHlsZSgpOwogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwotdGVt
cGxhdGUgPGNsYXNzIExpc3RUeXBlPgotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMo
SGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiwgTGlzdFR5cGUqKTsK
IAogLy8gRklYTUU6IEl0IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQg
Z3VhcmFudGVlcyB0aGlzIGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgog
c3RhdGljIGNvbnN0IGNoYXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5
LGRpdntkaXNwbGF5OmJsb2NrfWhlYWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6
Zm9jdXMsc3Bhbjpmb2N1c3tvdXRsaW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xv
cn1hOi13ZWJraXQtYW55LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmV9YTotd2Via2l0LWFueS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxp
bmt9IjsKQEAgLTM5MSw4ICszODksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhv
clN0eWxlU2hlZXRzKHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogI2VuZGlm
CiAKICAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21l
ZGl1bSwgdGhpcyk7Ci0gICAgICAgIGlmICghbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5p
c0VtcHR5KCkpCi0gICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRv
Q1NTT01XcmFwcGVyTWFwLCBjc3NTaGVldCk7CisgICAgICAgIG1fY3Nzb21XcmFwcGVyRm9ySW5z
cGVjdG9yLmNvbGxlY3RGcm9tU2hlZXQoY3NzU2hlZXQpOwogICAgIH0KICAgICBtX2F1dGhvclN0
eWxlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNvbGxlY3RGZWF0dXJlcygpOwpAQCAtMjY2MCw4ICsy
NjU3LDE0IEBAIFN0cmluZyBTdHlsZVJlc29sdmVyOjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4
ICovKSBjb25zdAogICAgIHJldHVybiAiIjsKIH0KIAordm9pZCBDU1NPTVdyYXBwZXJGb3JJbnNw
ZWN0b3I6OmNvbGxlY3RGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAg
ICBpZiAoIW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBj
b2xsZWN0KHN0eWxlU2hlZXQpOworfQorCiB0ZW1wbGF0ZSA8Y2xhc3MgTGlzdFR5cGU+Ci1zdGF0
aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxD
U1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIExpc3RUeXBlKiBsaXN0VHlwZSkKK3ZvaWQgQ1NT
T01XcmFwcGVyRm9ySW5zcGVjdG9yOjpjb2xsZWN0KExpc3RUeXBlKiBsaXN0VHlwZSkKIHsKICAg
ICBpZiAoIWxpc3RUeXBlKQogICAgICAgICByZXR1cm47CkBAIC0yNjcwLDI4ICsyNjczLDI4IEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVm
UHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhCiAgICAgICAgIENTU1J1bGUqIGNzc1J1bGUgPSBsaXN0
VHlwZS0+aXRlbShpKTsKICAgICAgICAgc3dpdGNoIChjc3NSdWxlLT50eXBlKCkpIHsKICAgICAg
ICAgY2FzZSBDU1NSdWxlOjpJTVBPUlRfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKHdyYXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU0ltcG9ydFJ1bGUqPihjc3NSdWxlKS0+
c3R5bGVTaGVldCgpKTsKKyAgICAgICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0
UnVsZSo+KGNzc1J1bGUpLT5zdHlsZVNoZWV0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ1NTUnVsZTo6TUVESUFfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKHdyYXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU01lZGlhUnVsZSo+KGNzc1J1bGUpKTsK
KyAgICAgICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4oY3NzUnVsZSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTUzNfQ09ORElUSU9OQUxfUlVMRVMp
CiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6U1VQUE9SVFNfUlVMRToKLSAgICAgICAgICAgIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU1N1cHBvcnRzUnVsZSo+
KGNzc1J1bGUpKTsKKyAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHN0YXRpY19jYXN0
PENTU1N1cHBvcnRzUnVsZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlm
CiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9S
RUdJT05fUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAs
IHN0YXRpY19jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPihjc3NSdWxlKSk7CisgICAgICAgICAg
ICBjb2xsZWN0KHN0YXRpY19jYXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPihjc3NSdWxlKSk7CiAg
ICAgICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAg
ICBjYXNlIENTU1J1bGU6OkhPU1RfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKHdyYXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU0hvc3RSdWxlKj4oY3NzUnVsZSkpOworICAg
ICAgICAgICAgY29sbGVjdChzdGF0aWNfY2FzdDxDU1NIb3N0UnVsZSo+KGNzc1J1bGUpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVM
RToKLSAgICAgICAgICAgIHdyYXBwZXJNYXAuYWRkKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+
KGNzc1J1bGUpLT5zdHlsZVJ1bGUoKSwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4oY3NzUnVs
ZSkpOworICAgICAgICAgICAgbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5hZGQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVSdWxlKj4oY3NzUnVsZSktPnN0eWxlUnVsZSgpLCBzdGF0aWNfY2FzdDxD
U1NTdHlsZVJ1bGUqPihjc3NSdWxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY5OSw0NSArMjcwMiw1MiBAQCBzdGF0aWMg
dm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+ID4mIHdyYQogICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3Jh
cHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVy
TWFwLCBIYXNoU2V0PFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldFdyYXBwZXJTZXQsIFN0
eWxlU2hlZXRDb250ZW50cyogc3R5bGVTaGVldCkKK3ZvaWQgQ1NTT01XcmFwcGVyRm9ySW5zcGVj
dG9yOjpjb2xsZWN0KEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0V3JhcHBl
clNldCwgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KQogewogICAgIGlmICghc3R5bGVT
aGVldCkKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzdHlsZVNo
ZWV0V3JhcHBlciA9IENTU1N0eWxlU2hlZXQ6OmNyZWF0ZShzdHlsZVNoZWV0KTsKICAgICBzaGVl
dFdyYXBwZXJTZXQuYWRkKHN0eWxlU2hlZXRXcmFwcGVyKTsKLSAgICBjb2xsZWN0Q1NTT01XcmFw
cGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0V3JhcHBlci5nZXQoKSk7CisgICAgY29sbGVjdChz
dHlsZVNoZWV0V3JhcHBlci5nZXQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBl
ck1hcCwgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCit2b2lk
IENTU09NV3JhcHBlckZvckluc3BlY3Rvcjo6Y29sbGVjdChjb25zdCBWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c2hlZXRzLnNpemUoKTsgKytpKQotICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVy
TWFwLCBzaGVldHNbaV0uZ2V0KCkpOworICAgICAgICBjb2xsZWN0KHNoZWV0c1tpXS5nZXQoKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxl
KiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24pCit2b2lkIENTU09NV3JhcHBlckZvcklu
c3BlY3Rvcjo6Y29sbGVjdChEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0
Q29sbGVjdGlvbikKIHsKLSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHls
ZVNoZWV0Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVj
dENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2Vy
U2hlZXQoKSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVl
dENvbGxlY3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwotICAgIGNvbGxlY3RDU1NP
TVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJT
dHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVB
dXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5w
YWdlVXNlclNoZWV0KCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldENvbGxlY3Rpb24tPmluamVj
dGVkVXNlclN0eWxlU2hlZXRzKCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldENvbGxlY3Rpb24t
PmRvY3VtZW50VXNlclN0eWxlU2hlZXRzKCkpOwogfQogCi1DU1NTdHlsZVJ1bGUqIFN0eWxlUmVz
b2x2ZXI6OmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVSdWxlKiBydWxl
KQorQ1NTU3R5bGVSdWxlKiBDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3I6OmVuc3VyZUFsbChTdHls
ZVJ1bGUqIHJ1bGUsIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xs
ZWN0aW9uKQogewogICAgIGlmIChtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHko
KSkgewotICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFw
cGVyTWFwLCBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNo
ZWV0KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3Jh
cHBlck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBkZWZhdWx0U3R5bGVTaGVldCk7
Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJN
YXAsIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgcXVpcmtzU3R5bGVTaGVldCk7Ci0gICAg
ICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1f
c3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc3ZnU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVl
dENTU09NV3JhcHBlclNldCwgbWF0aE1MU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RDU1NP
TVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09N
V3JhcHBlclNldCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwotICAgICAgICBjb2xsZWN0Q1NT
T01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBtX3N0eWxlU2hlZXRDU1NP
TVdyYXBwZXJTZXQsIGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0
eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0KTsKKyAgICAg
ICAgY29sbGVjdChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIGRlZmF1bHRTdHlsZVNoZWV0
KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHF1aXJrc1N0
eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwg
c3ZnU3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3QobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVy
U2V0LCBtYXRoTUxTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxlU2hlZXRDU1NP
TVdyYXBwZXJTZXQsIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdCht
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKIAotICAg
ICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBk
b2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpKTsKKyAgICAgICAgY29sbGVjdChzdHls
ZVNoZWV0Q29sbGVjdGlvbik7CiAgICAgfQogICAgIHJldHVybiBtX3N0eWxlUnVsZVRvQ1NTT01X
cmFwcGVyTWFwLmdldChydWxlKS5nZXQoKTsKIH0KIAordm9pZCBDU1NPTVdyYXBwZXJGb3JJbnNw
ZWN0b3I6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywg
dGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVl
dENTU09NV3JhcHBlclNldCk7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9wZXJ0
eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7CkBAIC01NDM5LDggKzU0NDksNyBAQCB2b2lk
IFN0eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9mb250U2VsZWN0b3IpOwog
ICAgIGluZm8uYWRkTWVtYmVyKG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7
CiAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9zdHlsZUJ1aWxkZXIpOwotICAgIGluZm8uYWRkTWVt
YmVyKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1f
c3R5bGVTaGVldENTU09NV3JhcHBlclNldCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9jc3NvbVdy
YXBwZXJGb3JJbnNwZWN0b3IpOwogI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKFNW
RykKICAgICBpbmZvLmFkZE1lbWJlcihtX3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBiYzU0MzJmZTNlNmZlNjE1YmU3YjA3MDFi
Zjc4ZDFhNDMxZWJlYjU0Li41MjUwMGI2ODExMzhhMmE2Y2M4ZTc2YzllOGUwZjAwYjdjZDE1ZjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTEzMiw2ICsxMzIsMjcgQEAgZW51
bSBSdWxlTWF0Y2hpbmdCZWhhdmlvciB7CiAgICAgTWF0Y2hPbmx5VXNlckFnZW50UnVsZXMsCiB9
OwogCitjbGFzcyBDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IgeworcHVibGljOgorICAgIC8vIFdB
Uk5JTkcuIFRoaXMgd2lsbCBjb25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMgZm9yIGFsbCBzdHlsZSBy
dWxlcyBhbmQgY2FjaGUgdGhlbiBpbiBhIG1hcCBmb3Igc2lnbmlmaWNhbnQgbWVtb3J5IGNvc3Qu
CisgICAgLy8gSXQgaXMgaGVyZSB0byBzdXBwb3J0IGluc3BlY3Rvci4gRG9uJ3QgdXNlIGZvciBh
bnkgcmVndWxhciBlbmdpbmUgZnVuY3Rpb25zLgorICAgIENTU1N0eWxlUnVsZSogZW5zdXJlQWxs
KFN0eWxlUnVsZSosIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qKTsKKyAgICB2b2lkIGNv
bGxlY3RGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCopOworCisgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdGVtcGxhdGUg
PGNsYXNzIExpc3RUeXBlPgorICAgIHZvaWQgY29sbGVjdChMaXN0VHlwZSopOworCisgICAgdm9p
ZCBjb2xsZWN0KERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qKTsKKyAgICB2b2lkIGNvbGxl
Y3QoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CisgICAgdm9pZCBjb2xs
ZWN0KEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0V3JhcHBlclNldCwgU3R5
bGVTaGVldENvbnRlbnRzKik7CisKKyAgICBIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NT
dHlsZVJ1bGU+ID4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcDsKKyAgICBIYXNoU2V0PFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKK307CisK
IC8vIFRoaXMgY2xhc3Mgc2VsZWN0cyBhIFJlbmRlclN0eWxlIGZvciBhIGdpdmVuIGVsZW1lbnQg
YmFzZWQgb24gYSBjb2xsZWN0aW9uIG9mIHN0eWxlc2hlZXRzLgogY2xhc3MgU3R5bGVSZXNvbHZl
ciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5bGVSZXNvbHZlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwpAQCAtMjc1LDEwICsyOTYsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJv
b2wgY3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5
bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIFRyYW5zZm9ybU9wZXJhdGlvbnMm
IG91dE9wZXJhdGlvbnMpOwogICAgIAogICAgIHZvaWQgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0
aWVzQ2FjaGUoKTsKLSAgICAKLSAgICAvLyBXQVJOSU5HLiBUaGlzIHdpbGwgY29uc3RydWN0IENT
U09NIHdyYXBwZXJzIGZvciBhbGwgc3R5bGUgcnVsZXMgYW5kIGNhY2hlIHRoZW4gaW4gYSBtYXAg
Zm9yIHNpZ25pZmljYW50IG1lbW9yeSBjb3N0LgotICAgIC8vIEl0IGlzIGhlcmUgdG8gc3VwcG9y
dCBpbnNwZWN0b3IuIERvbid0IHVzZSBmb3IgYW55IHJlZ3VsYXIgZW5naW5lIGZ1bmN0aW9ucy4K
LSAgICBDU1NTdHlsZVJ1bGUqIGVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IoU3R5
bGVSdWxlKik7CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgYm9vbCBjcmVhdGVGaWx0
ZXJPcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBSZW5kZXJTdHlsZSogaW5TdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgRmlsdGVyT3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucyk7CkBA
IC00MzUsNiArNDUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBMZW5ndGggY29udmVydFRvRmxv
YXRMZW5ndGgoQ1NTUHJpbWl0aXZlVmFsdWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBy
b290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMSk7CiAKICAgICBDU1NUb1N0eWxlTWFwKiBz
dHlsZU1hcCgpIHsgcmV0dXJuICZtX3N0eWxlTWFwOyB9CisgICAgQ1NTT01XcmFwcGVyRm9ySW5z
cGVjdG9yJiBjc3NvbVdyYXBlcHJGb3JJbnNwZWN0b3IoKSB7IHJldHVybiBtX2Nzc29tV3JhcHBl
ckZvckluc3BlY3RvcjsgfQogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAgICAgCkBAIC01MjYsOSArNTQ0LDYgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fYXBwbHlQcm9wZXJ0eVRvUmVndWxhclN0eWxlOwogICAgIGJvb2wgbV9hcHBseVByb3Bl
cnR5VG9WaXNpdGVkTGlua1N0eWxlOwogICAgIGNvbnN0IFN0eWxlQnVpbGRlciYgbV9zdHlsZUJ1
aWxkZXI7Ci0gICAgCi0gICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxl
PiA+IG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7Ci0gICAgSGFzaFNldDxSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gPiBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQ7CiAKICNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCiAgICAgYm9vbCBtX2hhc1BlbmRpbmdTaGFkZXJzOwpAQCAtNTQwLDYgKzU1
NSw3IEBAIHByaXZhdGU6CiAKICAgICBPd25QdHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Njb3Bl
UmVzb2x2ZXI7CiAgICAgQ1NTVG9TdHlsZU1hcCBtX3N0eWxlTWFwOworICAgIENTU09NV3JhcHBl
ckZvckluc3BlY3RvciBtX2Nzc29tV3JhcHBlckZvckluc3BlY3RvcjsKIAogICAgIGZyaWVuZCBj
bGFzcyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRj
aGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0aWVzJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAzYWFmMDM5NTk4YzYz
ZjljMWZlNDZiZTk4ZmYxMWNlOTVjYjNlMzZhLi4zZGZhZmRiMzUzNzU1ZDRmMzAwZTE5YWY2Mzg4
MjkzZWU2MDlkYzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAKQEAgLTk1OSw3ICs5NTksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpD
U1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclBybwog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIFN0
eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAgaWYgKG1fY3VycmVudFNlbGVjdG9y
UHJvZmlsZSkKLSAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9y
KHN0eWxlUmVzb2x2ZXItPmVuc3VyZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZSkp
OworICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnN0YXJ0U2VsZWN0b3Ioc3R5bGVS
ZXNvbHZlci0+Y3Nzb21XcmFwZXByRm9ySW5zcGVjdG9yKCkuZW5zdXJlQWxsKHJ1bGUsIHN0eWxl
UmVzb2x2ZXItPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTWF0Y2hSdWxlKGJvb2wgbWF0Y2hlZCkKQEAgLTk3MSw3
ICs5NzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRj
aGVkKQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFByb2Nlc3NSdWxlKFN0eWxlUnVsZSog
cnVsZSwgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKIHsKICAgICBpZiAobV9jdXJyZW50
U2VsZWN0b3JQcm9maWxlKQotICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnN0YXJ0
U2VsZWN0b3Ioc3R5bGVSZXNvbHZlci0+ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3Rv
cihydWxlKSk7CisgICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3Rv
cihzdHlsZVJlc29sdmVyLT5jc3NvbVdyYXBlcHJGb3JJbnNwZWN0b3IoKS5lbnN1cmVBbGwocnVs
ZSwgc3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRQcm9jZXNzUnVsZSgpCkBAIC0xMTI1LDcg
KzExMjUsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3Rv
ckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTUwogICAgIC8vIFNpbmNlIHRoZSBpbnNw
ZWN0b3Igd2FudHMgdG8gd2FsayB0aGUgcGFyZW50IGNoYWluLCB3ZSBjb25zdHJ1Y3QgdGhlIGZ1
bGwgd3JhcHBlcnMgaGVyZS4KICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBmYWN0b3JlZCBi
ZXR0ZXIuIFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50IHNob3VsZCByZXR1cm4g
YSBTdHlsZVJ1bGUgdmVjdG9yLCBub3QgYSBDU1NSdWxlTGlzdC4KICAgICBpZiAoIXJ1bGUtPnBh
cmVudFN0eWxlU2hlZXQoKSkgewotICAgICAgICBydWxlID0gc3R5bGVSZXNvbHZlci0+ZW5zdXJl
RnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihydWxlLT5zdHlsZVJ1bGUoKSk7CisgICAgICAg
IHJ1bGUgPSBzdHlsZVJlc29sdmVyLT5jc3NvbVdyYXBlcHJGb3JJbnNwZWN0b3IoKS5lbnN1cmVB
bGwocnVsZS0+c3R5bGVSdWxlKCksIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnN0eWxlU2hl
ZXRDb2xsZWN0aW9uKCkpOwogICAgICAgICBpZiAoIXJ1bGUpCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185180</attachid>
            <date>2013-01-28 23:56:40 -0800</date>
            <delta_ts>2013-01-29 23:17:50 -0800</delta_ts>
            <desc>Fixed typo. Renamed to InspectorCSSOMWrappers.</desc>
            <filename>bug-107779-20130129165327.patch</filename>
            <type>text/plain</type>
            <size>15110</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEwOThmZWZlMTFmMmVj
NjFiOWVjMzQxNTIzMzlhMDRhM2MyNjRhNy4uNTUyZDUxZWFjMTVmYWQ4MTJhODEyNWUzMDJkNjRl
N2Y4ZGU0ODVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAxLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBDU1NPTVdyYXBw
ZXIgZGF0YSBhbmQgZnVuY3Rpb25zIG91dCBmcm9tIFN0eWxlUmVzb2x2ZXIgaW50byBpdHMgb3du
IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RmFjdG9yZWQgQ1NTT01XcmFwcGVyIGxvZ2ljIGFuZCBkYXRhIG91dCBmcm9tIFN0eWxlUmVzb2x2
ZXIgaW50byBhCisgICAgICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgY2xhc3MuICBTaW5jZSBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzCisgICAgICAgIGRlcGVuZHMgb24gc3RhdGljIHZhcmlhYmxl
cyBkZWZpbmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwLCB0aGlzCisgICAgICAgIHBhdGNoIGRvZXMg
bm90IGV4dHJhY3QgYSBuZXcgY2xhc3MgaW50byBhIG5ldyBmaWxlLCB3aGljaCBtYWtlcyBhCisg
ICAgICAgIHJldmlldyBlYXNpZXIgc2luY2UgaXQgcHJvZHVjZXMgcmVhZGFibGUgZGlmZnMuCisK
KyAgICAgICAgQWZ0ZXIgd2UgZmFjdG9yIHN0YXRpYyB2YXJpYWJsZXMgcmVsYXRlZCB0byBkZWZh
dWx0IHN0eWxlIHNoZWV0cworICAgICAgICBpbiBhIGZvbGxvd2luZyBwYXRjaCAoYnVnIDEwNzc4
MCksIEknbGwgbW92ZSBhCisgICAgICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgaW50byBhIGl0
cyBvd24gZmlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU2hl
ZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjplbnN1cmVBbGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6cmVwb3J0TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2Up
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjppbnNwZWN0b3JDU1NPTVdyYXBwZXJz
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQcm9jZXNzUnVsZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKwogMjAxMy0wMS0y
MyAgVGFrYXNoaSBTYWthbW90byAgPHRhc2FrQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1JlZmFj
dG9yaW5nXSBSZW1vdmUgZWxlbWVudFBhcmVudFN0eWxlIGZyb20gU2VsZWN0b3JDaGVja2VyQ29u
dGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGMzZWU3MjBkMjBlZjA2
MTQ1YzFiNjE5YjdkNzA0OTFhODMxNGRiMGUuLjdjNDE0N2UxNjVjNjgxNmY5N2U0ZDRjNzZjYzJi
NTQzOGE4YzdkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIyNSw4
ICsyMjUsNiBAQCBSZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2YWls
YWJsZTsKIAogc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0YXRpYyB2b2lk
IGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKTsKLXRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KLXN0
YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRy
PENTU1N0eWxlUnVsZT4gPiYsIExpc3RUeXBlKik7CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBu
aWNlIHRvIHVzZSBzb21lIG1lY2hhbmlzbSB0aGF0IGd1YXJhbnRlZXMgdGhpcyBpcyBpbiBzeW5j
IHdpdGggdGhlIHJlYWwgVUEgc3R5bGVzaGVldC4KIHN0YXRpYyBjb25zdCBjaGFyKiBzaW1wbGVV
c2VyQWdlbnRTdHlsZVNoZWV0ID0gImh0bWwsYm9keSxkaXZ7ZGlzcGxheTpibG9ja31oZWFke2Rp
c3BsYXk6bm9uZX1ib2R5e21hcmdpbjo4cHh9ZGl2OmZvY3VzLHNwYW46Zm9jdXN7b3V0bGluZTph
dXRvIDVweCAtd2Via2l0LWZvY3VzLXJpbmctY29sb3J9YTotd2Via2l0LWFueS1saW5re2NvbG9y
Oi13ZWJraXQtbGluazt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWE6LXdlYmtpdC1hbnktbGlu
azphY3RpdmV7Y29sb3I6LXdlYmtpdC1hY3RpdmVsaW5rfSI7CkBAIC0zOTEsOCArMzg5LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJz
dE5ldywgY29uc3QgVmVjdG9yPFJlZlAKICNlbmRpZgogCiAgICAgICAgIG1fYXV0aG9yU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMpOwotICAgICAgICBpZiAo
IW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29s
bGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgY3NzU2hlZXQp
OworICAgICAgICBtX2luc3BlY3RvckNTU09NV3JhcHBlcnMuY29sbGVjdEZyb21TaGVldChjc3NT
aGVldCk7CiAgICAgfQogICAgIG1fYXV0aG9yU3R5bGUtPnNocmlua1RvRml0KCk7CiAgICAgY29s
bGVjdEZlYXR1cmVzKCk7CkBAIC0yNjYwLDggKzI2NTcsMTQgQEAgU3RyaW5nIFN0eWxlUmVzb2x2
ZXI6OnBhZ2VOYW1lKGludCAvKiBwYWdlSW5kZXggKi8pIGNvbnN0CiAgICAgcmV0dXJuICIiOwog
fQogCit2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCkKK3sKKyAgICBpZiAoIW1fc3R5bGVSdWxlVG9DU1NPTVdyYXBw
ZXJNYXAuaXNFbXB0eSgpKQorICAgICAgICBjb2xsZWN0KHN0eWxlU2hlZXQpOworfQorCiB0ZW1w
bGF0ZSA8Y2xhc3MgTGlzdFR5cGU+Ci1zdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhI
YXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIExp
c3RUeXBlKiBsaXN0VHlwZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdChM
aXN0VHlwZSogbGlzdFR5cGUpCiB7CiAgICAgaWYgKCFsaXN0VHlwZSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjY3MCwyOCArMjY3MywyOCBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVy
cyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYQogICAgICAg
ICBDU1NSdWxlKiBjc3NSdWxlID0gbGlzdFR5cGUtPml0ZW0oaSk7CiAgICAgICAgIHN3aXRjaCAo
Y3NzUnVsZS0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6SU1QT1JUX1JVTEU6Ci0g
ICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxD
U1NJbXBvcnRSdWxlKj4oY3NzUnVsZSktPnN0eWxlU2hlZXQoKSk7CisgICAgICAgICAgICBjb2xs
ZWN0KHN0YXRpY19jYXN0PENTU0ltcG9ydFJ1bGUqPihjc3NSdWxlKS0+c3R5bGVTaGVldCgpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU1J1bGU6Ok1FRElBX1JVTEU6Ci0g
ICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxD
U1NNZWRpYVJ1bGUqPihjc3NSdWxlKSk7CisgICAgICAgICAgICBjb2xsZWN0KHN0YXRpY19jYXN0
PENTU01lZGlhUnVsZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShDU1MzX0NPTkRJVElPTkFMX1JVTEVTKQogICAgICAgICBjYXNlIENTU1J1bGU6OlNVUFBPUlRT
X1JVTEU6Ci0gICAgICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0
aWNfY2FzdDxDU1NTdXBwb3J0c1J1bGUqPihjc3NSdWxlKSk7CisgICAgICAgICAgICBjb2xsZWN0
Q1NTT01XcmFwcGVycyhzdGF0aWNfY2FzdDxDU1NTdXBwb3J0c1J1bGUqPihjc3NSdWxlKSk7CiAg
ICAgICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICAg
ICAgY2FzZSBDU1NSdWxlOjpXRUJLSVRfUkVHSU9OX1JVTEU6Ci0gICAgICAgICAgICBjb2xsZWN0
Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxXZWJLaXRDU1NSZWdpb25SdWxl
Kj4oY3NzUnVsZSkpOworICAgICAgICAgICAgY29sbGVjdChzdGF0aWNfY2FzdDxXZWJLaXRDU1NS
ZWdpb25SdWxlKj4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKICAgICAgICAgY2FzZSBDU1NSdWxlOjpIT1NUX1JVTEU6Ci0gICAg
ICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdGF0aWNfY2FzdDxDU1NI
b3N0UnVsZSo+KGNzc1J1bGUpKTsKKyAgICAgICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8Q1NT
SG9zdFJ1bGUqPihjc3NSdWxlKSk7CiAgICAgICAgICAgICBicmVhazsKICNlbmRpZgogICAgICAg
ICBjYXNlIENTU1J1bGU6OlNUWUxFX1JVTEU6Ci0gICAgICAgICAgICB3cmFwcGVyTWFwLmFkZChz
dGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NSdWxlKS0+c3R5bGVSdWxlKCksIHN0YXRpY19j
YXN0PENTU1N0eWxlUnVsZSo+KGNzc1J1bGUpKTsKKyAgICAgICAgICAgIG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXAuYWRkKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNzc1J1bGUpLT5z
dHlsZVJ1bGUoKSwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4oY3NzUnVsZSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTI2
OTksNDUgKzI3MDIsNTIgQEAgc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1h
cDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmEKICAgICB9CiB9CiAKLXN0
YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRy
PENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiYgc2hlZXRXcmFwcGVyU2V0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCit2
b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QoSGFzaFNldDxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgc2hlZXRXcmFwcGVyU2V0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hl
ZXQpCiB7CiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICByZXR1cm47CiAgICAgUmVmUHRy
PENTU1N0eWxlU2hlZXQ+IHN0eWxlU2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRl
KHN0eWxlU2hlZXQpOwogICAgIHNoZWV0V3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIp
OwotICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRXcmFwcGVy
LmdldCgpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIAotc3Rh
dGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8
Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIHNoZWV0cykKK3ZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdChj
b25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykKIHsKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hlZXRzLnNpemUoKTsgKytpKQotICAgICAgICBjb2xsZWN0
Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzaGVldHNbaV0uZ2V0KCkpOworICAgICAgICBjb2xs
ZWN0KHNoZWV0c1tpXS5nZXQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBw
ZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1h
cCwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24pCit2
b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QoRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24pCiB7Ci0gICAgY29sbGVjdENTU09NV3JhcHBl
cnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxlU2hl
ZXRzKCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRD
b2xsZWN0aW9uLT5wYWdlVXNlclNoZWV0KCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdy
YXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygp
KTsKLSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVj
dGlvbi0+ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSk7CisgICAgY29sbGVjdChzdHlsZVNoZWV0
Q29sbGVjdGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7CisgICAgY29sbGVjdChzdHls
ZVNoZWV0Q29sbGVjdGlvbi0+cGFnZVVzZXJTaGVldCgpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hl
ZXRDb2xsZWN0aW9uLT5pbmplY3RlZFVzZXJTdHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0KHN0
eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygpKTsKIH0KIAotQ1NT
U3R5bGVSdWxlKiBTdHlsZVJlc29sdmVyOjplbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVj
dG9yKFN0eWxlUnVsZSogcnVsZSkKK0NTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTT01XcmFwcGVy
czo6ZW5zdXJlQWxsKFN0eWxlUnVsZSogcnVsZSwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
biogc3R5bGVTaGVldENvbGxlY3Rpb24pCiB7CiAgICAgaWYgKG1fc3R5bGVSdWxlVG9DU1NPTVdy
YXBwZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc2lt
cGxlRGVmYXVsdFN0eWxlU2hlZXQpOwotICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0
eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIGRl
ZmF1bHRTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1
bGVUb0NTU09NV3JhcHBlck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBxdWlya3NT
dHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NT
U09NV3JhcHBlck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBzdmdTdHlsZVNoZWV0
KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBl
ck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBtYXRoTUxTdHlsZVNoZWV0KTsKLSAg
ICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwg
bV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCk7Ci0g
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAs
IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgZnVsbHNjcmVlblN0eWxlU2hlZXQpOworICAg
ICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwg
ZGVmYXVsdFN0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlclNldCwgcXVpcmtzU3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3QobV9zdHlsZVNoZWV0
Q1NTT01XcmFwcGVyU2V0LCBzdmdTdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdChtX3N0eWxl
U2hlZXRDU1NPTVdyYXBwZXJTZXQsIG1hdGhNTFN0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0
KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwor
ICAgICAgICBjb2xsZWN0KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgZnVsbHNjcmVlblN0
eWxlU2hlZXQpOwogCi0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXAsIGRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpOworICAg
ICAgICBjb2xsZWN0KHN0eWxlU2hlZXRDb2xsZWN0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG1f
c3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOwogfQogCit2b2lkIElu
c3BlY3RvckNTU09NV3JhcHBlcnM6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOworICAgIGluZm8u
YWRkTWVtYmVyKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOworICAgIGluZm8uYWRkTWVt
YmVyKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCk7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZl
cjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7CkBAIC01NDM5LDgg
KzU0NDksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9m
b250U2VsZWN0b3IpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fdmlld3BvcnREZXBlbmRlbnRNZWRp
YVF1ZXJ5UmVzdWx0cyk7CiAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9zdHlsZUJ1aWxkZXIpOwot
ICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGlu
Zm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
ICYmIEVOQUJMRShTVkcpCiAgICAgaW5mby5hZGRNZW1iZXIobV9wZW5kaW5nU1ZHRG9jdW1lbnRz
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggYmM1NDMyZmUzZTZm
ZTYxNWJlN2IwNzAxYmY3OGQxYTQzMWViZWI1NC4uMmQyM2YyNjQ5ZDMxYmVlOTI5N2ExZTk0YTU2
YTQ1MzBlZWYwZmVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xMzIsNiAr
MTMyLDI3IEBAIGVudW0gUnVsZU1hdGNoaW5nQmVoYXZpb3IgewogICAgIE1hdGNoT25seVVzZXJB
Z2VudFJ1bGVzLAogfTsKIAorY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CitwdWJsaWM6
CisgICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3Ig
YWxsIHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVuIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBt
ZW1vcnkgY29zdC4KKyAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24n
dCB1c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCisgICAgQ1NTU3R5bGVSdWxl
KiBlbnN1cmVBbGwoU3R5bGVSdWxlKiwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOwor
ICAgIHZvaWQgY29sbGVjdEZyb21TaGVldChDU1NTdHlsZVNoZWV0Kik7CisKKyAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgTGlzdFR5cGU+CisgICAgdm9pZCBjb2xsZWN0KExpc3RUeXBlKik7
CisKKyAgICB2b2lkIGNvbGxlY3QoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOworICAg
IHZvaWQgY29sbGVjdChjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mKTsKKyAg
ICB2b2lkIGNvbGxlY3QoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRXcmFw
cGVyU2V0LCBTdHlsZVNoZWV0Q29udGVudHMqKTsKKworICAgIEhhc2hNYXA8U3R5bGVSdWxlKiwg
UmVmUHRyPENTU1N0eWxlUnVsZT4gPiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwOworICAg
IEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVy
U2V0OworfTsKKwogLy8gVGhpcyBjbGFzcyBzZWxlY3RzIGEgUmVuZGVyU3R5bGUgZm9yIGEgZ2l2
ZW4gZWxlbWVudCBiYXNlZCBvbiBhIGNvbGxlY3Rpb24gb2Ygc3R5bGVzaGVldHMuCiBjbGFzcyBT
dHlsZVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVJlc29sdmVyKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0yNzUsMTAgKzI5Niw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgYm9vbCBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKENTU1ZhbHVlKiBpblZhbHVl
LCBSZW5kZXJTdHlsZSogaW5TdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgb3V0T3BlcmF0aW9ucyk7CiAgICAgCiAgICAgdm9pZCBpbnZhbGlkYXRlTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSgpOwotICAgIAotICAgIC8vIFdBUk5JTkcuIFRoaXMgd2lsbCBj
b25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMgZm9yIGFsbCBzdHlsZSBydWxlcyBhbmQgY2FjaGUgdGhl
biBpbiBhIG1hcCBmb3Igc2lnbmlmaWNhbnQgbWVtb3J5IGNvc3QuCi0gICAgLy8gSXQgaXMgaGVy
ZSB0byBzdXBwb3J0IGluc3BlY3Rvci4gRG9uJ3QgdXNlIGZvciBhbnkgcmVndWxhciBlbmdpbmUg
ZnVuY3Rpb25zLgotICAgIENTU1N0eWxlUnVsZSogZW5zdXJlRnVsbENTU09NV3JhcHBlckZvcklu
c3BlY3RvcihTdHlsZVJ1bGUqKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBib29s
IGNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBp
blN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBGaWx0ZXJPcGVyYXRpb25zJiBvdXRPcGVy
YXRpb25zKTsKQEAgLTQzNSw2ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIExlbmd0aCBj
b252ZXJ0VG9GbG9hdExlbmd0aChDU1NQcmltaXRpdmVWYWx1ZSosIFJlbmRlclN0eWxlKiwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxKTsKIAogICAgIENTU1Rv
U3R5bGVNYXAqIHN0eWxlTWFwKCkgeyByZXR1cm4gJm1fc3R5bGVNYXA7IH0KKyAgICBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzJiBpbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkgeyByZXR1cm4gbV9pbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzOyB9CiAKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKQEAgLTUyNiw5ICs1NDQsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9hcHBseVByb3BlcnR5VG9SZWd1bGFyU3R5bGU7CiAgICAgYm9vbCBtX2FwcGx5
UHJvcGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGU7CiAgICAgY29uc3QgU3R5bGVCdWlsZGVyJiBtX3N0
eWxlQnVpbGRlcjsKLSAgICAKLSAgICBIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHls
ZVJ1bGU+ID4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcDsKLSAgICBIYXNoU2V0PFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldDsKIAogI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKICAgICBib29sIG1faGFzUGVuZGluZ1NoYWRlcnM7CkBAIC01NDAs
NiArNTU1LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxTdHlsZVNjb3BlUmVzb2x2ZXI+IG1f
c2NvcGVSZXNvbHZlcjsKICAgICBDU1NUb1N0eWxlTWFwIG1fc3R5bGVNYXA7CisgICAgSW5zcGVj
dG9yQ1NTT01XcmFwcGVycyBtX2luc3BlY3RvckNTU09NV3JhcHBlcnM7CiAKICAgICBmcmllbmQg
Y2xhc3MgU3R5bGVCdWlsZGVyOwogICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgTWF0
Y2hlZFByb3BlcnRpZXMmLCBjb25zdCBNYXRjaGVkUHJvcGVydGllcyYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggM2FhZjAzOTU5OGM2
M2Y5YzFmZTQ2YmU5OGZmMTFjZTk1Y2IzZTM2YS4uYzE1YWFhNzVhZTI2ZDQ1NjRjZTc0MDliNDA5
MzA4MTQyNjI2NjVmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCkBAIC05NTksNyArOTU5LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpTZWxlY3RvclByb2ZpbGU+IEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2VsZWN0b3JQcm8K
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1bGUoU3R5bGVSdWxlKiBydWxlLCBT
dHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmIChtX2N1cnJlbnRTZWxlY3Rv
clByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3Rv
cihzdHlsZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUp
KTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxl
UmVzb2x2ZXItPmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5lbnN1cmVBbGwocnVsZSwgc3R5bGVS
ZXNvbHZlci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSkpOwogfQogCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQpAQCAtOTcxLDcg
Kzk3MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1hdGNoUnVsZShib29sIG1hdGNo
ZWQpCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUHJvY2Vzc1J1bGUoU3R5bGVSdWxlKiBy
dWxlLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmIChtX2N1cnJlbnRT
ZWxlY3RvclByb2ZpbGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRT
ZWxlY3RvcihzdHlsZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9y
KHJ1bGUpKTsKKyAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9y
KHN0eWxlUmVzb2x2ZXItPmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5lbnN1cmVBbGwocnVsZSwg
c3R5bGVSZXNvbHZlci0+ZG9jdW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSkpOwogfQog
CiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRQcm9jZXNzUnVsZSgpCkBAIC0xMTI1LDcgKzEx
MjUsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1J1bGU+IEluc3BlY3RvckNT
U0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUoQ1NTUwogICAgIC8vIFNpbmNlIHRoZSBpbnNwZWN0
b3Igd2FudHMgdG8gd2FsayB0aGUgcGFyZW50IGNoYWluLCB3ZSBjb25zdHJ1Y3QgdGhlIGZ1bGwg
d3JhcHBlcnMgaGVyZS4KICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCBiZSBmYWN0b3JlZCBiZXR0
ZXIuIFN0eWxlUmVzb2x2ZXI6OnN0eWxlUnVsZXNGb3JFbGVtZW50IHNob3VsZCByZXR1cm4gYSBT
dHlsZVJ1bGUgdmVjdG9yLCBub3QgYSBDU1NSdWxlTGlzdC4KICAgICBpZiAoIXJ1bGUtPnBhcmVu
dFN0eWxlU2hlZXQoKSkgewotICAgICAgICBydWxlID0gc3R5bGVSZXNvbHZlci0+ZW5zdXJlRnVs
bENTU09NV3JhcHBlckZvckluc3BlY3RvcihydWxlLT5zdHlsZVJ1bGUoKSk7CisgICAgICAgIHJ1
bGUgPSBzdHlsZVJlc29sdmVyLT5pbnNwZWN0b3JDU1NPTVdyYXBwZXJzKCkuZW5zdXJlQWxsKHJ1
bGUtPnN0eWxlUnVsZSgpLCBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29s
bGVjdGlvbigpKTsKICAgICAgICAgaWYgKCFydWxlKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185404</attachid>
            <date>2013-01-29 23:17:54 -0800</date>
            <delta_ts>2013-01-30 20:26:33 -0800</delta_ts>
            <desc>No longer overloading.</desc>
            <filename>bug-107779-20130130161439.patch</filename>
            <type>text/plain</type>
            <size>15985</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhMDM3MGNjNjhhMTIx
NWVmYjM4N2VkOThkZjdlMmMwNzQwMzg2NS4uYTIyMjY5OWIyZWZmZGU4ZTU4NDcyOGMwNDRiZDI3
N2VhYmJiMjU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBDU1NPTVdyYXBw
ZXIgZGF0YSBhbmQgZnVuY3Rpb25zIG91dCBmcm9tIFN0eWxlUmVzb2x2ZXIgaW50byBpdHMgb3du
IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RmFjdG9yZWQgQ1NTT01XcmFwcGVyIGxvZ2ljIGFuZCBkYXRhIG91dCBmcm9tIFN0eWxlUmVzb2x2
ZXIgaW50byBhCisgICAgICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgY2xhc3MuICBTaW5jZSBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzCisgICAgICAgIGRlcGVuZHMgb24gc3RhdGljIHZhcmlhYmxl
cyBkZWZpbmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwLCB0aGlzCisgICAgICAgIHBhdGNoIGRvZXMg
bm90IGV4dHJhY3QgYSBuZXcgY2xhc3MgaW50byBhIG5ldyBmaWxlLCB3aGljaCBtYWtlcyBhCisg
ICAgICAgIHJldmlldyBlYXNpZXIgc2luY2UgaXQgcHJvZHVjZXMgcmVhZGFibGUgZGlmZnMuCisK
KyAgICAgICAgQWZ0ZXIgd2UgZmFjdG9yIHN0YXRpYyB2YXJpYWJsZXMgcmVsYXRlZCB0byBkZWZh
dWx0IHN0eWxlIHNoZWV0cworICAgICAgICBpbiBhIGZvbGxvd2luZyBwYXRjaCAoYnVnIDEwNzc4
MCksIEknbGwgbW92ZSBhCisgICAgICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgaW50byBhIGl0
cyBvd24gZmlsZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisK
KyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tU3R5
bGVTaGVldElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBl
cnM6OmNvbGxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6
Y29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMpOiBOYW1lIGl0IGV4cGxpY2l0bHkgcmF0aGVy
IHRoYW4gb3ZlcmxvYWRpbmcuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKTogTmFtZSBpdCBleHBsaWNpdGx5IHJhdGhlciB0
aGFuIG92ZXJsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVy
czo6Y29sbGVjdEZyb21Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKTogTmFtZSBpdCBleHBs
aWNpdGx5IHJhdGhlciB0aGFuIG92ZXJsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTT01XcmFwcGVyczo6ZW5zdXJlQWxsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU09NV3JhcHBlcnM6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNv
bHZlci5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTT01XcmFwcGVycyk6IE5ldyBjbGFzcyBmb3Ig
ZGF0YSBhbmQgbG9naWMgdG8gaW5zcGVjdCBDU1NPTVdyYXBwZXJzLiBTcGxpdHRlZCBvdXQgZnJv
bSBTdHlsZVJlc292bGVyLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTdHlsZVJlc29s
dmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6Omluc3BlY3RvckNTU09NV3Jh
cHBlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFByb2Nlc3NSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvclJ1bGUpOgorCiAyMDEz
LTAxLTI5ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IFJ1YmJlcmJhbmQgc2Nyb2xsaW5nIG9uIG5ld3MuZ29vZ2xlLmNvbSBjYXVzZXMgdGV4dCB0byBi
bGluayByZXBlYXRlZGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggOTU2
Yjk4NGI3MmE1NDE5NjVhNWUzOWI3NzlmNDg1ZmY3NDM2MDI0Yi4uZDE5ZmRkZTE0ZmVlYTE1M2U1
NGNkYTlkOGVhYjAyMmFjZmFlZDcxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cApAQCAtMjI4LDggKzIyOCw2IEBAIFJlbmRlclN0eWxlKiBTdHlsZVJlc29sdmVyOjpzX3N0eWxl
Tm90WWV0QXZhaWxhYmxlOwogCiBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpOwog
c3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpOwotdGVtcGxhdGUgPGNsYXNzIExp
c3RUeXBlPgotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1
bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiwgTGlzdFR5cGUqKTsKIAogLy8gRklYTUU6IEl0
IHdvdWxkIGJlIG5pY2UgdG8gdXNlIHNvbWUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyB0aGlz
IGlzIGluIHN5bmMgd2l0aCB0aGUgcmVhbCBVQSBzdHlsZXNoZWV0Lgogc3RhdGljIGNvbnN0IGNo
YXIqIHNpbXBsZVVzZXJBZ2VudFN0eWxlU2hlZXQgPSAiaHRtbCxib2R5LGRpdntkaXNwbGF5OmJs
b2NrfWhlYWR7ZGlzcGxheTpub25lfWJvZHl7bWFyZ2luOjhweH1kaXY6Zm9jdXMsc3Bhbjpmb2N1
c3tvdXRsaW5lOmF1dG8gNXB4IC13ZWJraXQtZm9jdXMtcmluZy1jb2xvcn1hOi13ZWJraXQtYW55
LWxpbmt7Y29sb3I6LXdlYmtpdC1saW5rO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9YTotd2Vi
a2l0LWFueS1saW5rOmFjdGl2ZXtjb2xvcjotd2Via2l0LWFjdGl2ZWxpbmt9IjsKQEAgLTM5NCw4
ICszOTIsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVu
c2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogI2VuZGlmCiAKICAgICAgICAgbV9h
dXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcyk7Ci0g
ICAgICAgIGlmICghbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFw
LCBjc3NTaGVldCk7CisgICAgICAgIG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jb2xsZWN0RnJv
bVN0eWxlU2hlZXRJZk5lZWRlZChjc3NTaGVldCk7CiAgICAgfQogICAgIG1fYXV0aG9yU3R5bGUt
PnNocmlua1RvRml0KCk7CiAgICAgY29sbGVjdEZlYXR1cmVzKCk7CkBAIC0yNjc0LDggKzI2NzEs
MTQgQEAgU3RyaW5nIFN0eWxlUmVzb2x2ZXI6OnBhZ2VOYW1lKGludCAvKiBwYWdlSW5kZXggKi8p
IGNvbnN0CiAgICAgcmV0dXJuICIiOwogfQogCit2b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6
OmNvbGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQp
Cit7CisgICAgaWYgKCFtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHkoKSkKKyAg
ICAgICAgY29sbGVjdChzdHlsZVNoZWV0KTsKK30KKwogdGVtcGxhdGUgPGNsYXNzIExpc3RUeXBl
Pgotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBS
ZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBMaXN0VHlwZSogbGlzdFR5cGUpCit2
b2lkIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3QoTGlzdFR5cGUqIGxpc3RUeXBlKQog
ewogICAgIGlmICghbGlzdFR5cGUpCiAgICAgICAgIHJldHVybjsKQEAgLTI2ODQsMjggKzI2ODcs
MjggQEAgc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUq
LCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmEKICAgICAgICAgQ1NTUnVsZSogY3NzUnVsZSA9
IGxpc3RUeXBlLT5pdGVtKGkpOwogICAgICAgICBzd2l0Y2ggKGNzc1J1bGUtPnR5cGUoKSkgewog
ICAgICAgICBjYXNlIENTU1J1bGU6OklNUE9SVF9SVUxFOgotICAgICAgICAgICAgY29sbGVjdENT
U09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KGNzc1J1
bGUpLT5zdHlsZVNoZWV0KCkpOworICAgICAgICAgICAgY29sbGVjdChzdGF0aWNfY2FzdDxDU1NJ
bXBvcnRSdWxlKj4oY3NzUnVsZSktPnN0eWxlU2hlZXQoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBDU1NSdWxlOjpNRURJQV9SVUxFOgotICAgICAgICAgICAgY29sbGVjdENT
U09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4oY3NzUnVs
ZSkpOworICAgICAgICAgICAgY29sbGVjdChzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGUqPihjc3NS
dWxlKSk7CiAgICAgICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTM19DT05ESVRJT05BTF9S
VUxFUykKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVVBQT1JUU19SVUxFOgotICAgICAgICAgICAg
Y29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTU3VwcG9ydHNS
dWxlKj4oY3NzUnVsZSkpOworICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMoc3RhdGlj
X2Nhc3Q8Q1NTU3VwcG9ydHNSdWxlKj4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6V0VC
S0lUX1JFR0lPTl9SVUxFOgotICAgICAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBl
ck1hcCwgc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGNzc1J1bGUpKTsKKyAgICAg
ICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTUmVnaW9uUnVsZSo+KGNzc1J1bGUp
KTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAg
ICAgICAgIGNhc2UgQ1NTUnVsZTo6SE9TVF9SVUxFOgotICAgICAgICAgICAgY29sbGVjdENTU09N
V3JhcHBlcnMod3JhcHBlck1hcCwgc3RhdGljX2Nhc3Q8Q1NTSG9zdFJ1bGUqPihjc3NSdWxlKSk7
CisgICAgICAgICAgICBjb2xsZWN0KHN0YXRpY19jYXN0PENTU0hvc3RSdWxlKj4oY3NzUnVsZSkp
OwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICAgICAgY2FzZSBDU1NSdWxlOjpTVFlM
RV9SVUxFOgotICAgICAgICAgICAgd3JhcHBlck1hcC5hZGQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVS
dWxlKj4oY3NzUnVsZSktPnN0eWxlUnVsZSgpLCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihj
c3NSdWxlKSk7CisgICAgICAgICAgICBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmFkZChz
dGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NSdWxlKS0+c3R5bGVSdWxlKCksIHN0YXRpY19j
YXN0PENTU1N0eWxlUnVsZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzEzLDQ1ICsyNzE2LDUyIEBAIHN0
YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRy
PENTU1N0eWxlUnVsZT4gPiYgd3JhCiAgICAgfQogfQogCi1zdGF0aWMgdm9pZCBjb2xsZWN0Q1NT
T01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdy
YXBwZXJNYXAsIEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0V3JhcHBlclNl
dCwgU3R5bGVTaGVldENvbnRlbnRzKiBzdHlsZVNoZWV0KQordm9pZCBJbnNwZWN0b3JDU1NPTVdy
YXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhIYXNoU2V0PFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiA+JiBzaGVldFdyYXBwZXJTZXQsIFN0eWxlU2hlZXRDb250ZW50cyogc3R5bGVT
aGVldCkKIHsKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybjsKICAgICBSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gc3R5bGVTaGVldFdyYXBwZXIgPSBDU1NTdHlsZVNoZWV0OjpjcmVh
dGUoc3R5bGVTaGVldCk7CiAgICAgc2hlZXRXcmFwcGVyU2V0LmFkZChzdHlsZVNoZWV0V3JhcHBl
cik7Ci0gICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldFdyYXBw
ZXIuZ2V0KCkpOworICAgIGNvbGxlY3Qoc3R5bGVTaGVldFdyYXBwZXIuZ2V0KCkpOwogfQogCi1z
dGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01XcmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0
cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYXBwZXJNYXAsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiYgc2hlZXRzKQordm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0
RnJvbVN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hl
ZXRzKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHNoZWV0c1tpXS5nZXQo
KSk7CisgICAgICAgIGNvbGxlY3Qoc2hlZXRzW2ldLmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQg
Y29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVS
dWxlPiA+JiB3cmFwcGVyTWFwLCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNo
ZWV0Q29sbGVjdGlvbikKK3ZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24q
IHN0eWxlU2hlZXRDb2xsZWN0aW9uKQogewotICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBw
ZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVBdXRob3JTdHlsZVNoZWV0cygpKTsK
LSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVjdGlv
bi0+cGFnZVVzZXJTaGVldCgpKTsKLSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFw
LCBzdHlsZVNoZWV0Q29sbGVjdGlvbi0+aW5qZWN0ZWRVc2VyU3R5bGVTaGVldHMoKSk7Ci0gICAg
Y29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPmRv
Y3VtZW50VXNlclN0eWxlU2hlZXRzKCkpOworICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoc3R5
bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKCkpOworICAgIGNvbGxl
Y3Qoc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQoKSk7CisgICAgY29sbGVjdEZy
b21TdHlsZVNoZWV0cyhzdHlsZVNoZWV0Q29sbGVjdGlvbi0+aW5qZWN0ZWRVc2VyU3R5bGVTaGVl
dHMoKSk7CisgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0cyhzdHlsZVNoZWV0Q29sbGVjdGlvbi0+
ZG9jdW1lbnRVc2VyU3R5bGVTaGVldHMoKSk7CiB9CiAKLUNTU1N0eWxlUnVsZSogU3R5bGVSZXNv
bHZlcjo6ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1bGUp
CitDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU09NV3JhcHBlcnM6OmVuc3VyZUFsbChTdHlsZVJ1
bGUqIHJ1bGUsIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qIHN0eWxlU2hlZXRDb2xsZWN0
aW9uKQogewogICAgIGlmIChtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLmlzRW1wdHkoKSkg
ewotICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVy
TWFwLCBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0
KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBl
ck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBkZWZhdWx0U3R5bGVTaGVldCk7Ci0g
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAs
IG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgcXVpcmtzU3R5bGVTaGVldCk7Ci0gICAgICAg
IGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5
bGVTaGVldENTU09NV3JhcHBlclNldCwgc3ZnU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RD
U1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENT
U09NV3JhcHBlclNldCwgbWF0aE1MU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09NV3Jh
cHBlclNldCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOwotICAgICAgICBjb2xsZWN0Q1NTT01X
cmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBtX3N0eWxlU2hlZXRDU1NPTVdy
YXBwZXJTZXQsIGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKKyAgICAgICAgY29sbGVjdEZyb21TdHls
ZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKG1fc3R5
bGVTaGVldENTU09NV3JhcHBlclNldCwgZGVmYXVsdFN0eWxlU2hlZXQpOworICAgICAgICBjb2xs
ZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHF1
aXJrc1N0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyht
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHN2Z1N0eWxlU2hlZXQpOworICAgICAgICBjb2xs
ZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIG1h
dGhNTFN0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyht
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIG1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KTsKKyAg
ICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0Q1NTT01XcmFw
cGVyU2V0LCBmdWxsc2NyZWVuU3R5bGVTaGVldCk7CiAKLSAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgZG9jdW1lbnQoKS0+c3R5bGVTaGVl
dENvbGxlY3Rpb24oKSk7CisgICAgICAgIGNvbGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbihzdHlsZVNoZWV0Q29sbGVjdGlvbik7CiAgICAgfQogICAgIHJldHVybiBtX3N0eWxl
UnVsZVRvQ1NTT01XcmFwcGVyTWFwLmdldChydWxlKS5nZXQoKTsKIH0KIAordm9pZCBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Q1NTKTsKKyAgICBpbmZvLmFkZE1l
bWJlcihtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlciht
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOworfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFw
cGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgUmVu
ZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGluaXRFbGVtZW50KDApOwpAQCAtNTQ2MSw4ICs1NDcx
LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIGluZm8uYWRkTWVtYmVyKG1fZm9udFNl
bGVjdG9yKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVy
eVJlc3VsdHMpOwogICAgIGluZm8uaWdub3JlTWVtYmVyKG1fc3R5bGVCdWlsZGVyKTsKLSAgICBp
bmZvLmFkZE1lbWJlcihtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKLSAgICBpbmZvLmFk
ZE1lbWJlcihtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOworICAgIGluZm8uYWRkTWVtYmVy
KG1faW5zcGVjdG9yQ1NTT01XcmFwcGVycyk7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBF
TkFCTEUoU1ZHKQogICAgIGluZm8uYWRkTWVtYmVyKG1fcGVuZGluZ1NWR0RvY3VtZW50cyk7CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCmluZGV4IDMzMzY2Yzc2NzkxMWU3MzAx
OWY5NDk0YmNlYjRkYzhiMGM4NzQ3NTguLmE4ZjMzOWQ4Njk3NTBhZDU5ZjFjMWU4MzY1ODgzM2Iy
YzdjMGZkMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtMTMyLDYgKzEzMiwy
NyBAQCBlbnVtIFJ1bGVNYXRjaGluZ0JlaGF2aW9yIHsKICAgICBNYXRjaE9ubHlVc2VyQWdlbnRS
dWxlcywKIH07CiAKK2NsYXNzIEluc3BlY3RvckNTU09NV3JhcHBlcnMgeworcHVibGljOgorICAg
IC8vIFdBUk5JTkcuIFRoaXMgd2lsbCBjb25zdHJ1Y3QgQ1NTT00gd3JhcHBlcnMgZm9yIGFsbCBz
dHlsZSBydWxlcyBhbmQgY2FjaGUgdGhlbSBpbiBhIG1hcCBmb3Igc2lnbmlmaWNhbnQgbWVtb3J5
IGNvc3QuCisgICAgLy8gSXQgaXMgaGVyZSB0byBzdXBwb3J0IGluc3BlY3Rvci4gRG9uJ3QgdXNl
IGZvciBhbnkgcmVndWxhciBlbmdpbmUgZnVuY3Rpb25zLgorICAgIENTU1N0eWxlUnVsZSogZW5z
dXJlQWxsKFN0eWxlUnVsZSosIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24qKTsKKyAgICB2
b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQqKTsKKworICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCitwcml2
YXRlOgorICAgIHRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KKyAgICB2b2lkIGNvbGxlY3QoTGlz
dFR5cGUqKTsKKworICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMoSGFzaFNl
dDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRXcmFwcGVyU2V0LCBTdHlsZVNoZWV0Q29u
dGVudHMqKTsKKyAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CisgICAgdm9pZCBjb2xsZWN0RnJvbURvY3VtZW50U3R5
bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiopOworCisgICAg
SGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+IG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXA7CisgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiBtX3N0
eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQ7Cit9OworCiAvLyBUaGlzIGNsYXNzIHNlbGVjdHMgYSBS
ZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2VkIG9uIGEgY29sbGVjdGlvbiBvZiBz
dHlsZXNoZWV0cy4KIGNsYXNzIFN0eWxlUmVzb2x2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTI3NSwxMCAr
Mjk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNyZWF0ZVRyYW5zZm9ybU9wZXJhdGlv
bnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBSZW5kZXJTdHlsZSog
cm9vdFN0eWxlLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKTsKICAgICAKICAg
ICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7Ci0gICAgCi0gICAgLy8g
V0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxsIHN0eWxl
IHJ1bGVzIGFuZCBjYWNoZSB0aGVuIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1vcnkgY29z
dC4KLSAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1c2UgZm9y
IGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxlKiBlbnN1cmVG
dWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSopOwogCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogICAgIGJvb2wgY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5W
YWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIEZpbHRl
ck9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOwpAQCAtNDQ0LDYgKzQ2MSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVl
KiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciA9IDEpOwogCiAgICAgQ1NTVG9TdHlsZU1hcCogc3R5bGVNYXAoKSB7IHJldHVybiAmbV9zdHls
ZU1hcDsgfQorICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMmIGluc3BlY3RvckNTU09NV3JhcHBl
cnMoKSB7IHJldHVybiBtX2luc3BlY3RvckNTU09NV3JhcHBlcnM7IH0KIAogICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgIApAQCAtNTM1LDkg
KzU1Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHls
ZTsKICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsKICAgICBjb25z
dCBTdHlsZUJ1aWxkZXImIG1fc3R5bGVCdWlsZGVyOwotICAgIAotICAgIEhhc2hNYXA8U3R5bGVS
dWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiBtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFw
OwotICAgIEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9zdHlsZVNoZWV0Q1NTT01X
cmFwcGVyU2V0OwogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIGJvb2wgbV9oYXNQZW5k
aW5nU2hhZGVyczsKQEAgLTU0OSw2ICs1NjQsNyBAQCBwcml2YXRlOgogCiAgICAgT3duUHRyPFN0
eWxlU2NvcGVSZXNvbHZlcj4gbV9zY29wZVJlc29sdmVyOwogICAgIENTU1RvU3R5bGVNYXAgbV9z
dHlsZU1hcDsKKyAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIG1faW5zcGVjdG9yQ1NTT01XcmFw
cGVyczsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJpZW5kIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNoZWRQcm9wZXJ0
aWVzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cAppbmRleCAzYWFmMDM5NTk4YzYzZjljMWZlNDZiZTk4ZmYxMWNlOTVjYjNlMzZhLi5jMTVhYWE3
NWFlMjZkNDU2NGNlNzQwOWI0MDkzMDgxNDI2MjY2NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTk1OSw3ICs5NTksNyBAQCBQYXNz
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVjdG9yQ1NTQWdl
bnQ6OnN0b3BTZWxlY3RvclBybwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVs
ZShTdHlsZVJ1bGUqIHJ1bGUsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiB7CiAgICAg
aWYgKG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSkKLSAgICAgICAgbV9jdXJyZW50U2VsZWN0b3JQ
cm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2ZXItPmVuc3VyZUZ1bGxDU1NPTVdyYXBw
ZXJGb3JJbnNwZWN0b3IocnVsZSkpOworICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUt
PnN0YXJ0U2VsZWN0b3Ioc3R5bGVSZXNvbHZlci0+aW5zcGVjdG9yQ1NTT01XcmFwcGVycygpLmVu
c3VyZUFsbChydWxlLCBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1hdGNoUnVsZShib29s
IG1hdGNoZWQpCkBAIC05NzEsNyArOTcxLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
TWF0Y2hSdWxlKGJvb2wgbWF0Y2hlZCkKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQcm9j
ZXNzUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCiB7
CiAgICAgaWYgKG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSkKLSAgICAgICAgbV9jdXJyZW50U2Vs
ZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2ZXItPmVuc3VyZUZ1bGxDU1NP
TVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZSkpOworICAgICAgICBtX2N1cnJlbnRTZWxlY3RvclBy
b2ZpbGUtPnN0YXJ0U2VsZWN0b3Ioc3R5bGVSZXNvbHZlci0+aW5zcGVjdG9yQ1NTT01XcmFwcGVy
cygpLmVuc3VyZUFsbChydWxlLCBzdHlsZVJlc29sdmVyLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0
Q29sbGVjdGlvbigpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFByb2Nlc3NS
dWxlKCkKQEAgLTExMjUsNyArMTEyNSw3IEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTUnVsZT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yUnVsZShDU1NTCiAgICAg
Ly8gU2luY2UgdGhlIGluc3BlY3RvciB3YW50cyB0byB3YWxrIHRoZSBwYXJlbnQgY2hhaW4sIHdl
IGNvbnN0cnVjdCB0aGUgZnVsbCB3cmFwcGVycyBoZXJlLgogICAgIC8vIEZJWE1FOiBUaGlzIGNv
dWxkIGJlIGZhY3RvcmVkIGJldHRlci4gU3R5bGVSZXNvbHZlcjo6c3R5bGVSdWxlc0ZvckVsZW1l
bnQgc2hvdWxkIHJldHVybiBhIFN0eWxlUnVsZSB2ZWN0b3IsIG5vdCBhIENTU1J1bGVMaXN0Lgog
ICAgIGlmICghcnVsZS0+cGFyZW50U3R5bGVTaGVldCgpKSB7Ci0gICAgICAgIHJ1bGUgPSBzdHls
ZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUtPnN0eWxl
UnVsZSgpKTsKKyAgICAgICAgcnVsZSA9IHN0eWxlUmVzb2x2ZXItPmluc3BlY3RvckNTU09NV3Jh
cHBlcnMoKS5lbnN1cmVBbGwocnVsZS0+c3R5bGVSdWxlKCksIHN0eWxlUmVzb2x2ZXItPmRvY3Vt
ZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpOwogICAgICAgICBpZiAoIXJ1bGUpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185667</attachid>
            <date>2013-01-30 20:26:37 -0800</date>
            <delta_ts>2013-01-30 21:05:31 -0800</delta_ts>
            <desc>Addressed.</desc>
            <filename>bug-107779-20130131132321.patch</filename>
            <type>text/plain</type>
            <size>16042</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxMjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGNhMDM3MGNjNjhhMTIx
NWVmYjM4N2VkOThkZjdlMmMwNzQwMzg2NS4uODAwOTNkM2MxNTc1MzYwOTk5NmFmOWEyMTZmYjkz
NzJhYzA0N2QzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEzLTAxLTIzICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBDU1NPTVdyYXBw
ZXIgZGF0YSBhbmQgZnVuY3Rpb25zIG91dCBmcm9tIFN0eWxlUmVzb2x2ZXIgaW50byBpdHMgb3du
IGNsYXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3Nzc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
RmFjdG9yZWQgQ1NTT01XcmFwcGVyIGxvZ2ljIGFuZCBkYXRhIG91dCBmcm9tIFN0eWxlUmVzb2x2
ZXIgaW50byBhCisgICAgICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMgY2xhc3MuICBTaW5jZSBJ
bnNwZWN0b3JDU1NPTVdyYXBwZXJzCisgICAgICAgIGRlcGVuZHMgb24gc3RhdGljIHZhcmlhYmxl
cyBkZWZpbmVkIGluIFN0eWxlUmVzb2x2ZXIuY3BwLCB0aGlzCisgICAgICAgIHBhdGNoIGRvZXMg
bm90IGV4dHJhY3QgYSBuZXcgY2xhc3MgaW50byBhIG5ldyBmaWxlLCB3aGljaCBtYWtlcyBhCisg
ICAgICAgIHJldmlldyBlYXNpZXIgc2luY2UgaXQgcHJvZHVjZXMgcmVhZGFibGUgZGlmZnMuCisK
KyAgICAgICAgQWZ0ZXIgd2UgZmFjdG9yIHN0YXRpYyB2YXJpYWJsZXMgcmVsYXRlZCB0byBkZWZh
dWx0IHN0eWxlIHNoZWV0cworICAgICAgICBpbiBhIGZvbGxvd2luZyBwYXRjaCAoYnVnIDEwNzc4
MCksIEknbGwgbW92ZQorICAgICAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIGludG8gYSBpdHMg
b3duIGZpbGUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCByZWZhY3RvcmluZyBvbmx5LgorCisg
ICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxl
U2hlZXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NPTVdyYXBwZXJz
Ojpjb2xsZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6OmNv
bGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKTogTmFtZSBpdCBleHBsaWNpdGx5IHJhdGhlciB0
aGFuIG92ZXJsb2FkaW5nLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTT01XcmFwcGVy
czo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyk6IE5hbWUgaXQgZXhwbGljaXRseSByYXRoZXIgdGhh
biBvdmVybG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU09NV3JhcHBlcnM6
OmNvbGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6IE5hbWUgaXQgZXhwbGlj
aXRseSByYXRoZXIgdGhhbiBvdmVybG9hZGluZy4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU09NV3JhcHBlcnM6OmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMpOiBSZW5hbWVkIGZyb20g
ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcigpLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NPTVdyYXBwZXJzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVJlc29sdmVyOjppbnNwZWN0b3JDU1NPTVdyYXBwZXJzKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OndpbGxNYXRjaFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OndpbGxQcm9jZXNzUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKToKKwogMjAxMy0wMS0yOSAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXJiYW5kIHNjcm9sbGluZyBv
biBuZXdzLmdvb2dsZS5jb20gY2F1c2VzIHRleHQgdG8gYmxpbmsgcmVwZWF0ZWRseQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDk1NmI5ODRiNzJhNTQxOTY1YTVlMzliNzc5
ZjQ4NWZmNzQzNjAyNGIuLjcxYzYxOTRiMGIxZTJhMTI0ODk2ZWMyN2EwMDI3NDA2ZTZhMzdlNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTIyOCw4ICsyMjgsNiBAQCBS
ZW5kZXJTdHlsZSogU3R5bGVSZXNvbHZlcjo6c19zdHlsZU5vdFlldEF2YWlsYWJsZTsKIAogc3Rh
dGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKTsKIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVE
ZWZhdWx0U3R5bGUoKTsKLXRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KLXN0YXRpYyB2b2lkIGNv
bGxlY3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVs
ZT4gPiYsIExpc3RUeXBlKik7CiAKIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBz
b21lIG1lY2hhbmlzbSB0aGF0IGd1YXJhbnRlZXMgdGhpcyBpcyBpbiBzeW5jIHdpdGggdGhlIHJl
YWwgVUEgc3R5bGVzaGVldC4KIHN0YXRpYyBjb25zdCBjaGFyKiBzaW1wbGVVc2VyQWdlbnRTdHls
ZVNoZWV0ID0gImh0bWwsYm9keSxkaXZ7ZGlzcGxheTpibG9ja31oZWFke2Rpc3BsYXk6bm9uZX1i
b2R5e21hcmdpbjo4cHh9ZGl2OmZvY3VzLHNwYW46Zm9jdXN7b3V0bGluZTphdXRvIDVweCAtd2Vi
a2l0LWZvY3VzLXJpbmctY29sb3J9YTotd2Via2l0LWFueS1saW5re2NvbG9yOi13ZWJraXQtbGlu
azt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfWE6LXdlYmtpdC1hbnktbGluazphY3RpdmV7Y29s
b3I6LXdlYmtpdC1hY3RpdmVsaW5rfSI7CkBAIC0zOTQsOCArMzkyLDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNpZ25lZCBmaXJzdE5ldywgY29uc3Qg
VmVjdG9yPFJlZlAKICNlbmRpZgogCiAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMpOwotICAgICAgICBpZiAoIW1fc3R5bGVSdWxl
VG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKQotICAgICAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgY3NzU2hlZXQpOworICAgICAgICBt
X2luc3BlY3RvckNTU09NV3JhcHBlcnMuY29sbGVjdEZyb21TdHlsZVNoZWV0SWZOZWVkZWQoY3Nz
U2hlZXQpOwogICAgIH0KICAgICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0ZpdCgpOwogICAgIGNv
bGxlY3RGZWF0dXJlcygpOwpAQCAtMjY3NCw4ICsyNjcxLDE0IEBAIFN0cmluZyBTdHlsZVJlc29s
dmVyOjpwYWdlTmFtZShpbnQgLyogcGFnZUluZGV4ICovKSBjb25zdAogICAgIHJldHVybiAiIjsK
IH0KIAordm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzOjpjb2xsZWN0RnJvbVN0eWxlU2hlZXRJ
Zk5lZWRlZChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0KQoreworICAgIGlmICghbV9zdHlsZVJ1
bGVUb0NTU09NV3JhcHBlck1hcC5pc0VtcHR5KCkpCisgICAgICAgIGNvbGxlY3Qoc3R5bGVTaGVl
dCk7Cit9CisKIHRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KLXN0YXRpYyB2b2lkIGNvbGxlY3RD
U1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYg
d3JhcHBlck1hcCwgTGlzdFR5cGUqIGxpc3RUeXBlKQordm9pZCBJbnNwZWN0b3JDU1NPTVdyYXBw
ZXJzOjpjb2xsZWN0KExpc3RUeXBlKiBsaXN0VHlwZSkKIHsKICAgICBpZiAoIWxpc3RUeXBlKQog
ICAgICAgICByZXR1cm47CkBAIC0yNjg0LDI4ICsyNjg3LDI4IEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RDU1NPTVdyYXBwZXJzKEhhc2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4g
PiYgd3JhCiAgICAgICAgIENTU1J1bGUqIGNzc1J1bGUgPSBsaXN0VHlwZS0+aXRlbShpKTsKICAg
ICAgICAgc3dpdGNoIChjc3NSdWxlLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBDU1NSdWxlOjpJ
TVBPUlRfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAs
IHN0YXRpY19jYXN0PENTU0ltcG9ydFJ1bGUqPihjc3NSdWxlKS0+c3R5bGVTaGVldCgpKTsKKyAg
ICAgICAgICAgIGNvbGxlY3Qoc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0UnVsZSo+KGNzc1J1bGUpLT5z
dHlsZVNoZWV0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6
TUVESUFfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAs
IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZSo+KGNzc1J1bGUpKTsKKyAgICAgICAgICAgIGNvbGxl
Y3Qoc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4oY3NzUnVsZSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAjaWYgRU5BQkxFKENTUzNfQ09ORElUSU9OQUxfUlVMRVMpCiAgICAgICAgIGNhc2UgQ1NT
UnVsZTo6U1VQUE9SVFNfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdy
YXBwZXJNYXAsIHN0YXRpY19jYXN0PENTU1N1cHBvcnRzUnVsZSo+KGNzc1J1bGUpKTsKKyAgICAg
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHN0YXRpY19jYXN0PENTU1N1cHBvcnRzUnVsZSo+
KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19S
RUdJT05TKQogICAgICAgICBjYXNlIENTU1J1bGU6OldFQktJVF9SRUdJT05fUlVMRToKLSAgICAg
ICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0YXRpY19jYXN0PFdlYktp
dENTU1JlZ2lvblJ1bGUqPihjc3NSdWxlKSk7CisgICAgICAgICAgICBjb2xsZWN0KHN0YXRpY19j
YXN0PFdlYktpdENTU1JlZ2lvblJ1bGUqPihjc3NSdWxlKSk7CiAgICAgICAgICAgICBicmVhazsK
ICNlbmRpZgogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgICAgICBjYXNlIENTU1J1bGU6OkhP
U1RfUlVMRToKLSAgICAgICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdyYXBwZXJNYXAsIHN0
YXRpY19jYXN0PENTU0hvc3RSdWxlKj4oY3NzUnVsZSkpOworICAgICAgICAgICAgY29sbGVjdChz
dGF0aWNfY2FzdDxDU1NIb3N0UnVsZSo+KGNzc1J1bGUpKTsKICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAgICAgICAgIGNhc2UgQ1NTUnVsZTo6U1RZTEVfUlVMRToKLSAgICAgICAgICAgIHdy
YXBwZXJNYXAuYWRkKHN0YXRpY19jYXN0PENTU1N0eWxlUnVsZSo+KGNzc1J1bGUpLT5zdHlsZVJ1
bGUoKSwgc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxlKj4oY3NzUnVsZSkpOworICAgICAgICAgICAg
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5hZGQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVSdWxl
Kj4oY3NzUnVsZSktPnN0eWxlUnVsZSgpLCBzdGF0aWNfY2FzdDxDU1NTdHlsZVJ1bGUqPihjc3NS
dWxlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMjcxMyw0NSArMjcxNiw1MiBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0Q1NTT01X
cmFwcGVycyhIYXNoTWFwPFN0eWxlUnVsZSosIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4mIHdyYQog
ICAgIH0KIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdENTU09NV3JhcHBlcnMoSGFzaE1hcDxTdHls
ZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFwcGVyTWFwLCBIYXNoU2V0PFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldFdyYXBwZXJTZXQsIFN0eWxlU2hlZXRDb250ZW50cyog
c3R5bGVTaGVldCkKK3ZvaWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHls
ZVNoZWV0Q29udGVudHMoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRXcmFw
cGVyU2V0LCBTdHlsZVNoZWV0Q29udGVudHMqIHN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKCFzdHls
ZVNoZWV0KQogICAgICAgICByZXR1cm47CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHN0eWxl
U2hlZXRXcmFwcGVyID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlKHN0eWxlU2hlZXQpOwogICAgIHNo
ZWV0V3JhcHBlclNldC5hZGQoc3R5bGVTaGVldFdyYXBwZXIpOwotICAgIGNvbGxlY3RDU1NPTVdy
YXBwZXJzKHdyYXBwZXJNYXAsIHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKKyAgICBjb2xsZWN0
KHN0eWxlU2hlZXRXcmFwcGVyLmdldCgpKTsKIH0KIAotc3RhdGljIHZvaWQgY29sbGVjdENTU09N
V3JhcHBlcnMoSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+JiB3cmFw
cGVyTWFwLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykKK3Zv
aWQgSW5zcGVjdG9yQ1NTT01XcmFwcGVyczo6Y29sbGVjdEZyb21TdHlsZVNoZWV0cyhjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykKIHsKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgc2hlZXRzLnNpemUoKTsgKytpKQotICAgICAgICBjb2xsZWN0Q1NTT01X
cmFwcGVycyh3cmFwcGVyTWFwLCBzaGVldHNbaV0uZ2V0KCkpOworICAgICAgICBjb2xsZWN0KHNo
ZWV0c1tpXS5nZXQoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbGxlY3RDU1NPTVdyYXBwZXJzKEhh
c2hNYXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiYgd3JhcHBlck1hcCwgRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24pCit2b2lkIElu
c3BlY3RvckNTU09NV3JhcHBlcnM6OmNvbGxlY3RGcm9tRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbihEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbikK
IHsKLSAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyh3cmFwcGVyTWFwLCBzdHlsZVNoZWV0Q29sbGVj
dGlvbi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7Ci0gICAgY29sbGVjdENTU09NV3JhcHBl
cnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24tPnBhZ2VVc2VyU2hlZXQoKSk7Ci0g
ICAgY29sbGVjdENTU09NV3JhcHBlcnMod3JhcHBlck1hcCwgc3R5bGVTaGVldENvbGxlY3Rpb24t
PmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOwotICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKHdy
YXBwZXJNYXAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5kb2N1bWVudFVzZXJTdHlsZVNoZWV0cygp
KTsKKyAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRzKHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cygpKTsKKyAgICBjb2xsZWN0KHN0eWxlU2hlZXRDb2xsZWN0aW9u
LT5wYWdlVXNlclNoZWV0KCkpOworICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoc3R5bGVTaGVl
dENvbGxlY3Rpb24tPmluamVjdGVkVXNlclN0eWxlU2hlZXRzKCkpOworICAgIGNvbGxlY3RGcm9t
U3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24tPmRvY3VtZW50VXNlclN0eWxlU2hlZXRz
KCkpOwogfQogCi1DU1NTdHlsZVJ1bGUqIFN0eWxlUmVzb2x2ZXI6OmVuc3VyZUZ1bGxDU1NPTVdy
YXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVSdWxlKiBydWxlKQorQ1NTU3R5bGVSdWxlKiBJbnNwZWN0
b3JDU1NPTVdyYXBwZXJzOjpnZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSogcnVs
ZSwgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiogc3R5bGVTaGVldENvbGxlY3Rpb24pCiB7
CiAgICAgaWYgKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1f
c3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQpOwotICAg
ICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBt
X3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIGRlZmF1bHRTdHlsZVNoZWV0KTsKLSAgICAgICAg
Y29sbGVjdENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbV9zdHls
ZVNoZWV0Q1NTT01XcmFwcGVyU2V0LCBxdWlya3NTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVj
dENTU09NV3JhcHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbV9zdHlsZVNoZWV0
Q1NTT01XcmFwcGVyU2V0LCBzdmdTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFw
cGVyU2V0LCBtYXRoTUxTdHlsZVNoZWV0KTsKLSAgICAgICAgY29sbGVjdENTU09NV3JhcHBlcnMo
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgbV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0
LCBtZWRpYUNvbnRyb2xzU3R5bGVTaGVldCk7Ci0gICAgICAgIGNvbGxlY3RDU1NPTVdyYXBwZXJz
KG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNl
dCwgZnVsbHNjcmVlblN0eWxlU2hlZXQpOworICAgICAgICBjb2xsZWN0RnJvbVN0eWxlU2hlZXRD
b250ZW50cyhtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQsIHNpbXBsZURlZmF1bHRTdHlsZVNo
ZWV0KTsKKyAgICAgICAgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVudHMobV9zdHlsZVNoZWV0
Q1NTT01XcmFwcGVyU2V0LCBkZWZhdWx0U3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9t
U3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgcXVpcmtzU3R5
bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVT
aGVldENTU09NV3JhcHBlclNldCwgc3ZnU3R5bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9t
U3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCwgbWF0aE1MU3R5
bGVTaGVldCk7CisgICAgICAgIGNvbGxlY3RGcm9tU3R5bGVTaGVldENvbnRlbnRzKG1fc3R5bGVT
aGVldENTU09NV3JhcHBlclNldCwgbWVkaWFDb250cm9sc1N0eWxlU2hlZXQpOworICAgICAgICBj
b2xsZWN0RnJvbVN0eWxlU2hlZXRDb250ZW50cyhtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQs
IGZ1bGxzY3JlZW5TdHlsZVNoZWV0KTsKIAotICAgICAgICBjb2xsZWN0Q1NTT01XcmFwcGVycyht
X3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwLCBkb2N1bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVj
dGlvbigpKTsKKyAgICAgICAgY29sbGVjdEZyb21Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
KHN0eWxlU2hlZXRDb2xsZWN0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIG1fc3R5bGVSdWxlVG9D
U1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOwogfQogCit2b2lkIEluc3BlY3RvckNTU09N
V3JhcHBlcnM6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1f
c3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVT
aGVldENTU09NV3JhcHBlclNldCk7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwbHlQcm9w
ZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHls
ZSogc3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7CkBAIC01NDYxLDggKzU0NzEsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9mb250U2VsZWN0b3Ip
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0
cyk7CiAgICAgaW5mby5pZ25vcmVNZW1iZXIobV9zdHlsZUJ1aWxkZXIpOwotICAgIGluZm8uYWRk
TWVtYmVyKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRkTWVtYmVy
KG1fc3R5bGVTaGVldENTU09NV3JhcHBlclNldCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9pbnNw
ZWN0b3JDU1NPTVdyYXBwZXJzKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShT
VkcpCiAgICAgaW5mby5hZGRNZW1iZXIobV9wZW5kaW5nU1ZHRG9jdW1lbnRzKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggMzMzNjZjNzY3OTExZTczMDE5Zjk0OTRi
Y2ViNGRjOGIwYzg3NDc1OC4uMDNmNTU2YTE0ZDA4Mzc2ZjI1ZmQ3MDQxZGViYmNiMzM5MmUyZmVj
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0xMzIsNiArMTMyLDI3IEBAIGVu
dW0gUnVsZU1hdGNoaW5nQmVoYXZpb3IgewogICAgIE1hdGNoT25seVVzZXJBZ2VudFJ1bGVzLAog
fTsKIAorY2xhc3MgSW5zcGVjdG9yQ1NTT01XcmFwcGVycyB7CitwdWJsaWM6CisgICAgLy8gV0FS
TklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3IgYWxsIHN0eWxlIHJ1
bGVzIGFuZCBjYWNoZSB0aGVtIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBtZW1vcnkgY29zdC4K
KyAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24ndCB1c2UgZm9yIGFu
eSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCisgICAgQ1NTU3R5bGVSdWxlKiBnZXRXcmFwcGVy
Rm9yUnVsZUluU2hlZXRzKFN0eWxlUnVsZSosIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24q
KTsKKyAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldElmTmVlZGVkKENTU1N0eWxlU2hlZXQq
KTsKKworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OworCitwcml2YXRlOgorICAgIHRlbXBsYXRlIDxjbGFzcyBMaXN0VHlwZT4KKyAgICB2b2lkIGNv
bGxlY3QoTGlzdFR5cGUqKTsKKworICAgIHZvaWQgY29sbGVjdEZyb21TdHlsZVNoZWV0Q29udGVu
dHMoSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRXcmFwcGVyU2V0LCBTdHls
ZVNoZWV0Q29udGVudHMqKTsKKyAgICB2b2lkIGNvbGxlY3RGcm9tU3R5bGVTaGVldHMoY29uc3Qg
VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CisgICAgdm9pZCBjb2xsZWN0RnJvbURv
Y3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiop
OworCisgICAgSGFzaE1hcDxTdHlsZVJ1bGUqLCBSZWZQdHI8Q1NTU3R5bGVSdWxlPiA+IG1fc3R5
bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXA7CisgICAgSGFzaFNldDxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiBtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQ7Cit9OworCiAvLyBUaGlzIGNsYXNzIHNl
bGVjdHMgYSBSZW5kZXJTdHlsZSBmb3IgYSBnaXZlbiBlbGVtZW50IGJhc2VkIG9uIGEgY29sbGVj
dGlvbiBvZiBzdHlsZXNoZWV0cy4KIGNsYXNzIFN0eWxlUmVzb2x2ZXIgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFN0eWxlUmVzb2x2ZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAg
LTI3NSwxMCArMjk2LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGNyZWF0ZVRyYW5zZm9y
bU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBSZW5k
ZXJTdHlsZSogcm9vdFN0eWxlLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKTsK
ICAgICAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlKCk7Ci0gICAg
Ci0gICAgLy8gV0FSTklORy4gVGhpcyB3aWxsIGNvbnN0cnVjdCBDU1NPTSB3cmFwcGVycyBmb3Ig
YWxsIHN0eWxlIHJ1bGVzIGFuZCBjYWNoZSB0aGVuIGluIGEgbWFwIGZvciBzaWduaWZpY2FudCBt
ZW1vcnkgY29zdC4KLSAgICAvLyBJdCBpcyBoZXJlIHRvIHN1cHBvcnQgaW5zcGVjdG9yLiBEb24n
dCB1c2UgZm9yIGFueSByZWd1bGFyIGVuZ2luZSBmdW5jdGlvbnMuCi0gICAgQ1NTU3R5bGVSdWxl
KiBlbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxlUnVsZSopOwogCiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQogICAgIGJvb2wgY3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NW
YWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUsIEZpbHRlck9wZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOwpAQCAtNDQ0LDYgKzQ2MSw3IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0Zsb2F0TGVuZ3RoKENTU1ByaW1p
dGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUg
bXVsdGlwbGllciA9IDEpOwogCiAgICAgQ1NTVG9TdHlsZU1hcCogc3R5bGVNYXAoKSB7IHJldHVy
biAmbV9zdHlsZU1hcDsgfQorICAgIEluc3BlY3RvckNTU09NV3JhcHBlcnMmIGluc3BlY3RvckNT
U09NV3JhcHBlcnMoKSB7IHJldHVybiBtX2luc3BlY3RvckNTU09NV3JhcHBlcnM7IH0KIAogICAg
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgIApA
QCAtNTM1LDkgKzU1Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2FwcGx5UHJvcGVydHlUb1Jl
Z3VsYXJTdHlsZTsKICAgICBib29sIG1fYXBwbHlQcm9wZXJ0eVRvVmlzaXRlZExpbmtTdHlsZTsK
ICAgICBjb25zdCBTdHlsZUJ1aWxkZXImIG1fc3R5bGVCdWlsZGVyOwotICAgIAotICAgIEhhc2hN
YXA8U3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiBtX3N0eWxlUnVsZVRvQ1NTT01X
cmFwcGVyTWFwOwotICAgIEhhc2hTZXQ8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gbV9zdHlsZVNo
ZWV0Q1NTT01XcmFwcGVyU2V0OwogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIGJvb2wg
bV9oYXNQZW5kaW5nU2hhZGVyczsKQEAgLTU0OSw2ICs1NjQsNyBAQCBwcml2YXRlOgogCiAgICAg
T3duUHRyPFN0eWxlU2NvcGVSZXNvbHZlcj4gbV9zY29wZVJlc29sdmVyOwogICAgIENTU1RvU3R5
bGVNYXAgbV9zdHlsZU1hcDsKKyAgICBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzIG1faW5zcGVjdG9y
Q1NTT01XcmFwcGVyczsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1aWxkZXI7CiAgICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBNYXRjaGVkUHJvcGVydGllcyYsIGNvbnN0IE1hdGNo
ZWRQcm9wZXJ0aWVzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcAppbmRleCAzYWFmMDM5NTk4YzYzZjljMWZlNDZiZTk4ZmYxMWNlOTVjYjNlMzZh
Li4wZmE4ZjI2OTExNjg1YmMzMGYzYWM1N2YxYWFlNzE3ZTljYjViNDlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTk1OSw3ICs5NTks
NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gSW5zcGVj
dG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3RvclBybwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2ls
bE1hdGNoUnVsZShTdHlsZVJ1bGUqIHJ1bGUsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIp
CiB7CiAgICAgaWYgKG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSkKLSAgICAgICAgbV9jdXJyZW50
U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2ZXItPmVuc3VyZUZ1bGxD
U1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZSkpOworICAgICAgICBtX2N1cnJlbnRTZWxlY3Rv
clByb2ZpbGUtPnN0YXJ0U2VsZWN0b3Ioc3R5bGVSZXNvbHZlci0+aW5zcGVjdG9yQ1NTT01XcmFw
cGVycygpLmdldFdyYXBwZXJGb3JSdWxlSW5TaGVldHMocnVsZSwgc3R5bGVSZXNvbHZlci0+ZG9j
dW1lbnQoKS0+c3R5bGVTaGVldENvbGxlY3Rpb24oKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQpAQCAtOTcxLDcgKzk3MSw3IEBAIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1hdGNoUnVsZShib29sIG1hdGNoZWQpCiB2b2lkIElu
c3BlY3RvckNTU0FnZW50Ojp3aWxsUHJvY2Vzc1J1bGUoU3R5bGVSdWxlKiBydWxlLCBTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyKQogewogICAgIGlmIChtX2N1cnJlbnRTZWxlY3RvclByb2Zp
bGUpCi0gICAgICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3RvcihzdHls
ZVJlc29sdmVyLT5lbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKHJ1bGUpKTsKKyAg
ICAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHN0eWxlUmVzb2x2
ZXItPmluc3BlY3RvckNTU09NV3JhcHBlcnMoKS5nZXRXcmFwcGVyRm9yUnVsZUluU2hlZXRzKHJ1
bGUsIHN0eWxlUmVzb2x2ZXItPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUHJvY2Vzc1J1bGUoKQpAQCAtMTEyNSw3
ICsxMTI1LDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiBJbnNwZWN0
b3JDU1NBZ2VudDo6YnVpbGRPYmplY3RGb3JSdWxlKENTU1MKICAgICAvLyBTaW5jZSB0aGUgaW5z
cGVjdG9yIHdhbnRzIHRvIHdhbGsgdGhlIHBhcmVudCBjaGFpbiwgd2UgY29uc3RydWN0IHRoZSBm
dWxsIHdyYXBwZXJzIGhlcmUuCiAgICAgLy8gRklYTUU6IFRoaXMgY291bGQgYmUgZmFjdG9yZWQg
YmV0dGVyLiBTdHlsZVJlc29sdmVyOjpzdHlsZVJ1bGVzRm9yRWxlbWVudCBzaG91bGQgcmV0dXJu
IGEgU3R5bGVSdWxlIHZlY3Rvciwgbm90IGEgQ1NTUnVsZUxpc3QuCiAgICAgaWYgKCFydWxlLT5w
YXJlbnRTdHlsZVNoZWV0KCkpIHsKLSAgICAgICAgcnVsZSA9IHN0eWxlUmVzb2x2ZXItPmVuc3Vy
ZUZ1bGxDU1NPTVdyYXBwZXJGb3JJbnNwZWN0b3IocnVsZS0+c3R5bGVSdWxlKCkpOworICAgICAg
ICBydWxlID0gc3R5bGVSZXNvbHZlci0+aW5zcGVjdG9yQ1NTT01XcmFwcGVycygpLmdldFdyYXBw
ZXJGb3JSdWxlSW5TaGVldHMocnVsZS0+c3R5bGVSdWxlKCksIHN0eWxlUmVzb2x2ZXItPmRvY3Vt
ZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkpOwogICAgICAgICBpZiAoIXJ1bGUpCiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>