<?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>89923</bug_id>
          
          <creation_ts>2012-06-25 17:04:22 -0700</creation_ts>
          <short_desc>Get rid of firstItem and nextItem from HTMLCollection</short_desc>
          <delta_ts>2012-06-27 21:54:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>89919</blocked>
    
    <blocked>90133</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>arv</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>657029</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 17:04:22 -0700</bug_when>
    <thetext>These two methods can be safely replaced by item() to reduce the interface surface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657043</commentid>
    <comment_count>1</comment_count>
      <attachid>149401</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 17:16:10 -0700</bug_when>
    <thetext>Created attachment 149401
Cleanup; also improve some insanely inefficient code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657045</commentid>
    <comment_count>2</comment_count>
      <attachid>149401</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 17:17:25 -0700</bug_when>
    <thetext>Comment on attachment 149401
Cleanup; also improve some insanely inefficient code

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

&gt; Source/WebCore/html/HTMLCollection.cpp:-202
&gt; -     invalidateCacheIfNeeded();

Note I&apos;m fixing 5-space indentation here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657053</commentid>
    <comment_count>3</comment_count>
      <attachid>149401</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-06-25 17:25:12 -0700</bug_when>
    <thetext>Comment on attachment 149401
Cleanup; also improve some insanely inefficient code

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

&gt; Source/WebCore/html/HTMLCollection.cpp:-223
&gt; -     return item(0);

Rather than deleting this entirely, why not just make it inline? firstItem() reads better to me than item(0) (compare to Vector::at(0) vs Vector::first())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657111</commentid>
    <comment_count>4</comment_count>
      <attachid>149401</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 18:19:48 -0700</bug_when>
    <thetext>Comment on attachment 149401
Cleanup; also improve some insanely inefficient code

Attachment 149401 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13101240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657213</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 20:02:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 149401 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149401&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLCollection.cpp:-223
&gt; &gt; -     return item(0);
&gt; 
&gt; Rather than deleting this entirely, why not just make it inline? firstItem() reads better to me than item(0) (compare to Vector::at(0) vs Vector::first())

I think it&apos;s better to have fewer methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657259</commentid>
    <comment_count>6</comment_count>
      <attachid>149446</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 21:28:12 -0700</bug_when>
    <thetext>Created attachment 149446
Fixed Chromium build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657264</commentid>
    <comment_count>7</comment_count>
      <attachid>149446</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 21:36:57 -0700</bug_when>
    <thetext>Comment on attachment 149446
Fixed Chromium build

Attachment 149446 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13099278</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657276</commentid>
    <comment_count>8</comment_count>
      <attachid>149449</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 22:00:58 -0700</bug_when>
    <thetext>Created attachment 149449
Fixed more Chromium build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657277</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 22:06:27 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657279</commentid>
    <comment_count>10</comment_count>
      <attachid>149449</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 22:13:09 -0700</bug_when>
    <thetext>Comment on attachment 149449
Fixed more Chromium build failures

Attachment 149449 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13090379</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657280</commentid>
    <comment_count>11</comment_count>
      <attachid>149450</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 22:14:08 -0700</bug_when>
    <thetext>Created attachment 149450
Another Chromium build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657289</commentid>
    <comment_count>12</comment_count>
      <attachid>149450</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 22:24:13 -0700</bug_when>
    <thetext>Comment on attachment 149450
Another Chromium build fix

Attachment 149450 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13101292</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657294</commentid>
    <comment_count>13</comment_count>
      <attachid>149455</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 22:29:51 -0700</bug_when>
    <thetext>Created attachment 149455
It must compile this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657297</commentid>
    <comment_count>14</comment_count>
      <attachid>149455</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-06-25 22:32:58 -0700</bug_when>
    <thetext>Comment on attachment 149455
It must compile this time

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

r=me assuming it builds etc.

&gt; Source/WebCore/html/HTMLCollection.h:56
&gt; +    bool hasAnyItem() const

I&apos;d call this hasItems().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657305</commentid>
    <comment_count>15</comment_count>
      <attachid>149455</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-25 22:55:30 -0700</bug_when>
    <thetext>Comment on attachment 149455
It must compile this time

Attachment 149455 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13101300</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657317</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-25 23:30:03 -0700</bug_when>
    <thetext>Committed r121232: &lt;http://trac.webkit.org/changeset/121232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657814</commentid>
    <comment_count>17</comment_count>
      <attachid>149455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-26 11:55:47 -0700</bug_when>
    <thetext>Comment on attachment 149455
It must compile this time

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

&gt; Source/WebCore/html/HTMLCollection.h:65
&gt; +    bool hasExactlyOneItem() const
&gt; +    {
&gt; +        invalidateCacheIfNeeded();
&gt; +        return (m_cache.hasLength &amp;&amp; m_cache.length == 1) || (m_cache.current &amp;&amp; !itemAfter(m_cache.current)) || (item(0) &amp;&amp; !item(1));
&gt; +    }

This looks like it could return true for a list with two items if hasLength is false, m_cache.current is 2, and itemAfter(2) is 0. Is there some reason that’s not a problem?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657815</commentid>
    <comment_count>18</comment_count>
      <attachid>149455</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-06-26 11:57:21 -0700</bug_when>
    <thetext>Comment on attachment 149455
It must compile this time

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

&gt;&gt; Source/WebCore/html/HTMLCollection.h:65
&gt;&gt; +    }
&gt; 
&gt; This looks like it could return true for a list with two items if hasLength is false, m_cache.current is 2, and itemAfter(2) is 0. Is there some reason that’s not a problem?

Sorry, let me say that again:

This looks like it could return true for a collection with two items if m_cache.hasLength is false and m_cache.current is 1. If so, there is a bug here. If not, why can’t this happen?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657821</commentid>
    <comment_count>19</comment_count>
      <attachid>149455</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-26 12:06:06 -0700</bug_when>
    <thetext>Comment on attachment 149455
It must compile this time

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

&gt;&gt;&gt; Source/WebCore/html/HTMLCollection.h:65
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; This looks like it could return true for a list with two items if hasLength is false, m_cache.current is 2, and itemAfter(2) is 0. Is there some reason that’s not a problem?
&gt; 
&gt; Sorry, let me say that again:
&gt; 
&gt; This looks like it could return true for a collection with two items if m_cache.hasLength is false and m_cache.current is 1. If so, there is a bug here. If not, why can’t this happen?

Oops, you&apos;re right. I should have done !item(m_cache. position + 1) instead of !itemAfter(m_cache.current)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149401</attachid>
            <date>2012-06-25 17:16:10 -0700</date>
            <delta_ts>2012-06-25 21:28:07 -0700</delta_ts>
            <desc>Cleanup; also improve some insanely inefficient code</desc>
            <filename>bug-89923-20120625172108.patch</filename>
            <type>text/plain</type>
            <size>12062</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEdldCByaWQgb2YgZmlyc3RJdGVt
