<?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>73000</bug_id>
          
          <creation_ts>2011-11-22 20:55:12 -0800</creation_ts>
          <short_desc>Implement CSSPropertySize in CSSStyleApplyProperty.</short_desc>
          <delta_ts>2011-11-28 19:25:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>eric</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>507927</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-22 20:55:12 -0800</bug_when>
    <thetext>Implement CSSPropertySize in CSSStyleApplyProperty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507928</commentid>
    <comment_count>1</comment_count>
      <attachid>116311</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-22 21:01:20 -0800</bug_when>
    <thetext>Created attachment 116311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509434</commentid>
    <comment_count>2</comment_count>
      <attachid>116311</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-27 06:05:49 -0800</bug_when>
    <thetext>Comment on attachment 116311
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This refactoring moves the implementation of the page size calculation into CSSStyleApplyPropwerty

Typo: CSSStyleApplyProperty.

&gt; Source/WebCore/ChangeLog:11
&gt; +        No new tests / refactoing only.

Typo: refactoring.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:680
&gt; +    static bool pageSizeFromName(CSSPrimitiveValue* pageSizeName, CSSPrimitiveValue* pageOrientation, Length&amp; width, Length&amp; height)

I believe this function should be called getPageSizeFromName() since it doesn&apos;t return a &quot;page size&quot; directly, but rather fills in out arguments.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:692
&gt; +        if (!pageSizeName || pageSizeName-&gt;primitiveType() != CSSPrimitiveValue::CSS_IDENT)
&gt; +            return false;

The primitiveType() check here is redundant, since getIdent() would return 0 for non-CSS_IDENT values below and bail via the default case.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:733
&gt; +            if (pageOrientation-&gt;primitiveType() != CSSPrimitiveValue::CSS_IDENT)
&gt; +                return false;

Ditto.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:756
&gt; +        CSSValueListInspector inspector = value;

We should use constructor syntax here:
CSSValueListInspector inspector(value);

Also, it appears that this site is the only user of the CSSValueListInspector class. Are there plans to expand its usage? Otherwise I think we could use CSSValueList methods directly here and remove the class.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:762
&gt; +            pageSizeType = PAGE_SIZE_RESOLVED;
&gt; +            if (!inspector.first()-&gt;isPrimitiveValue() || !inspector.second()-&gt;isPrimitiveValue())
&gt; +                return;

Nit: We should move the pageSizeType assignment to after the if statement to avoid unnecessary work in the early-return case.

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:773
&gt; +                // The value order is guaranteed. See CSSParser::parseSizeParameter.

Does this mean we could replace the primitive type checks in pageSizeFromName() with assertions?

&gt; Source/WebCore/css/CSSStyleSelector.h:339
&gt;      Length mmLength(double mm) const;
&gt;      Length inchLength(double inch) const;

These declarations should be removed now as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509536</commentid>
    <comment_count>3</comment_count>
      <attachid>116311</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-27 19:18:12 -0800</bug_when>
    <thetext>Comment on attachment 116311
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        This refactoring moves the implementation of the page size calculation into CSSStyleApplyPropwerty
&gt; 
&gt; Typo: CSSStyleApplyProperty.

done.

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        No new tests / refactoing only.
&gt; 
&gt; Typo: refactoring.

done.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:680
&gt;&gt; +    static bool pageSizeFromName(CSSPrimitiveValue* pageSizeName, CSSPrimitiveValue* pageOrientation, Length&amp; width, Length&amp; height)
&gt; 
&gt; I believe this function should be called getPageSizeFromName() since it doesn&apos;t return a &quot;page size&quot; directly, but rather fills in out arguments.

done.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:692
&gt;&gt; +            return false;
&gt; 
&gt; The primitiveType() check here is redundant, since getIdent() would return 0 for non-CSS_IDENT values below and bail via the default case.

Nice. I recall noticing this earlier but appear to forgotten to include that cleanup. Done.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:733
&gt;&gt; +                return false;
&gt; 
&gt; Ditto.

done.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:756
&gt;&gt; +        CSSValueListInspector inspector = value;
&gt; 
&gt; We should use constructor syntax here:
&gt; CSSValueListInspector inspector(value);
&gt; 
&gt; Also, it appears that this site is the only user of the CSSValueListInspector class. Are there plans to expand its usage? Otherwise I think we could use CSSValueList methods directly here and remove the class.

Switched to constructor syntax. I think the rest of the discussion is beyond the scope of this refactoring though.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:762
&gt;&gt; +                return;
&gt; 
&gt; Nit: We should move the pageSizeType assignment to after the if statement to avoid unnecessary work in the early-return case.

I&apos;ve moved it much further down.

&gt;&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:773
&gt;&gt; +                // The value order is guaranteed. See CSSParser::parseSizeParameter.
&gt; 
&gt; Does this mean we could replace the primitive type checks in pageSizeFromName() with assertions?

Already removed.

&gt;&gt; Source/WebCore/css/CSSStyleSelector.h:339
&gt;&gt;      Length inchLength(double inch) const;
&gt; 
&gt; These declarations should be removed now as well.

done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509543</commentid>
    <comment_count>4</comment_count>
      <attachid>116693</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-27 19:41:52 -0800</bug_when>
    <thetext>Created attachment 116693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509544</commentid>
    <comment_count>5</comment_count>
      <attachid>116693</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-11-27 19:46:49 -0800</bug_when>
    <thetext>Comment on attachment 116693
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510165</commentid>
    <comment_count>6</comment_count>
      <attachid>116693</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 14:15:39 -0800</bug_when>
    <thetext>Comment on attachment 116693
Patch

Rejecting attachment 116693 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
 succeeded at 1312 with fuzz 2 (offset 108 lines).
patching file Source/WebCore/css/CSSStyleSelector.cpp
Hunk #1 succeeded at 3626 (offset -132 lines).
Hunk #2 FAILED at 4021.
Hunk #3 succeeded at 3949 (offset -122 lines).
1 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/css/CSSStyleSelector.cpp.rej
patching file Source/WebCore/css/CSSStyleSelector.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Andreas Kling&apos;, u&apos;--fo...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10668887</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510251</commentid>
    <comment_count>7</comment_count>
      <attachid>116837</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-11-28 15:11:03 -0800</bug_when>
    <thetext>Created attachment 116837
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510410</commentid>
    <comment_count>8</comment_count>
      <attachid>116837</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 19:24:59 -0800</bug_when>
    <thetext>Comment on attachment 116837
Patch for landing

Clearing flags on attachment: 116837

Committed r101317: &lt;http://trac.webkit.org/changeset/101317&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510411</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-28 19:25:04 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116311</attachid>
            <date>2011-11-22 21:01:20 -0800</date>
            <delta_ts>2011-11-27 19:41:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73000-20111123160118.patch</filename>
            <type>text/plain</type>
            <size>15963</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTA0MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTIyICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IENTU1Byb3BlcnR5U2l6ZSBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgbW92ZXMg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwYWdlIHNpemUgY2FsY3VsYXRpb24gaW50byBDU1NT
