<?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>93203</bug_id>
          
          <creation_ts>2012-08-05 11:14:17 -0700</creation_ts>
          <short_desc>Don&apos;t reuse cached stylesheet with failed or canceled resource loads</short_desc>
          <delta_ts>2012-08-05 14:04:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>jonlee</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>687611</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 11:14:17 -0700</bug_when>
    <thetext>1) Go to apple.com
2) Reload and repeatedly

Eventually you can get into state where some images don&apos;t load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687613</commentid>
    <comment_count>1</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 11:20:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/11559765&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687615</commentid>
    <comment_count>2</comment_count>
      <attachid>156566</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 11:24:32 -0700</bug_when>
    <thetext>Created attachment 156566
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687619</commentid>
    <comment_count>3</comment_count>
      <attachid>156566</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-05 11:41:37 -0700</bug_when>
    <thetext>Comment on attachment 156566
patch

Attachment 156566 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13436501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687620</commentid>
    <comment_count>4</comment_count>
      <attachid>156566</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-05 11:43:08 -0700</bug_when>
    <thetext>Comment on attachment 156566
patch

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

&gt; Source/WebCore/css/CSSImageValue.cpp:105
&gt; +bool CSSImageValue::hasFailedOrCanceledSubresources() const

Do generated images need their own override too? (I&apos;m thinking specifically for crossfade)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687621</commentid>
    <comment_count>5</comment_count>
      <attachid>156567</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 11:46:47 -0700</bug_when>
    <thetext>Created attachment 156567
better patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687622</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 11:50:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Do generated images need their own override too? (I&apos;m thinking specifically for crossfade)

I don&apos;t see code there that references a CachedResource. Or maybe I&apos;m not looking the right place?

But it is definitely good to check this for completeness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687624</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-08-05 11:51:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #4)
&gt; &gt; Do generated images need their own override too? (I&apos;m thinking specifically for crossfade)
&gt; 
&gt; I don&apos;t see code there that references a CachedResource. Or maybe I&apos;m not looking the right place?
&gt; 
&gt; But it is definitely good to check this for completeness.

CSSCrossfadeValue (a CSSImageGeneratorValue, not a CSSImageValue) has two CachedResourceHandles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687625</commentid>
    <comment_count>8</comment_count>
      <attachid>156567</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-05 12:09:28 -0700</bug_when>
    <thetext>Comment on attachment 156567
better patch

Attachment 156567 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13439404</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687626</commentid>
    <comment_count>9</comment_count>
      <attachid>156567</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-05 12:10:42 -0700</bug_when>
    <thetext>Comment on attachment 156567
better patch

Attachment 156567 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13442259</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687628</commentid>
    <comment_count>10</comment_count>
      <attachid>156567</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-05 12:13:40 -0700</bug_when>
    <thetext>Comment on attachment 156567
better patch

Attachment 156567 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13443180</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687639</commentid>
    <comment_count>11</comment_count>
      <attachid>156567</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-05 13:25:20 -0700</bug_when>
    <thetext>Comment on attachment 156567
better patch

Attachment 156567 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13447051</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687640</commentid>
    <comment_count>12</comment_count>
      <attachid>156568</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 13:30:28 -0700</bug_when>
    <thetext>Created attachment 156568
update patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687641</commentid>
    <comment_count>13</comment_count>
      <attachid>156568</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-08-05 13:45:52 -0700</bug_when>
    <thetext>Comment on attachment 156568
update patch

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

&gt; Source/WebCore/css/CSSValue.cpp:140
&gt; +    if (isValueList())
&gt; +        return static_cast&lt;const CSSValueList*&gt;(this)-&gt;hasFailedOrCanceledSubresources();
&gt; +    if (classType() == FontFaceSrcClass)
&gt; +        return static_cast&lt;const CSSFontFaceSrcValue*&gt;(this)-&gt;hasFailedOrCanceledSubresources();
&gt; +    if (classType() == ImageClass)
&gt; +        return static_cast&lt;const CSSImageValue*&gt;(this)-&gt;hasFailedOrCanceledSubresources();
&gt; +    if (classType() == CrossfadeClass)
&gt; +        return static_cast&lt;const CSSCrossfadeValue*&gt;(this)-&gt;hasFailedOrCanceledSubresources();
&gt; +#if ENABLE(CSS_IMAGE_SET)
&gt; +    if (classType() == ImageSetClass)
&gt; +        return static_cast&lt;const CSSImageSetValue*&gt;(this)-&gt;hasFailedOrCanceledSubresources();
&gt; +#endif