IGFuZCBuZXh0SXRlbSBmcm9tIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSFRNTENvbGxlY3Rpb246OmZpcnN0SXRl
bSBhbmQgSFRNTENvbGxlY3Rpb246Om5leHRJdGVtLgorICAgICAgICBBbHNvIGFkZGVkIGhhc0Fu
eUl0ZW0oKSBhbmQgaGFzRXhhY3RseU9uZUl0ZW0oKSB0byBIVE1MQ29sbGVjdGlvbiBzbyB0aGF0
IG5hbWVkIGdldHRlciBvbiBEb2N1bWVudAorICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29tcHV0
ZSB0aGUgZnVsbCBsZW5ndGggYmVmb3JlIHJldHVybmluZyBhIEhUTUxDb2xsZWN0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlu
a3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNBbnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNFeGFjdGx5T25lSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6aW1hZ2VFbGVtZW50KToKKwogMjAxMi0wNi0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgRXZlbnRTb3VyY2U6IEV2ZW50cyBzaG91bGQgbm90IGJl
IGRpc3BhdGNoZWQgYWZ0ZXIgY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI0LDkgKzI0MjQsOCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKTsKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbCA9IGRvY3VtZW50LT5saW5rcygpOwot
ICAgIE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsKLSAgICB3aGlsZSAoY3Vycikgewor
ICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5rcyA9IGRvY3VtZW50LT5saW5rcygpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGN1cnIgPSBsaW5rcy0+aXRlbShpKTsgaSsrKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKG9i
aikgewogICAgICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4b2JqID0gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKQEAgLTI0NDQsNyArMjQ0
Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGFyZWFPYmplY3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGN1cnIgPSBjb2xsLT5uZXh0SXRlbSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CisgICAgaWYg
KGNvbGxlY3Rpb24tPmhhc0V4YWN0bHlPbmVJdGVtKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPml0ZW0oMCkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMjExOTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMSBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjpuYW1lR2V0dGVyKEV4ZWNTCiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIWNvbGxlY3Rpb24tPmhhc0FueUl0ZW0oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPmZpcnN0SXRlbSgpOworICAgIGlmIChj
b2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBj
b2xsZWN0aW9uLT5pdGVtKDApOwogCiAgICAgICAgIEZyYW1lKiBmcmFtZTsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw5ICs1MjEsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkCiAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFz
RWxlbWVudFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBIVE1MQ29sbGVj
dGlvbiogaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1z
LT5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+
Zmlyc3RJdGVtKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzQW55SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRlbSgwKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTAgKzg1LDEwIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2UK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKLSAg
ICBpZiAoIWl0ZW1zLT5sZW5ndGgoKSkKKyAgICBpZiAoIWl0ZW1zLT5oYXNBbnlJdGVtKCkpCiAg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIAotICAgIGlmIChpdGVtcy0+
bGVuZ3RoKCkgPT0gMSkgeworICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgewog
ICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPmZpcnN0SXRlbSgpOwogICAgICAgICBGcmFtZSog
ZnJhbWUgPSAwOwogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmlmcmFt
ZVRhZykgJiYgKGZyYW1lID0gc3RhdGljX2Nhc3Q8SFRNTElGcmFtZUVsZW1lbnQqPihub2RlKS0+
Y29udGVudEZyYW1lKCkpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAx
MjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NTgxLDcgKzQ1ODEsNyBAQCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRp
b25VUkwoCiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY2hp
bGRyZW4gPSBoZWFkKCktPmNoaWxkcmVuKCk7Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxk
cmVuLT5maXJzdEl0ZW0oKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkp
OyBpKyspIHsKICAgICAgICAgaWYgKCFjaGlsZC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0g
c3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4oY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LUhUTUxDb2xsZWN0aW9uOjpIVE1MQ29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlw
ZSB0eXBlKQotICAgIDogbV9pbmNsdWRlQ2hpbGRyZW4oc2hvdWxkSW5jbHVkZUNoaWxkcmVuKHR5
cGUpKQotICAgICwgbV90eXBlKHR5cGUpCi0gICAgLCBtX2Jhc2UoYmFzZSkKLXsKLSAgICBBU1NF
UlQobV9iYXNlKTsKLSAgICBtX2NhY2hlLmNsZWFyKCk7Ci19Ci0KLWJvb2wgSFRNTENvbGxlY3Rp
b246OnNob3VsZEluY2x1ZGVDaGlsZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorc3RhdGljIGJv
b2wgc2hvdWxkSW5jbHVkZUNoaWxkcmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBEb2NBbGw6CkBAIC03OCw2ICs2OSwxNSBAQCBib29sIEhU
TUxDb2xsZWN0aW9uOjpzaG91bGRJbmNsdWRlQ2hpbGRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CitIVE1MQ29sbGVjdGlvbjo6SFRNTENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5
cGUgdHlwZSkKKyAgICA6IG1faW5jbHVkZUNoaWxkcmVuKHNob3VsZEluY2x1ZGVDaGlsZHJlbih0
eXBlKSkKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9iYXNlKGJhc2UpCit7CisgICAgQVNT
RVJUKG1fYmFzZSk7CisgICAgbV9jYWNoZS5jbGVhcigpOworfQorCiBQYXNzT3duUHRyPEhUTUxD
b2xsZWN0aW9uPiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25U
eXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MQ29sbGVjdGlvbihiYXNl
LCB0eXBlKSk7CkBAIC0xOTksMzkgKzE5OSwyMyBAQCB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6
bGVuZ3RoKCkgY29uc3QKIAogTm9kZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiB7Ci0gICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7Ci0gICAgIGlmICht
X2NhY2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKLSAgICAgICAgIHJl
dHVybiBtX2NhY2hlLmN1cnJlbnQ7Ci0gICAgIGlmIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2Nh
Y2hlLmxlbmd0aCA8PSBpbmRleCkKLSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoIW1fY2Fj
aGUuY3VycmVudCB8fCBtX2NhY2hlLnBvc2l0aW9uID4gaW5kZXgpIHsKLSAgICAgICAgIG1fY2Fj
aGUuY3VycmVudCA9IGl0ZW1BZnRlcigwKTsKLSAgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAw
OwotICAgICAgICAgaWYgKCFtX2NhY2hlLmN1cnJlbnQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgIH0KLSAgICAgRWxlbWVudCogZSA9IG1fY2FjaGUuY3VycmVudDsKLSAgICAgZm9yICh1
bnNpZ25lZCBwb3MgPSBtX2NhY2hlLnBvc2l0aW9uOyBlICYmIHBvcyA8IGluZGV4OyBwb3MrKykK
LSAgICAgICAgIGUgPSBpdGVtQWZ0ZXIoZSk7Ci0gICAgIG1fY2FjaGUuY3VycmVudCA9IGU7Ci0g
ICAgIG1fY2FjaGUucG9zaXRpb24gPSBpbmRleDsKLSAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVu
dDsKLX0KLQotTm9kZSogSFRNTENvbGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0Ci17Ci0gICAg
IHJldHVybiBpdGVtKDApOwotfQotCi1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBj
b25zdAotewotICAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwotCi0gICAgIC8vIExvb2sg
Zm9yIHRoZSAnc2Vjb25kJyBpdGVtLiBUaGUgZmlyc3Qgb25lIGlzIGN1cnJlbnRJdGVtLCBhbHJl
YWR5IGdpdmVuIGJhY2suCi0gICAgIEVsZW1lbnQqIHJldHZhbCA9IGl0ZW1BZnRlcihtX2NhY2hl
LmN1cnJlbnQpOwotICAgICBtX2NhY2hlLmN1cnJlbnQgPSByZXR2YWw7Ci0gICAgIG1fY2FjaGUu
cG9zaXRpb24rKzsKLSAgICAgcmV0dXJuIHJldHZhbDsKKyAgICBpbnZhbGlkYXRlQ2FjaGVJZk5l
ZWRlZCgpOworICAgIGlmIChtX2NhY2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBp
bmRleCkKKyAgICAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKKyAgICBpZiAobV9jYWNoZS5o
YXNMZW5ndGggJiYgbV9jYWNoZS5sZW5ndGggPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOwor
ICAgIGlmICghbV9jYWNoZS5jdXJyZW50IHx8IG1fY2FjaGUucG9zaXRpb24gPiBpbmRleCkgewor
ICAgICAgICBtX2NhY2hlLmN1cnJlbnQgPSBpdGVtQWZ0ZXIoMCk7CisgICAgICAgIG1fY2FjaGUu
cG9zaXRpb24gPSAwOworICAgICAgICBpZiAoIW1fY2FjaGUuY3VycmVudCkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICBFbGVtZW50KiBlID0gbV9jYWNoZS5jdXJyZW50OworICAg
IGZvciAodW5zaWduZWQgcG9zID0gbV9jYWNoZS5wb3NpdGlvbjsgZSAmJiBwb3MgPCBpbmRleDsg
cG9zKyspCisgICAgICAgIGUgPSBpdGVtQWZ0ZXIoZSk7CisgICAgbV9jYWNoZS5jdXJyZW50ID0g
ZTsKKyAgICBtX2NhY2hlLnBvc2l0aW9uID0gaW5kZXg7CisgICAgcmV0dXJuIG1fY2FjaGUuY3Vy
cmVudDsKIH0KIAogc3RhdGljIGlubGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3Vt
ZW50QWxsKEhUTUxFbGVtZW50KiBlbGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwxOSArNDQsMjUgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVmKCkgeyBtX2Jhc2UtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgbV9i
YXNlLT5kZXJlZigpOyB9CiAKKyAgICAvLyBET00gQVBJCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7Ci0KICAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTm9kZSogbmV4dEl0ZW0oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTm9kZSog
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAotICAgIE5vZGUqIGZpcnN0SXRlbSgp
IGNvbnN0OwotCisgICAgLy8gTm9uLURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwotCi0gICAg
UGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGhhc0Fu
eUl0ZW0oKSBjb25zdAorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCkgfHwg
bV9jYWNoZS5jdXJyZW50IHx8IGl0ZW0oMCk7CisgICAgfQorICAgIGJvb2wgaGFzRXhhY3RseU9u
ZUl0ZW0oKSBjb25zdAorICAgIHsKKyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsK
KyAgICAgICAgcmV0dXJuIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA9PSAx
KSB8fCAobV9jYWNoZS5jdXJyZW50ICYmICFpdGVtQWZ0ZXIobV9jYWNoZS5jdXJyZW50KSkgfHwg
KGl0ZW0oMCkgJiYgIWl0ZW0oMSkpOworICAgIH0KIAogICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2U7IH0KICAgICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8Q29sbGVjdGlvblR5cGU+KG1fdHlwZSk7IH0KQEAgLTk4LDcgKzEwNCw2
IEBAIHByb3RlY3RlZDoKICAgICB9IG1fY2FjaGU7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJv
b2wgc2hvdWxkSW5jbHVkZUNoaWxkcmVuKENvbGxlY3Rpb25UeXBlKTsKICAgICBib29sIGNoZWNr
Rm9yTmFtZU1hdGNoKEVsZW1lbnQqLCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDEy
MTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04Miw4ICs4Miw4IEBAIGJvb2wgSFRNTE1hcEVsZW1lbnQ6Om1hcE1vdXNlRXZl
bnQoTGF5b3UKIAogSFRNTEltYWdlRWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVu
dCgpCiB7Ci0gICAgSFRNTENvbGxlY3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFnZXMoKTsK
LSAgICBmb3IgKE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3VyciA9IGNv
bGwtPm5leHRJdGVtKCkpIHsKKyAgICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzID0gZG9jdW1lbnQo
KS0+aW1hZ2VzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgTm9kZSogY3VyciA9IGltYWdl
cy0+aXRlbShpKTsgaSsrKSB7CiAgICAgICAgIGlmICghY3Vyci0+aGFzVGFnTmFtZShpbWdUYWcp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149446</attachid>
            <date>2012-06-25 21:28:12 -0700</date>
            <delta_ts>2012-06-25 22:00:53 -0700</delta_ts>
            <desc>Fixed Chromium build</desc>
            <filename>bug-89923-20120625213309.patch</filename>
            <type>text/plain</type>
            <size>12155</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEdldCByaWQgb2YgZmlyc3RJdGVt