dHlsZUFwcGx5UHJvcHdlcnR5CisgICAgICAgIGFuZCByZW1vdmVzIHRoZSBleGlzdGluZyBjb2Rl
IGZyb20gQ1NTU3R5bGVTZWxlY3Rvci4KKworICAgICAgICBObyBuZXcgdGVzdHMgLyByZWZhY3Rv
aW5nIG9ubHkuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6bW1MZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjppbmNoTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5SW5oZXJpdFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlJbml0aWFsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6Y3JlYXRlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKwogMjAxMS0xMS0yMiAgS2VubmV0aCBSdXNzZWxsICA8
a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBTdXBwb3J0IENvcmUgQW5pbWF0
aW9uIHBsdWdpbnMgaW4gY29tcG9zaXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlQXBwbHlQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDEwMTAzMykKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzMs
NiArNjczLDE0OSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkgeyByZXR1cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFw
cGx5SW5pdGlhbFZhbHVlLCAmYXBwbHlWYWx1ZSk7IH0KIH07CiAKK2NsYXNzIEFwcGx5UHJvcGVy
dHlQYWdlU2l6ZSB7Citwcml2YXRlOgorICAgIHN0YXRpYyBMZW5ndGggbW1MZW5ndGgoZG91Ymxl
IG1tKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX01NKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KDAsIDApOyB9CisgICAgc3RhdGlj
IExlbmd0aCBpbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1
ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVuZ3Ro
PExlbmd0aD4oMCwgMCk7IH0KKyAgICBzdGF0aWMgYm9vbCBwYWdlU2l6ZUZyb21OYW1lKENTU1By
aW1pdGl2ZVZhbHVlKiBwYWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50
YXRpb24sIExlbmd0aCYgd2lkdGgsIExlbmd0aCYgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IExlbmd0aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxl
bmd0aCgyMTApOworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0
aCgyMTApLCBhNEhlaWdodCA9IG1tTGVuZ3RoKDI5Nyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBM
ZW5ndGggYTNXaWR0aCA9IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsK
KyAgICAgICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVI
ZWlnaHQgPSBtbUxlbmd0aCgyNTApOworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lk
dGggPSBtbUxlbmd0aCgyNTApLCBiNEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7CisgICAgICAgIHN0
YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRlckhl
aWdodCA9IGluY2hMZW5ndGgoMTEpOworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2Fs
V2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVkZ2VyV2lkdGggPSBpbmNoTGVuZ3RoKDExKSwg
bGVkZ2VySGVpZ2h0ID0gaW5jaExlbmd0aCgxNyk7CisKKyAgICAgICAgaWYgKCFwYWdlU2l6ZU5h
bWUgfHwgcGFnZVNpemVOYW1lLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19JREVOVCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2gg
KHBhZ2VTaXplTmFtZS0+Z2V0SWRlbnQoKSkgeworICAgICAgICBjYXNlIENTU1ZhbHVlQTU6Cisg
ICAgICAgICAgICB3aWR0aCA9IGE1V2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBhNUhlaWdo
dDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlQTQ6CisgICAgICAg
ICAgICB3aWR0aCA9IGE0V2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBhNEhlaWdodDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlQTM6CisgICAgICAgICAgICB3
aWR0aCA9IGEzV2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBhM0hlaWdodDsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlQjU6CisgICAgICAgICAgICB3aWR0aCA9
IGI1V2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBiNUhlaWdodDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlQjQ6CisgICAgICAgICAgICB3aWR0aCA9IGI0V2lk
dGg7CisgICAgICAgICAgICBoZWlnaHQgPSBiNEhlaWdodDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIENTU1ZhbHVlTGV0dGVyOgorICAgICAgICAgICAgd2lkdGggPSBsZXR0ZXJX
aWR0aDsKKyAgICAgICAgICAgIGhlaWdodCA9IGxldHRlckhlaWdodDsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTGVnYWw6CisgICAgICAgICAgICB3aWR0aCA9IGxl
Z2FsV2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBsZWdhbEhlaWdodDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIENTU1ZhbHVlTGVkZ2VyOgorICAgICAgICAgICAgd2lkdGgg
PSBsZWRnZXJXaWR0aDsKKyAgICAgICAgICAgIGhlaWdodCA9IGxlZGdlckhlaWdodDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhZ2VPcmllbnRhdGlvbikgeworICAgICAgICAg
ICAgaWYgKHBhZ2VPcmllbnRhdGlvbi0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfSURFTlQpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgc3dpdGNoIChwYWdlT3JpZW50YXRpb24tPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgIGNh
c2UgQ1NTVmFsdWVMYW5kc2NhcGU6CisgICAgICAgICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBo
ZWlnaHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDU1NWYWx1
ZVBvcnRyYWl0OgorICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5
bGVTZWxlY3RvciopIHsgfQorICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqKSB7IH0KKyAgICBzdGF0aWMgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBDU1NWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKKyAgICAgICAgTGVuZ3RoIHdpZHRoOwor
ICAgICAgICBMZW5ndGggaGVpZ2h0OworICAgICAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBl
ID0gUEFHRV9TSVpFX0FVVE87CisgICAgICAgIENTU1ZhbHVlTGlzdEluc3BlY3RvciBpbnNwZWN0
b3IgPSB2YWx1ZTsKKyAgICAgICAgc3dpdGNoIChpbnNwZWN0b3IubGVuZ3RoKCkpIHsKKyAgICAg
ICAgY2FzZSAyOiB7CisgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxv
cmllbnRhdGlvbj4KKyAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZF
RDsKKyAgICAgICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUo
KSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7CisgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOworICAgICAgICAgICAgaWYgKGZpcnN0LT5pc0xl
bmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgICAg
ICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgICAgIHdpZHRoID0gZmlyc3QtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxl
Y3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAg
ICAgICAgaGVpZ2h0ID0gc2Vjb25kLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0
eWxlKCksIHNlbGVjdG9yLT5yb290RWxlbWVudFN0eWxlKCkpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CisgICAgICAg
ICAgICAgICAgLy8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6
OnBhcnNlU2l6ZVBhcmFtZXRlci4KKyAgICAgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5h
bWUoZmlyc3QsIHNlY29uZCwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgMTogeworICAgICAgICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6
ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBlXQorICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3Iu
Zmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5zcGVjdG9yLmZpcnN0KCkpOworICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gPGxlbmd0
aD4KKyAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Cisg
ICAgICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHls
ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2
ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHN3aXRjaCAocHJp
bWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVl
QXV0bzoKKyAgICAgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVQb3J0cmFpdDoKKyAgICAgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpF
X0FVVE9fUE9SVFJBSVQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6CisgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXpl
VHlwZSA9IFBBR0VfU0laRV9BVVRPX0xBTkRTQ0FQRTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gPHBh
Z2Utc2l6ZT4KKyAgICAgICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JF
U09MVkVEOworICAgICAgICAgICAgICAgICAgICBpZiAoIXBhZ2VTaXplRnJvbU5hbWUocHJpbWl0
aXZlVmFsdWUsIDAsIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6
ZVR5cGUpOworICAgICAgICBzZWxlY3Rvci0+c3R5bGUoKS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6
ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAgfQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3Jl
YXRlSGFuZGxlcigpIHsgcmV0dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUs
ICZhcHBseUluaXRpYWxWYWx1ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCiBjbGFzcyBBcHBseVBy
b3BlcnR5VGV4dEVtcGhhc2lzU3R5bGUgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5
SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQpAQCAtMTA1MSw2ICsxMTk0
LDggQEAgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0LCBBcHBseVByb3BlcnR5TGVuZ3Ro
PCZSZW5kZXJTdHlsZTo6cGFkZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ0xlZnQs
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVBhZGRpbmcsIEFwcGx5UHJvcGVydHlFeHBhbmRp
bmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRp
bmdSaWdodCwgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKIAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eVNpemUsIEFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6Y3JlYXRlSGFuZGxlcigpKTsKKwogICAgIHNl
dFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQXBw
bHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2luWCwgJlJlbmRl
clN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNw
ZWN0aXZlT3JpZ2luWD46OmNyZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVy
KENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZLCBBcHBseVByb3BlcnR5TGVuZ3Ro
PCZSZW5kZXJTdHlsZTo6cGVyc3BlY3RpdmVPcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNw
ZWN0aXZlT3JpZ2luWSwgJlJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZPjo6
Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJr
aXRQZXJzcGVjdGl2ZU9yaWdpbiwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVl
LCBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQ1NTUHJvcGVydHlXZWJraXRQ
ZXJzcGVjdGl2ZU9yaWdpblk+OjpjcmVhdGVIYW5kbGVyKCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTAxMDMzKQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzU4LDkg
KzM3NTgsNiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eVdlYmtpdENvbG9yQ29ycmVjdGlvbjoKICAgICAgICAgSEFORExFX0lO
SEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShjb2xvclNwYWNlLCBDb2xvclNwYWNlKTsK
ICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgotICAgICAgICBhcHBs
eVBhZ2VTaXplUHJvcGVydHkodmFsdWUpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVNwZWFrOgogICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJ
TUlUSVZFKHNwZWFrLCBTcGVhayk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwMjQsNiArNDAyMSw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENT
U1Byb3BlcnR5UGFkZGluZ0JvdHRvbToKICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6
CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1h
eEhlaWdodDoKICAgICBjYXNlIENTU1Byb3BlcnR5SGVpZ2h0OgpAQCAtNDA3MSwxNTIgKzQwNjks
NiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgfQogfQog
Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSog
dmFsdWUpCi17Ci0gICAgbV9zdHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKLSAgICBMZW5ndGgg
d2lkdGg7Ci0gICAgTGVuZ3RoIGhlaWdodDsKLSAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBl
ID0gUEFHRV9TSVpFX0FVVE87Ci0gICAgQ1NTVmFsdWVMaXN0SW5zcGVjdG9yIGluc3BlY3RvciA9
IHZhbHVlOwotICAgIHN3aXRjaCAoaW5zcGVjdG9yLmxlbmd0aCgpKSB7Ci0gICAgY2FzZSAyOiB7
Ci0gICAgICAgIC8vIDxsZW5ndGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgotICAg
ICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgIGlmICghaW5z
cGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgp
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBmaXJzdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5z
cGVjdG9yLmZpcnN0KCkpOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOwotICAgICAg
ICBpZiAoZmlyc3QtPmlzTGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIC8vIDxsZW5ndGg+ezJ9Ci0g
ICAgICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB3aWR0aCA9IGZpcnN0LT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHNlY29uZC0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0g
ICAgICAgICAgICAvLyBUaGUgdmFsdWUgb3JkZXIgaXMgZ3VhcmFudGVlZC4gU2VlIENTU1BhcnNl
cjo6cGFyc2VTaXplUGFyYW1ldGVyLgotICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1l
KGZpcnN0LCBzZWNvbmQsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAg
IC8vIDxsZW5ndGg+IHwgYXV0byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRzY2Fw
ZV0KLSAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZl
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgp
KTsKLSAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAg
ICAvLyA8bGVuZ3RoPgotICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09M
VkVEOwotICAgICAgICAgICAgd2lkdGggPSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAg
ICAgICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9
IFBBR0VfU0laRV9BVVRPOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBDU1NWYWx1ZVBvcnRyYWl0OgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0Vf
U0laRV9BVVRPX1BPUlRSQUlUOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBDU1NWYWx1ZUxhbmRzY2FwZToKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQ
QUdFX1NJWkVfQVVUT19MQU5EU0NBUEU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+Ci0gICAgICAgICAg
ICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICAgICAgICAg
IGlmICghcGFnZVNpemVGcm9tTmFtZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lkdGgsIGhlaWdodCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBtX3N0eWxlLT5zZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBlKTsKLSAgICBtX3N0
eWxlLT5zZXRQYWdlU2l6ZShMZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICByZXR1cm47
Ci19Ci0KLWJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRp
dmVWYWx1ZSogcGFnZVNpemVOYW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9u
LCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTGVu
Z3RoIGE1V2lkdGggPSBtbUxlbmd0aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVuZ3RoKDIxMCk7Ci0g
ICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEwKSwgYTRIZWlnaHQg
PSBtbUxlbmd0aCgyOTcpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9IG1tTGVu
Z3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVu
Z3RoIGI1V2lkdGggPSBtbUxlbmd0aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVuZ3RoKDI1MCk7Ci0g
ICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUwKSwgYjRIZWlnaHQg
PSBtbUxlbmd0aCgzNTMpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lkdGggPSBp
bmNoTGVuZ3RoKDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEpOwotICAgIHN0YXRp
YyBjb25zdCBMZW5ndGggbGVnYWxXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGVnYWxIZWlnaHQg
PSBpbmNoTGVuZ3RoKDE0KTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZGdlcldpZHRoID0g
aW5jaExlbmd0aCgxMSksIGxlZGdlckhlaWdodCA9IGluY2hMZW5ndGgoMTcpOwotCi0gICAgaWYg
KCFwYWdlU2l6ZU5hbWUgfHwgcGFnZVNpemVOYW1lLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dp
dGNoIChwYWdlU2l6ZU5hbWUtPmdldElkZW50KCkpIHsKLSAgICBjYXNlIENTU1ZhbHVlQTU6Ci0g
ICAgICAgIHdpZHRoID0gYTVXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVBNDoKLSAgICAgICAgd2lkdGggPSBhNFdpZHRo
OwotICAgICAgICBoZWlnaHQgPSBhNEhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBD
U1NWYWx1ZUEzOgotICAgICAgICB3aWR0aCA9IGEzV2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGEz
SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQjU6Ci0gICAgICAgIHdp
ZHRoID0gYjVXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYjVIZWlnaHQ7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQ1NTVmFsdWVCNDoKLSAgICAgICAgd2lkdGggPSBiNFdpZHRoOwotICAgICAg
ICBoZWlnaHQgPSBiNEhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxl
dHRlcjoKLSAgICAgICAgd2lkdGggPSBsZXR0ZXJXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGV0
dGVySGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTGVnYWw6Ci0gICAg
ICAgIHdpZHRoID0gbGVnYWxXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGVnYWxIZWlnaHQ7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVMZWRnZXI6Ci0gICAgICAgIHdpZHRoID0g
bGVkZ2VyV2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGxlZGdlckhlaWdodDsKLSAgICAgICAgYnJl
YWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlm
IChwYWdlT3JpZW50YXRpb24pIHsKLSAgICAgICAgaWYgKHBhZ2VPcmllbnRhdGlvbi0+cHJpbWl0
aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0aW9uLT5nZXRJZGVudCgp
KSB7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAod2lkdGgsIGhlaWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NW
YWx1ZVBvcnRyYWl0OgotICAgICAgICAgICAgLy8gTm90aGluZyB0byBkby4KLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1MZW5ndGggQ1NTU3R5bGVTZWxl
Y3Rvcjo6bW1MZW5ndGgoZG91YmxlIG1tKSBjb25zdAotewotICAgIHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci19Ci0KLUxlbmd0aCBD
U1NTdHlsZVNlbGVjdG9yOjppbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKSBjb25zdAotewotICAgIHJl
dHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfSU4pLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKLX0KLQogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9w
ZXJ0eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZh
bHVlLT5pc0luaXRpYWxWYWx1ZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmgJKHJldmlzaW9uIDEwMTAzMykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw4ICszMzUsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQqKSBjb25zdDsK
IAogICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlKik7Ci0gICAgdm9pZCBh
cHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFsdWUqKTsKLSAgICBib29sIHBhZ2VTaXplRnJvbU5h
bWUoQ1NTUHJpbWl0aXZlVmFsdWUqLCBDU1NQcmltaXRpdmVWYWx1ZSosIExlbmd0aCYgd2lkdGgs
IExlbmd0aCYgaGVpZ2h0KTsKICAgICBMZW5ndGggbW1MZW5ndGgoZG91YmxlIG1tKSBjb25zdDsK
ICAgICBMZW5ndGggaW5jaExlbmd0aChkb3VibGUgaW5jaCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNW
RykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116693</attachid>
            <date>2011-11-27 19:41:52 -0800</date>
            <delta_ts>2011-11-28 15:10:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73000-20111128144149.patch</filename>
            <type>text/plain</type>
            <size>15887</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTIxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTI3ICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IENTU1Byb3BlcnR5U2l6ZSBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcmVmYWN0b3JpbmcgbW92ZXMg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBwYWdlIHNpemUgY2FsY3VsYXRpb24gaW50byBDU1NT