This would be one line if we used virtual functions :(

&gt; Source/WebCore/css/StylePropertySet.cpp:901
&gt; +        if (propertyAt(i).value()-&gt;hasFailedOrCanceledSubresources())

Is this guaranteed to be non-null?

&gt; Source/WebCore/css/StyleSheetContents.cpp:433
&gt; +        case StyleRuleBase::Style:
&gt; +            if (static_cast&lt;const StyleRule*&gt;(rule)-&gt;properties()-&gt;hasFailedOrCanceledSubresources())
&gt; +                return true;
&gt; +            break;
&gt; +        case StyleRuleBase::FontFace:
&gt; +            if (static_cast&lt;const StyleRuleFontFace*&gt;(rule)-&gt;properties()-&gt;hasFailedOrCanceledSubresources())
&gt; +                return true;
&gt; +            break;
&gt; +        case StyleRuleBase::Media:
&gt; +            if (childRulesHaveFailedOrCanceledSubresources(static_cast&lt;const StyleRuleMedia*&gt;(rule)-&gt;childRules()))
&gt; +                return true;
&gt; +            break;
&gt; +        case StyleRuleBase::Region:
&gt; +            if (childRulesHaveFailedOrCanceledSubresources(static_cast&lt;const StyleRuleRegion*&gt;(rule)-&gt;childRules()))
&gt; +                return true;
&gt; +            break;

We need casting functions like we have for renderers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687644</commentid>
    <comment_count>14</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-08-05 14:04:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124720</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156566</attachid>
            <date>2012-08-05 11:24:32 -0700</date>
            <delta_ts>2012-08-05 11:46:47 -0700</delta_ts>
            <desc>patch</desc>
            <filename>stylesheet-restore-resource.patch</filename>
            <type>text/plain</type>
            <size>13734</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDcxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCByZXVzZSBjYWNoZWQg
c3R5bGVzaGVldCB3aXRoIGZhaWxlZCBvciBjYW5jZWxlZCByZXNvdXJjZSBsb2FkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMyMDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxKSBHbyB0byBhcHBsZS5j
b20KKyAgICAgICAgMikgUmVsb2FkIGFuZCByZXBlYXRlZGx5CisKKyAgICAgICAgRXZlbnR1YWxs
eSB5b3UgY2FuIGdldCBpbnRvIHN0YXRlIHdoZXJlIHNvbWUgaW1hZ2VzIGRvbid0IGxvYWQuCisg
ICAgICAgIAorICAgICAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IGEgY2FjaGVkIHN0eWxlc2hlZXQg
bWF5IGVuZCB1cCBwb2ludGluZyB0byBpbWFnZSByZXNvdXJjZXMgdGhhdCBoYXZlIGJlZW4gY2Fu
Y2VsZWQgKGJ5IHRoZSByZWxvYWQpLgorICAgICAgICBJZiB0aGlzIGhhcHBlbnMgdGhleSBzdGF5
IGluIHRoZSBjYW5jZWxlZCBzdGF0ZSBldmVuIHdoZW4gdGhlIHN0eWxlc2hlZXQgaXMgYXBwbGll
ZCB0byBhIG5ldyBkb2N1bWVudC4KKyAgICAgICAgCisgICAgICAgIEZpeCBieSBjaGVja2luZyBp
ZiBhbGwgbG9hZHMgYXJlIGNvbXBsZXRlIChvciBwZW5kaW5nKSB3aGVuIHJlc3RvcmluZyBhIGNh
Y2hlZCBzdHlsZXNoZWV0LiBUaGUgc2hlZXQgaXMgb25seSB1c2VkCisgICAgICAgIGlmIHRoZXJl
IGFyZSBubyBmYWlsZWQgb3IgY2FuY2VsZWQgbG9hZHMuIFRoZXJlIGFyZSBwb3RlbnRpYWwgbW9y
ZSBzb3BoaXN0aWNhdGVkIGZpeGVzIGJ1dCB0aGlzIGlzIHNpbXBsZSBhbmQgc2FmZS4KKyAgICAg
ICAgV2Fsa2luZyB0aGUgc2hlZXQgaXMgZmFzdCBhbmQgc2luY2UgaXQgaXMgb25seSBkb25lIG9u
IGNhY2hlIHJlc3RvcmUgdGhlIGNvc3QgaXMgbWluaW1hbC4KKworICAgICAgICBObyByZWdyZXNz
aW9uIHRlc3QgeWV0IHRob3VnaCBvbmUgbWlnaHQgYmUgcG9zc2libGUuCisKKyAgICAgICAgKiBj
c3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNyY1ZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmg6CisgICAgICAgIChD
U1NGb250RmFjZVNyY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFn
ZVNldFZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVNldFZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjpoYXNG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWU6Omhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChDU1NWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6Omhhc0ZhaWxl
ZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
Y3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAoQ1NTVmFsdWVMaXN0KToKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6CisgICAgICAgIChTdHlsZVByb3Bl
cnR5U2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb250ZW50czo6
aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgICogY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5oOgorICAgICAgICAoU3R5bGVTaGVldENvbnRlbnRzKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRDU1NTdHlsZVNoZWV0OjpyZXN0b3JlUGFyc2VkU3R5bGVTaGVldCk6CisKIDIwMTItMDgt
MDUgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0g
UmVtb3ZlIFY4UHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uV2l0aFY4KCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAJKHJldmlzaW9uIDEyNDQ1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzksNiArNzksMTMgQEAgdm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjphZGRTdWJyZXNv
dXJjZQogICAgICAgICBhZGRTdWJyZXNvdXJjZVVSTCh1cmxzLCBzdHlsZVNoZWV0LT5jb21wbGV0
ZVVSTChtX3Jlc291cmNlKSk7CiB9CiAKK2Jvb2wgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6aGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Cit7CisgICAgaWYgKCFtX2NhY2hlZEZv
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jYWNoZWRGb250LT5zdGF0
dXMoKSA9PSBDYWNoZWRSZXNvdXJjZTo6Q2FuY2VsZWQgfHwgbV9jYWNoZWRGb250LT5zdGF0dXMo
KSA9PSBDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yOworfQorCiBDYWNoZWRGb250KiBDU1NGb250
RmFjZVNyY1ZhbHVlOjpjYWNoZWRGb250KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAo
IW1fY2FjaGVkRm9udCkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5oCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZh
Y2VTcmNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2Nyw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mLCBjb25z
dCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OworCiAgICAgQ2FjaGVkRm9udCogY2FjaGVkRm9udChE
b2N1bWVudCopOwogCiBwcml2YXRlOgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
U2V0VmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNl
dFZhbHVlLmNwcAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDE2IEBAIFN0cmlu
ZyBDU1NJbWFnZVNldFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkKICAgICByZXR1cm4gIi13ZWJraXQt
aW1hZ2Utc2V0KCIgKyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNzc1RleHQoKSArICIpIjsKIH0KIAor
Ym9vbCBDU1NJbWFnZVNldFZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1faW1hZ2VTZXQgfHwgIW1faW1hZ2VTZXQtPmlzQ2FjaGVkSW1h
Z2VTZXQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIENhY2hlZFJlc291cmNlKiBjYWNo
ZWRSZXNvdXJjZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2VTZXQqPihtX2ltYWdlU2V0
LmdldCgpKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3VyY2UtPnN0YXR1cygpID09IENh
Y2hlZFJlc291cmNlOjpDYW5jZWxlZCB8fCBjYWNoZWRSZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2Fj
aGVkUmVzb3VyY2U6OkxvYWRFcnJvcjsKK30KKwogQ1NTSW1hZ2VTZXRWYWx1ZTo6Q1NTSW1hZ2VT
ZXRWYWx1ZShjb25zdCBDU1NJbWFnZVNldFZhbHVlJiBjbG9uZUZyb20pCiAgICAgOiBDU1NWYWx1
ZUxpc3QoY2xvbmVGcm9tKQogICAgICwgbV9hY2Nlc3NlZEJlc3RGaXRJbWFnZShmYWxzZSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkocmV2aXNpb24gMTI0NDU4KQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNiArNjAsOCBAQCBwdWJsaWM6CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yOwogICAg
IH07CiAKKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsK
KwogICAgIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShy
ZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsMTYgQEAgdm9pZCBDU1NJbWFnZVZhbHVlOjpj
bGVhckNhY2hlZEltYWdlKCkKICAgICBtX2FjY2Vzc2VkSW1hZ2UgPSBmYWxzZTsKIH0KIAorYm9v
bCBDU1NJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1faW1hZ2UgfHwgIW1faW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHN0
YXRpY19jYXN0PFN0eWxlQ2FjaGVkSW1hZ2UqPihtX2ltYWdlLmdldCgpKS0+Y2FjaGVkSW1hZ2Uo
KTsKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBy
ZXR1cm4gY2FjaGVkUmVzb3VyY2UtPnN0YXR1cygpID09IENhY2hlZFJlc291cmNlOjpDYW5jZWxl
ZCB8fCBjYWNoZWRSZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkxvYWRFcnJv
cjsKK30KKwogU3RyaW5nIENTU0ltYWdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewog
ICAgIHJldHVybiAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdXJsKSArICIpIjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkocmV2aXNpb24gMTI0NDU4KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CiAKKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBj
b25zdDsKKwogcHJvdGVjdGVkOgogICAgIENTU0ltYWdlVmFsdWUoQ2xhc3NUeXBlLCBjb25zdCBT
dHJpbmcmIHVybCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAkocmV2aXNpb24gMTI0
NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTIxLDYgKzEyMSwyMyBAQCB2b2lkIENTU1ZhbHVlOjphZGRTdWJyZXNvdXJjZVN0eWxlVVJM
cyhMCiAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU1JlZmxlY3RWYWx1ZSo+KHRoaXMpLT5h
ZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAorYm9vbCBDU1NW
YWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Cit7CisgICAgLy8g
VGhpcyBzaG91bGQgZ2V0IGNhbGxlZCBmb3IgaW50ZXJuYWwgaW5zdGFuY2VzIG9ubHkuCisgICAg
QVNTRVJUKCFpc0NTU09NU2FmZSgpKTsKKworICAgIGlmIChpc1ZhbHVlTGlzdCgpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhpcyktPmhhc0ZhaWxl
ZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKTsKKyAgICBpZiAoY2xhc3NUeXBlKCkgPT0gRm9udEZh
Y2VTcmNDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0ZvbnRGYWNl
U3JjVmFsdWUqPih0aGlzKS0+aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpOworICAg
IGlmIChjbGFzc1R5cGUoKSA9PSBJbWFnZUNsYXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgQ1NTSW1hZ2VWYWx1ZSo+KHRoaXMpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKCk7CisgICAgaWYgKGNsYXNzVHlwZSgpID09IEltYWdlU2V0Q2xhc3MpCisgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbWFnZVNldFZhbHVlKj4odGhpcyktPmhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwog
U3RyaW5nIENTU1ZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9pc1RleHRDbG9u
ZSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCisgICAgYm9vbCBo
YXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKIAog
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgQ2xhc3NUeXBlQml0cyA9IDU7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsMTUg
QEAgdm9pZCBDU1NWYWx1ZUxpc3Q6OmFkZFN1YnJlc291cmNlU3R5bGVVUgogICAgICAgICBtX3Zh
bHVlc1tpXS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5bGVTaGVldCk7CiB9CiAK
K2Jvb2wgQ1NTVmFsdWVMaXN0OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29u
c3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fdmFsdWVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX3ZhbHVlc1tpXS0+aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNl
cygpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsK
K30KKwogQ1NTVmFsdWVMaXN0OjpDU1NWYWx1ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBjbG9u
ZUZyb20pCiAgICAgOiBDU1NWYWx1ZShjbG9uZUZyb20uY2xhc3NUeXBlKCksIC8qIGlzQ1NTT01T
YWZlICovIHRydWUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCShyZXZpc2lv
biAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2b2lkIGFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENv
bnRlbnRzKikgY29uc3Q7CisKKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJj
ZXMoKSBjb25zdDsKICAgICAKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gY2xvbmVGb3JD
U1NPTSgpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNl
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5NCw2ICs4OTQsMTYgQEAgdm9pZCBTdHlsZVBy
b3BlcnR5U2V0OjphZGRTdWJyZXNvdXJjZVN0eQogICAgICAgICBwcm9wZXJ0eUF0KGkpLnZhbHVl
KCktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0K
IAorYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KCkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzaXplID0gcHJvcGVydHlDb3VudCgpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKHByb3BlcnR5
QXQoaSkudmFsdWUoKS0+aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gVGhp
cyBpcyB0aGUgbGlzdCBvZiBwcm9wZXJ0aWVzIHdlIHdhbnQgdG8gY29weSBpbiB0aGUgY29weUJs
b2NrUHJvcGVydGllcygpIGZ1bmN0aW9uLgogLy8gSXQgaXMgdGhlIGxpc3Qgb2YgQ1NTIHByb3Bl
cnRpZXMgdGhhdCBhcHBseSBzcGVjaWFsbHkgdG8gYmxvY2stbGV2ZWwgZWxlbWVudHMuCiBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBibG9ja1Byb3BlcnRpZXNbXSA9IHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYg
KzExMCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNNdXRhYmxlKCkgY29uc3QgeyByZXR1cm4g
bV9pc011dGFibGU7IH0KIAorICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNl
cygpIGNvbnN0OworCiAgICAgc3RhdGljIHVuc2lnbmVkIGF2ZXJhZ2VTaXplSW5CeXRlcygpOwog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAkocmV2aXNpb24g
MTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxMCw2ICs0MTAsNDMgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6
OmFkZFN1YnJlc291cmNlUwogICAgIH0KIH0KIAorc3RhdGljIGJvb2wgY2hpbGRSdWxlc0hhdmVG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVSdWxl
QmFzZT4gPiYgcnVsZXMpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHJ1bGVzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFN0eWxlUnVsZUJhc2UqIHJ1bGUgPSBydWxlc1tp
XS5nZXQoKTsKKyAgICAgICAgc3dpdGNoIChydWxlLT50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBT
dHlsZVJ1bGVCYXNlOjpTdHlsZToKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxjb25zdCBT
dHlsZVJ1bGUqPihydWxlKS0+cHJvcGVydGllcygpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpGb250RmFjZToKKyAgICAgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxjb25zdCBTdHlsZVJ1bGVGb250RmFjZSo+KHJ1bGUpLT5wcm9wZXJ0aWVz
KCktPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlUnVsZUJh
c2U6Ok1lZGlhOgorICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OlJlZ2lvbjoKKyAgICAgICAg
ICAgIGlmIChjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoc3RhdGlj
X2Nhc3Q8Y29uc3QgU3R5bGVSdWxlQmxvY2sqPihydWxlKS0+Y2hpbGRSdWxlcygpKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFN0eWxlUnVsZUJhc2U6OkltcG9ydDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OlBhZ2U6CisgICAgICAgIGNhc2UgU3R5bGVS
dWxlQmFzZTo6S2V5ZnJhbWVzOgorICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OlVua25vd246
CisgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6Q2hhcnNldDoKKyAgICAgICAgY2FzZSBTdHls
ZVJ1bGVCYXNlOjpLZXlmcmFtZToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTdHlsZVNoZWV0Q29udGVudHM6Omhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAoreworICAgIEFTU0VSVChpc0NhY2hl
YWJsZSgpKTsKKyAgICByZXR1cm4gY2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKG1fY2hpbGRSdWxlcyk7Cit9CisKIFN0eWxlU2hlZXRDb250ZW50cyogU3R5bGVTaGVl
dENvbnRlbnRzOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vd25l
clJ1bGUgPyBtX293bmVyUnVsZS0+cGFyZW50U3R5bGVTaGVldCgpIDogMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
NzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBjaGFyc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9wYXJzZXJDb250ZXh0LmNoYXJzZXQ7IH0KIAogICAgIGJvb2wgbG9hZENvbXBs
ZXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZENvbXBsZXRlZDsgfQorICAgIGJvb2wgaGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCiAgICAgS1VSTCBjb21wbGV0ZVVS
TChjb25zdCBTdHJpbmcmIHVybCkgY29uc3Q7CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxl
VVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMTI0NDU4KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDExIEBAIFBhc3NSZWZQdHI8U3R5bGVTaGVldENv
bnRlbnRzPiBDYWNoZWRDU1MKIHsKICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldENhY2hlKQog
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkgeworICAgICAgICBtX2RlY29kZWREYXRhRGVs
ZXRpb25UaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKwog
ICAgIEFTU0VSVChtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZS0+aXNDYWNoZWFibGUoKSk7CiAgICAg
QVNTRVJUKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5pc0luTWVtb3J5Q2FjaGUoKSk7CiAK
</data>
<flag name="commit-queue"
          id="166283"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156567</attachid>
            <date>2012-08-05 11:46:47 -0700</date>
            <delta_ts>2012-08-05 13:30:28 -0700</delta_ts>
            <desc>better patch</desc>
            <filename>stylesheet-restore-resource-2.patch</filename>
            <type>text/plain</type>
            <size>13781</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDcxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA4LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCByZXVzZSBjYWNoZWQg
c3R5bGVzaGVldCB3aXRoIGZhaWxlZCBvciBjYW5jZWxlZCByZXNvdXJjZSBsb2FkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMyMDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxKSBHbyB0byBhcHBsZS5j
b20KKyAgICAgICAgMikgUmVsb2FkIHJlcGVhdGVkbHkKKworICAgICAgICBFdmVudHVhbGx5IHlv
dSBjYW4gZ2V0IGludG8gc3RhdGUgd2hlcmUgc29tZSBpbWFnZXMgZG9uJ3QgbG9hZC4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgYSBjYWNoZWQgc3R5bGVzaGVldCBtYXkg
ZW5kIHVwIHBvaW50aW5nIHRvIGltYWdlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBjYW5jZWxl
ZCAoYnkgdGhlIHJlbG9hZCkuCisgICAgICAgIElmIHRoaXMgaGFwcGVucyB0aGV5IHN0YXkgaW4g
dGhlIGNhbmNlbGVkIHN0YXRlIGV2ZW4gd2hlbiB0aGUgc3R5bGVzaGVldCBpcyBhcHBsaWVkIHRv
IGEgbmV3IGRvY3VtZW50LgorICAgICAgICAKKyAgICAgICAgRml4IGJ5IGNoZWNraW5nIGlmIGFs
bCBsb2FkcyBhcmUgY29tcGxldGUgKG9yIHBlbmRpbmcpIHdoZW4gcmVzdG9yaW5nIGEgY2FjaGVk
IHN0eWxlc2hlZXQuIFRoZSBzaGVldCBpcyBvbmx5IHVzZWQKKyAgICAgICAgaWYgdGhlcmUgYXJl
IG5vIGZhaWxlZCBvciBjYW5jZWxlZCBsb2Fkcy4gVGhlcmUgYXJlIHBvdGVudGlhbCBtb3JlIHNv
cGhpc3RpY2F0ZWQgZml4ZXMgYnV0IHRoaXMgaXMgc2ltcGxlIGFuZCBzYWZlLgorICAgICAgICBX
YWxraW5nIHRoZSBzaGVldCBpcyBmYXN0IGFuZCBzaW5jZSBpdCBpcyBvbmx5IGRvbmUgb24gY2Fj
aGUgcmVzdG9yZSB0aGUgY29zdCBpcyBtaW5pbWFsLgorCisgICAgICAgIE5vIHJlZ3Jlc3Npb24g
dGVzdCB5ZXQgdGhvdWdoIG9uZSBtaWdodCBiZSBwb3NzaWJsZS4KKworICAgICAgICAqIGNzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU3Jj
VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaDoKKyAgICAgICAgKENTU0Zv
bnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJy
ZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0
VmFsdWUuaDoKKyAgICAgICAgKENTU0ltYWdlU2V0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJ
bWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6Omhhc0ZhaWxl
ZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
Y3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKENTU0ltYWdlVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZTo6aGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBj
c3MvQ1NTVmFsdWUuaDoKKyAgICAgICAgKENTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFs
dWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlTGlzdDo6aGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVmFsdWVMaXN0Lmg6CisgICAgICAgIChDU1NWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9T
dHlsZVByb3BlcnR5U2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6
Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuaDoKKyAgICAgICAgKFN0eWxlUHJvcGVydHlT
ZXQpOgorICAgICAgICAqIGNzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbnRlbnRzOjpoYXNG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENv
bnRlbnRzLmg6CisgICAgICAgIChTdHlsZVNoZWV0Q29udGVudHMpOgorICAgICAgICAqIGxvYWRl
ci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZENTU1N0eWxlU2hlZXQ6OnJlc3RvcmVQYXJzZWRTdHlsZVNoZWV0KToKKwogMjAxMi0wOC0wNSAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBSZW1v
dmUgVjhQcm94eTo6cmVnaXN0ZXJFeHRlbnNpb25XaXRoVjgoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAkocmV2aXNpb24gMTI0NDU4KQorKysgU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03OSw2ICs3OSwxMyBAQCB2b2lkIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmFkZFN1YnJlc291cmNl
CiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQtPmNvbXBsZXRlVVJM
KG1fcmVzb3VyY2UpKTsKIH0KIAorYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVlOjpoYXNGYWlsZWRP
ckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fY2FjaGVkRm9udCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NhY2hlZEZvbnQtPnN0YXR1cygp
ID09IENhY2hlZFJlc291cmNlOjpDYW5jZWxlZCB8fCBtX2NhY2hlZEZvbnQtPnN0YXR1cygpID09
IENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3I7Cit9CisKIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghbV9j
YWNoZWRGb250KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0
eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCisgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CisKICAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3Vt
ZW50Kik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMTYgQEAgU3RyaW5nIENT
U0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNzc1RleHQoKQogICAgIHJldHVybiAiLXdlYmtpdC1pbWFn
ZS1zZXQoIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitib29s
IENTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25z
dAoreworICAgIGlmICghbV9pbWFnZVNldCB8fCAhbV9pbWFnZVNldC0+aXNDYWNoZWRJbWFnZVNl
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlID0gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZVNldCo+KG1faW1hZ2VTZXQuZ2V0
KCkpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2FjaGVk
UmVzb3VyY2U6OkNhbmNlbGVkIHx8IGNhY2hlZFJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRS
ZXNvdXJjZTo6TG9hZEVycm9yOworfQorCiBDU1NJbWFnZVNldFZhbHVlOjpDU1NJbWFnZVNldFZh
bHVlKGNvbnN0IENTU0ltYWdlU2V0VmFsdWUmIGNsb25lRnJvbSkKICAgICA6IENTU1ZhbHVlTGlz
dChjbG9uZUZyb20pCiAgICAgLCBtX2FjY2Vzc2VkQmVzdEZpdEltYWdlKGZhbHNlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3I7CiAgICAgfTsK
IAorICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OworCiAg
ICAgUGFzc1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAK
IHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHJldmlz
aW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiwxNiBAQCB2b2lkIENTU0ltYWdlVmFsdWU6OmNsZWFy
Q2FjaGVkSW1hZ2UoKQogICAgIG1fYWNjZXNzZWRJbWFnZSA9IGZhbHNlOwogfQogCitib29sIENT
U0ltYWdlVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAorewor
ICAgIGlmICghbV9pbWFnZSB8fCAhbV9pbWFnZS0+aXNDYWNoZWRJbWFnZSgpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gc3RhdGlj
X2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZSo+KG1faW1hZ2UuZ2V0KCkpLT5jYWNoZWRJbWFnZSgpOwor
ICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVy
biBjYWNoZWRSZXNvdXJjZS0+c3RhdHVzKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkNhbmNlbGVkIHx8
IGNhY2hlZFJlc291cmNlLT5zdGF0dXMoKSA9PSBDYWNoZWRSZXNvdXJjZTo6TG9hZEVycm9yOwor
fQorCiBTdHJpbmcgQ1NTSW1hZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuICJ1cmwoIiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV91cmwpICsgIikiOwpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw4
IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBj
b25zdDsKIAorICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0
OworCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VWYWx1ZShDbGFzc1R5cGUsIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCShyZXZpc2lvbiAxMjQ0NTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjEsNiArMTIxLDIzIEBAIHZvaWQgQ1NTVmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKEwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmVmbGVjdFZhbHVlKj4odGhpcyktPmFkZFN1
YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwogfQogCitib29sIENTU1ZhbHVl
OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICAvLyBUaGlz
IHNob3VsZCBnZXQgY2FsbGVkIGZvciBpbnRlcm5hbCBpbnN0YW5jZXMgb25seS4KKyAgICBBU1NF
UlQoIWlzQ1NTT01TYWZlKCkpOworCisgICAgaWYgKGlzVmFsdWVMaXN0KCkpCisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYWx1ZUxpc3QqPih0aGlzKS0+aGFzRmFpbGVkT3JD
YW5jZWxlZFN1YnJlc291cmNlcygpOworICAgIGlmIChjbGFzc1R5cGUoKSA9PSBGb250RmFjZVNy
Y0NsYXNzKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTRm9udEZhY2VTcmNW
YWx1ZSo+KHRoaXMpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCk7CisgICAgaWYg
KGNsYXNzVHlwZSgpID09IEltYWdlQ2xhc3MpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxj
b25zdCBDU1NJbWFnZVZhbHVlKj4odGhpcyktPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJj
ZXMoKTsKKyAgICBpZiAoY2xhc3NUeXBlKCkgPT0gSW1hZ2VTZXRDbGFzcykKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0ltYWdlU2V0VmFsdWUqPih0aGlzKS0+aGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJp
bmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAgIGlmIChtX2lzVGV4dENsb25lKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtV
Ukw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAKKyAgICBib29sIGhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogCiAgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBDbGFzc1R5cGVCaXRzID0gNTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuY3BwCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVmFsdWVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTczLDYgKzE3MywxNSBAQCB2
b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVzb3VyY2VTdHlsZVVSCiAgICAgICAgIG1fdmFsdWVz
W2ldLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAorYm9v
bCBDU1NWYWx1ZUxpc3Q6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAor
eworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhbHVlcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAobV92YWx1ZXNbaV0tPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIENTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xvbmVG
cm9tKQogICAgIDogQ1NTVmFsdWUoY2xvbmVGcm9tLmNsYXNzVHlwZSgpLCAvKiBpc0NTU09NU2Fm
ZSAqLyB0cnVlKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaAkocmV2aXNpb24g
MTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250
ZW50cyopIGNvbnN0OworCisgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KCkgY29uc3Q7CiAgICAgCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNsb25lRm9yQ1NT
T00oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTQsNiArODk0LDE2IEBAIHZvaWQgU3R5bGVQcm9w
ZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHkKICAgICAgICAgcHJvcGVydHlBdChpKS52YWx1ZSgp
LT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAK
K2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygp
IGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2l6ZSA9IHByb3BlcnR5Q291bnQoKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChwcm9wZXJ0eUF0
KGkpLnZhbHVlKCktPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMg
aXMgdGhlIGxpc3Qgb2YgcHJvcGVydGllcyB3ZSB3YW50IHRvIGNvcHkgaW4gdGhlIGNvcHlCbG9j
a1Byb3BlcnRpZXMoKSBmdW5jdGlvbi4KIC8vIEl0IGlzIHRoZSBsaXN0IG9mIENTUyBwcm9wZXJ0
aWVzIHRoYXQgYXBwbHkgc3BlY2lhbGx5IHRvIGJsb2NrLWxldmVsIGVsZW1lbnRzLgogc3RhdGlj
IGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9wZXJ0aWVzW10gPSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsx
MTAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzTXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNNdXRhYmxlOyB9CiAKKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMo
KSBjb25zdDsKKwogICAgIHN0YXRpYyB1bnNpZ25lZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKICAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAJKHJldmlzaW9uIDEy
NDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MTAsNiArNDEwLDQzIEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjph
ZGRTdWJyZXNvdXJjZVMKICAgICB9CiB9CiAKK3N0YXRpYyBib29sIGNoaWxkUnVsZXNIYXZlRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJh
c2U+ID4mIHJ1bGVzKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBjb25zdCBTdHlsZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0u
Z2V0KCk7CisgICAgICAgIHN3aXRjaCAocnVsZS0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgU3R5
bGVSdWxlQmFzZTo6U3R5bGU6CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5
bGVSdWxlKj4ocnVsZSktPnByb3BlcnRpZXMoKS0+aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291
cmNlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6Rm9udEZhY2U6CisgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlRm9udEZhY2UqPihydWxlKS0+cHJvcGVydGllcygp
LT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNl
OjpNZWRpYToKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpSZWdpb246CisgICAgICAgICAg
ICBpZiAoY2hpbGRSdWxlc0hhdmVGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKHN0YXRpY19j
YXN0PGNvbnN0IFN0eWxlUnVsZUJsb2NrKj4ocnVsZSktPmNoaWxkUnVsZXMoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
dHlsZVJ1bGVCYXNlOjpJbXBvcnQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpQYWdlOgorICAgICAgICBjYXNlIFN0eWxlUnVs
ZUJhc2U6OktleWZyYW1lczoKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpVbmtub3duOgor
ICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OkNoYXJzZXQ6CisgICAgICAgIGNhc2UgU3R5bGVS
dWxlQmFzZTo6S2V5ZnJhbWU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU3R5bGVTaGVldENvbnRlbnRzOjpoYXNGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNDYWNoZWFi
bGUoKSk7CisgICAgcmV0dXJuIGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291
cmNlcyhtX2NoaWxkUnVsZXMpOworfQorCiBTdHlsZVNoZWV0Q29udGVudHMqIFN0eWxlU2hlZXRD
b250ZW50czo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3duZXJS
dWxlID8gbV9vd25lclJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDYgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgY2hhcnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFyc2VyQ29udGV4dC5jaGFyc2V0OyB9CiAKICAgICBib29sIGxvYWRDb21wbGV0
ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRDb21wbGV0ZWQ7IH0KKyAgICBib29sIGhhc0ZhaWxl
ZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAogICAgIEtVUkwgY29tcGxldGVVUkwo
Y29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVS
THMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDEyNDQ1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxMiBAQCBQYXNzUmVmUHRyPFN0eWxlU2hlZXRDb250
ZW50cz4gQ2FjaGVkQ1NTCiB7CiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXRDYWNoZSkKICAg
ICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5oYXNGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpIHsKKyAgICAgICAgbV9wYXJzZWRTdHlsZVNoZWV0
Q2FjaGUtPnJlbW92ZWRGcm9tTWVtb3J5Q2FjaGUoKTsKKyAgICAgICAgbV9wYXJzZWRTdHlsZVNo
ZWV0Q2FjaGUuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgQVNTRVJU
KG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5pc0NhY2hlYWJsZSgpKTsKICAgICBBU1NFUlQobV9w
YXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmlzSW5NZW1vcnlDYWNoZSgpKTsKIAo=
</data>
<flag name="commit-queue"
          id="166285"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156568</attachid>
            <date>2012-08-05 13:30:28 -0700</date>
            <delta_ts>2012-08-05 13:45:52 -0700</delta_ts>
            <desc>update patch</desc>
            <filename>stylesheet-restore-resource-3.patch</filename>
            <type>text/plain</type>
            <size>16097</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDcxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcwIEBACisyMDEyLTA4LTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBEb24ndCByZXVzZSBjYWNoZWQg
c3R5bGVzaGVldCB3aXRoIGZhaWxlZCBvciBjYW5jZWxlZCByZXNvdXJjZSBsb2FkcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMyMDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAxKSBHbyB0byBhcHBsZS5j
b20KKyAgICAgICAgMikgUmVsb2FkIHJlcGVhdGVkbHkKKworICAgICAgICBFdmVudHVhbGx5IHlv
dSBjYW4gZ2V0IGludG8gc3RhdGUgd2hlcmUgc29tZSBpbWFnZXMgZG9uJ3QgbG9hZC4KKyAgICAg
ICAgCisgICAgICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgYSBjYWNoZWQgc3R5bGVzaGVldCBtYXkg
ZW5kIHVwIHBvaW50aW5nIHRvIGltYWdlIHJlc291cmNlcyB0aGF0IGhhdmUgYmVlbiBjYW5jZWxl
ZCAoYnkgdGhlIHJlbG9hZCkuCisgICAgICAgIElmIHRoaXMgaGFwcGVucyB0aGV5IHN0YXkgaW4g
dGhlIGNhbmNlbGVkIHN0YXRlIGV2ZW4gd2hlbiB0aGUgc3R5bGVzaGVldCBpcyBhcHBsaWVkIHRv
IGEgbmV3IGRvY3VtZW50LgorICAgICAgICAKKyAgICAgICAgRml4IGJ5IGNoZWNraW5nIGlmIGFs
bCBsb2FkcyBhcmUgY29tcGxldGUgKG9yIHBlbmRpbmcpIHdoZW4gcmVzdG9yaW5nIGEgY2FjaGVk
IHN0eWxlc2hlZXQuIFRoZSBzaGVldCBpcyBvbmx5IHVzZWQKKyAgICAgICAgaWYgdGhlcmUgYXJl
IG5vIGZhaWxlZCBvciBjYW5jZWxlZCBsb2Fkcy4gVGhlcmUgYXJlIHBvdGVudGlhbCBtb3JlIHNv
cGhpc3RpY2F0ZWQgZml4ZXMgYnV0IHRoaXMgaXMgc2ltcGxlIGFuZCBzYWZlLgorICAgICAgICBX
YWxraW5nIHRoZSBzaGVldCBpcyBmYXN0IGFuZCBzaW5jZSBpdCBpcyBvbmx5IGRvbmUgb24gY2Fj
aGUgcmVzdG9yZSB0aGUgY29zdCBpcyBtaW5pbWFsLgorCisgICAgICAgIE5vIHJlZ3Jlc3Npb24g
dGVzdCB5ZXQgdGhvdWdoIG9uZSBtaWdodCBiZSBwb3NzaWJsZS4KKworICAgICAgICAqIGNzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1
ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKENTU0Nyb3NzZmFk
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVz
b3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmg6CisgICAgICAgIChDU1NGb250RmFjZVNyY1ZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTSW1hZ2VTZXRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVNldFZhbHVl
OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmg6CisgICAgICAgIChDU1NJbWFnZVNldFZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZVZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgIChD
U1NJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlLmg6CisgICAgICAgIChDU1NWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NWYWx1ZUxpc3Q6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAoQ1NTVmFs
dWVMaXN0KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2Vz
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0Lmg6
CisgICAgICAgIChTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldENv
bnRlbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5j
ZWxlZFN1YnJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlU2hlZXRDb250ZW50czo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyk6Cisg
ICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oOgorICAgICAgICAoU3R5bGVTaGVldENv
bnRlbnRzKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRDU1NTdHlsZVNoZWV0OjpyZXN0b3JlUGFyc2VkU3R5
bGVTaGVldCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6bG9hZEZhaWxlZE9yQ2FuY2VsZWQpOgorCiAy
MDEyLTA4LTA1ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbVjhdIE1vdmUgVjhQcm94eSBtZXRob2RzIHRoYXQgc2V0IERPTSBhdHRyaWJ1dGVzL2NhbGxi
YWNrcyB0byBWOEJpbmRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcyLDQgKzE3MiwxMyBAQCB2b2lkIENT
U0Nyb3NzZmFkZVZhbHVlOjpDcm9zc2ZhZGVTdWJpbWFnCiAgICAgICAgIG1fb3duZXJWYWx1ZS0+
Y3Jvc3NmYWRlQ2hhbmdlZCgqcmVjdCk7CiB9CiAKK2Jvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omhh
c0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAoreworICAgIGlmIChtX2NhY2hl
ZEZyb21JbWFnZSAmJiBtX2NhY2hlZEZyb21JbWFnZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG1fY2FjaGVkVG9JbWFnZSAmJiBtX2NhY2hl
ZFRvSW1hZ2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02
MSw2ICs2MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGVyY2VudGFnZShQYXNzUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJjZW50YWdlVmFsdWUg
PSBwZXJjZW50YWdlVmFsdWU7IH0KIAorICAgIGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJl
c291cmNlcygpIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0Nyb3NzZmFkZVZhbHVlKFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IGZyb21WYWx1ZSwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdG9WYWx1ZSkK
ICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKENyb3NzZmFkZUNsYXNzKQpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAkocmV2aXNpb24gMTI0
NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OSw2ICs3OSwxMyBAQCB2b2lkIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmFk
ZFN1YnJlc291cmNlCiAgICAgICAgIGFkZFN1YnJlc291cmNlVVJMKHVybHMsIHN0eWxlU2hlZXQt
PmNvbXBsZXRlVVJMKG1fcmVzb3VyY2UpKTsKIH0KIAorYm9vbCBDU1NGb250RmFjZVNyY1ZhbHVl
OjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1f
Y2FjaGVkRm9udCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NhY2hlZEZv
bnQtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7Cit9CisKIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmICghbV9j
YWNoZWRGb250KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNy
Y1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDYgKzY3LDggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNvbnN0IFN0
eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCisgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CisKICAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3Vt
ZW50Kik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCShyZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw2ICsxMzksMTYgQEAgU3RyaW5nIENT
U0ltYWdlU2V0VmFsdWU6OmN1c3RvbUNzc1RleHQoKQogICAgIHJldHVybiAiLXdlYmtpdC1pbWFn
ZS1zZXQoIiArIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ3NzVGV4dCgpICsgIikiOwogfQogCitib29s
IENTU0ltYWdlU2V0VmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25z
dAoreworICAgIGlmICghbV9pbWFnZVNldCB8fCAhbV9pbWFnZVNldC0+aXNDYWNoZWRJbWFnZVNl
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJl
c291cmNlID0gc3RhdGljX2Nhc3Q8U3R5bGVDYWNoZWRJbWFnZVNldCo+KG1faW1hZ2VTZXQuZ2V0
KCkpLT5jYWNoZWRJbWFnZSgpOworICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBjYWNoZWRSZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2Vs
ZWQoKTsKK30KKwogQ1NTSW1hZ2VTZXRWYWx1ZTo6Q1NTSW1hZ2VTZXRWYWx1ZShjb25zdCBDU1NJ
bWFnZVNldFZhbHVlJiBjbG9uZUZyb20pCiAgICAgOiBDU1NWYWx1ZUxpc3QoY2xvbmVGcm9tKQog
ICAgICwgbV9hY2Nlc3NlZEJlc3RGaXRJbWFnZShmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuaAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlU2V0VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNiArNjAsOCBAQCBw
dWJsaWM6CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yOwogICAgIH07CiAKKyAgICBib29sIGhh
c0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKKwogICAgIFBhc3NSZWZQdHI8
Q1NTSW1hZ2VTZXRWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCShyZXZpc2lvbiAxMjQ0NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw2ICsxMDIsMTYgQEAgdm9pZCBDU1NJbWFnZVZhbHVlOjpjbGVhckNhY2hlZEltYWdlKCkK
ICAgICBtX2FjY2Vzc2VkSW1hZ2UgPSBmYWxzZTsKIH0KIAorYm9vbCBDU1NJbWFnZVZhbHVlOjpo
YXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1faW1h
Z2UgfHwgIW1faW1hZ2UtPmlzQ2FjaGVkSW1hZ2UoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IHN0YXRpY19jYXN0PFN0eWxlQ2Fj
aGVkSW1hZ2UqPihtX2ltYWdlLmdldCgpKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBpZiAoIWNhY2hl
ZFJlc291cmNlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gY2FjaGVkUmVzb3Vy
Y2UtPmxvYWRGYWlsZWRPckNhbmNlbGVkKCk7Cit9CisKIFN0cmluZyBDU1NJbWFnZVZhbHVlOjpj
dXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVDU1NVUkxJ
Zk5lZWRlZChtX3VybCkgKyAiKSI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VW
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJ
KHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgYm9vbCBoYXNGYWlsZWRP
ckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDU1NJbWFn
ZVZhbHVlKENsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZS5jcHAJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw2ICsxMjEsMjYgQEAgdm9pZCBDU1NWYWx1
ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTAogICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBD
U1NSZWZsZWN0VmFsdWUqPih0aGlzKS0+YWRkU3VicmVzb3VyY2VTdHlsZVVSTHModXJscywgc3R5
bGVTaGVldCk7CiB9CiAKK2Jvb2wgQ1NTVmFsdWU6Omhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNv
dXJjZXMoKSBjb25zdAoreworICAgIC8vIFRoaXMgc2hvdWxkIGdldCBjYWxsZWQgZm9yIGludGVy
bmFsIGluc3RhbmNlcyBvbmx5LgorICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSk7CisKKyAgICBp
ZiAoaXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU1Zh
bHVlTGlzdCo+KHRoaXMpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCk7CisgICAg
aWYgKGNsYXNzVHlwZSgpID09IEZvbnRGYWNlU3JjQ2xhc3MpCisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlKj4odGhpcyktPmhhc0ZhaWxlZE9yQ2Fu
Y2VsZWRTdWJyZXNvdXJjZXMoKTsKKyAgICBpZiAoY2xhc3NUeXBlKCkgPT0gSW1hZ2VDbGFzcykK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0ltYWdlVmFsdWUqPih0aGlzKS0+
aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpOworICAgIGlmIChjbGFzc1R5cGUoKSA9
PSBDcm9zc2ZhZGVDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0Ny
b3NzZmFkZVZhbHVlKj4odGhpcyktPmhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKTsK
KyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICBpZiAoY2xhc3NUeXBlKCkgPT0gSW1hZ2VT
ZXRDbGFzcykKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IENTU0ltYWdlU2V0VmFs
dWUqPih0aGlzKS0+aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpOworI2VuZGlmCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ewogICAgIGlmIChtX2lzVGV4dENsb25lKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuaAkocmV2
aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExNyw2ICsxMTcsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRz
KikgY29uc3Q7CiAKKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBj
b25zdDsKKwogcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBDbGFzc1R5cGVC
aXRzID0gNTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCShyZXZpc2lvbiAx
MjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTczLDYgKzE3MywxNSBAQCB2b2lkIENTU1ZhbHVlTGlzdDo6YWRkU3VicmVzb3Vy
Y2VTdHlsZVVSCiAgICAgICAgIG1fdmFsdWVzW2ldLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1
cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAorYm9vbCBDU1NWYWx1ZUxpc3Q6Omhhc0ZhaWxlZE9yQ2Fu
Y2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdAoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3ZhbHVlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV92YWx1ZXNbaV0tPmhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENTU1ZhbHVlTGlzdDo6Q1NTVmFsdWVMaXN0
KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xvbmVGcm9tKQogICAgIDogQ1NTVmFsdWUoY2xvbmVGcm9t
LmNsYXNzVHlwZSgpLCAvKiBpc0NTU09NU2FmZSAqLyB0cnVlKQogewpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuaAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw4IEBAIHB1YmxpYzoK
ICNlbmRpZgogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxL
VVJMPiYsIGNvbnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OworCisgICAgYm9vbCBoYXNG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAgICAgCiAgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZUxpc3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAkocmV2aXNpb24gMTI0NDU4KQorKysgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTQs
NiArODk0LDE2IEBAIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRkU3VicmVzb3VyY2VTdHkKICAg
ICAgICAgcHJvcGVydHlBdChpKS52YWx1ZSgpLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxz
LCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6aGFzRmFp
bGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2l6ZSA9
IHByb3BlcnR5Q291bnQoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgIGlmIChwcm9wZXJ0eUF0KGkpLnZhbHVlKCktPmhhc0ZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgaXMgdGhlIGxpc3Qgb2YgcHJvcGVydGllcyB3ZSB3
YW50IHRvIGNvcHkgaW4gdGhlIGNvcHlCbG9ja1Byb3BlcnRpZXMoKSBmdW5jdGlvbi4KIC8vIEl0
IGlzIHRoZSBsaXN0IG9mIENTUyBwcm9wZXJ0aWVzIHRoYXQgYXBwbHkgc3BlY2lhbGx5IHRvIGJs
b2NrLWxldmVsIGVsZW1lbnRzLgogc3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYmxvY2tQcm9w
ZXJ0aWVzW10gPSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJKHJl
dmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGlz
TXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNNdXRhYmxlOyB9CiAKKyAgICBib29sIGhhc0Zh
aWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKKwogICAgIHN0YXRpYyB1bnNpZ25l
ZCBhdmVyYWdlU2l6ZUluQnl0ZXMoKTsKICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hl
ZXRDb250ZW50cy5jcHAJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNiArNDEwLDQ2IEBA
IHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjphZGRTdWJyZXNvdXJjZVMKICAgICB9CiB9CiAKK3N0
YXRpYyBib29sIGNoaWxkUnVsZXNIYXZlRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPFN0eWxlUnVsZUJhc2U+ID4mIHJ1bGVzKQoreworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBydWxlcy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBTdHls
ZVJ1bGVCYXNlKiBydWxlID0gcnVsZXNbaV0uZ2V0KCk7CisgICAgICAgIHN3aXRjaCAocnVsZS0+
dHlwZSgpKSB7CisgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6U3R5bGU6CisgICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlKj4ocnVsZSktPnByb3BlcnRpZXMoKS0+
aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6
Rm9udEZhY2U6CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlRm9u
dEZhY2UqPihydWxlKS0+cHJvcGVydGllcygpLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3Vy
Y2VzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpNZWRpYToKKyAgICAgICAgICAgIGlmIChjaGls
ZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoc3RhdGljX2Nhc3Q8Y29uc3Qg
U3R5bGVSdWxlTWVkaWEqPihydWxlKS0+Y2hpbGRSdWxlcygpKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFN0eWxlUnVsZUJh
c2U6OlJlZ2lvbjoKKyAgICAgICAgICAgIGlmIChjaGlsZFJ1bGVzSGF2ZUZhaWxlZE9yQ2FuY2Vs
ZWRTdWJyZXNvdXJjZXMoc3RhdGljX2Nhc3Q8Y29uc3QgU3R5bGVSdWxlUmVnaW9uKj4ocnVsZSkt
PmNoaWxkUnVsZXMoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpJbXBvcnQ6CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBTdHlsZVJ1bGVCYXNlOjpQYWdl
OgorICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OktleWZyYW1lczoKKyAgICAgICAgY2FzZSBT
dHlsZVJ1bGVCYXNlOjpVbmtub3duOgorICAgICAgICBjYXNlIFN0eWxlUnVsZUJhc2U6OkNoYXJz
ZXQ6CisgICAgICAgIGNhc2UgU3R5bGVSdWxlQmFzZTo6S2V5ZnJhbWU6CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU3R5
bGVTaGVldENvbnRlbnRzOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNDYWNoZWFibGUoKSk7CisgICAgcmV0dXJuIGNoaWxkUnVsZXNIYXZl
RmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcyhtX2NoaWxkUnVsZXMpOworfQorCiBTdHlsZVNo
ZWV0Q29udGVudHMqIFN0eWxlU2hlZXRDb250ZW50czo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fb3duZXJSdWxlID8gbV9vd25lclJ1bGUtPnBhcmVudFN0eWxlU2hl
ZXQoKSA6IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5oCShy
ZXZpc2lvbiAxMjQ0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0
cmluZyYgY2hhcnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyQ29udGV4dC5jaGFyc2V0OyB9
CiAKICAgICBib29sIGxvYWRDb21wbGV0ZWQoKSBjb25zdCB7IHJldHVybiBtX2xvYWRDb21wbGV0
ZWQ7IH0KKyAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsK
IAogICAgIEtVUkwgY29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0OwogICAgIHZv
aWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRDU1NTdHlsZVNoZWV0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkQ1NTU3R5bGVTaGVldC5j
cHAJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRDU1NTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCwxMiBAQCBQ
YXNzUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gQ2FjaGVkQ1NTCiB7CiAgICAgaWYgKCFtX3Bh
cnNlZFN0eWxlU2hlZXRDYWNoZSkKICAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKG1fcGFyc2Vk
U3R5bGVTaGVldENhY2hlLT5oYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkpIHsKKyAg
ICAgICAgbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPnJlbW92ZWRGcm9tTWVtb3J5Q2FjaGUoKTsK
KyAgICAgICAgbV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUuY2xlYXIoKTsKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorCiAgICAgQVNTRVJUKG1fcGFyc2VkU3R5bGVTaGVldENhY2hlLT5pc0NhY2hl
YWJsZSgpKTsKICAgICBBU1NFUlQobV9wYXJzZWRTdHlsZVNoZWV0Q2FjaGUtPmlzSW5NZW1vcnlD
YWNoZSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgJKHJldmlzaW9uIDEyNDQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNiArMjA1LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCB3YXNDYW5jZWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzID09
IENhbmNlbGVkOyB9CiAgICAgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gKG1f
c3RhdHVzID09IExvYWRFcnJvciB8fCBtX3N0YXR1cyA9PSBEZWNvZGVFcnJvcik7IH0KKyAgICBi
b29sIGxvYWRGYWlsZWRPckNhbmNlbGVkKCkgeyByZXR1cm4gbV9zdGF0dXMgPT0gQ2FuY2VsZWQg
fHwgbV9zdGF0dXMgPT0gTG9hZEVycm9yOyB9CiAKICAgICBib29sIHNlbmRSZXNvdXJjZUxvYWRD
YWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRDYWxsYmFja3MgPT0g
U2VuZENhbGxiYWNrczsgfQogICAgIAo=
</data>
<flag name="review"
          id="166287"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>