IGFuZCBuZXh0SXRlbSBmcm9tIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSFRNTENvbGxlY3Rpb246OmZpcnN0SXRl
bSBhbmQgSFRNTENvbGxlY3Rpb246Om5leHRJdGVtLgorICAgICAgICBBbHNvIGFkZGVkIGhhc0Fu
eUl0ZW0oKSBhbmQgaGFzRXhhY3RseU9uZUl0ZW0oKSB0byBIVE1MQ29sbGVjdGlvbiBzbyB0aGF0
IG5hbWVkIGdldHRlciBvbiBEb2N1bWVudAorICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29tcHV0
ZSB0aGUgZnVsbCBsZW5ndGggYmVmb3JlIHJldHVybmluZyBhIEhUTUxDb2xsZWN0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlu
a3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNBbnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNFeGFjdGx5T25lSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6aW1hZ2VFbGVtZW50KToKKwogMjAxMi0wNi0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgRXZlbnRTb3VyY2U6IEV2ZW50cyBzaG91bGQgbm90IGJl
IGRpc3BhdGNoZWQgYWZ0ZXIgY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI0LDkgKzI0MjQsOCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKTsKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbCA9IGRvY3VtZW50LT5saW5rcygpOwot
ICAgIE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsKLSAgICB3aGlsZSAoY3Vycikgewor
ICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5rcyA9IGRvY3VtZW50LT5saW5rcygpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGN1cnIgPSBsaW5rcy0+aXRlbShpKTsgaSsrKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKG9i
aikgewogICAgICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4b2JqID0gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKQEAgLTI0NDQsNyArMjQ0
Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGFyZWFPYmplY3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGN1cnIgPSBjb2xsLT5uZXh0SXRlbSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CisgICAgaWYg
KGNvbGxlY3Rpb24tPmhhc0V4YWN0bHlPbmVJdGVtKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPml0ZW0oMCkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMjExOTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMSBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjpuYW1lR2V0dGVyKEV4ZWNTCiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIWNvbGxlY3Rpb24tPmhhc0FueUl0ZW0oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPmZpcnN0SXRlbSgpOworICAgIGlmIChj
b2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBj
b2xsZWN0aW9uLT5pdGVtKDApOwogCiAgICAgICAgIEZyYW1lKiBmcmFtZTsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw5ICs1MjEsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkCiAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFz
RWxlbWVudFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBIVE1MQ29sbGVj
dGlvbiogaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1z
LT5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+
Zmlyc3RJdGVtKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzQW55SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRlbSgwKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTEgKzg1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2UK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKLSAg
ICBpZiAoIWl0ZW1zLT5sZW5ndGgoKSkKKyAgICBpZiAoIWl0ZW1zLT5oYXNBbnlJdGVtKCkpCiAg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIAotICAgIGlmIChpdGVtcy0+
bGVuZ3RoKCkgPT0gMSkgewotICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPmZpcnN0SXRlbSgp
OworICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgeworICAgICAgICBOb2RlKiBu
b2RlID0gaXRlbXMtPml0ZW0oMCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBz
dGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGlzb2xhdGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgxLDcgKzQ1ODEsNyBA
QCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoCiAgICAgICAgIHJldHVy
biBLVVJMKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4gPSBoZWFkKCktPmNoaWxk
cmVuKCk7Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5maXJzdEl0ZW0oKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgaWYg
KCFjaGlsZC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtF
bGVtZW50Kj4oY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxDb2xsZWN0aW9uOjpIVE1M
Q29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDogbV9pbmNs
dWRlQ2hpbGRyZW4oc2hvdWxkSW5jbHVkZUNoaWxkcmVuKHR5cGUpKQotICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX2Jhc2UoYmFzZSkKLXsKLSAgICBBU1NFUlQobV9iYXNlKTsKLSAgICBtX2Nh
Y2hlLmNsZWFyKCk7Ci19Ci0KLWJvb2wgSFRNTENvbGxlY3Rpb246OnNob3VsZEluY2x1ZGVDaGls
ZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBEb2NBbGw6CkBAIC03OCw2ICs2OSwxNSBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpzaG91bGRJ
bmNsdWRlQ2hpbGRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitIVE1MQ29sbGVjdGlvbjo6SFRN
TENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKKyAgICA6IG1faW5j
bHVkZUNoaWxkcmVuKHNob3VsZEluY2x1ZGVDaGlsZHJlbih0eXBlKSkKKyAgICAsIG1fdHlwZSh0
eXBlKQorICAgICwgbV9iYXNlKGJhc2UpCit7CisgICAgQVNTRVJUKG1fYmFzZSk7CisgICAgbV9j
YWNoZS5jbGVhcigpOworfQorCiBQYXNzT3duUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVj
dGlvbjo6Y3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7CkBAIC0xOTksMzkg
KzE5OSwyMyBAQCB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9k
ZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgIGlu
dmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7Ci0gICAgIGlmIChtX2NhY2hlLmN1cnJlbnQgJiYgbV9j
YWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKLSAgICAgICAgIHJldHVybiBtX2NhY2hlLmN1cnJlbnQ7
Ci0gICAgIGlmIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA8PSBpbmRleCkK
LSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoIW1fY2FjaGUuY3VycmVudCB8fCBtX2NhY2hl
LnBvc2l0aW9uID4gaW5kZXgpIHsKLSAgICAgICAgIG1fY2FjaGUuY3VycmVudCA9IGl0ZW1BZnRl
cigwKTsKLSAgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOwotICAgICAgICAgaWYgKCFtX2Nh
Y2hlLmN1cnJlbnQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgRWxlbWVu
dCogZSA9IG1fY2FjaGUuY3VycmVudDsKLSAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBtX2NhY2hl
LnBvc2l0aW9uOyBlICYmIHBvcyA8IGluZGV4OyBwb3MrKykKLSAgICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgIG1fY2FjaGUuY3VycmVudCA9IGU7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24g
PSBpbmRleDsKLSAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKLX0KLQotTm9kZSogSFRNTENv
bGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0Ci17Ci0gICAgIHJldHVybiBpdGVtKDApOwotfQot
Ci1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAotewotICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwotCi0gICAgIC8vIExvb2sgZm9yIHRoZSAnc2Vjb25kJyBpdGVt
LiBUaGUgZmlyc3Qgb25lIGlzIGN1cnJlbnRJdGVtLCBhbHJlYWR5IGdpdmVuIGJhY2suCi0gICAg
IEVsZW1lbnQqIHJldHZhbCA9IGl0ZW1BZnRlcihtX2NhY2hlLmN1cnJlbnQpOwotICAgICBtX2Nh
Y2hlLmN1cnJlbnQgPSByZXR2YWw7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24rKzsKLSAgICAgcmV0
dXJuIHJldHZhbDsKKyAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOworICAgIGlmIChtX2Nh
Y2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IG1fY2FjaGUuY3VycmVudDsKKyAgICBpZiAobV9jYWNoZS5oYXNMZW5ndGggJiYgbV9jYWNoZS5s
ZW5ndGggPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNoZS5jdXJy
ZW50IHx8IG1fY2FjaGUucG9zaXRpb24gPiBpbmRleCkgeworICAgICAgICBtX2NhY2hlLmN1cnJl
bnQgPSBpdGVtQWZ0ZXIoMCk7CisgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOworICAgICAg
ICBpZiAoIW1fY2FjaGUuY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBFbGVtZW50KiBlID0gbV9jYWNoZS5jdXJyZW50OworICAgIGZvciAodW5zaWduZWQgcG9zID0g
bV9jYWNoZS5wb3NpdGlvbjsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCisgICAgICAgIGUgPSBp
dGVtQWZ0ZXIoZSk7CisgICAgbV9jYWNoZS5jdXJyZW50ID0gZTsKKyAgICBtX2NhY2hlLnBvc2l0
aW9uID0gaW5kZXg7CisgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50KiBl
bGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxOSArNDQsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBtX2Jh
c2UtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgbV9iYXNlLT5kZXJlZigpOyB9CiAKKyAg
ICAvLyBET00gQVBJCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbmV4
dEl0ZW0oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25z
dCBTdHJpbmcmKTsKIAotICAgIE5vZGUqIGZpcnN0SXRlbSgpIGNvbnN0OwotCisgICAgLy8gTm9u
LURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwotCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
dGFncyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGhhc0FueUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCkgfHwgbV9jYWNoZS5jdXJyZW50IHx8IGl0
ZW0oMCk7CisgICAgfQorICAgIGJvb2wgaGFzRXhhY3RseU9uZUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA9PSAxKSB8fCAobV9jYWNoZS5jdXJyZW50
ICYmICFpdGVtQWZ0ZXIobV9jYWNoZS5jdXJyZW50KSkgfHwgKGl0ZW0oMCkgJiYgIWl0ZW0oMSkp
OworICAgIH0KIAogICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAg
ICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVj
dGlvblR5cGU+KG1fdHlwZSk7IH0KQEAgLTk4LDcgKzEwNCw2IEBAIHByb3RlY3RlZDoKICAgICB9
IG1fY2FjaGU7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlKTsKICAgICBib29sIGNoZWNrRm9yTmFtZU1hdGNoKEVsZW1lbnQq
LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4Miw4
IEBAIGJvb2wgSFRNTE1hcEVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3UKIAogSFRNTEltYWdl
RWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiB7Ci0gICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFnZXMoKTsKLSAgICBmb3IgKE5vZGUqIGN1cnIg
PSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3VyciA9IGNvbGwtPm5leHRJdGVtKCkpIHsKKyAg
ICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzID0gZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgTm9kZSogY3VyciA9IGltYWdlcy0+aXRlbShpKTsgaSsrKSB7CiAg
ICAgICAgIGlmICghY3Vyci0+aGFzVGFnTmFtZShpbWdUYWcpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149449</attachid>
            <date>2012-06-25 22:00:58 -0700</date>
            <delta_ts>2012-06-25 22:14:02 -0700</delta_ts>
            <desc>Fixed more Chromium build failures</desc>
            <filename>bug-89923-20120625220555.patch</filename>
            <type>text/plain</type>
            <size>14794</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEdldCByaWQgb2YgZmlyc3RJdGVt