dHlsZUFwcGx5UHJvcGVydHkKKyAgICAgICAgYW5kIHJlbW92ZXMgdGhlIGV4aXN0aW5nIGNvZGUg
ZnJvbSBDU1NTdHlsZVNlbGVjdG9yLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAvIHJlZmFjdG9y
aW5nIG9ubHkuCisKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVBcHBseVByb3BlcnR5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6bW1MZW5ndGgpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjppbmNoTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6cGFnZVNpemVGcm9tTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5SW5oZXJpdFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlJbml0aWFsVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6Y3JlYXRlSGFuZGxl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZUFwcGx5UHJvcGVydHk6OkNTU1N0eWxlQXBw
bHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKwogMjAxMS0xMS0yNyAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzcyNjY1PiBTd2l0Y2gg
dG8gYSBtb3JlIG1vZGVybiBhcHByb2FjaCB0byByZXRyaWV2aW5nIHRoZSBPUyBtYXJrZXRpbmcg
dmVyc2lvbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0
eS5jcHAJKHJldmlzaW9uIDEwMTIxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFw
cGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODUsNiArNjg1LDE0NyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1cm4g
UHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmFwcGx5SW5pdGlhbFZhbHVlLCAm
YXBwbHlWYWx1ZSk7IH0KIH07CiAKK2NsYXNzIEFwcGx5UHJvcGVydHlQYWdlU2l6ZSB7Citwcml2
YXRlOgorICAgIHN0YXRpYyBMZW5ndGggbW1MZW5ndGgoZG91YmxlIG1tKSB7IHJldHVybiBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KDAsIDApOyB9CisgICAgc3RhdGljIExlbmd0aCBpbmNoTGVuZ3Ro
KGRvdWJsZSBpbmNoKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oMCwgMCk7IH0K
KyAgICBzdGF0aWMgYm9vbCBnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBw
YWdlU2l6ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExlbmd0aCYg
d2lkdGgsIExlbmd0aCYgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExlbmd0
aCBhNVdpZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0aCgyMTApOworICAg
ICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0aCgyMTApLCBhNEhlaWdo
dCA9IG1tTGVuZ3RoKDI5Nyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9
IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0
aCgyNTApOworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxlbmd0aCgy
NTApLCBiNEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7CisgICAgICAgIHN0YXRpYyBjb25zdCBMZW5n
dGggbGV0dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5n
dGgoMTEpOworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVu
Z3RoKDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7CisgICAgICAgIHN0YXRpYyBj
b25zdCBMZW5ndGggbGVkZ2VyV2lkdGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0g
aW5jaExlbmd0aCgxNyk7CisKKyAgICAgICAgaWYgKCFwYWdlU2l6ZU5hbWUpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUtPmdldElkZW50
KCkpIHsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUE1OgorICAgICAgICAgICAgd2lkdGggPSBhNVdp
ZHRoOworICAgICAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZUE0OgorICAgICAgICAgICAgd2lkdGggPSBhNFdpZHRoOwor
ICAgICAgICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUEzOgorICAgICAgICAgICAgd2lkdGggPSBhM1dpZHRoOworICAgICAg
ICAgICAgaGVpZ2h0ID0gYTNIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUI1OgorICAgICAgICAgICAgd2lkdGggPSBiNVdpZHRoOworICAgICAgICAgICAg
aGVpZ2h0ID0gYjVIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUI0OgorICAgICAgICAgICAgd2lkdGggPSBiNFdpZHRoOworICAgICAgICAgICAgaGVpZ2h0
ID0gYjRIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxl
dHRlcjoKKyAgICAgICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7CisgICAgICAgICAgICBoZWln
aHQgPSBsZXR0ZXJIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUxlZ2FsOgorICAgICAgICAgICAgd2lkdGggPSBsZWdhbFdpZHRoOworICAgICAgICAgICAg
aGVpZ2h0ID0gbGVnYWxIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBD
U1NWYWx1ZUxlZGdlcjoKKyAgICAgICAgICAgIHdpZHRoID0gbGVkZ2VyV2lkdGg7CisgICAgICAg
ICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChwYWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0
aW9uLT5nZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgor
ICAgICAgICAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKKyAgICAgICAgICAg
ICAgICAvLyBOb3RoaW5nIHRvIGRvLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorcHVibGljOgorICAgIHN0
YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqKSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKikgeyB9CisgICAg
c3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFs
dWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnJlc2V0UGFnZVNp
emVUeXBlKCk7CisgICAgICAgIExlbmd0aCB3aWR0aDsKKyAgICAgICAgTGVuZ3RoIGhlaWdodDsK
KyAgICAgICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOworICAg
ICAgICBDU1NWYWx1ZUxpc3RJbnNwZWN0b3IgaW5zcGVjdG9yKHZhbHVlKTsKKyAgICAgICAgc3dp
dGNoIChpbnNwZWN0b3IubGVuZ3RoKCkpIHsKKyAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAg
ICAvLyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgICAg
IGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9y
LnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0
b3Iuc2Vjb25kKCkpOworICAgICAgICAgICAgaWYgKGZpcnN0LT5pc0xlbmd0aCgpKSB7CisgICAg
ICAgICAgICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgICAgICBpZiAoIXNlY29uZC0+
aXNMZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAg
IHdpZHRoID0gZmlyc3QtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwg
c2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0g
c2Vjb25kLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9y
LT5yb290RWxlbWVudFN0eWxlKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CisgICAgICAgICAgICAgICAgLy8gVGhl
IHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFt
ZXRlci4KKyAgICAgICAgICAgICAgICBpZiAoIWdldFBhZ2VTaXplRnJvbU5hbWUoZmlyc3QsIHNl
Y29uZCwgd2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMTogeworICAgICAg
ICAgICAgLy8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRyYWl0IHwgbGFu
ZHNjYXBlXQorICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVW
YWx1ZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2
ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
aW5zcGVjdG9yLmZpcnN0KCkpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xl
bmd0aCgpKSB7CisgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAgICAgICAgICAgICAgICBw
YWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgICAgICAgICAgd2lkdGgg
PSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9y
LT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBl
KCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgICAgICAg
ICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKKyAgICAgICAg
ICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9SVFJBSVQ7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5k
c2NhcGU6CisgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRP
X0xBTkRTQ0FQRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAg
ICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICAgICAg
ICAgICAgICBpZiAoIWdldFBhZ2VTaXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUsIDAsIHdpZHRo
LCBoZWlnaHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2Vs
ZWN0b3ItPnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOworICAgICAgICBz
ZWxlY3Rvci0+c3R5bGUoKS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7
CisgICAgfQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0
dXJuIFByb3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1
ZSwgJmFwcGx5VmFsdWUpOyB9Cit9OworCiBjbGFzcyBBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lz
U3R5bGUgewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yKQpAQCAtMTA2Myw2ICsxMjA0LDggQEAgQ1NTU3R5bGVBcHBs
eVByb3BlcnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eVBhZGRpbmdMZWZ0LCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6cGFk
ZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6c2V0UGFkZGluZ0xlZnQsICZSZW5kZXJTdHlsZTo6aW5p
dGlhbFBhZGRpbmc+OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVBhZGRpbmcsIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwg
Q1NTUHJvcGVydHlQYWRkaW5nVG9wLCBDU1NQcm9wZXJ0eVBhZGRpbmdSaWdodCwgQ1NTUHJvcGVy
dHlQYWRkaW5nQm90dG9tLCBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0Pjo6Y3JlYXRlSGFuZGxlcigp
KTsKIAorICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVNpemUsIEFwcGx5UHJvcGVy
dHlQYWdlU2l6ZTo6Y3JlYXRlSGFuZGxlcigpKTsKKwogICAgIHNldFByb3BlcnR5SGFuZGxlcihD
U1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWCwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwm
UmVuZGVyU3R5bGU6OnBlcnNwZWN0aXZlT3JpZ2luWCwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVj
dGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWD46OmNy
ZWF0ZUhhbmRsZXIoKSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0
UGVyc3BlY3RpdmVPcmlnaW5ZLCBBcHBseVByb3BlcnR5TGVuZ3RoPCZSZW5kZXJTdHlsZTo6cGVy
c3BlY3RpdmVPcmlnaW5ZLCAmUmVuZGVyU3R5bGU6OnNldFBlcnNwZWN0aXZlT3JpZ2luWSwgJlJl
bmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsK
ICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdp
biwgQXBwbHlQcm9wZXJ0eUV4cGFuZGluZzxTdXBwcmVzc1ZhbHVlLCBDU1NQcm9wZXJ0eVdlYmtp
dFBlcnNwZWN0aXZlT3JpZ2luWCwgQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblk+
OjpjcmVhdGVIYW5kbGVyKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkocmV2aXNpb24gMTAxMjE3KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzU4LDkgKzM3NTgsNiBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdENvbG9yQ29ycmVjdGlvbjoKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxf
QU5EX1BSSU1JVElWRShjb2xvclNwYWNlLCBDb2xvclNwYWNlKTsKICAgICAgICAgcmV0dXJuOwot
ICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgotICAgICAgICBhcHBseVBhZ2VTaXplUHJvcGVydHko
dmFsdWUpOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNwZWFrOgogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTF9BTkRfUFJJTUlUSVZFKHNwZWFrLCBTcGVh
ayk7CiAgICAgICAgIHJldHVybjsKQEAgLTQwMjQsNiArNDAyMSw3IEBAIHZvaWQgQ1NTU3R5bGVT
ZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0Jv
dHRvbToKICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ0xlZnQ6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVBhZGRpbmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVNpemU6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHRJbmRlbnQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKICAgICBjYXNl
IENTU1Byb3BlcnR5SGVpZ2h0OgpAQCAtNDA3NCwxNTIgKzQwNzIsNiBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgfQogfQogCi12b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wZXJ0eShDU1NWYWx1ZSogdmFsdWUpCi17Ci0gICAgbV9z
dHlsZS0+cmVzZXRQYWdlU2l6ZVR5cGUoKTsKLSAgICBMZW5ndGggd2lkdGg7Ci0gICAgTGVuZ3Ro
IGhlaWdodDsKLSAgICBQYWdlU2l6ZVR5cGUgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87
Ci0gICAgQ1NTVmFsdWVMaXN0SW5zcGVjdG9yIGluc3BlY3RvciA9IHZhbHVlOwotICAgIHN3aXRj
aCAoaW5zcGVjdG9yLmxlbmd0aCgpKSB7Ci0gICAgY2FzZSAyOiB7Ci0gICAgICAgIC8vIDxsZW5n
dGg+ezJ9IHwgPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgotICAgICAgICBwYWdlU2l6ZVR5cGUg
PSBQQUdFX1NJWkVfUkVTT0xWRUQ7Ci0gICAgICAgIGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlz
UHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29uZCgpLT5pc1ByaW1pdGl2ZVZhbHVl
KCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmaXJz
dCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5zcGVjdG9yLmZpcnN0KCkpOwot
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vjb25kKCkpOwotICAgICAgICBpZiAoZmlyc3QtPmlzTGVu
Z3RoKCkpIHsKLSAgICAgICAgICAgIC8vIDxsZW5ndGg+ezJ9Ci0gICAgICAgICAgICBpZiAoIXNl
Y29uZC0+aXNMZW5ndGgoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3
aWR0aCA9IGZpcnN0LT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlKTsKLSAgICAgICAgICAgIGhlaWdodCA9IHNlY29uZC0+Y29tcHV0ZUxlbmd0aDxMZW5n
dGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAvLyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+Ci0gICAgICAgICAgICAvLyBUaGUg
dmFsdWUgb3JkZXIgaXMgZ3VhcmFudGVlZC4gU2VlIENTU1BhcnNlcjo6cGFyc2VTaXplUGFyYW1l
dGVyLgotICAgICAgICAgICAgaWYgKCFwYWdlU2l6ZUZyb21OYW1lKGZpcnN0LCBzZWNvbmQsIHdp
ZHRoLCBoZWlnaHQpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAgIC8vIDxsZW5ndGg+IHwgYXV0
byB8IDxwYWdlLXNpemU+IHwgWyBwb3J0cmFpdCB8IGxhbmRzY2FwZV0KLSAgICAgICAgaWYgKCFp
bnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJpbWl0aXZlVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJzdCgpKTsKLSAgICAgICAgaWYgKHBy
aW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICAvLyA8bGVuZ3RoPgotICAg
ICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICAgICAg
d2lkdGggPSBoZWlnaHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0
eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICBpZiAocHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSAhPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX0lERU5UKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVBdXRvOgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0
OgotICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPX1BPUlRSQUlU
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBDU1NWYWx1ZUxhbmRz
Y2FwZToKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19MQU5E
U0NBUEU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBl
ID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9t
TmFtZShwcmltaXRpdmVWYWx1ZSwgMCwgd2lkdGgsIGhlaWdodCkpCi0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX3N0eWxlLT5z
ZXRQYWdlU2l6ZVR5cGUocGFnZVNpemVUeXBlKTsKLSAgICBtX3N0eWxlLT5zZXRQYWdlU2l6ZShM
ZW5ndGhTaXplKHdpZHRoLCBoZWlnaHQpKTsKLSAgICByZXR1cm47Ci19Ci0KLWJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZShDU1NQcmltaXRpdmVWYWx1ZSogcGFnZVNpemVO
YW1lLCBDU1NQcmltaXRpdmVWYWx1ZSogcGFnZU9yaWVudGF0aW9uLCBMZW5ndGgmIHdpZHRoLCBM
ZW5ndGgmIGhlaWdodCkKLXsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGE1V2lkdGggPSBtbUxl
bmd0aCgxNDgpLCBhNUhlaWdodCA9IG1tTGVuZ3RoKDIxMCk7Ci0gICAgc3RhdGljIGNvbnN0IExl
bmd0aCBhNFdpZHRoID0gbW1MZW5ndGgoMjEwKSwgYTRIZWlnaHQgPSBtbUxlbmd0aCgyOTcpOwot
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9IG1tTGVuZ3RoKDI5NyksIGEzSGVpZ2h0
ID0gbW1MZW5ndGgoNDIwKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI1V2lkdGggPSBtbUxl
bmd0aCgxNzYpLCBiNUhlaWdodCA9IG1tTGVuZ3RoKDI1MCk7Ci0gICAgc3RhdGljIGNvbnN0IExl
bmd0aCBiNFdpZHRoID0gbW1MZW5ndGgoMjUwKSwgYjRIZWlnaHQgPSBtbUxlbmd0aCgzNTMpOwot
ICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxl
dHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEpOwotICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGVn
YWxXaWR0aCA9IGluY2hMZW5ndGgoOC41KSwgbGVnYWxIZWlnaHQgPSBpbmNoTGVuZ3RoKDE0KTsK
LSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZGdlcldpZHRoID0gaW5jaExlbmd0aCgxMSksIGxl
ZGdlckhlaWdodCA9IGluY2hMZW5ndGgoMTcpOwotCi0gICAgaWYgKCFwYWdlU2l6ZU5hbWUgfHwg
cGFnZVNpemVOYW1lLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19J
REVOVCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUt
PmdldElkZW50KCkpIHsKLSAgICBjYXNlIENTU1ZhbHVlQTU6Ci0gICAgICAgIHdpZHRoID0gYTVX
aWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQ1NTVmFsdWVBNDoKLSAgICAgICAgd2lkdGggPSBhNFdpZHRoOwotICAgICAgICBoZWlnaHQg
PSBhNEhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUEzOgotICAgICAg
ICB3aWR0aCA9IGEzV2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGEzSGVpZ2h0OwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIENTU1ZhbHVlQjU6Ci0gICAgICAgIHdpZHRoID0gYjVXaWR0aDsKLSAg
ICAgICAgaGVpZ2h0ID0gYjVIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFs
dWVCNDoKLSAgICAgICAgd2lkdGggPSBiNFdpZHRoOwotICAgICAgICBoZWlnaHQgPSBiNEhlaWdo
dDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxldHRlcjoKLSAgICAgICAgd2lk
dGggPSBsZXR0ZXJXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGV0dGVySGVpZ2h0OwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIENTU1ZhbHVlTGVnYWw6Ci0gICAgICAgIHdpZHRoID0gbGVnYWxX
aWR0aDsKLSAgICAgICAgaGVpZ2h0ID0gbGVnYWxIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQ1NTVmFsdWVMZWRnZXI6Ci0gICAgICAgIHdpZHRoID0gbGVkZ2VyV2lkdGg7Ci0gICAg
ICAgIGhlaWdodCA9IGxlZGdlckhlaWdodDsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwYWdlT3JpZW50YXRpb24p
IHsKLSAgICAgICAgaWYgKHBhZ2VPcmllbnRhdGlvbi0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHN3aXRjaCAocGFnZU9yaWVudGF0aW9uLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgIGNhc2Ug
Q1NTVmFsdWVMYW5kc2NhcGU6Ci0gICAgICAgICAgICBzdGQ6OnN3YXAod2lkdGgsIGhlaWdodCk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDU1NWYWx1ZVBvcnRyYWl0OgotICAg
ICAgICAgICAgLy8gTm90aGluZyB0byBkby4KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAg
IHJldHVybiB0cnVlOwotfQotCi1MZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6bW1MZW5ndGgoZG91
YmxlIG1tKSBjb25zdAotewotICAgIHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG1t
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci19Ci0KLUxlbmd0aCBDU1NTdHlsZVNlbGVjdG9yOjpp
bmNoTGVuZ3RoKGRvdWJsZSBpbmNoKSBjb25zdAotewotICAgIHJldHVybiBDU1NQcmltaXRpdmVW
YWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVu
Z3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLX0KLQogdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0eUlELCBGaWxsTGF5ZXIq
IGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0luaXRpYWxWYWx1
ZSgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9u
IDEwMTIxNykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzNSwxMCArMzM1LDYgQEAgcHJpdmF0ZToKICAgICBib29sIGNhblNoYXJl
U3R5bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGFwcGx5
UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSopOwotICAgIHZvaWQgYXBwbHlQYWdlU2l6ZVByb3Bl
cnR5KENTU1ZhbHVlKik7Ci0gICAgYm9vbCBwYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZh
bHVlKiwgQ1NTUHJpbWl0aXZlVmFsdWUqLCBMZW5ndGgmIHdpZHRoLCBMZW5ndGgmIGhlaWdodCk7
Ci0gICAgTGVuZ3RoIG1tTGVuZ3RoKGRvdWJsZSBtbSkgY29uc3Q7Ci0gICAgTGVuZ3RoIGluY2hM
ZW5ndGgoZG91YmxlIGluY2gpIGNvbnN0OwogI2lmIEVOQUJMRShTVkcpCiAgICAgdm9pZCBhcHBs
eVNWR1Byb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUqKTsKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116837</attachid>
            <date>2011-11-28 15:11:03 -0800</date>
            <delta_ts>2011-11-28 19:24:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-73000-20111129101101.patch</filename>
            <type>text/plain</type>
            <size>15495</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTI4MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDExLTExLTI4ICBMdWtlIE1h