IGFuZCBuZXh0SXRlbSBmcm9tIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSFRNTENvbGxlY3Rpb246OmZpcnN0SXRl
bSBhbmQgSFRNTENvbGxlY3Rpb246Om5leHRJdGVtLgorICAgICAgICBBbHNvIGFkZGVkIGhhc0Fu
eUl0ZW0oKSBhbmQgaGFzRXhhY3RseU9uZUl0ZW0oKSB0byBIVE1MQ29sbGVjdGlvbiBzbyB0aGF0
IG5hbWVkIGdldHRlciBvbiBEb2N1bWVudAorICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29tcHV0
ZSB0aGUgZnVsbCBsZW5ndGggYmVmb3JlIHJldHVybmluZyBhIEhUTUxDb2xsZWN0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlu
a3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNBbnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNFeGFjdGx5T25lSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6aW1hZ2VFbGVtZW50KToKKwogMjAxMi0wNi0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgRXZlbnRTb3VyY2U6IEV2ZW50cyBzaG91bGQgbm90IGJl
IGRpc3BhdGNoZWQgYWZ0ZXIgY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI0LDkgKzI0MjQsOCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKTsKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbCA9IGRvY3VtZW50LT5saW5rcygpOwot
ICAgIE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsKLSAgICB3aGlsZSAoY3Vycikgewor
ICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5rcyA9IGRvY3VtZW50LT5saW5rcygpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGN1cnIgPSBsaW5rcy0+aXRlbShpKTsgaSsrKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKG9i
aikgewogICAgICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4b2JqID0gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKQEAgLTI0NDQsNyArMjQ0
Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGFyZWFPYmplY3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGN1cnIgPSBjb2xsLT5uZXh0SXRlbSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CisgICAgaWYg
KGNvbGxlY3Rpb24tPmhhc0V4YWN0bHlPbmVJdGVtKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPml0ZW0oMCkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMjExOTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMSBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjpuYW1lR2V0dGVyKEV4ZWNTCiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIWNvbGxlY3Rpb24tPmhhc0FueUl0ZW0oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPmZpcnN0SXRlbSgpOworICAgIGlmIChj
b2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBj
b2xsZWN0aW9uLT5pdGVtKDApOwogCiAgICAgICAgIEZyYW1lKiBmcmFtZTsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw5ICs1MjEsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkCiAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFz
RWxlbWVudFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBIVE1MQ29sbGVj
dGlvbiogaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1z
LT5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+
Zmlyc3RJdGVtKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzQW55SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRlbSgwKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTEgKzg1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2UK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKLSAg
ICBpZiAoIWl0ZW1zLT5sZW5ndGgoKSkKKyAgICBpZiAoIWl0ZW1zLT5oYXNBbnlJdGVtKCkpCiAg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIAotICAgIGlmIChpdGVtcy0+
bGVuZ3RoKCkgPT0gMSkgewotICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPmZpcnN0SXRlbSgp
OworICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgeworICAgICAgICBOb2RlKiBu
b2RlID0gaXRlbXMtPml0ZW0oMCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBz
dGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGlzb2xhdGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgxLDcgKzQ1ODEsNyBA
QCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoCiAgICAgICAgIHJldHVy
biBLVVJMKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4gPSBoZWFkKCktPmNoaWxk
cmVuKCk7Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5maXJzdEl0ZW0oKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgaWYg
KCFjaGlsZC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtF
bGVtZW50Kj4oY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxDb2xsZWN0aW9uOjpIVE1M
Q29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDogbV9pbmNs
dWRlQ2hpbGRyZW4oc2hvdWxkSW5jbHVkZUNoaWxkcmVuKHR5cGUpKQotICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX2Jhc2UoYmFzZSkKLXsKLSAgICBBU1NFUlQobV9iYXNlKTsKLSAgICBtX2Nh
Y2hlLmNsZWFyKCk7Ci19Ci0KLWJvb2wgSFRNTENvbGxlY3Rpb246OnNob3VsZEluY2x1ZGVDaGls
ZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBEb2NBbGw6CkBAIC03OCw2ICs2OSwxNSBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpzaG91bGRJ
bmNsdWRlQ2hpbGRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitIVE1MQ29sbGVjdGlvbjo6SFRN
TENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKKyAgICA6IG1faW5j
bHVkZUNoaWxkcmVuKHNob3VsZEluY2x1ZGVDaGlsZHJlbih0eXBlKSkKKyAgICAsIG1fdHlwZSh0
eXBlKQorICAgICwgbV9iYXNlKGJhc2UpCit7CisgICAgQVNTRVJUKG1fYmFzZSk7CisgICAgbV9j
YWNoZS5jbGVhcigpOworfQorCiBQYXNzT3duUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVj
dGlvbjo6Y3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7CkBAIC0xOTksMzkg
KzE5OSwyMyBAQCB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9k
ZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgIGlu
dmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7Ci0gICAgIGlmIChtX2NhY2hlLmN1cnJlbnQgJiYgbV9j
YWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKLSAgICAgICAgIHJldHVybiBtX2NhY2hlLmN1cnJlbnQ7
Ci0gICAgIGlmIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA8PSBpbmRleCkK
LSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoIW1fY2FjaGUuY3VycmVudCB8fCBtX2NhY2hl
LnBvc2l0aW9uID4gaW5kZXgpIHsKLSAgICAgICAgIG1fY2FjaGUuY3VycmVudCA9IGl0ZW1BZnRl
cigwKTsKLSAgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOwotICAgICAgICAgaWYgKCFtX2Nh
Y2hlLmN1cnJlbnQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgRWxlbWVu
dCogZSA9IG1fY2FjaGUuY3VycmVudDsKLSAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBtX2NhY2hl
LnBvc2l0aW9uOyBlICYmIHBvcyA8IGluZGV4OyBwb3MrKykKLSAgICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgIG1fY2FjaGUuY3VycmVudCA9IGU7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24g
PSBpbmRleDsKLSAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKLX0KLQotTm9kZSogSFRNTENv
bGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0Ci17Ci0gICAgIHJldHVybiBpdGVtKDApOwotfQot
Ci1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAotewotICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwotCi0gICAgIC8vIExvb2sgZm9yIHRoZSAnc2Vjb25kJyBpdGVt
LiBUaGUgZmlyc3Qgb25lIGlzIGN1cnJlbnRJdGVtLCBhbHJlYWR5IGdpdmVuIGJhY2suCi0gICAg
IEVsZW1lbnQqIHJldHZhbCA9IGl0ZW1BZnRlcihtX2NhY2hlLmN1cnJlbnQpOwotICAgICBtX2Nh
Y2hlLmN1cnJlbnQgPSByZXR2YWw7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24rKzsKLSAgICAgcmV0
dXJuIHJldHZhbDsKKyAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOworICAgIGlmIChtX2Nh
Y2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IG1fY2FjaGUuY3VycmVudDsKKyAgICBpZiAobV9jYWNoZS5oYXNMZW5ndGggJiYgbV9jYWNoZS5s
ZW5ndGggPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNoZS5jdXJy
ZW50IHx8IG1fY2FjaGUucG9zaXRpb24gPiBpbmRleCkgeworICAgICAgICBtX2NhY2hlLmN1cnJl
bnQgPSBpdGVtQWZ0ZXIoMCk7CisgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOworICAgICAg
ICBpZiAoIW1fY2FjaGUuY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBFbGVtZW50KiBlID0gbV9jYWNoZS5jdXJyZW50OworICAgIGZvciAodW5zaWduZWQgcG9zID0g
bV9jYWNoZS5wb3NpdGlvbjsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCisgICAgICAgIGUgPSBp
dGVtQWZ0ZXIoZSk7CisgICAgbV9jYWNoZS5jdXJyZW50ID0gZTsKKyAgICBtX2NhY2hlLnBvc2l0
aW9uID0gaW5kZXg7CisgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50KiBl
bGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxOSArNDQsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBtX2Jh
c2UtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgbV9iYXNlLT5kZXJlZigpOyB9CiAKKyAg
ICAvLyBET00gQVBJCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbmV4
dEl0ZW0oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25z
dCBTdHJpbmcmKTsKIAotICAgIE5vZGUqIGZpcnN0SXRlbSgpIGNvbnN0OwotCisgICAgLy8gTm9u
LURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwotCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
dGFncyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGhhc0FueUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCkgfHwgbV9jYWNoZS5jdXJyZW50IHx8IGl0
ZW0oMCk7CisgICAgfQorICAgIGJvb2wgaGFzRXhhY3RseU9uZUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA9PSAxKSB8fCAobV9jYWNoZS5jdXJyZW50
ICYmICFpdGVtQWZ0ZXIobV9jYWNoZS5jdXJyZW50KSkgfHwgKGl0ZW0oMCkgJiYgIWl0ZW0oMSkp
OworICAgIH0KIAogICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAg
ICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVj
dGlvblR5cGU+KG1fdHlwZSk7IH0KQEAgLTk4LDcgKzEwNCw2IEBAIHByb3RlY3RlZDoKICAgICB9
IG1fY2FjaGU7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlKTsKICAgICBib29sIGNoZWNrRm9yTmFtZU1hdGNoKEVsZW1lbnQq
LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4Miw4
IEBAIGJvb2wgSFRNTE1hcEVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3UKIAogSFRNTEltYWdl
RWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiB7Ci0gICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFnZXMoKTsKLSAgICBmb3IgKE5vZGUqIGN1cnIg
PSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3VyciA9IGNvbGwtPm5leHRJdGVtKCkpIHsKKyAg
ICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzID0gZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgTm9kZSogY3VyciA9IGltYWdlcy0+aXRlbShpKTsgaSsrKSB7CiAg
ICAgICAgIGlmICghY3Vyci0+aGFzVGFnTmFtZShpbWdUYWcpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDYtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBmaXJzdEl0ZW0gYW5kIG5leHRJdGVtIGZyb20g
SFRNTENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmUtaW1wbGVtZW50IFdlYk5vZGVDb2xsZWN0aW9uOjpmaXJzdEl0ZW0oKSBhbmQgV2Vi
Tm9kZUNvbGxlY3Rpb246Om5leHRJdGVtKCkgaW4gV2ViS2l0IGNvZGUKKyAgICAgICAgYmVjYXVz
ZSB3ZSBnb3QgcmlkIG9mIGl0IGZyb20gV2ViQ29yZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICBJIGhvcGUgd2hvZXZlciBleHBvc2VkIHRoZXNlIG1ldGhvZHMgdG8gQ2hyb21pdW0gZGlkbid0
IGtub3cgd2hhdCBoZS9zaGUgd2FzIGRvaW5nLgorICAgICAgICBPdGhlcndpc2UgaXQncyBhIHJl
YWxseSBzYWQgc3RvcnkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZUNvbGxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm9kZUNvbGxlY3Rpb246OldlYk5vZGVDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYk5vZGVDb2xsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZUNvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6bmV4dEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6Zmlyc3RJdGVtKToKKwogMjAx
Mi0wNi0yNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIFdlYlBsdWdpblNjcm9sbGJhciBhbmQgV2ViUGx1Z2luU2Nyb2xsYmFyQ2xp
ZW50IHN0dWIgaW1wbGVtZW50YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViTm9kZUNvbGxlY3Rpb24gewogcHVibGlj
OgogICAgIH5XZWJOb2RlQ29sbGVjdGlvbigpIHsgcmVzZXQoKTsgfQogCi0gICAgV2ViTm9kZUNv
bGxlY3Rpb24oKSA6IG1fcHJpdmF0ZSgwKSB7IH0KKyAgICBXZWJOb2RlQ29sbGVjdGlvbigpIDog
bV9wcml2YXRlKDApLCBtX2N1cnJlbnQoMCkgeyB9CiAgICAgV2ViTm9kZUNvbGxlY3Rpb24oY29u
c3QgV2ViTm9kZUNvbGxlY3Rpb24mIG4pIDogbV9wcml2YXRlKDApIHsgYXNzaWduKG4pOyB9CiAg
ICAgV2ViTm9kZUNvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBXZWJOb2RlQ29sbGVjdGlvbiYg
bikKICAgICB7CkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBh
c3NpZ24oV2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qKTsKICAgICBXZWJDb3JlOjpIVE1MQ29sbGVj
dGlvbiogbV9wcml2YXRlOworICAgIHVzaWduZWQgbV9jdXJyZW50OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlQ29s
bGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Tm9kZUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJOb2RlQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDEy
ICs3NCwxNiBAQCB1bnNpZ25lZCBXZWJOb2RlQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uCiAKIFdl
Yk5vZGUgV2ViTm9kZUNvbGxlY3Rpb246Om5leHRJdGVtKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
V2ViTm9kZShtX3ByaXZhdGUtPm5leHRJdGVtKCkpOworICAgIFdlYk5vZGUqIG5vZGUgPSBXZWJO
b2RlKG1fcHJpdmF0ZS0+aXRlbShtX2N1cnJlbnQpKTsKKyAgICBpZiAobm9kZSkKKyAgICAgICAg
bV9jdXJyZW50Kys7CisgICAgcmV0dXJuIG5vZGU7CiB9CiAKIFdlYk5vZGUgV2ViTm9kZUNvbGxl
Y3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYk5vZGUobV9wcml2YXRl
LT5maXJzdEl0ZW0oKSk7CisgICAgbV9jdXJyZW50ID0gMDsKKyAgICByZXR1cm4gbmV4dEl0ZW0o
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149450</attachid>
            <date>2012-06-25 22:14:08 -0700</date>
            <delta_ts>2012-06-25 22:29:45 -0700</delta_ts>
            <desc>Another Chromium build fix</desc>
            <filename>bug-89923-20120625221905.patch</filename>
            <type>text/plain</type>
            <size>14795</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEdldCByaWQgb2YgZmlyc3RJdGVt