Y3BoZXJzb24gICA8bWFjcGhlcnNvbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50
IENTU1Byb3BlcnR5U2l6ZSBpbiBDU1NTdHlsZUFwcGx5UHJvcGVydHkuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzAwMAorCisgICAgICAgIFJldmll
d2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgVGhpcyByZWZhY3RvcmluZyBtb3ZlcyB0
aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHBhZ2Ugc2l6ZSBjYWxjdWxhdGlvbiBpbnRvIENTU1N0
eWxlQXBwbHlQcm9wZXJ0eQorICAgICAgICBhbmQgcmVtb3ZlcyB0aGUgZXhpc3RpbmcgY29kZSBm
cm9tIENTU1N0eWxlU2VsZWN0b3IuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jp
bmcgb25seS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjptbUxlbmd0aCk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmluY2hMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjpwYWdlU2l6ZUZyb21OYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlQYWdlU2l6ZTo6YXBwbHlJbmhlcml0VmFsdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjphcHBseUluaXRpYWxWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5UGFnZVNpemU6OmFwcGx5VmFsdWUp
OgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eVBhZ2VTaXplOjpjcmVhdGVIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBs
eVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorCiAyMDExLTExLTI4ICBGYWR5IFNhbXVlbCAgPGZzYW11
ZWxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZpeCBBc3BlY3QgUmF0aW8gUHJvcGVydHkgSW5o
ZXJpdGFuY2UgQW5kIE1ha2UgdGhlIENvbXB1dGVkIFZhbHVlIEVxdWFsIHRoZSBTcGVjaWZpZWQg
VmFsdWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHku
Y3BwCShyZXZpc2lvbiAxMDEyODIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVBcHBs
eVByb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzU2LDYgKzc1NiwxNDcgQEAgcHVibGlj
OgogICAgIH0KIH07CiAKK2NsYXNzIEFwcGx5UHJvcGVydHlQYWdlU2l6ZSB7Citwcml2YXRlOgor
ICAgIHN0YXRpYyBMZW5ndGggbW1MZW5ndGgoZG91YmxlIG1tKSB7IHJldHVybiBDU1NQcmltaXRp
dmVWYWx1ZTo6Y3JlYXRlKG1tLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01NKS0+Y29tcHV0ZUxl
bmd0aDxMZW5ndGg+KDAsIDApOyB9CisgICAgc3RhdGljIExlbmd0aCBpbmNoTGVuZ3RoKGRvdWJs
ZSBpbmNoKSB7IHJldHVybiBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfSU4pLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oMCwgMCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBnZXRQYWdlU2l6ZUZyb21OYW1lKENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlU2l6
ZU5hbWUsIENTU1ByaW1pdGl2ZVZhbHVlKiBwYWdlT3JpZW50YXRpb24sIExlbmd0aCYgd2lkdGgs
IExlbmd0aCYgaGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNVdp
ZHRoID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0aCgyMTApOworICAgICAgICBz
dGF0aWMgY29uc3QgTGVuZ3RoIGE0V2lkdGggPSBtbUxlbmd0aCgyMTApLCBhNEhlaWdodCA9IG1t
TGVuZ3RoKDI5Nyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBMZW5ndGggYTNXaWR0aCA9IG1tTGVu
Z3RoKDI5NyksIGEzSGVpZ2h0ID0gbW1MZW5ndGgoNDIwKTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IExlbmd0aCBiNVdpZHRoID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0aCgyNTAp
OworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGI0V2lkdGggPSBtbUxlbmd0aCgyNTApLCBi
NEhlaWdodCA9IG1tTGVuZ3RoKDM1Myk7CisgICAgICAgIHN0YXRpYyBjb25zdCBMZW5ndGggbGV0
dGVyV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxldHRlckhlaWdodCA9IGluY2hMZW5ndGgoMTEp
OworICAgICAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDgu
NSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0aCgxNCk7CisgICAgICAgIHN0YXRpYyBjb25zdCBM
ZW5ndGggbGVkZ2VyV2lkdGggPSBpbmNoTGVuZ3RoKDExKSwgbGVkZ2VySGVpZ2h0ID0gaW5jaExl
bmd0aCgxNyk7CisKKyAgICAgICAgaWYgKCFwYWdlU2l6ZU5hbWUpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChwYWdlU2l6ZU5hbWUtPmdldElkZW50KCkpIHsK
KyAgICAgICAgY2FzZSBDU1NWYWx1ZUE1OgorICAgICAgICAgICAgd2lkdGggPSBhNVdpZHRoOwor
ICAgICAgICAgICAgaGVpZ2h0ID0gYTVIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUE0OgorICAgICAgICAgICAgd2lkdGggPSBhNFdpZHRoOworICAgICAg
ICAgICAgaGVpZ2h0ID0gYTRIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDU1NWYWx1ZUEzOgorICAgICAgICAgICAgd2lkdGggPSBhM1dpZHRoOworICAgICAgICAgICAg
aGVpZ2h0ID0gYTNIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUI1OgorICAgICAgICAgICAgd2lkdGggPSBiNVdpZHRoOworICAgICAgICAgICAgaGVpZ2h0
ID0gYjVIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUI0
OgorICAgICAgICAgICAgd2lkdGggPSBiNFdpZHRoOworICAgICAgICAgICAgaGVpZ2h0ID0gYjRI
ZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxldHRlcjoK
KyAgICAgICAgICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7CisgICAgICAgICAgICBoZWlnaHQgPSBs
ZXR0ZXJIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZUxl
Z2FsOgorICAgICAgICAgICAgd2lkdGggPSBsZWdhbFdpZHRoOworICAgICAgICAgICAgaGVpZ2h0
ID0gbGVnYWxIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDU1NWYWx1
ZUxlZGdlcjoKKyAgICAgICAgICAgIHdpZHRoID0gbGVkZ2VyV2lkdGg7CisgICAgICAgICAgICBo
ZWlnaHQgPSBsZWRnZXJIZWlnaHQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChw
YWdlT3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgIHN3aXRjaCAocGFnZU9yaWVudGF0aW9uLT5n
ZXRJZGVudCgpKSB7CisgICAgICAgICAgICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgorICAgICAg
ICAgICAgICAgIHN0ZDo6c3dhcCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKKyAgICAgICAgICAgICAgICAv
LyBOb3RoaW5nIHRvIGRvLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorcHVibGljOgorICAgIHN0YXRpYyB2
b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2VsZWN0b3IqKSB7IH0KKyAgICBzdGF0aWMg
dm9pZCBhcHBseUluaXRpYWxWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKikgeyB9CisgICAgc3RhdGlj
IHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3ItPnN0eWxlKCktPnJlc2V0UGFnZVNpemVUeXBl
KCk7CisgICAgICAgIExlbmd0aCB3aWR0aDsKKyAgICAgICAgTGVuZ3RoIGhlaWdodDsKKyAgICAg
ICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPOworICAgICAgICBD
U1NWYWx1ZUxpc3RJbnNwZWN0b3IgaW5zcGVjdG9yKHZhbHVlKTsKKyAgICAgICAgc3dpdGNoIChp
bnNwZWN0b3IubGVuZ3RoKCkpIHsKKyAgICAgICAgY2FzZSAyOiB7CisgICAgICAgICAgICAvLyA8
bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KKyAgICAgICAgICAgIGlmICgh
aW5zcGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUoKSB8fCAhaW5zcGVjdG9yLnNlY29u
ZCgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7CisgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2Vjb25kID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3Iuc2Vj
b25kKCkpOworICAgICAgICAgICAgaWYgKGZpcnN0LT5pc0xlbmd0aCgpKSB7CisgICAgICAgICAg
ICAgICAgLy8gPGxlbmd0aD57Mn0KKyAgICAgICAgICAgICAgICBpZiAoIXNlY29uZC0+aXNMZW5n
dGgoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHdpZHRo
ID0gZmlyc3QtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0
b3ItPnJvb3RFbGVtZW50U3R5bGUoKSk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gc2Vjb25k
LT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc2VsZWN0b3ItPnN0eWxlKCksIHNlbGVjdG9yLT5yb290
RWxlbWVudFN0eWxlKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAv
LyA8cGFnZS1zaXplPiA8b3JpZW50YXRpb24+CisgICAgICAgICAgICAgICAgLy8gVGhlIHZhbHVl
IG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6ZVBhcmFtZXRlci4K
KyAgICAgICAgICAgICAgICBpZiAoIWdldFBhZ2VTaXplRnJvbU5hbWUoZmlyc3QsIHNlY29uZCwg
d2lkdGgsIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgMTogeworICAgICAgICAgICAg
Ly8gPGxlbmd0aD4gfCBhdXRvIHwgPHBhZ2Utc2l6ZT4gfCBbIHBvcnRyYWl0IHwgbGFuZHNjYXBl
XQorICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3IuZmlyc3QoKS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaW5zcGVj
dG9yLmZpcnN0KCkpOworICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5pc0xlbmd0aCgp
KSB7CisgICAgICAgICAgICAgICAgLy8gPGxlbmd0aD4KKyAgICAgICAgICAgICAgICBwYWdlU2l6
ZVR5cGUgPSBQQUdFX1NJWkVfUkVTT0xWRUQ7CisgICAgICAgICAgICAgICAgd2lkdGggPSBoZWln
aHQgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHNlbGVjdG9yLT5zdHls
ZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIHN3aXRjaCAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgICAgICAgICAgICAg
cGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE87CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFpdDoKKyAgICAgICAgICAgICAg
ICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FVVE9fUE9SVFJBSVQ7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVMYW5kc2NhcGU6
CisgICAgICAgICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9BVVRPX0xBTkRT
Q0FQRTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4KKyAgICAgICAgICAgICAgICAg
ICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWdldFBhZ2VTaXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUsIDAsIHdpZHRoLCBoZWln
aHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2VsZWN0b3It
PnN0eWxlKCktPnNldFBhZ2VTaXplVHlwZShwYWdlU2l6ZVR5cGUpOworICAgICAgICBzZWxlY3Rv
ci0+c3R5bGUoKS0+c2V0UGFnZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CisgICAg
fQorICAgIHN0YXRpYyBQcm9wZXJ0eUhhbmRsZXIgY3JlYXRlSGFuZGxlcigpIHsgcmV0dXJuIFBy
b3BlcnR5SGFuZGxlcigmYXBwbHlJbmhlcml0VmFsdWUsICZhcHBseUluaXRpYWxWYWx1ZSwgJmFw
cGx5VmFsdWUpOyB9Cit9OworCiBjbGFzcyBBcHBseVByb3BlcnR5VGV4dEVtcGhhc2lzU3R5bGUg
ewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5SW5oZXJpdFZhbHVlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yKQpAQCAtMTE3MSw2ICsxMzEyLDggQEAgQ1NTU3R5bGVBcHBseVByb3Bl
cnR5OjpDU1NTdHlsZUFwcGx5UHJvcAogCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3Bl
cnR5VmVydGljYWxBbGlnbiwgQXBwbHlQcm9wZXJ0eVZlcnRpY2FsQWxpZ246OmNyZWF0ZUhhbmRs
ZXIoKSk7CiAKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlTaXplLCBBcHBseVBy
b3BlcnR5UGFnZVNpemU6OmNyZWF0ZUhhbmRsZXIoKSk7CisKICAgICBzZXRQcm9wZXJ0eUhhbmRs
ZXIoQ1NTUHJvcGVydHlXZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIEFwcGx5UHJvcGVydHlMZW5n
dGg8JlJlbmRlclN0eWxlOjpwZXJzcGVjdGl2ZU9yaWdpblgsICZSZW5kZXJTdHlsZTo6c2V0UGVy
c3BlY3RpdmVPcmlnaW5YLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblg+
OjpjcmVhdGVIYW5kbGVyKCkpOwogICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVdl
YmtpdFBlcnNwZWN0aXZlT3JpZ2luWSwgQXBwbHlQcm9wZXJ0eUxlbmd0aDwmUmVuZGVyU3R5bGU6
OnBlcnNwZWN0aXZlT3JpZ2luWSwgJlJlbmRlclN0eWxlOjpzZXRQZXJzcGVjdGl2ZU9yaWdpblks
ICZSZW5kZXJTdHlsZTo6aW5pdGlhbFBlcnNwZWN0aXZlT3JpZ2luWT46OmNyZWF0ZUhhbmRsZXIo
KSk7CiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVP
cmlnaW4sIEFwcGx5UHJvcGVydHlFeHBhbmRpbmc8U3VwcHJlc3NWYWx1ZSwgQ1NTUHJvcGVydHlX
ZWJraXRQZXJzcGVjdGl2ZU9yaWdpblgsIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3RpdmVPcmln
aW5ZPjo6Y3JlYXRlSGFuZGxlcigpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEwMTI4MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYyNiw5ICszNjI2LDYgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRDb2xvckNvcnJlY3Rpb246CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMX0FORF9QUklNSVRJVkUoY29sb3JTcGFjZSwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIENTU1Byb3BlcnR5U2l6ZToKLSAgICAgICAgYXBwbHlQYWdlU2l6ZVByb3Bl
cnR5KHZhbHVlKTsKLSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlTcGVhazoK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUxfQU5EX1BSSU1JVElWRShzcGVhaywg
U3BlYWspOwogICAgICAgICByZXR1cm47CkBAIC0zODk1LDYgKzM4OTIsNyBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRp
bmdCb3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBhZGRpbmdMZWZ0OgogICAgIGNhc2UgQ1NT
UHJvcGVydHlQYWRkaW5nOgorICAgIGNhc2UgQ1NTUHJvcGVydHlTaXplOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0QWxpZ246CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRJbmRlbnQ6CiAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU1heEhlaWdodDoKQEAgLTM5NTIsMTUyICszOTUwLDYgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIH0KIH0KIAotdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVBhZ2VTaXplUHJvcGVydHkoQ1NTVmFsdWUqIHZhbHVlKQotewot
ICAgIG1fc3R5bGUtPnJlc2V0UGFnZVNpemVUeXBlKCk7Ci0gICAgTGVuZ3RoIHdpZHRoOwotICAg
IExlbmd0aCBoZWlnaHQ7Ci0gICAgUGFnZVNpemVUeXBlIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0la
RV9BVVRPOwotICAgIENTU1ZhbHVlTGlzdEluc3BlY3RvciBpbnNwZWN0b3IgPSB2YWx1ZTsKLSAg
ICBzd2l0Y2ggKGluc3BlY3Rvci5sZW5ndGgoKSkgewotICAgIGNhc2UgMjogewotICAgICAgICAv
LyA8bGVuZ3RoPnsyfSB8IDxwYWdlLXNpemU+IDxvcmllbnRhdGlvbj4KLSAgICAgICAgcGFnZVNp
emVUeXBlID0gUEFHRV9TSVpFX1JFU09MVkVEOwotICAgICAgICBpZiAoIWluc3BlY3Rvci5maXJz
dCgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkgfHwgIWluc3BlY3Rvci5zZWNvbmQoKS0+aXNQcmltaXRp
dmVWYWx1ZSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogZmlyc3QgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGluc3BlY3Rvci5maXJz
dCgpKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZCA9IHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4oaW5zcGVjdG9yLnNlY29uZCgpKTsKLSAgICAgICAgaWYgKGZpcnN0
LT5pc0xlbmd0aCgpKSB7Ci0gICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQotICAgICAgICAgICAg
aWYgKCFzZWNvbmQtPmlzTGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgd2lkdGggPSBmaXJzdC0+Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBzZWNvbmQtPmNvbXB1dGVMZW5n
dGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgLy8gPHBhZ2Utc2l6ZT4gPG9yaWVudGF0aW9uPgotICAgICAgICAgICAg
Ly8gVGhlIHZhbHVlIG9yZGVyIGlzIGd1YXJhbnRlZWQuIFNlZSBDU1NQYXJzZXI6OnBhcnNlU2l6
ZVBhcmFtZXRlci4KLSAgICAgICAgICAgIGlmICghcGFnZVNpemVGcm9tTmFtZShmaXJzdCwgc2Vj
b25kLCB3aWR0aCwgaGVpZ2h0KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgMTogewotICAgICAgICAvLyA8bGVuZ3Ro
PiB8IGF1dG8gfCA8cGFnZS1zaXplPiB8IFsgcG9ydHJhaXQgfCBsYW5kc2NhcGVdCi0gICAgICAg
IGlmICghaW5zcGVjdG9yLmZpcnN0KCktPmlzUHJpbWl0aXZlVmFsdWUoKSkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpbnNwZWN0b3IuZmlyc3QoKSk7Ci0gICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+aXNMZW5ndGgoKSkgewotICAgICAgICAgICAgLy8gPGxlbmd0
aD4KLSAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAg
ICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVu
Z3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgIT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19JREVOVCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpKSB7Ci0gICAgICAgICAgICBjYXNl
IENTU1ZhbHVlQXV0bzoKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVf
QVVUTzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFsdWVQ
b3J0cmFpdDoKLSAgICAgICAgICAgICAgICBwYWdlU2l6ZVR5cGUgPSBQQUdFX1NJWkVfQVVUT19Q
T1JUUkFJVDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQ1NTVmFs
dWVMYW5kc2NhcGU6Ci0gICAgICAgICAgICAgICAgcGFnZVNpemVUeXBlID0gUEFHRV9TSVpFX0FV
VE9fTEFORFNDQVBFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICAvLyA8cGFnZS1zaXplPgotICAgICAgICAgICAgICAgIHBhZ2VT
aXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAgICAgICAgICAgICAgICBpZiAoIXBhZ2VT
aXplRnJvbU5hbWUocHJpbWl0aXZlVmFsdWUsIDAsIHdpZHRoLCBoZWlnaHQpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9z
dHlsZS0+c2V0UGFnZVNpemVUeXBlKHBhZ2VTaXplVHlwZSk7Ci0gICAgbV9zdHlsZS0+c2V0UGFn
ZVNpemUoTGVuZ3RoU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgcmV0dXJuOwotfQotCi1ib29s
IENTU1N0eWxlU2VsZWN0b3I6OnBhZ2VTaXplRnJvbU5hbWUoQ1NTUHJpbWl0aXZlVmFsdWUqIHBh
Z2VTaXplTmFtZSwgQ1NTUHJpbWl0aXZlVmFsdWUqIHBhZ2VPcmllbnRhdGlvbiwgTGVuZ3RoJiB3
aWR0aCwgTGVuZ3RoJiBoZWlnaHQpCi17Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBhNVdpZHRo
ID0gbW1MZW5ndGgoMTQ4KSwgYTVIZWlnaHQgPSBtbUxlbmd0aCgyMTApOwotICAgIHN0YXRpYyBj
b25zdCBMZW5ndGggYTRXaWR0aCA9IG1tTGVuZ3RoKDIxMCksIGE0SGVpZ2h0ID0gbW1MZW5ndGgo
Mjk3KTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGEzV2lkdGggPSBtbUxlbmd0aCgyOTcpLCBh
M0hlaWdodCA9IG1tTGVuZ3RoKDQyMCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBiNVdpZHRo
ID0gbW1MZW5ndGgoMTc2KSwgYjVIZWlnaHQgPSBtbUxlbmd0aCgyNTApOwotICAgIHN0YXRpYyBj
b25zdCBMZW5ndGggYjRXaWR0aCA9IG1tTGVuZ3RoKDI1MCksIGI0SGVpZ2h0ID0gbW1MZW5ndGgo
MzUzKTsKLSAgICBzdGF0aWMgY29uc3QgTGVuZ3RoIGxldHRlcldpZHRoID0gaW5jaExlbmd0aCg4
LjUpLCBsZXR0ZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDExKTsKLSAgICBzdGF0aWMgY29uc3QgTGVu
Z3RoIGxlZ2FsV2lkdGggPSBpbmNoTGVuZ3RoKDguNSksIGxlZ2FsSGVpZ2h0ID0gaW5jaExlbmd0
aCgxNCk7Ci0gICAgc3RhdGljIGNvbnN0IExlbmd0aCBsZWRnZXJXaWR0aCA9IGluY2hMZW5ndGgo
MTEpLCBsZWRnZXJIZWlnaHQgPSBpbmNoTGVuZ3RoKDE3KTsKLQotICAgIGlmICghcGFnZVNpemVO
YW1lIHx8IHBhZ2VTaXplTmFtZS0+cHJpbWl0aXZlVHlwZSgpICE9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfSURFTlQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHN3aXRjaCAocGFnZVNp
emVOYW1lLT5nZXRJZGVudCgpKSB7Ci0gICAgY2FzZSBDU1NWYWx1ZUE1OgotICAgICAgICB3aWR0
aCA9IGE1V2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGE1SGVpZ2h0OwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIENTU1ZhbHVlQTQ6Ci0gICAgICAgIHdpZHRoID0gYTRXaWR0aDsKLSAgICAgICAg
aGVpZ2h0ID0gYTRIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVBMzoK
LSAgICAgICAgd2lkdGggPSBhM1dpZHRoOwotICAgICAgICBoZWlnaHQgPSBhM0hlaWdodDsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUI1OgotICAgICAgICB3aWR0aCA9IGI1V2lk
dGg7Ci0gICAgICAgIGhlaWdodCA9IGI1SGVpZ2h0OwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IENTU1ZhbHVlQjQ6Ci0gICAgICAgIHdpZHRoID0gYjRXaWR0aDsKLSAgICAgICAgaGVpZ2h0ID0g
YjRIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ1NTVmFsdWVMZXR0ZXI6Ci0gICAg
ICAgIHdpZHRoID0gbGV0dGVyV2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGxldHRlckhlaWdodDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDU1NWYWx1ZUxlZ2FsOgotICAgICAgICB3aWR0aCA9
IGxlZ2FsV2lkdGg7Ci0gICAgICAgIGhlaWdodCA9IGxlZ2FsSGVpZ2h0OwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIENTU1ZhbHVlTGVkZ2VyOgotICAgICAgICB3aWR0aCA9IGxlZGdlcldpZHRo
OwotICAgICAgICBoZWlnaHQgPSBsZWRnZXJIZWlnaHQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAocGFnZU9yaWVu
dGF0aW9uKSB7Ci0gICAgICAgIGlmIChwYWdlT3JpZW50YXRpb24tPnByaW1pdGl2ZVR5cGUoKSAh
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICBzd2l0Y2ggKHBhZ2VPcmllbnRhdGlvbi0+Z2V0SWRlbnQoKSkgewotICAgICAg
ICBjYXNlIENTU1ZhbHVlTGFuZHNjYXBlOgotICAgICAgICAgICAgc3RkOjpzd2FwKHdpZHRoLCBo
ZWlnaHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTVmFsdWVQb3J0cmFp
dDoKLSAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8uCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
IH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotTGVuZ3RoIENTU1N0eWxlU2VsZWN0b3I6Om1tTGVu
Z3RoKGRvdWJsZSBtbSkgY29uc3QKLXsKLSAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShtbSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19NTSktPmNvbXB1dGVMZW5ndGg8TGVuZ3Ro
PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwotfQotCi1MZW5ndGggQ1NTU3R5bGVTZWxl
Y3Rvcjo6aW5jaExlbmd0aChkb3VibGUgaW5jaCkgY29uc3QKLXsKLSAgICByZXR1cm4gQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShpbmNoLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci19Ci0KIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbEF0dGFjaG1lbnQoQ1NTUHJvcGVydHlJRCwgRmls
bExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZS0+aXNJbml0
aWFsVmFsdWUoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCShy
ZXZpc2lvbiAxMDEyODIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsMTAgKzMzNSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBj
YW5TaGFyZVN0eWxlV2l0aENvbnRyb2woU3R5bGVkRWxlbWVudCopIGNvbnN0OwogCiAgICAgdm9p
ZCBhcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUqKTsKLSAgICB2b2lkIGFwcGx5UGFnZVNp
emVQcm9wZXJ0eShDU1NWYWx1ZSopOwotICAgIGJvb2wgcGFnZVNpemVGcm9tTmFtZShDU1NQcmlt
aXRpdmVWYWx1ZSosIENTU1ByaW1pdGl2ZVZhbHVlKiwgTGVuZ3RoJiB3aWR0aCwgTGVuZ3RoJiBo
ZWlnaHQpOwotICAgIExlbmd0aCBtbUxlbmd0aChkb3VibGUgbW0pIGNvbnN0OwotICAgIExlbmd0
aCBpbmNoTGVuZ3RoKGRvdWJsZSBpbmNoKSBjb25zdDsKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZv
aWQgYXBwbHlTVkdQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlKik7CiAjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>