IGFuZCBuZXh0SXRlbSBmcm9tIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSFRNTENvbGxlY3Rpb246OmZpcnN0SXRl
bSBhbmQgSFRNTENvbGxlY3Rpb246Om5leHRJdGVtLgorICAgICAgICBBbHNvIGFkZGVkIGhhc0Fu
eUl0ZW0oKSBhbmQgaGFzRXhhY3RseU9uZUl0ZW0oKSB0byBIVE1MQ29sbGVjdGlvbiBzbyB0aGF0
IG5hbWVkIGdldHRlciBvbiBEb2N1bWVudAorICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29tcHV0
ZSB0aGUgZnVsbCBsZW5ndGggYmVmb3JlIHJldHVybmluZyBhIEhUTUxDb2xsZWN0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlu
a3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNBbnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNFeGFjdGx5T25lSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6aW1hZ2VFbGVtZW50KToKKwogMjAxMi0wNi0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgRXZlbnRTb3VyY2U6IEV2ZW50cyBzaG91bGQgbm90IGJl
IGRpc3BhdGNoZWQgYWZ0ZXIgY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI0LDkgKzI0MjQsOCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKTsKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbCA9IGRvY3VtZW50LT5saW5rcygpOwot
ICAgIE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsKLSAgICB3aGlsZSAoY3Vycikgewor
ICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5rcyA9IGRvY3VtZW50LT5saW5rcygpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGN1cnIgPSBsaW5rcy0+aXRlbShpKTsgaSsrKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKG9i
aikgewogICAgICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4b2JqID0gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKQEAgLTI0NDQsNyArMjQ0
Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGFyZWFPYmplY3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGN1cnIgPSBjb2xsLT5uZXh0SXRlbSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CisgICAgaWYg
KGNvbGxlY3Rpb24tPmhhc0V4YWN0bHlPbmVJdGVtKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPml0ZW0oMCkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMjExOTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMSBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjpuYW1lR2V0dGVyKEV4ZWNTCiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIWNvbGxlY3Rpb24tPmhhc0FueUl0ZW0oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPmZpcnN0SXRlbSgpOworICAgIGlmIChj
b2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBj
b2xsZWN0aW9uLT5pdGVtKDApOwogCiAgICAgICAgIEZyYW1lKiBmcmFtZTsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw5ICs1MjEsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkCiAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFz
RWxlbWVudFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBIVE1MQ29sbGVj
dGlvbiogaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1z
LT5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+
Zmlyc3RJdGVtKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzQW55SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRlbSgwKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTEgKzg1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2UK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKLSAg
ICBpZiAoIWl0ZW1zLT5sZW5ndGgoKSkKKyAgICBpZiAoIWl0ZW1zLT5oYXNBbnlJdGVtKCkpCiAg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIAotICAgIGlmIChpdGVtcy0+
bGVuZ3RoKCkgPT0gMSkgewotICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPmZpcnN0SXRlbSgp
OworICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgeworICAgICAgICBOb2RlKiBu
b2RlID0gaXRlbXMtPml0ZW0oMCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBz
dGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGlzb2xhdGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgxLDcgKzQ1ODEsNyBA
QCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoCiAgICAgICAgIHJldHVy
biBLVVJMKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4gPSBoZWFkKCktPmNoaWxk
cmVuKCk7Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5maXJzdEl0ZW0oKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgaWYg
KCFjaGlsZC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtF
bGVtZW50Kj4oY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxDb2xsZWN0aW9uOjpIVE1M
Q29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDogbV9pbmNs
dWRlQ2hpbGRyZW4oc2hvdWxkSW5jbHVkZUNoaWxkcmVuKHR5cGUpKQotICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX2Jhc2UoYmFzZSkKLXsKLSAgICBBU1NFUlQobV9iYXNlKTsKLSAgICBtX2Nh
Y2hlLmNsZWFyKCk7Ci19Ci0KLWJvb2wgSFRNTENvbGxlY3Rpb246OnNob3VsZEluY2x1ZGVDaGls
ZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBEb2NBbGw6CkBAIC03OCw2ICs2OSwxNSBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpzaG91bGRJ
bmNsdWRlQ2hpbGRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitIVE1MQ29sbGVjdGlvbjo6SFRN
TENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKKyAgICA6IG1faW5j
bHVkZUNoaWxkcmVuKHNob3VsZEluY2x1ZGVDaGlsZHJlbih0eXBlKSkKKyAgICAsIG1fdHlwZSh0
eXBlKQorICAgICwgbV9iYXNlKGJhc2UpCit7CisgICAgQVNTRVJUKG1fYmFzZSk7CisgICAgbV9j
YWNoZS5jbGVhcigpOworfQorCiBQYXNzT3duUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVj
dGlvbjo6Y3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7CkBAIC0xOTksMzkg
KzE5OSwyMyBAQCB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9k
ZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgIGlu
dmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7Ci0gICAgIGlmIChtX2NhY2hlLmN1cnJlbnQgJiYgbV9j
YWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKLSAgICAgICAgIHJldHVybiBtX2NhY2hlLmN1cnJlbnQ7
Ci0gICAgIGlmIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA8PSBpbmRleCkK
LSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoIW1fY2FjaGUuY3VycmVudCB8fCBtX2NhY2hl
LnBvc2l0aW9uID4gaW5kZXgpIHsKLSAgICAgICAgIG1fY2FjaGUuY3VycmVudCA9IGl0ZW1BZnRl
cigwKTsKLSAgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOwotICAgICAgICAgaWYgKCFtX2Nh
Y2hlLmN1cnJlbnQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgRWxlbWVu
dCogZSA9IG1fY2FjaGUuY3VycmVudDsKLSAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBtX2NhY2hl
LnBvc2l0aW9uOyBlICYmIHBvcyA8IGluZGV4OyBwb3MrKykKLSAgICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgIG1fY2FjaGUuY3VycmVudCA9IGU7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24g
PSBpbmRleDsKLSAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKLX0KLQotTm9kZSogSFRNTENv
bGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0Ci17Ci0gICAgIHJldHVybiBpdGVtKDApOwotfQot
Ci1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAotewotICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwotCi0gICAgIC8vIExvb2sgZm9yIHRoZSAnc2Vjb25kJyBpdGVt
LiBUaGUgZmlyc3Qgb25lIGlzIGN1cnJlbnRJdGVtLCBhbHJlYWR5IGdpdmVuIGJhY2suCi0gICAg
IEVsZW1lbnQqIHJldHZhbCA9IGl0ZW1BZnRlcihtX2NhY2hlLmN1cnJlbnQpOwotICAgICBtX2Nh
Y2hlLmN1cnJlbnQgPSByZXR2YWw7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24rKzsKLSAgICAgcmV0
dXJuIHJldHZhbDsKKyAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOworICAgIGlmIChtX2Nh
Y2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IG1fY2FjaGUuY3VycmVudDsKKyAgICBpZiAobV9jYWNoZS5oYXNMZW5ndGggJiYgbV9jYWNoZS5s
ZW5ndGggPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNoZS5jdXJy
ZW50IHx8IG1fY2FjaGUucG9zaXRpb24gPiBpbmRleCkgeworICAgICAgICBtX2NhY2hlLmN1cnJl
bnQgPSBpdGVtQWZ0ZXIoMCk7CisgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOworICAgICAg
ICBpZiAoIW1fY2FjaGUuY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBFbGVtZW50KiBlID0gbV9jYWNoZS5jdXJyZW50OworICAgIGZvciAodW5zaWduZWQgcG9zID0g
bV9jYWNoZS5wb3NpdGlvbjsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCisgICAgICAgIGUgPSBp
dGVtQWZ0ZXIoZSk7CisgICAgbV9jYWNoZS5jdXJyZW50ID0gZTsKKyAgICBtX2NhY2hlLnBvc2l0
aW9uID0gaW5kZXg7CisgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50KiBl
bGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxOSArNDQsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBtX2Jh
c2UtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgbV9iYXNlLT5kZXJlZigpOyB9CiAKKyAg
ICAvLyBET00gQVBJCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbmV4
dEl0ZW0oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25z
dCBTdHJpbmcmKTsKIAotICAgIE5vZGUqIGZpcnN0SXRlbSgpIGNvbnN0OwotCisgICAgLy8gTm9u
LURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwotCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
dGFncyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGhhc0FueUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCkgfHwgbV9jYWNoZS5jdXJyZW50IHx8IGl0
ZW0oMCk7CisgICAgfQorICAgIGJvb2wgaGFzRXhhY3RseU9uZUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA9PSAxKSB8fCAobV9jYWNoZS5jdXJyZW50
ICYmICFpdGVtQWZ0ZXIobV9jYWNoZS5jdXJyZW50KSkgfHwgKGl0ZW0oMCkgJiYgIWl0ZW0oMSkp
OworICAgIH0KIAogICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAg
ICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVj
dGlvblR5cGU+KG1fdHlwZSk7IH0KQEAgLTk4LDcgKzEwNCw2IEBAIHByb3RlY3RlZDoKICAgICB9
IG1fY2FjaGU7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlKTsKICAgICBib29sIGNoZWNrRm9yTmFtZU1hdGNoKEVsZW1lbnQq
LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4Miw4
IEBAIGJvb2wgSFRNTE1hcEVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3UKIAogSFRNTEltYWdl
RWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiB7Ci0gICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFnZXMoKTsKLSAgICBmb3IgKE5vZGUqIGN1cnIg
PSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3VyciA9IGNvbGwtPm5leHRJdGVtKCkpIHsKKyAg
ICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzID0gZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgTm9kZSogY3VyciA9IGltYWdlcy0+aXRlbShpKTsgaSsrKSB7CiAg
ICAgICAgIGlmICghY3Vyci0+aGFzVGFnTmFtZShpbWdUYWcpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDYtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBmaXJzdEl0ZW0gYW5kIG5leHRJdGVtIGZyb20g
SFRNTENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmUtaW1wbGVtZW50IFdlYk5vZGVDb2xsZWN0aW9uOjpmaXJzdEl0ZW0oKSBhbmQgV2Vi
Tm9kZUNvbGxlY3Rpb246Om5leHRJdGVtKCkgaW4gV2ViS2l0IGNvZGUKKyAgICAgICAgYmVjYXVz
ZSB3ZSBnb3QgcmlkIG9mIGl0IGZyb20gV2ViQ29yZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICBJIGhvcGUgd2hvZXZlciBleHBvc2VkIHRoZXNlIG1ldGhvZHMgdG8gQ2hyb21pdW0gZGlkbid0
IGtub3cgd2hhdCBoZS9zaGUgd2FzIGRvaW5nLgorICAgICAgICBPdGhlcndpc2UgaXQncyBhIHJl
YWxseSBzYWQgc3RvcnkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZUNvbGxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm9kZUNvbGxlY3Rpb246OldlYk5vZGVDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYk5vZGVDb2xsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZUNvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6bmV4dEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6Zmlyc3RJdGVtKToKKwogMjAx
Mi0wNi0yNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIFdlYlBsdWdpblNjcm9sbGJhciBhbmQgV2ViUGx1Z2luU2Nyb2xsYmFyQ2xp
ZW50IHN0dWIgaW1wbGVtZW50YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViTm9kZUNvbGxlY3Rpb24gewogcHVibGlj
OgogICAgIH5XZWJOb2RlQ29sbGVjdGlvbigpIHsgcmVzZXQoKTsgfQogCi0gICAgV2ViTm9kZUNv
bGxlY3Rpb24oKSA6IG1fcHJpdmF0ZSgwKSB7IH0KKyAgICBXZWJOb2RlQ29sbGVjdGlvbigpIDog
bV9wcml2YXRlKDApLCBtX2N1cnJlbnQoMCkgeyB9CiAgICAgV2ViTm9kZUNvbGxlY3Rpb24oY29u
c3QgV2ViTm9kZUNvbGxlY3Rpb24mIG4pIDogbV9wcml2YXRlKDApIHsgYXNzaWduKG4pOyB9CiAg
ICAgV2ViTm9kZUNvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBXZWJOb2RlQ29sbGVjdGlvbiYg
bikKICAgICB7CkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBh
c3NpZ24oV2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qKTsKICAgICBXZWJDb3JlOjpIVE1MQ29sbGVj
dGlvbiogbV9wcml2YXRlOworICAgIHVuc2lnbmVkIG1fY3VycmVudDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTm9kZUNv
bGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
Yk5vZGVDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTm9kZUNvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCwx
MiArNzQsMTYgQEAgdW5zaWduZWQgV2ViTm9kZUNvbGxlY3Rpb246Omxlbmd0aCgpIGNvbgogCiBX
ZWJOb2RlIFdlYk5vZGVDb2xsZWN0aW9uOjpuZXh0SXRlbSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFdlYk5vZGUobV9wcml2YXRlLT5uZXh0SXRlbSgpKTsKKyAgICBXZWJOb2RlKiBub2RlID0gV2Vi
Tm9kZShtX3ByaXZhdGUtPml0ZW0obV9jdXJyZW50KSk7CisgICAgaWYgKG5vZGUpCisgICAgICAg
IG1fY3VycmVudCsrOworICAgIHJldHVybiBub2RlOwogfQogCiBXZWJOb2RlIFdlYk5vZGVDb2xs
ZWN0aW9uOjpmaXJzdEl0ZW0oKSBjb25zdAogewotICAgIHJldHVybiBXZWJOb2RlKG1fcHJpdmF0
ZS0+Zmlyc3RJdGVtKCkpOworICAgIG1fY3VycmVudCA9IDA7CisgICAgcmV0dXJuIG5leHRJdGVt
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149455</attachid>
            <date>2012-06-25 22:29:51 -0700</date>
            <delta_ts>2012-06-26 12:06:06 -0700</delta_ts>
            <desc>It must compile this time</desc>
            <filename>bug-89923-20120625223448.patch</filename>
            <type>text/plain</type>
            <size>14803</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTE5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTI1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEdldCByaWQgb2YgZmlyc3RJdGVt
IGFuZCBuZXh0SXRlbSBmcm9tIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTkyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgSFRNTENvbGxlY3Rpb246OmZpcnN0SXRl
bSBhbmQgSFRNTENvbGxlY3Rpb246Om5leHRJdGVtLgorICAgICAgICBBbHNvIGFkZGVkIGhhc0Fu
eUl0ZW0oKSBhbmQgaGFzRXhhY3RseU9uZUl0ZW0oKSB0byBIVE1MQ29sbGVjdGlvbiBzbyB0aGF0
IG5hbWVkIGdldHRlciBvbiBEb2N1bWVudAorICAgICAgICBkb2Vzbid0IG5lZWQgdG8gY29tcHV0
ZSB0aGUgZnVsbCBsZW5ndGggYmVmb3JlIHJldHVybmluZyBhIEhUTUxDb2xsZWN0aW9uLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlu
a3MpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVkSXRlbUdldHRlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6
Om5hbWVHZXR0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50OjpHZXROYW1lZFByb3BlcnR5
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6Om9wZW5TZWFyY2hEZXNjcmlwdGlvblVSTCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRJbmNsdWRlQ2hpbGRyZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246OkhUTUxDb2xsZWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Oml0ZW0pOgorICAg
ICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNBbnlJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjpoYXNFeGFjdGx5T25lSXRlbSk6CisgICAgICAgICog
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWFwRWxlbWVu
dDo6aW1hZ2VFbGVtZW50KToKKwogMjAxMi0wNi0yNSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBt
b3Rvcm9sYS5jb20+CiAKICAgICAgICAgRXZlbnRTb3VyY2U6IEV2ZW50cyBzaG91bGQgbm90IGJl
IGRpc3BhdGNoZWQgYWZ0ZXIgY2xvc2UoKQpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZp
c2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDI0LDkgKzI0MjQsOCBAQCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyCiB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmdldERvY3VtZW50TGlua3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiByZXN1bHQpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9yZW5kZXJlci0+ZG9j
dW1lbnQoKTsKLSAgICBIVE1MQ29sbGVjdGlvbiogY29sbCA9IGRvY3VtZW50LT5saW5rcygpOwot
ICAgIE5vZGUqIGN1cnIgPSBjb2xsLT5maXJzdEl0ZW0oKTsKLSAgICB3aGlsZSAoY3Vycikgewor
ICAgIEhUTUxDb2xsZWN0aW9uKiBsaW5rcyA9IGRvY3VtZW50LT5saW5rcygpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IE5vZGUqIGN1cnIgPSBsaW5rcy0+aXRlbShpKTsgaSsrKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gY3Vyci0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKG9i
aikgewogICAgICAgICAgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4b2JqID0gZG9j
dW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUob2JqKTsKQEAgLTI0NDQsNyArMjQ0
Myw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Z2V0RG9jdW0KICAgICAgICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGFyZWFPYmplY3QpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIGN1cnIgPSBjb2xsLT5uZXh0SXRlbSgpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOCArMTE3LDggQEAgc3RhdGljIEpT
VmFsdWUgbmFtZWRJdGVtR2V0dGVyKEV4ZWNTdGF0ZQogICAgIEFTU0VSVChkb2N1bWVudC0+aXNI
VE1MRG9jdW1lbnQoKSk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRvY3Vt
ZW50LT53aW5kb3dOYW1lZEl0ZW1zKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOwotICAgIGlmIChjb2xsZWN0aW9uLT5sZW5ndGgoKSA9PSAxKQotICAgICAgICByZXR1
cm4gdG9KUyhleGVjLCB0aGlzT2JqLCBjb2xsZWN0aW9uLT5maXJzdEl0ZW0oKSk7CisgICAgaWYg
KGNvbGxlY3Rpb24tPmhhc0V4YWN0bHlPbmVJdGVtKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRoaXNPYmosIGNvbGxlY3Rpb24tPml0ZW0oMCkpOwogICAgIHJldHVybiB0b0pTKGV4ZWMs
IHRoaXNPYmosIGNvbGxlY3Rpb24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCShyZXZpc2lvbiAxMjExOTAp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDEyICs2NCwxMSBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50
OjpuYW1lR2V0dGVyKEV4ZWNTCiAKICAgICBIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGRv
Y3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBjb2xsZWN0aW9uLT5sZW5ndGgo
KTsKLSAgICBpZiAoIWxlbmd0aCkKKyAgICBpZiAoIWNvbGxlY3Rpb24tPmhhc0FueUl0ZW0oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpZiAobGVuZ3RoID09IDEpIHsK
LSAgICAgICAgTm9kZSogbm9kZSA9IGNvbGxlY3Rpb24tPmZpcnN0SXRlbSgpOworICAgIGlmIChj
b2xsZWN0aW9uLT5oYXNFeGFjdGx5T25lSXRlbSgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSBj
b2xsZWN0aW9uLT5pdGVtKDApOwogCiAgICAgICAgIEZyYW1lKiBmcmFtZTsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoaWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBzdGF0aWNfY2FzdDxIVE1M
SUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyMSw5ICs1MjEsOSBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5hbWVkCiAgICAgaWYgKGRvYyAm
JiBkb2MtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEhUTUxE
b2N1bWVudCo+KGRvYyktPmhhc05hbWVkSXRlbShwcm9wTmFtZS5pbXBsKCkpIHx8IGRvYy0+aGFz
RWxlbWVudFdpdGhJZChwcm9wTmFtZS5pbXBsKCkpKSB7CiAgICAgICAgICAgICBIVE1MQ29sbGVj
dGlvbiogaXRlbXMgPSBkb2MtPndpbmRvd05hbWVkSXRlbXMocHJvcE5hbWUpOwotICAgICAgICAg
ICAgaWYgKGl0ZW1zLT5sZW5ndGgoKSA+PSAxKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1z
LT5sZW5ndGgoKSA9PSAxKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+
Zmlyc3RJdGVtKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIGlmIChpdGVtcy0+
aGFzQW55SXRlbSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGl0ZW1zLT5oYXNFeGFjdGx5T25l
SXRlbSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9WOChpdGVtcy0+aXRlbSgwKSwg
aW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0b1Y4KGl0ZW1zLCBp
bmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3Vt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODUsMTEgKzg1LDExIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6R2UK
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogCiAgICAgSFRNTENvbGxl
Y3Rpb24qIGl0ZW1zID0gaHRtbERvY3VtZW50LT5kb2N1bWVudE5hbWVkSXRlbXMoa2V5KTsKLSAg
ICBpZiAoIWl0ZW1zLT5sZW5ndGgoKSkKKyAgICBpZiAoIWl0ZW1zLT5oYXNBbnlJdGVtKCkpCiAg
ICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKIAotICAgIGlmIChpdGVtcy0+
bGVuZ3RoKCkgPT0gMSkgewotICAgICAgICBOb2RlKiBub2RlID0gaXRlbXMtPmZpcnN0SXRlbSgp
OworICAgIGlmIChpdGVtcy0+aGFzRXhhY3RseU9uZUl0ZW0oKSkgeworICAgICAgICBOb2RlKiBu
b2RlID0gaXRlbXMtPml0ZW0oMCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IDA7CiAgICAgICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aWZyYW1lVGFnKSAmJiAoZnJhbWUgPSBz
dGF0aWNfY2FzdDxIVE1MSUZyYW1lRWxlbWVudCo+KG5vZGUpLT5jb250ZW50RnJhbWUoKSkpCiAg
ICAgICAgICAgICByZXR1cm4gdG9WOChmcmFtZS0+ZG9tV2luZG93KCksIGlzb2xhdGUpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTgxLDcgKzQ1ODEsNyBA
QCBLVVJMIERvY3VtZW50OjpvcGVuU2VhcmNoRGVzY3JpcHRpb25VUkwoCiAgICAgICAgIHJldHVy
biBLVVJMKCk7CiAKICAgICBIVE1MQ29sbGVjdGlvbiogY2hpbGRyZW4gPSBoZWFkKCktPmNoaWxk
cmVuKCk7Ci0gICAgZm9yIChOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5maXJzdEl0ZW0oKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGRyZW4tPm5leHRJdGVtKCkpIHsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBOb2RlKiBjaGlsZCA9IGNoaWxkcmVuLT5pdGVtKGkpOyBpKyspIHsKICAgICAgICAgaWYg
KCFjaGlsZC0+aGFzVGFnTmFtZShsaW5rVGFnKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtF
bGVtZW50Kj4oY2hpbGQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNiArMzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLUhUTUxDb2xsZWN0aW9uOjpIVE1M
Q29sbGVjdGlvbihOb2RlKiBiYXNlLCBDb2xsZWN0aW9uVHlwZSB0eXBlKQotICAgIDogbV9pbmNs
dWRlQ2hpbGRyZW4oc2hvdWxkSW5jbHVkZUNoaWxkcmVuKHR5cGUpKQotICAgICwgbV90eXBlKHR5
cGUpCi0gICAgLCBtX2Jhc2UoYmFzZSkKLXsKLSAgICBBU1NFUlQobV9iYXNlKTsKLSAgICBtX2Nh
Y2hlLmNsZWFyKCk7Ci19Ci0KLWJvb2wgSFRNTENvbGxlY3Rpb246OnNob3VsZEluY2x1ZGVDaGls
ZHJlbihDb2xsZWN0aW9uVHlwZSB0eXBlKQorc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2Fz
ZSBEb2NBbGw6CkBAIC03OCw2ICs2OSwxNSBAQCBib29sIEhUTUxDb2xsZWN0aW9uOjpzaG91bGRJ
bmNsdWRlQ2hpbGRyCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitIVE1MQ29sbGVjdGlvbjo6SFRN
TENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKKyAgICA6IG1faW5j
bHVkZUNoaWxkcmVuKHNob3VsZEluY2x1ZGVDaGlsZHJlbih0eXBlKSkKKyAgICAsIG1fdHlwZSh0
eXBlKQorICAgICwgbV9iYXNlKGJhc2UpCit7CisgICAgQVNTRVJUKG1fYmFzZSk7CisgICAgbV9j
YWNoZS5jbGVhcigpOworfQorCiBQYXNzT3duUHRyPEhUTUxDb2xsZWN0aW9uPiBIVE1MQ29sbGVj
dGlvbjo6Y3JlYXRlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBlIHR5cGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBIVE1MQ29sbGVjdGlvbihiYXNlLCB0eXBlKSk7CkBAIC0xOTksMzkg
KzE5OSwyMyBAQCB1bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIAogTm9k
ZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgIGlu
dmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7Ci0gICAgIGlmIChtX2NhY2hlLmN1cnJlbnQgJiYgbV9j
YWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKLSAgICAgICAgIHJldHVybiBtX2NhY2hlLmN1cnJlbnQ7
Ci0gICAgIGlmIChtX2NhY2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA8PSBpbmRleCkK
LSAgICAgICAgIHJldHVybiAwOwotICAgICBpZiAoIW1fY2FjaGUuY3VycmVudCB8fCBtX2NhY2hl
LnBvc2l0aW9uID4gaW5kZXgpIHsKLSAgICAgICAgIG1fY2FjaGUuY3VycmVudCA9IGl0ZW1BZnRl
cigwKTsKLSAgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOwotICAgICAgICAgaWYgKCFtX2Nh
Y2hlLmN1cnJlbnQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgICAgRWxlbWVu
dCogZSA9IG1fY2FjaGUuY3VycmVudDsKLSAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBtX2NhY2hl
LnBvc2l0aW9uOyBlICYmIHBvcyA8IGluZGV4OyBwb3MrKykKLSAgICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgIG1fY2FjaGUuY3VycmVudCA9IGU7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24g
PSBpbmRleDsKLSAgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKLX0KLQotTm9kZSogSFRNTENv
bGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0Ci17Ci0gICAgIHJldHVybiBpdGVtKDApOwotfQot
Ci1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6bmV4dEl0ZW0oKSBjb25zdAotewotICAgICBpbnZhbGlk
YXRlQ2FjaGVJZk5lZWRlZCgpOwotCi0gICAgIC8vIExvb2sgZm9yIHRoZSAnc2Vjb25kJyBpdGVt
LiBUaGUgZmlyc3Qgb25lIGlzIGN1cnJlbnRJdGVtLCBhbHJlYWR5IGdpdmVuIGJhY2suCi0gICAg
IEVsZW1lbnQqIHJldHZhbCA9IGl0ZW1BZnRlcihtX2NhY2hlLmN1cnJlbnQpOwotICAgICBtX2Nh
Y2hlLmN1cnJlbnQgPSByZXR2YWw7Ci0gICAgIG1fY2FjaGUucG9zaXRpb24rKzsKLSAgICAgcmV0
dXJuIHJldHZhbDsKKyAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOworICAgIGlmIChtX2Nh
Y2hlLmN1cnJlbnQgJiYgbV9jYWNoZS5wb3NpdGlvbiA9PSBpbmRleCkKKyAgICAgICAgcmV0dXJu
IG1fY2FjaGUuY3VycmVudDsKKyAgICBpZiAobV9jYWNoZS5oYXNMZW5ndGggJiYgbV9jYWNoZS5s
ZW5ndGggPD0gaW5kZXgpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghbV9jYWNoZS5jdXJy
ZW50IHx8IG1fY2FjaGUucG9zaXRpb24gPiBpbmRleCkgeworICAgICAgICBtX2NhY2hlLmN1cnJl
bnQgPSBpdGVtQWZ0ZXIoMCk7CisgICAgICAgIG1fY2FjaGUucG9zaXRpb24gPSAwOworICAgICAg
ICBpZiAoIW1fY2FjaGUuY3VycmVudCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAg
ICBFbGVtZW50KiBlID0gbV9jYWNoZS5jdXJyZW50OworICAgIGZvciAodW5zaWduZWQgcG9zID0g
bV9jYWNoZS5wb3NpdGlvbjsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCisgICAgICAgIGUgPSBp
dGVtQWZ0ZXIoZSk7CisgICAgbV9jYWNoZS5jdXJyZW50ID0gZTsKKyAgICBtX2NhY2hlLnBvc2l0
aW9uID0gaW5kZXg7CisgICAgcmV0dXJuIG1fY2FjaGUuY3VycmVudDsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIG5hbWVTaG91bGRCZVZpc2libGVJbkRvY3VtZW50QWxsKEhUTUxFbGVtZW50KiBl
bGVtZW50KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAkocmV2aXNpb24g
MTIxMTkwKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCwxOSArNDQsMjUgQEAgcHVibGljOgogICAgIHZvaWQgcmVmKCkgeyBtX2Jh
c2UtPnJlZigpOyB9CiAgICAgdm9pZCBkZXJlZigpIHsgbV9iYXNlLT5kZXJlZigpOyB9CiAKKyAg
ICAvLyBET00gQVBJCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0KICAgICB2aXJ0dWFs
IE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZSogbmV4
dEl0ZW0oKSBjb25zdDsKLQogICAgIHZpcnR1YWwgTm9kZSogbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gdGFncyhjb25z
dCBTdHJpbmcmKTsKIAotICAgIE5vZGUqIGZpcnN0SXRlbSgpIGNvbnN0OwotCisgICAgLy8gTm9u
LURPTSBBUEkKICAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgIHZvaWQgbmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYpIGNvbnN0OwotCi0gICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4g
dGFncyhjb25zdCBTdHJpbmcmKTsKKyAgICBib29sIGhhc0FueUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCkgfHwgbV9jYWNoZS5jdXJyZW50IHx8IGl0
ZW0oMCk7CisgICAgfQorICAgIGJvb2wgaGFzRXhhY3RseU9uZUl0ZW0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKKyAgICAgICAgcmV0dXJuIChtX2Nh
Y2hlLmhhc0xlbmd0aCAmJiBtX2NhY2hlLmxlbmd0aCA9PSAxKSB8fCAobV9jYWNoZS5jdXJyZW50
ICYmICFpdGVtQWZ0ZXIobV9jYWNoZS5jdXJyZW50KSkgfHwgKGl0ZW0oMCkgJiYgIWl0ZW0oMSkp
OworICAgIH0KIAogICAgIE5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAg
ICBDb2xsZWN0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Q29sbGVj
dGlvblR5cGU+KG1fdHlwZSk7IH0KQEAgLTk4LDcgKzEwNCw2IEBAIHByb3RlY3RlZDoKICAgICB9
IG1fY2FjaGU7CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgc2hvdWxkSW5jbHVkZUNoaWxk
cmVuKENvbGxlY3Rpb25UeXBlKTsKICAgICBib29sIGNoZWNrRm9yTmFtZU1hdGNoKEVsZW1lbnQq
LCBib29sIGNoZWNrTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWFwRWxlbWVudC5jcHAJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw4ICs4Miw4
IEBAIGJvb2wgSFRNTE1hcEVsZW1lbnQ6Om1hcE1vdXNlRXZlbnQoTGF5b3UKIAogSFRNTEltYWdl
RWxlbWVudCogSFRNTE1hcEVsZW1lbnQ6OmltYWdlRWxlbWVudCgpCiB7Ci0gICAgSFRNTENvbGxl
Y3Rpb24qIGNvbGwgPSBkb2N1bWVudCgpLT5pbWFnZXMoKTsKLSAgICBmb3IgKE5vZGUqIGN1cnIg
PSBjb2xsLT5maXJzdEl0ZW0oKTsgY3VycjsgY3VyciA9IGNvbGwtPm5leHRJdGVtKCkpIHsKKyAg
ICBIVE1MQ29sbGVjdGlvbiogaW1hZ2VzID0gZG9jdW1lbnQoKS0+aW1hZ2VzKCk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgTm9kZSogY3VyciA9IGltYWdlcy0+aXRlbShpKTsgaSsrKSB7CiAg
ICAgICAgIGlmICghY3Vyci0+aGFzVGFnTmFtZShpbWdUYWcpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIApJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MTIyOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjMgQEAKKzIwMTItMDYtMjUgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgR2V0IHJpZCBvZiBmaXJzdEl0ZW0gYW5kIG5leHRJdGVtIGZyb20g
SFRNTENvbGxlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTg5OTIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmUtaW1wbGVtZW50IFdlYk5vZGVDb2xsZWN0aW9uOjpmaXJzdEl0ZW0oKSBhbmQgV2Vi
Tm9kZUNvbGxlY3Rpb246Om5leHRJdGVtKCkgaW4gV2ViS2l0IGNvZGUKKyAgICAgICAgYmVjYXVz
ZSB3ZSBnb3QgcmlkIG9mIGl0IGZyb20gV2ViQ29yZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAg
ICBJIGhvcGUgd2hvZXZlciBleHBvc2VkIHRoZXNlIG1ldGhvZHMgdG8gQ2hyb21pdW0gZGlkbid0
IGtub3cgd2hhdCBoZS9zaGUgd2FzIGRvaW5nLgorICAgICAgICBPdGhlcndpc2UgaXQncyBhIHJl
YWxseSBzYWQgc3RvcnkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViTm9kZUNvbGxlY3Rpb24uaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViTm9kZUNvbGxlY3Rpb246OldlYk5vZGVDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYk5vZGVDb2xsZWN0aW9uKToKKyAgICAgICAgKiBzcmMvV2ViTm9kZUNvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6bmV4dEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJOb2RlQ29sbGVjdGlvbjo6Zmlyc3RJdGVtKToKKwogMjAx
Mi0wNi0yNSAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtj
aHJvbWl1bV0gQWRkIFdlYlBsdWdpblNjcm9sbGJhciBhbmQgV2ViUGx1Z2luU2Nyb2xsYmFyQ2xp
ZW50IHN0dWIgaW1wbGVtZW50YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJOb2RlQ29sbGVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMTE5MCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk5vZGVDb2xsZWN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgV2ViTm9kZUNvbGxlY3Rpb24gewogcHVibGlj
OgogICAgIH5XZWJOb2RlQ29sbGVjdGlvbigpIHsgcmVzZXQoKTsgfQogCi0gICAgV2ViTm9kZUNv
bGxlY3Rpb24oKSA6IG1fcHJpdmF0ZSgwKSB7IH0KKyAgICBXZWJOb2RlQ29sbGVjdGlvbigpIDog
bV9wcml2YXRlKDApLCBtX2N1cnJlbnQoMCkgeyB9CiAgICAgV2ViTm9kZUNvbGxlY3Rpb24oY29u
c3QgV2ViTm9kZUNvbGxlY3Rpb24mIG4pIDogbV9wcml2YXRlKDApIHsgYXNzaWduKG4pOyB9CiAg
ICAgV2ViTm9kZUNvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBXZWJOb2RlQ29sbGVjdGlvbiYg
bikKICAgICB7CkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBh
c3NpZ24oV2ViQ29yZTo6SFRNTENvbGxlY3Rpb24qKTsKICAgICBXZWJDb3JlOjpIVE1MQ29sbGVj
dGlvbiogbV9wcml2YXRlOworICAgIG11dGFibGUgdW5zaWduZWQgbV9jdXJyZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJOb2RlQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTm9kZUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjExOTApCisrKyBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJOb2RlQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDEyICs3NCwxNiBAQCB1bnNpZ25lZCBXZWJOb2RlQ29sbGVjdGlvbjo6bGVuZ3RoKCkg
Y29uCiAKIFdlYk5vZGUgV2ViTm9kZUNvbGxlY3Rpb246Om5leHRJdGVtKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gV2ViTm9kZShtX3ByaXZhdGUtPm5leHRJdGVtKCkpOworICAgIFdlYk5vZGUqIG5v
ZGUgPSBXZWJOb2RlKG1fcHJpdmF0ZS0+aXRlbShtX2N1cnJlbnQpKTsKKyAgICBpZiAobm9kZSkK
KyAgICAgICAgbV9jdXJyZW50Kys7CisgICAgcmV0dXJuIG5vZGU7CiB9CiAKIFdlYk5vZGUgV2Vi
Tm9kZUNvbGxlY3Rpb246OmZpcnN0SXRlbSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYk5vZGUo
bV9wcml2YXRlLT5maXJzdEl0ZW0oKSk7CisgICAgbV9jdXJyZW50ID0gMDsKKyAgICByZXR1cm4g
bmV4dEl0ZW0oKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="157482"
          type_id="1"
          status="+"
          setter="kling"
    />
    <flag name="commit-queue"
          id="157489"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>