<?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>103948</bug_id>
          
          <creation_ts>2012-12-03 16:40:46 -0800</creation_ts>
          <short_desc>Encapsulate ElementRareData for possible future sharing</short_desc>
          <delta_ts>2012-12-05 12:44:39 -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>New Bugs</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="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kling</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782025</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 16:40:46 -0800</bug_when>
    <thetext>Encapsulate ElementRareData for possible future sharing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782033</commentid>
    <comment_count>1</comment_count>
      <attachid>177372</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 16:46:43 -0800</bug_when>
    <thetext>Created attachment 177372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782050</commentid>
    <comment_count>2</comment_count>
      <attachid>177375</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 17:05:32 -0800</bug_when>
    <thetext>Created attachment 177375
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782142</commentid>
    <comment_count>3</comment_count>
      <attachid>177375</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-03 19:37:55 -0800</bug_when>
    <thetext>Comment on attachment 177375
Patch

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

&gt; Source/WebCore/dom/NodeRareData.h:-365
&gt;  protected:
&gt; -    // for ElementRareData
&gt; -    bool needsFocusAppearanceUpdateSoonAfterAttach() const { return m_needsFocusAppearanceUpdateSoonAfterAttach; }
&gt; -    void setNeedsFocusAppearanceUpdateSoonAfterAttach(bool needs) { m_needsFocusAppearanceUpdateSoonAfterAttach = needs; }
&gt; -    bool styleAffectedByEmpty() const { return m_styleAffectedByEmpty; }
&gt; -    void setStyleAffectedByEmpty(bool value) { m_styleAffectedByEmpty = value; }
&gt; -    bool isInCanvasSubtree() const { return m_isInCanvasSubtree; }
&gt; -    void setIsInCanvasSubtree(bool value) { m_isInCanvasSubtree = value; }
&gt; -#if ENABLE(FULLSCREEN_API)
&gt; -    bool containsFullScreenElement() { return m_containsFullScreenElement; }
&gt; -    void setContainsFullScreenElement(bool value) { m_containsFullScreenElement = value; }
&gt; -#endif
&gt; -#if ENABLE(DIALOG_ELEMENT)
&gt; -    bool isInTopLayer() const { return m_isInTopLayer; }
&gt; -    void setIsInTopLayer(bool value) { m_isInTopLayer = value; }
&gt; -#endif
&gt; -    bool childrenAffectedByHover() const { return m_childrenAffectedByHover; }
&gt; -    void setChildrenAffectedByHover(bool value) { m_childrenAffectedByHover = value; }
&gt; -    bool childrenAffectedByActive() const { return m_childrenAffectedByActive; }
&gt; -    void setChildrenAffectedByActive(bool value) { m_childrenAffectedByActive = value; }
&gt; -    bool childrenAffectedByDrag() const { return m_childrenAffectedByDrag; }
&gt; -    void setChildrenAffectedByDrag(bool value) { m_childrenAffectedByDrag = value; }
&gt; -
&gt; -    bool childrenAffectedByFirstChildRules() const { return m_childrenAffectedByFirstChildRules; }
&gt; -    void setChildrenAffectedByFirstChildRules(bool value) { m_childrenAffectedByFirstChildRules = value; }
&gt; -    bool childrenAffectedByLastChildRules() const { return m_childrenAffectedByLastChildRules; }
&gt; -    void setChildrenAffectedByLastChildRules(bool value) { m_childrenAffectedByLastChildRules = value; }
&gt; -    bool childrenAffectedByDirectAdjacentRules() const { return m_childrenAffectedByDirectAdjacentRules; }
&gt; -    void setChildrenAffectedByDirectAdjacentRules(bool value) { m_childrenAffectedByDirectAdjacentRules = value; }
&gt; -    bool childrenAffectedByForwardPositionalRules() const { return m_childrenAffectedByForwardPositionalRules; }
&gt; -    void setChildrenAffectedByForwardPositionalRules(bool value) { m_childrenAffectedByForwardPositionalRules = value; }
&gt; -    bool childrenAffectedByBackwardPositionalRules() const { return m_childrenAffectedByBackwardPositionalRules; }
&gt; -    void setChildrenAffectedByBackwardPositionalRules(bool value) { m_childrenAffectedByBackwardPositionalRules = value; }
&gt; -    unsigned childIndex() const { return m_childIndex; }
&gt; -    void setChildIndex(unsigned index) { m_childIndex = index; }
&gt; -
&gt; -private:

Why this change? Your change log does not make clear why this is desirable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782143</commentid>
    <comment_count>4</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-03 19:45:19 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 177375 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177375&amp;action=review
&gt; ..
&gt; 
&gt; Why this change? Your change log does not make clear why this is desirable.

It&apos;s less code and is more clear. Putting all the methods in NodeRareData and then &quot;using&quot; them in ElementRareData means every method name is duplicated and if you&apos;re looking for a method on ElementRareData you first look there and then have to look in another file. The properties are in NodeRareData for packing reasons, but that doesn&apos;t mean the methods need to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782996</commentid>
    <comment_count>5</comment_count>
      <attachid>177375</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-04 15:03:14 -0800</bug_when>
    <thetext>Comment on attachment 177375
Patch

This looks great.  I don&apos;t think you meant to make everything protected, as Darin notes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783081</commentid>
    <comment_count>6</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-04 16:25:34 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 177375 [details])
&gt; This looks great.  I don&apos;t think you meant to make everything protected, as Darin notes.

Not sure what you mean. The fields in NodeRareData need to be protected so they&apos;re accessible from ElementRareData where I moved the methods to remove the giant block of &quot;using&quot; statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783999</commentid>
    <comment_count>7</comment_count>
      <attachid>177375</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-05 12:37:46 -0800</bug_when>
    <thetext>Comment on attachment 177375
Patch

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784008</commentid>
    <comment_count>8</comment_count>
      <attachid>177375</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:44:35 -0800</bug_when>
    <thetext>Comment on attachment 177375
Patch

Clearing flags on attachment: 177375

Committed r136738: &lt;http://trac.webkit.org/changeset/136738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784009</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 12:44:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177372</attachid>
            <date>2012-12-03 16:46:43 -0800</date>
            <delta_ts>2012-12-03 17:05:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103948-20121203164409.patch</filename>
            <type>text/plain</type>
            <size>20631</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZkNzRjMTYxOWQ0YWE3
OGJmYWU1ZTFhNWZhOTRiZDA2MDZmZDIyYS4uNzhhMTcwNWQ5M2Y1ZTViNTA2ZTFhOGNjNTY4NmY0
MjA1MTBlOTZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTAzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIEVs
ZW1lbnRSYXJlRGF0YSBmb3IgcG9zc2libGUgZnV0dXJlIHNoYXJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuY2Fwc3VsYXRlIEVsZW1lbnRSYXJl
RGF0YSBhbmQgbWFrZSBhbGwgYWNjZXNzIGdvIHRocm91Z2ggZ2V0dGVycyBhbmQKKyAgICAgICAg
c2V0dGVycy4gVGhpcyBpcyBhbHJlYWR5IHRydWUgZm9yIE5vZGVSYXJlRGF0YSwgYnV0IEVsZW1l
bnRSYXJlRGF0YQorICAgICAgICBoYWQgbWFueSBwbGFjZXMgd2hlcmUgcGVvcGxlIGRpcmVjdGx5
IGFjY2VzcyBpdC4KKworICAgICAgICBUaGlzIGFsbG93cyBwb3NzaWJsZSBmdXR1cmUgc2hhcmlu
ZyBvZiBFbGVtZW50UmFyZURhdGEgaW5zdGFuY2VzIGFjcm9zcworICAgICAgICBub2RlcyB3aGVy
ZSB3ZSBjb3VsZCBob29rIHRoZSBzZXR0ZXJzIGFuZCBhbGxvY2F0ZSBhbiB1bnNoYXJlZCBpbnN0
YW5jZQorICAgICAgICBpZiBuZWVkZWQuIFRoaXMgaXMgYXR0cmFjdGl2ZSBiZWNhdXNlIG5vZGVz
IGluIGEgc2hhZG93IHRyZWUgYWxsIGhhdmUKKyAgICAgICAgcmFyZSBkYXRhIHRvIHN0b3JlIHRo
ZSBUcmVlU2NvcGUsIGJ1dCBpbiBtb3N0IGNhc2VzIGFsbCB0aGV5IGhhdmUgaXMgdGhlCisgICAg
ICAgIFRyZWVTY29wZSEgSW5zdGVhZCBvZiBtYWtpbmcgZXZlcnkgbm9kZSBpbiBhIHNoYWRvdyBz
dWJ0cmVlIGhhdmUgcmFyZSBkYXRhCisgICAgICAgIGFuZCB1c2UgbG90cyBvZiBtZW1vcnkgd2Ug
Y291bGQganVzdCBzaGFyZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiByYXJlIGRhdGEKKyAgICAgICAg
YW5kIG9ubHkgYWxsb2NhdGUgYSB1bmlxdWUgb25lIG9uIG1vZGlmaWNhdGlvbi4KKworICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6On5FbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3Vy
ZVNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjptaW5pbXVtU2l6ZUZvclJlc2l6
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVzaXpp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6b3B0aW9uYWxDbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGF0YXNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNOYW1lZE5vZGVNYXApOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2F2ZWRMYXllclNjcm9sbE9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpzZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKiBk
b20vRWxlbWVudFJhcmVEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6bmVlZHNGb2N1c0FwcGVhcmFuY2VV
cGRhdGVTb29uQWZ0ZXJBdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpzZXROZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCk6CisgICAgICAg
IChFbGVtZW50UmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpz
dHlsZUFmZmVjdGVkQnlFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6aXNJbkNhbnZhc1N1YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVE
YXRhOjpzZXRJc0luQ2FudmFzU3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFy
ZURhdGE6OmNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJhcmVEYXRhOjpzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6aXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNJblRvcExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcik6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUFj
dGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0
ZWRCeURyYWcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJl
bkFmZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURh
dGE6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2Vu
dFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2hpbGRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OnNldENoaWxkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudFJhcmVEYXRhOjpzaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjphdHRyaWJ1
dGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRBdHRyaWJ1dGVN
YXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjb21wdXRlZFN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q29tcHV0ZWRTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNsYXNzTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENsYXNzTGlzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpzZXREYXRhc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6
bWluaW11bVNpemVGb3JSZXNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURh
dGE6OnNldE1pbmltdW1TaXplRm9yUmVzaXppbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSk6CisgICAgICAgICogZG9t
L05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoTm9kZVJhcmVEYXRhKToKKwogMjAxMi0xMi0wMyAg
UGllcnJlIFJvc3NpICA8cGllcnJlLnJvc3NpQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIFVu
cmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIxMzY0MTAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRl
eCA0ZGMwYzVkZjUzYTkyM2JmOWJlOWNmMGFlZmU0MjczZWQ0MGQ3ZmU0Li5kZGVjYTg2OTU5OGNi
OTI2MzdlNDg4OWJlYTVlNDNjYzRkMGRkMmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0x
OTAsNyArMTkwLDcgQEAgRWxlbWVudDo6fkVsZW1lbnQoKQogCiAgICAgaWYgKEVsZW1lbnRTaGFk
b3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3coKSkgewogICAgICAgICBlbGVtZW50U2hhZG93LT5y
ZW1vdmVBbGxTaGFkb3dSb290cygpOwotICAgICAgICBlbGVtZW50UmFyZURhdGEoKS0+bV9zaGFk
b3cuY2xlYXIoKTsKKyAgICAgICAgZWxlbWVudFJhcmVEYXRhKCktPnNldFNoYWRvdyhudWxscHRy
KTsKICAgICB9CiAKICAgICBpZiAoaGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMoKSkKQEAgLTI4
NywxMSArMjg3LDExIEBAIE5hbWVkTm9kZU1hcCogRWxlbWVudDo6YXR0cmlidXRlcygpIGNvbnN0
CiB7CiAgICAgZW5zdXJlVXBkYXRlZEF0dHJpYnV0ZURhdGEoKTsKICAgICBFbGVtZW50UmFyZURh
dGEqIHJhcmVEYXRhID0gY29uc3RfY2FzdDxFbGVtZW50Kj4odGhpcyktPmVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwotICAgIGlmIChOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZU1hcCA9IHJhcmVEYXRh
LT5tX2F0dHJpYnV0ZU1hcC5nZXQoKSkKKyAgICBpZiAoTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVN
YXAgPSByYXJlRGF0YS0+YXR0cmlidXRlTWFwKCkpCiAgICAgICAgIHJldHVybiBhdHRyaWJ1dGVN
YXA7CiAKLSAgICByYXJlRGF0YS0+bV9hdHRyaWJ1dGVNYXAgPSBOYW1lZE5vZGVNYXA6OmNyZWF0
ZShjb25zdF9jYXN0PEVsZW1lbnQqPih0aGlzKSk7Ci0gICAgcmV0dXJuIHJhcmVEYXRhLT5tX2F0
dHJpYnV0ZU1hcC5nZXQoKTsKKyAgICByYXJlRGF0YS0+c2V0QXR0cmlidXRlTWFwKE5hbWVkTm9k
ZU1hcDo6Y3JlYXRlKGNvbnN0X2Nhc3Q8RWxlbWVudCo+KHRoaXMpKSk7CisgICAgcmV0dXJuIHJh
cmVEYXRhLT5hdHRyaWJ1dGVNYXAoKTsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9k
ZVR5cGUoKSBjb25zdApAQCAtMTM1MSwxNyArMTM1MSwxNyBAQCBFbGVtZW50U2hhZG93KiBFbGVt
ZW50OjpzaGFkb3coKSBjb25zdAogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPm1fc2hhZG93LmdldCgpOwor
ICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+c2hhZG93KCk7CiB9CiAKIEVsZW1lbnRTaGFk
b3cqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvdygpCiB7Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNo
YWRvdyA9IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5tX3NoYWRvdy5nZXQoKSkKKyAgICBpZiAo
RWxlbWVudFNoYWRvdyogc2hhZG93ID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCktPnNoYWRvdygp
KQogICAgICAgICByZXR1cm4gc2hhZG93OwogCiAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0g
ZWxlbWVudFJhcmVEYXRhKCk7Ci0gICAgZGF0YS0+bV9zaGFkb3cgPSBhZG9wdFB0cihuZXcgRWxl
bWVudFNoYWRvdygpKTsKLSAgICByZXR1cm4gZGF0YS0+bV9zaGFkb3cuZ2V0KCk7CisgICAgZGF0
YS0+c2V0U2hhZG93KGFkb3B0UHRyKG5ldyBFbGVtZW50U2hhZG93KCkpKTsKKyAgICByZXR1cm4g
ZGF0YS0+c2hhZG93KCk7CiB9CiAKIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3Jl
YXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJiBlYykKQEAgLTE4NTQsMTQgKzE4NTQsMTQgQEAg
dm9pZCBFbGVtZW50OjpzZXRQc2V1ZG8oY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIAogTGF5
b3V0U2l6ZSBFbGVtZW50OjptaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5tX21pbmltdW1TaXplRm9y
UmVzaXppbmcgOiBkZWZhdWx0TWluaW11bVNpemVGb3JSZXNpemluZygpOworICAgIHJldHVybiBo
YXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPm1pbmltdW1TaXplRm9yUmVzaXppbmco
KSA6IGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6
c2V0TWluaW11bVNpemVGb3JSZXNpemluZyhjb25zdCBMYXlvdXRTaXplJiBzaXplKQogewotICAg
IGlmIChzaXplID09IGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgJiYgIWhhc1JhcmVE
YXRhKCkpCisgICAgaWYgKCFoYXNSYXJlRGF0YSgpICYmIHNpemUgPT0gZGVmYXVsdE1pbmltdW1T
aXplRm9yUmVzaXppbmcoKSkKICAgICAgICAgcmV0dXJuOwotICAgIGVuc3VyZUVsZW1lbnRSYXJl
RGF0YSgpLT5tX21pbmltdW1TaXplRm9yUmVzaXppbmcgPSBzaXplOworICAgIGVuc3VyZUVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKHNpemUpOwogfQogCiBSZW5k
ZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyKQpAQCAtMTg4Myw5ICsxODgzLDkgQEAgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1
dGVkU3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbnN1cmVFbGVtZW50UmFyZURhdGEo
KTsKLSAgICBpZiAoIWRhdGEtPm1fY29tcHV0ZWRTdHlsZSkKLSAgICAgICAgZGF0YS0+bV9jb21w
dXRlZFN0eWxlID0gZG9jdW1lbnQoKS0+c3R5bGVGb3JFbGVtZW50SWdub3JpbmdQZW5kaW5nU3R5
bGVzaGVldHModGhpcyk7Ci0gICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRTcGVjaWZpZXIgPyBkYXRh
LT5tX2NvbXB1dGVkU3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0VsZW1lbnRTcGVj
aWZpZXIpIDogZGF0YS0+bV9jb21wdXRlZFN0eWxlLmdldCgpOworICAgIGlmICghZGF0YS0+Y29t
cHV0ZWRTdHlsZSgpKQorICAgICAgICBkYXRhLT5zZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50KCkt
PnN0eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKHRoaXMpKTsKKyAgICBy
ZXR1cm4gcHNldWRvRWxlbWVudFNwZWNpZmllciA/IGRhdGEtPmNvbXB1dGVkU3R5bGUoKS0+Z2V0
Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcikgOiBkYXRhLT5jb21wdXRl
ZFN0eWxlKCk7CiB9CiAKIHZvaWQgRWxlbWVudDo6c2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoKQpA
QCAtMjExMiwyNCArMjExMiwyNCBAQCBib29sIEVsZW1lbnQ6OndlYmtpdE1hdGNoZXNTZWxlY3Rv
cihjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlJiBlYykKIERPTVRva2VuTGlz
dCogRWxlbWVudDo6Y2xhc3NMaXN0KCkKIHsKICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBpZiAoIWRhdGEtPm1fY2xhc3NMaXN0KQotICAg
ICAgICBkYXRhLT5tX2NsYXNzTGlzdCA9IENsYXNzTGlzdDo6Y3JlYXRlKHRoaXMpOwotICAgIHJl
dHVybiBkYXRhLT5tX2NsYXNzTGlzdC5nZXQoKTsKKyAgICBpZiAoIWRhdGEtPmNsYXNzTGlzdCgp
KQorICAgICAgICBkYXRhLT5zZXRDbGFzc0xpc3QoQ2xhc3NMaXN0OjpjcmVhdGUodGhpcykpOwor
ICAgIHJldHVybiBkYXRhLT5jbGFzc0xpc3QoKTsKIH0KIAogRE9NVG9rZW5MaXN0KiBFbGVtZW50
OjpvcHRpb25hbENsYXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRhKCktPm1fY2xhc3NM
aXN0LmdldCgpOworICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2xhc3NMaXN0KCk7CiB9
CiAKIERPTVN0cmluZ01hcCogRWxlbWVudDo6ZGF0YXNldCgpCiB7CiAgICAgRWxlbWVudFJhcmVE
YXRhKiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Ci0gICAgaWYgKCFkYXRhLT5tX2Rh
dGFzZXRET01TdHJpbmdNYXApCi0gICAgICAgIGRhdGEtPm1fZGF0YXNldERPTVN0cmluZ01hcCA9
IERhdGFzZXRET01TdHJpbmdNYXA6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gZGF0YS0+bV9k
YXRhc2V0RE9NU3RyaW5nTWFwLmdldCgpOworICAgIGlmICghZGF0YS0+ZGF0YXNldCgpKQorICAg
ICAgICBkYXRhLT5zZXREYXRhc2V0KERhdGFzZXRET01TdHJpbmdNYXA6OmNyZWF0ZSh0aGlzKSk7
CisgICAgcmV0dXJuIGRhdGEtPmRhdGFzZXQoKTsKIH0KIAogS1VSTCBFbGVtZW50OjpnZXRVUkxB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKQEAgLTIzNzAsNyArMjM3
MCw3IEBAIGJvb2wgRWxlbWVudDo6ZmFzdEF0dHJpYnV0ZUxvb2t1cEFsbG93ZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKICNpZmRlZiBEVU1QX05PREVfU1RBVElTVElDUwogYm9v
bCBFbGVtZW50OjpoYXNOYW1lZE5vZGVNYXAoKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJl
RGF0YSgpICYmIGVsZW1lbnRSYXJlRGF0YSgpLT5tX2F0dHJpYnV0ZU1hcDsKKyAgICByZXR1cm4g
aGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEoKS0+YXR0cmlidXRlTWFwKCk7CiB9CiAj
ZW5kaWYKIApAQCAtMjQ4OCwxNCArMjQ4OCwxNCBAQCBIVE1MQ29sbGVjdGlvbiogRWxlbWVudDo6
Y2FjaGVkSFRNTENvbGxlY3Rpb24oQ29sbGVjdGlvblR5cGUgdHlwZSkKIAogSW50U2l6ZSBFbGVt
ZW50OjpzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFy
ZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5tX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQgOiBJ
bnRTaXplKCk7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEoKS0+
c2F2ZWRMYXllclNjcm9sbE9mZnNldCgpIDogSW50U2l6ZSgpOwogfQogCiB2b2lkIEVsZW1lbnQ6
OnNldFNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAoc2l6ZS5pc1plcm8oKSAmJiAhaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5tX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQgPSBzaXpl
OworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0
KHNpemUpOwogfQogCiBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OmF0dHJJZkV4aXN0cyhjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnRSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNw
cAppbmRleCA0N2UyZDZlNWQyMmJkN2ZiNjY4OWY2ZTc1NTMzYTBmOGI5OGVlZjU1Li4yMjYwY2Yz
YzZlNjU4OTE0M2M2NzBjYjI1ZWQwOTE4MjcyYzcyYmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmNwcApAQCAtNDAsOSArNDAsOSBAQCB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
cwogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKICAgICBOb2RlUmFyZURhdGE6OnJlcG9ydE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOwotICAgIGluZm8uYWRkTWVtYmVyKG1fY29tcHV0ZWRTdHls
ZSk7CiAKLSAgICBpbmZvLmFkZE1lbWJlcihtX2RhdGFzZXRET01TdHJpbmdNYXApOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fY29tcHV0ZWRTdHlsZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9kYXRh
c2V0KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX2NsYXNzTGlzdCk7CiAgICAgaW5mby5hZGRNZW1i
ZXIobV9zaGFkb3cpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fYXR0cmlidXRlTWFwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAppbmRleCBkYzYyZGY2MDFiOTgwZTMwYjg5MmFiNjMy
ZWYyY2Q1NzFjOTMyMGE3Li44YTAxZDliZWViZTRjZTliYTgxZDYyZmYwMDA0OTFkZmJkMzBlMjgx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCkBAIC00MCw0NSArNDAsNzQgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzZXRDb21wdXRlZFN0eWxlKCk7CiAgICAgdm9pZCByZXNldER5
bmFtaWNSZXN0eWxlT2JzZXJ2YXRpb25zKCk7CiAKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6Om5l
ZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwotICAgIHVzaW5nIE5vZGVS
YXJlRGF0YTo6c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7Ci0g
ICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzdHlsZUFmZmVjdGVkQnlFbXB0eTsKLSAgICB1c2luZyBO
b2RlUmFyZURhdGE6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5OwotICAgIHVzaW5nIE5vZGVSYXJl
RGF0YTo6aXNJbkNhbnZhc1N1YnRyZWU7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRJc0lu
Q2FudmFzU3VidHJlZTsKKyAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFm
dGVyQXR0YWNoKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNv
b25BZnRlckF0dGFjaDsgfQorICAgIHZvaWQgc2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVT
b29uQWZ0ZXJBdHRhY2goYm9vbCBuZWVkcykgeyBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRl
U29vbkFmdGVyQXR0YWNoID0gbmVlZHM7IH0KKworICAgIGJvb2wgc3R5bGVBZmZlY3RlZEJ5RW1w
dHkoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5OyB9CisgICAgdm9pZCBz
ZXRTdHlsZUFmZmVjdGVkQnlFbXB0eShib29sIHZhbHVlKSB7IG1fc3R5bGVBZmZlY3RlZEJ5RW1w
dHkgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBpc0luQ2FudmFzU3VidHJlZSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbkNhbnZhc1N1YnRyZWU7IH0KKyAgICB2b2lkIHNldElzSW5DYW52YXNTdWJ0cmVl
KGJvb2wgdmFsdWUpIHsgbV9pc0luQ2FudmFzU3VidHJlZSA9IHZhbHVlOyB9CisKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjb250YWluc0Z1bGxT
Y3JlZW5FbGVtZW50OwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q29udGFpbnNGdWxsU2Ny
ZWVuRWxlbWVudDsKKyAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSB7IHJldHVy
biBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KKyAgICB2b2lkIHNldENvbnRhaW5zRnVs
bFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQg
PSB2YWx1ZTsgfQogI2VuZGlmCisKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCi0gICAgdXNp
bmcgTm9kZVJhcmVEYXRhOjppc0luVG9wTGF5ZXI7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpz
ZXRJc0luVG9wTGF5ZXI7CisgICAgYm9vbCBpc0luVG9wTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5Ub3BMYXllcjsgfQorICAgIHZvaWQgc2V0SXNJblRvcExheWVyKGJvb2wgdmFsdWUpIHsg
bV9pc0luVG9wTGF5ZXIgPSB2YWx1ZTsgfQogI2VuZGlmCi0gICAgdXNpbmcgTm9kZVJhcmVEYXRh
OjpjaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENo
aWxkcmVuQWZmZWN0ZWRCeUhvdmVyOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5B
ZmZlY3RlZEJ5QWN0aXZlOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5QWN0aXZlOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5
RHJhZzsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWc7
Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVs
ZXM7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENo
aWxkUnVsZXM7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlMYXN0
Q2hpbGRSdWxlczsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3Rl
ZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxk
cmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRh
OjpjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOwotICAgIHVzaW5nIE5v
ZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsK
LSAgICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRp
b25hbFJ1bGVzOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpjaGlsZElu
ZGV4OwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0Q2hpbGRJbmRleDsKKworICAgIGJvb2wg
Y2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0
ZWRCeUhvdmVyOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3Zlcihib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hp
bGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVk
QnlBY3RpdmU7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZShib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlID0gdmFsdWU7IH0KKyAgICBib29sIGNo
aWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRC
eURyYWc7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkg
eyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcgPSB2YWx1ZTsgfQorCisgICAgYm9vbCBjaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5
Rmlyc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENo
aWxkUnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVz
OyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQorICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlczsgfQorICAgIHZvaWQg
c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1f
Y2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9v
bCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOyB9CisgICAgdm9p
ZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUp
IHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0K
KyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsg
fQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMo
Ym9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVz
ID0gdmFsdWU7IH0KKyAgICB1bnNpZ25lZCBjaGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZEluZGV4OyB9CisgICAgdm9pZCBzZXRDaGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1f
Y2hpbGRJbmRleCA9IGluZGV4OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0IE9WRVJSSURFOwogCisgICAgRWxlbWVudFNoYWRv
dyogc2hhZG93KCkgY29uc3QgeyByZXR1cm4gbV9zaGFkb3cuZ2V0KCk7IH0KKyAgICB2b2lkIHNl
dFNoYWRvdyhQYXNzT3duUHRyPEVsZW1lbnRTaGFkb3c+IHNoYWRvdykgeyBtX3NoYWRvdyA9IHNo
YWRvdzsgfQorCisgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVNYXAoKSBjb25zdCB7IHJldHVy
biBtX2F0dHJpYnV0ZU1hcC5nZXQoKTsgfQorICAgIHZvaWQgc2V0QXR0cmlidXRlTWFwKFBhc3NP
d25QdHI8TmFtZWROb2RlTWFwPiBhdHRyaWJ1dGVNYXApIHsgbV9hdHRyaWJ1dGVNYXAgPSBhdHRy
aWJ1dGVNYXA7IH0KKworICAgIFJlbmRlclN0eWxlKiBjb21wdXRlZFN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jb21wdXRlZFN0eWxlLmdldCgpOyB9CisgICAgdm9pZCBzZXRDb21wdXRlZFN0eWxl
KFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGNvbXB1dGVkU3R5bGUpIHsgbV9jb21wdXRlZFN0eWxl
ID0gY29tcHV0ZWRTdHlsZTsgfQorCisgICAgQ2xhc3NMaXN0KiBjbGFzc0xpc3QoKSBjb25zdCB7
IHJldHVybiBtX2NsYXNzTGlzdC5nZXQoKTsgfQorICAgIHZvaWQgc2V0Q2xhc3NMaXN0KFBhc3NP
d25QdHI8Q2xhc3NMaXN0PiBjbGFzc0xpc3QpIHsgbV9jbGFzc0xpc3QgPSBjbGFzc0xpc3Q7IH0K
KworICAgIERhdGFzZXRET01TdHJpbmdNYXAqIGRhdGFzZXQoKSBjb25zdCB7IHJldHVybiBtX2Rh
dGFzZXQuZ2V0KCk7IH0KKyAgICB2b2lkIHNldERhdGFzZXQoUGFzc093blB0cjxEYXRhc2V0RE9N
U3RyaW5nTWFwPiBkYXRhc2V0KSB7IG1fZGF0YXNldCA9IGRhdGFzZXQ7IH0KKworICAgIExheW91
dFNpemUgbWluaW11bVNpemVGb3JSZXNpemluZygpIGNvbnN0IHsgcmV0dXJuIG1fbWluaW11bVNp
emVGb3JSZXNpemluZzsgfQorICAgIHZvaWQgc2V0TWluaW11bVNpemVGb3JSZXNpemluZyhMYXlv
dXRTaXplIHNpemUpIHsgbV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nID0gc2l6ZTsgfQorCisgICAg
SW50U2l6ZSBzYXZlZExheWVyU2Nyb2xsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9zYXZlZExh
eWVyU2Nyb2xsT2Zmc2V0OyB9CisgICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0KElu
dFNpemUgc2l6ZSkgeyBtX3NhdmVkTGF5ZXJTY3JvbGxPZmZzZXQgPSBzaXplOyB9CisKK3ByaXZh
dGU6CisgICAgLy8gTWFueSBmaWVsZHMgYXJlIGluIE5vZGVSYXJlRGF0YSBmb3IgYmV0dGVyIHBh
Y2tpbmcuCiAgICAgTGF5b3V0U2l6ZSBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7CiAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBtX2NvbXB1dGVkU3R5bGU7CiAKLSAgICBPd25QdHI8RGF0YXNldERP
TVN0cmluZ01hcD4gbV9kYXRhc2V0RE9NU3RyaW5nTWFwOworICAgIE93blB0cjxEYXRhc2V0RE9N
U3RyaW5nTWFwPiBtX2RhdGFzZXQ7CiAgICAgT3duUHRyPENsYXNzTGlzdD4gbV9jbGFzc0xpc3Q7
CiAgICAgT3duUHRyPEVsZW1lbnRTaGFkb3c+IG1fc2hhZG93OwogICAgIE93blB0cjxOYW1lZE5v
ZGVNYXA+IG1fYXR0cmlidXRlTWFwOwpAQCAtMTA0LDcgKzEzMyw3IEBAIGlubGluZSBFbGVtZW50
UmFyZURhdGE6On5FbGVtZW50UmFyZURhdGEoKQogCiBpbmxpbmUgdm9pZCBFbGVtZW50UmFyZURh
dGE6OnJlc2V0Q29tcHV0ZWRTdHlsZSgpCiB7Ci0gICAgbV9jb21wdXRlZFN0eWxlLmNsZWFyKCk7
CisgICAgc2V0Q29tcHV0ZWRTdHlsZSgwKTsKICAgICBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eShm
YWxzZSk7CiAgICAgc2V0Q2hpbGRJbmRleCgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlUmFyZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aAppbmRleCBmOGY4NThjYmEyYTczNTZjZmJkYWMyNzIwOTkwNjljZjI5YTcwMWNkLi4yNGVmMjMz
NGJkZDBjMTVlN2NlMDQ0MjBkNGMwZTBmZDgwZjQ3ODU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJhcmVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJl
RGF0YS5oCkBAIC0zMjcsNDIgKzMyNyw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgLy8gZm9yIEVsZW1lbnRSYXJlRGF0YQotICAgIGJvb2wgbmVlZHNGb2N1c0FwcGVhcmFuY2VV
cGRhdGVTb29uQWZ0ZXJBdHRhY2goKSBjb25zdCB7IHJldHVybiBtX25lZWRzRm9jdXNBcHBlYXJh
bmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOyB9Ci0gICAgdm9pZCBzZXROZWVkc0ZvY3VzQXBwZWFy
YW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaChib29sIG5lZWRzKSB7IG1fbmVlZHNGb2N1c0FwcGVh
cmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2ggPSBuZWVkczsgfQotICAgIGJvb2wgc3R5bGVBZmZl
Y3RlZEJ5RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5OyB9Ci0g
ICAgdm9pZCBzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eShib29sIHZhbHVlKSB7IG1fc3R5bGVBZmZl
Y3RlZEJ5RW1wdHkgPSB2YWx1ZTsgfQotICAgIGJvb2wgaXNJbkNhbnZhc1N1YnRyZWUoKSBjb25z
dCB7IHJldHVybiBtX2lzSW5DYW52YXNTdWJ0cmVlOyB9Ci0gICAgdm9pZCBzZXRJc0luQ2FudmFz
U3VidHJlZShib29sIHZhbHVlKSB7IG1faXNJbkNhbnZhc1N1YnRyZWUgPSB2YWx1ZTsgfQotI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1l
bnQoKSB7IHJldHVybiBtX2NvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7IH0KLSAgICB2b2lkIHNl
dENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoYm9vbCB2YWx1ZSkgeyBtX2NvbnRhaW5zRnVsbFNj
cmVlbkVsZW1lbnQgPSB2YWx1ZTsgfQotI2VuZGlmCi0jaWYgRU5BQkxFKERJQUxPR19FTEVNRU5U
KQotICAgIGJvb2wgaXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0luVG9wTGF5ZXI7
IH0KLSAgICB2b2lkIHNldElzSW5Ub3BMYXllcihib29sIHZhbHVlKSB7IG1faXNJblRvcExheWVy
ID0gdmFsdWU7IH0KLSNlbmRpZgotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoKSBj
b25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyOyB9Ci0gICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlIb3Zlcihib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5
SG92ZXIgPSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmU7IH0KLSAgICB2b2lkIHNldENo
aWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZShib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5
QWN0aXZlID0gdmFsdWU7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25z
dCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWc7IH0KLSAgICB2b2lkIHNldENoaWxk
cmVuQWZmZWN0ZWRCeURyYWcoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURyYWcg
PSB2YWx1ZTsgfQotCi0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlczsgfQot
ICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKGJvb2wgdmFsdWUp
IHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJv
b2wgY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2No
aWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFm
ZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5
TGFzdENoaWxkUnVsZXMgPSB2YWx1ZTsgfQotICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5RGly
ZWN0QWRqYWNlbnRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGly
ZWN0QWRqYWNlbnRSdWxlczsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRq
YWNlbnRSdWxlcyA9IHZhbHVlOyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlGb3J3
YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRC
eUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzID0gdmFsdWU7IH0KLSAgICB1bnNpZ25lZCBj
aGlsZEluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZEluZGV4OyB9Ci0gICAgdm9pZCBzZXRD
aGlsZEluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fY2hpbGRJbmRleCA9IGluZGV4OyB9Ci0KLXBy
aXZhdGU6CiAgICAgT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBtX25vZGVMaXN0czsKICAgICBD
aGlsZE5vZGVMaXN0KiBtX2NoaWxkTm9kZUxpc3Q7CiAgICAgc2hvcnQgbV90YWJJbmRleDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177375</attachid>
            <date>2012-12-03 17:05:32 -0800</date>
            <delta_ts>2012-12-05 12:44:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103948-20121203170257.patch</filename>
            <type>text/plain</type>
            <size>20605</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjZkNzRjMTYxOWQ0YWE3
OGJmYWU1ZTFhNWZhOTRiZDA2MDZmZDIyYS4uMWNiYjhjMGExZDcwZGY2MWI4YjE5NThkY2E4ODcy
NWMwN2Y5MDY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTEyLTAzICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AZ21haWwuY29tPgorCisgICAgICAgIEVuY2Fwc3VsYXRlIEVs
ZW1lbnRSYXJlRGF0YSBmb3IgcG9zc2libGUgZnV0dXJlIHNoYXJpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk0OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuY2Fwc3VsYXRlIEVsZW1lbnRSYXJl
RGF0YSBhbmQgbWFrZSBhbGwgYWNjZXNzIGdvIHRocm91Z2ggZ2V0dGVycyBhbmQKKyAgICAgICAg
c2V0dGVycy4gVGhpcyBpcyBhbHJlYWR5IHRydWUgZm9yIE5vZGVSYXJlRGF0YSwgYnV0IEVsZW1l
bnRSYXJlRGF0YQorICAgICAgICBoYWQgbWFueSBwbGFjZXMgd2hlcmUgcGVvcGxlIGRpcmVjdGx5
IGFjY2VzcyBpdC4KKworICAgICAgICBUaGlzIHRoZSBmaXJzdCBzdGVwIGluIHBvc3NpYmxlIGZ1
dHVyZSBzaGFyaW5nIG9mIEVsZW1lbnRSYXJlRGF0YQorICAgICAgICBpbnN0YW5jZXMgYWNyb3Nz
IG5vZGVzLiBBbGwgbm9kZXMgaW4gYSBzaGFkb3cgdHJlZSBoYXZlIHJhcmUgZGF0YSB0bworICAg
ICAgICBzdG9yZSB0aGUgVHJlZVNjb3BlLCBidXQgaW4gbW9zdCBjYXNlcyBhbGwgdGhleSBoYXZl
IGlzIHRoZSBUcmVlU2NvcGUhCisgICAgICAgIEluc3RlYWQgb2YgbWFraW5nIGV2ZXJ5IG5vZGUg
aW4gYSBzaGFkb3cgc3VidHJlZSBoYXZlIHJhcmUgZGF0YQorICAgICAgICBhbmQgdXNlIGxvdHMg
b2YgbWVtb3J5IHdlIGNvdWxkIGp1c3Qgc2hhcmUgYSBzaW5nbGUgaW5zdGFuY2Ugb2YgcmFyZSBk
YXRhCisgICAgICAgIGFuZCBvbmx5IGFsbG9jYXRlIGEgdW5pcXVlIG9uZSBvbiBtb2RpZmljYXRp
b24uIEVuY2Fwc3VsYXRpb24gbGV0cyB1cworICAgICAgICBhc3NlcnQgYWJvdXQgbXV0YXRpb25z
IG9uIHNoYXJlZCBpbnN0YW5jZXMuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50Ojp+RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50OjphdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVTaGFkb3cpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6bWluaW11bVNpemVGb3JSZXNpemluZyk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzZXRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NM
aXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om9wdGlvbmFsQ2xhc3NMaXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRhdGFzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aGFzTmFtZWROb2RlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNhdmVk
TGF5ZXJTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0U2F2ZWRM
YXllclNjcm9sbE9mZnNldCk6CisgICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6Om5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VV
cGRhdGVTb29uQWZ0ZXJBdHRhY2gpOgorICAgICAgICAoRWxlbWVudFJhcmVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c3R5bGVBZmZlY3RlZEJ5RW1wdHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRTdHlsZUFmZmVjdGVkQnlFbXB0eSk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmlzSW5DYW52YXNTdWJ0cmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0SXNJbkNhbnZhc1N1YnRyZWUp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjb250YWluc0Z1bGxTY3JlZW5F
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q29udGFpbnNG
dWxsU2NyZWVuRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Omlz
SW5Ub3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldElzSW5U
b3BMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZm
ZWN0ZWRCeUhvdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5SG92ZXIpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRh
OjpjaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyk6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRS
dWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURh
dGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpjaGlsZHJlbkFmZmVjdGVkQnlEaXJl
Y3RBZGphY2VudFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0QWRqYWNlbnRSdWxlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50UmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVj
dGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRS
YXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNr
d2FyZFBvc2l0aW9uYWxSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OmNoaWxkSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRDaGls
ZEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0U2hhZG93KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6YXR0cmlidXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnRSYXJlRGF0YTo6c2V0QXR0cmlidXRlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6Y29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
UmFyZURhdGE6OnNldENvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJh
cmVEYXRhOjpjbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpz
ZXRDbGFzc0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpkYXRhc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2V0RGF0YXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6Om1pbmltdW1TaXplRm9yUmVzaXppbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpzZXRNaW5pbXVtU2l6ZUZvclJlc2l6
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6c2F2ZWRMYXllclNjcm9s
bE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OnNldFNhdmVkTGF5
ZXJTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpyZXNl
dENvbXB1dGVkU3R5bGUpOgorICAgICAgICAqIGRvbS9Ob2RlUmFyZURhdGEuaDoKKyAgICAgICAg
KE5vZGVSYXJlRGF0YSk6CisKIDIwMTItMTItMDMgIFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3Nz
aUBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciBy
MTM2NDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNGRjMGM1ZGY1M2E5MjNiZjliZTljZjBh
ZWZlNDI3M2VkNDBkN2ZlNC4uZGRlY2E4Njk1OThjYjkyNjM3ZTQ4ODliZWE1ZTQzY2M0ZDBkZDJi
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIEVsZW1lbnQ6On5F
bGVtZW50KCkKIAogICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93
KCkpIHsKICAgICAgICAgZWxlbWVudFNoYWRvdy0+cmVtb3ZlQWxsU2hhZG93Um9vdHMoKTsKLSAg
ICAgICAgZWxlbWVudFJhcmVEYXRhKCktPm1fc2hhZG93LmNsZWFyKCk7CisgICAgICAgIGVsZW1l
bnRSYXJlRGF0YSgpLT5zZXRTaGFkb3cobnVsbHB0cik7CiAgICAgfQogCiAgICAgaWYgKGhhc1N5
bnRoZXRpY0F0dHJDaGlsZE5vZGVzKCkpCkBAIC0yODcsMTEgKzI4NywxMSBAQCBOYW1lZE5vZGVN
YXAqIEVsZW1lbnQ6OmF0dHJpYnV0ZXMoKSBjb25zdAogewogICAgIGVuc3VyZVVwZGF0ZWRBdHRy
aWJ1dGVEYXRhKCk7CiAgICAgRWxlbWVudFJhcmVEYXRhKiByYXJlRGF0YSA9IGNvbnN0X2Nhc3Q8
RWxlbWVudCo+KHRoaXMpLT5lbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKLSAgICBpZiAoTmFtZWRO
b2RlTWFwKiBhdHRyaWJ1dGVNYXAgPSByYXJlRGF0YS0+bV9hdHRyaWJ1dGVNYXAuZ2V0KCkpCisg
ICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlTWFwID0gcmFyZURhdGEtPmF0dHJpYnV0ZU1h
cCgpKQogICAgICAgICByZXR1cm4gYXR0cmlidXRlTWFwOwogCi0gICAgcmFyZURhdGEtPm1fYXR0
cmlidXRlTWFwID0gTmFtZWROb2RlTWFwOjpjcmVhdGUoY29uc3RfY2FzdDxFbGVtZW50Kj4odGhp
cykpOwotICAgIHJldHVybiByYXJlRGF0YS0+bV9hdHRyaWJ1dGVNYXAuZ2V0KCk7CisgICAgcmFy
ZURhdGEtPnNldEF0dHJpYnV0ZU1hcChOYW1lZE5vZGVNYXA6OmNyZWF0ZShjb25zdF9jYXN0PEVs
ZW1lbnQqPih0aGlzKSkpOworICAgIHJldHVybiByYXJlRGF0YS0+YXR0cmlidXRlTWFwKCk7CiB9
CiAKIE5vZGU6Ok5vZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKQEAgLTEzNTEsMTcg
KzEzNTEsMTcgQEAgRWxlbWVudFNoYWRvdyogRWxlbWVudDo6c2hhZG93KCkgY29uc3QKICAgICBp
ZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIGVsZW1l
bnRSYXJlRGF0YSgpLT5tX3NoYWRvdy5nZXQoKTsKKyAgICByZXR1cm4gZWxlbWVudFJhcmVEYXRh
KCktPnNoYWRvdygpOwogfQogCiBFbGVtZW50U2hhZG93KiBFbGVtZW50OjplbnN1cmVTaGFkb3co
KQogewotICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKS0+bV9zaGFkb3cuZ2V0KCkpCisgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLT5zaGFkb3coKSkKICAgICAgICAgcmV0dXJuIHNoYWRvdzsK
IAogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVsZW1lbnRSYXJlRGF0YSgpOwotICAgIGRh
dGEtPm1fc2hhZG93ID0gYWRvcHRQdHIobmV3IEVsZW1lbnRTaGFkb3coKSk7Ci0gICAgcmV0dXJu
IGRhdGEtPm1fc2hhZG93LmdldCgpOworICAgIGRhdGEtPnNldFNoYWRvdyhhZG9wdFB0cihuZXcg
RWxlbWVudFNoYWRvdygpKSk7CisgICAgcmV0dXJuIGRhdGEtPnNoYWRvdygpOwogfQogCiBQYXNz
UmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoYWRvd1Jvb3QoRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0xODU0LDE0ICsxODU0LDE0IEBAIHZvaWQgRWxlbWVudDo6c2V0UHNldWRvKGNv
bnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiAKIExheW91dFNpemUgRWxlbWVudDo6bWluaW11bVNp
emVGb3JSZXNpemluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVt
ZW50UmFyZURhdGEoKS0+bV9taW5pbXVtU2l6ZUZvclJlc2l6aW5nIDogZGVmYXVsdE1pbmltdW1T
aXplRm9yUmVzaXppbmcoKTsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJl
RGF0YSgpLT5taW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkgOiBkZWZhdWx0TWluaW11bVNpemVGb3JS
ZXNpemluZygpOwogfQogCiB2b2lkIEVsZW1lbnQ6OnNldE1pbmltdW1TaXplRm9yUmVzaXppbmco
Y29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkKIHsKLSAgICBpZiAoc2l6ZSA9PSBkZWZhdWx0TWluaW11
bVNpemVGb3JSZXNpemluZygpICYmICFoYXNSYXJlRGF0YSgpKQorICAgIGlmICghaGFzUmFyZURh
dGEoKSAmJiBzaXplID09IGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+bV9taW5pbXVtU2l6ZUZvclJl
c2l6aW5nID0gc2l6ZTsKKyAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+c2V0TWluaW11bVNp
emVGb3JSZXNpemluZyhzaXplKTsKIH0KIAogUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVk
U3R5bGUoUHNldWRvSWQgcHNldWRvRWxlbWVudFNwZWNpZmllcikKQEAgLTE4ODMsOSArMTg4Myw5
IEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKFBzZXVkb0lkIHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRWxlbWVudFJhcmVEYXRh
KiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Ci0gICAgaWYgKCFkYXRhLT5tX2NvbXB1
dGVkU3R5bGUpCi0gICAgICAgIGRhdGEtPm1fY29tcHV0ZWRTdHlsZSA9IGRvY3VtZW50KCktPnN0
eWxlRm9yRWxlbWVudElnbm9yaW5nUGVuZGluZ1N0eWxlc2hlZXRzKHRoaXMpOwotICAgIHJldHVy
biBwc2V1ZG9FbGVtZW50U3BlY2lmaWVyID8gZGF0YS0+bV9jb21wdXRlZFN0eWxlLT5nZXRDYWNo
ZWRQc2V1ZG9TdHlsZShwc2V1ZG9FbGVtZW50U3BlY2lmaWVyKSA6IGRhdGEtPm1fY29tcHV0ZWRT
dHlsZS5nZXQoKTsKKyAgICBpZiAoIWRhdGEtPmNvbXB1dGVkU3R5bGUoKSkKKyAgICAgICAgZGF0
YS0+c2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudCgpLT5zdHlsZUZvckVsZW1lbnRJZ25vcmluZ1Bl
bmRpbmdTdHlsZXNoZWV0cyh0aGlzKSk7CisgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRTcGVjaWZp
ZXIgPyBkYXRhLT5jb21wdXRlZFN0eWxlKCktPmdldENhY2hlZFBzZXVkb1N0eWxlKHBzZXVkb0Vs
ZW1lbnRTcGVjaWZpZXIpIDogZGF0YS0+Y29tcHV0ZWRTdHlsZSgpOwogfQogCiB2b2lkIEVsZW1l
bnQ6OnNldFN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkKQEAgLTIxMTIsMjQgKzIxMTIsMjQgQEAgYm9v
bCBFbGVtZW50Ojp3ZWJraXRNYXRjaGVzU2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzZWxlY3Rvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCiBET01Ub2tlbkxpc3QqIEVsZW1lbnQ6OmNsYXNzTGlzdCgpCiB7
CiAgICAgRWxlbWVudFJhcmVEYXRhKiBkYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7Ci0g
ICAgaWYgKCFkYXRhLT5tX2NsYXNzTGlzdCkKLSAgICAgICAgZGF0YS0+bV9jbGFzc0xpc3QgPSBD
bGFzc0xpc3Q6OmNyZWF0ZSh0aGlzKTsKLSAgICByZXR1cm4gZGF0YS0+bV9jbGFzc0xpc3QuZ2V0
KCk7CisgICAgaWYgKCFkYXRhLT5jbGFzc0xpc3QoKSkKKyAgICAgICAgZGF0YS0+c2V0Q2xhc3NM
aXN0KENsYXNzTGlzdDo6Y3JlYXRlKHRoaXMpKTsKKyAgICByZXR1cm4gZGF0YS0+Y2xhc3NMaXN0
KCk7CiB9CiAKIERPTVRva2VuTGlzdCogRWxlbWVudDo6b3B0aW9uYWxDbGFzc0xpc3QoKSBjb25z
dAogewogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0
dXJuIGVsZW1lbnRSYXJlRGF0YSgpLT5tX2NsYXNzTGlzdC5nZXQoKTsKKyAgICByZXR1cm4gZWxl
bWVudFJhcmVEYXRhKCktPmNsYXNzTGlzdCgpOwogfQogCiBET01TdHJpbmdNYXAqIEVsZW1lbnQ6
OmRhdGFzZXQoKQogewogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVuc3VyZUVsZW1lbnRS
YXJlRGF0YSgpOwotICAgIGlmICghZGF0YS0+bV9kYXRhc2V0RE9NU3RyaW5nTWFwKQotICAgICAg
ICBkYXRhLT5tX2RhdGFzZXRET01TdHJpbmdNYXAgPSBEYXRhc2V0RE9NU3RyaW5nTWFwOjpjcmVh
dGUodGhpcyk7Ci0gICAgcmV0dXJuIGRhdGEtPm1fZGF0YXNldERPTVN0cmluZ01hcC5nZXQoKTsK
KyAgICBpZiAoIWRhdGEtPmRhdGFzZXQoKSkKKyAgICAgICAgZGF0YS0+c2V0RGF0YXNldChEYXRh
c2V0RE9NU3RyaW5nTWFwOjpjcmVhdGUodGhpcykpOworICAgIHJldHVybiBkYXRhLT5kYXRhc2V0
KCk7CiB9CiAKIEtVUkwgRWxlbWVudDo6Z2V0VVJMQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUpIGNvbnN0CkBAIC0yMzcwLDcgKzIzNzAsNyBAQCBib29sIEVsZW1lbnQ6OmZhc3RB
dHRyaWJ1dGVMb29rdXBBbGxvd2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAj
aWZkZWYgRFVNUF9OT0RFX1NUQVRJU1RJQ1MKIGJvb2wgRWxlbWVudDo6aGFzTmFtZWROb2RlTWFw
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiBlbGVtZW50UmFyZURhdGEo
KS0+bV9hdHRyaWJ1dGVNYXA7CisgICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgZWxlbWVudFJh
cmVEYXRhKCktPmF0dHJpYnV0ZU1hcCgpOwogfQogI2VuZGlmCiAKQEAgLTI0ODgsMTQgKzI0ODgs
MTQgQEAgSFRNTENvbGxlY3Rpb24qIEVsZW1lbnQ6OmNhY2hlZEhUTUxDb2xsZWN0aW9uKENvbGxl
Y3Rpb25UeXBlIHR5cGUpCiAKIEludFNpemUgRWxlbWVudDo6c2F2ZWRMYXllclNjcm9sbE9mZnNl
dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc1JhcmVEYXRhKCkgPyBlbGVtZW50UmFyZURhdGEo
KS0+bV9zYXZlZExheWVyU2Nyb2xsT2Zmc2V0IDogSW50U2l6ZSgpOworICAgIHJldHVybiBoYXNS
YXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPnNhdmVkTGF5ZXJTY3JvbGxPZmZzZXQoKSA6
IEludFNpemUoKTsKIH0KIAogdm9pZCBFbGVtZW50OjpzZXRTYXZlZExheWVyU2Nyb2xsT2Zmc2V0
KGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNaZXJvKCkgJiYgIWhhc1Jh
cmVEYXRhKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBlbnN1cmVFbGVtZW50UmFyZURhdGEoKS0+
bV9zYXZlZExheWVyU2Nyb2xsT2Zmc2V0ID0gc2l6ZTsKKyAgICBlbnN1cmVFbGVtZW50UmFyZURh
dGEoKS0+c2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChzaXplKTsKIH0KIAogUGFzc1JlZlB0cjxB
dHRyPiBFbGVtZW50OjphdHRySWZFeGlzdHMoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKaW5kZXggNDdlMmQ2ZTVkMjJiZDdmYjY2
ODlmNmU3NTUzM2EwZjhiOThlZWY1NS4uMjI2MGNmM2M2ZTY1ODkxNDNjNjcwY2IyNWVkMDkxODI3
MmM3MmJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAKQEAgLTQwLDkg
KzQwLDkgQEAgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnMKIHsKICAgICBNZW1vcnlDbGFzc0luZm8g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CiAg
ICAgTm9kZVJhcmVEYXRhOjpyZXBvcnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKLSAg
ICBpbmZvLmFkZE1lbWJlcihtX2NvbXB1dGVkU3R5bGUpOwogCi0gICAgaW5mby5hZGRNZW1iZXIo
bV9kYXRhc2V0RE9NU3RyaW5nTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2NvbXB1dGVkU3R5
bGUpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZGF0YXNldCk7CiAgICAgaW5mby5hZGRNZW1iZXIo
bV9jbGFzc0xpc3QpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc2hhZG93KTsKICAgICBpbmZvLmFk
ZE1lbWJlcihtX2F0dHJpYnV0ZU1hcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgK
aW5kZXggZGM2MmRmNjAxYjk4MGUzMGI4OTJhYjYzMmVmMmNkNTcxYzkzMjBhNy4uOGEwMWQ5YmVl
YmU0Y2U5YmE4MWQ2MmZmMDAwNDkxZGZiZDMwZTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
UmFyZURhdGEuaApAQCAtNDAsNDUgKzQwLDc0IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0Q29t
cHV0ZWRTdHlsZSgpOwogICAgIHZvaWQgcmVzZXREeW5hbWljUmVzdHlsZU9ic2VydmF0aW9ucygp
OwogCi0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpuZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNv
b25BZnRlckF0dGFjaDsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldE5lZWRzRm9jdXNBcHBl
YXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c3R5
bGVBZmZlY3RlZEJ5RW1wdHk7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRTdHlsZUFmZmVj
dGVkQnlFbXB0eTsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OmlzSW5DYW52YXNTdWJ0cmVlOwot
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJbkNhbnZhc1N1YnRyZWU7CisgICAgYm9vbCBu
ZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCgpIGNvbnN0IHsgcmV0dXJu
IG1fbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2g7IH0KKyAgICB2b2lk
IHNldE5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKGJvb2wgbmVlZHMp
IHsgbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaCA9IG5lZWRzOyB9
CisKKyAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdHls
ZUFmZmVjdGVkQnlFbXB0eTsgfQorICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoYm9v
bCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5ID0gdmFsdWU7IH0KKworICAgIGJvb2wg
aXNJbkNhbnZhc1N1YnRyZWUoKSBjb25zdCB7IHJldHVybiBtX2lzSW5DYW52YXNTdWJ0cmVlOyB9
CisgICAgdm9pZCBzZXRJc0luQ2FudmFzU3VidHJlZShib29sIHZhbHVlKSB7IG1faXNJbkNhbnZh
c1N1YnRyZWUgPSB2YWx1ZTsgfQorCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHVz
aW5nIE5vZGVSYXJlRGF0YTo6Y29udGFpbnNGdWxsU2NyZWVuRWxlbWVudDsKLSAgICB1c2luZyBO
b2RlUmFyZURhdGE6OnNldENvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQ7CisgICAgYm9vbCBjb250
YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1bGxTY3JlZW5FbGVt
ZW50OyB9CisgICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KGJvb2wgdmFsdWUp
IHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KICNlbmRpZgorCiAjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6aXNJblRvcExh
eWVyOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6c2V0SXNJblRvcExheWVyOworICAgIGJvb2wg
aXNJblRvcExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9pc0luVG9wTGF5ZXI7IH0KKyAgICB2b2lk
IHNldElzSW5Ub3BMYXllcihib29sIHZhbHVlKSB7IG1faXNJblRvcExheWVyID0gdmFsdWU7IH0K
ICNlbmRpZgotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXI7
Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsKLSAg
ICB1c2luZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZTsKLSAgICB1c2lu
ZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZTsKLSAgICB1c2luZyBO
b2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeURyYWc7Ci0gICAgdXNpbmcgTm9kZVJhcmVE
YXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6
Y2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0
YTo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOwotICAgIHVzaW5nIE5vZGVS
YXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXM7Ci0gICAgdXNpbmcgTm9k
ZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsKLSAgICB1c2lu
ZyBOb2RlUmFyZURhdGE6OmNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7Ci0g
ICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlEaXJlY3RBZGphY2Vu
dFJ1bGVzOwotICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlczsKLSAgICB1c2luZyBOb2RlUmFyZURhdGE6OnNldENoaWxkcmVuQWZm
ZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXM7Ci0gICAgdXNpbmcgTm9kZVJhcmVEYXRhOjpj
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczsKLSAgICB1c2luZyBOb2Rl
UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOwot
ICAgIHVzaW5nIE5vZGVSYXJlRGF0YTo6Y2hpbGRJbmRleDsKLSAgICB1c2luZyBOb2RlUmFyZURh
dGE6OnNldENoaWxkSW5kZXg7CisKKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlIb3ZlcjsgfQorICAgIHZvaWQgc2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUhvdmVyID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QWN0aXZlOyB9CisgICAgdm9pZCBzZXRD
aGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUFjdGl2ZSA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29u
c3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFnOyB9CisgICAgdm9pZCBzZXRDaGls
ZHJlbkFmZmVjdGVkQnlEcmFnKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFn
ID0gdmFsdWU7IH0KKworICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVz
KCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7IH0K
KyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcyhib29sIHZhbHVl
KSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KKyAgICBi
b29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5B
ZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRC
eUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURp
cmVjdEFkamFjZW50UnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVj
dEFkamFjZW50UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFk
amFjZW50UnVsZXMgPSB2YWx1ZTsgfQorICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlczsgfQorICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVk
QnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZm
ZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFm
ZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVlOyB9CisgICAgdW5zaWduZWQg
Y2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRJbmRleDsgfQorICAgIHZvaWQgc2V0
Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkgeyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dCBPVkVSUklERTsKIAorICAgIEVsZW1lbnRTaGFkb3cqIHNoYWRvdygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hhZG93LmdldCgpOyB9CisgICAgdm9pZCBzZXRTaGFkb3coUGFzc093blB0cjxFbGVtZW50
U2hhZG93PiBzaGFkb3cpIHsgbV9zaGFkb3cgPSBzaGFkb3c7IH0KKworICAgIE5hbWVkTm9kZU1h
cCogYXR0cmlidXRlTWFwKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVNYXAuZ2V0KCk7IH0K
KyAgICB2b2lkIHNldEF0dHJpYnV0ZU1hcChQYXNzT3duUHRyPE5hbWVkTm9kZU1hcD4gYXR0cmli
dXRlTWFwKSB7IG1fYXR0cmlidXRlTWFwID0gYXR0cmlidXRlTWFwOyB9CisKKyAgICBSZW5kZXJT
dHlsZSogY29tcHV0ZWRTdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tcHV0ZWRTdHlsZS5nZXQo
KTsgfQorICAgIHZvaWQgc2V0Q29tcHV0ZWRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBj
b21wdXRlZFN0eWxlKSB7IG1fY29tcHV0ZWRTdHlsZSA9IGNvbXB1dGVkU3R5bGU7IH0KKworICAg
IENsYXNzTGlzdCogY2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGFzc0xpc3QuZ2V0KCk7
IH0KKyAgICB2b2lkIHNldENsYXNzTGlzdChQYXNzT3duUHRyPENsYXNzTGlzdD4gY2xhc3NMaXN0
KSB7IG1fY2xhc3NMaXN0ID0gY2xhc3NMaXN0OyB9CisKKyAgICBEYXRhc2V0RE9NU3RyaW5nTWFw
KiBkYXRhc2V0KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhc2V0LmdldCgpOyB9CisgICAgdm9pZCBz
ZXREYXRhc2V0KFBhc3NPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gZGF0YXNldCkgeyBtX2Rh
dGFzZXQgPSBkYXRhc2V0OyB9CisKKyAgICBMYXlvdXRTaXplIG1pbmltdW1TaXplRm9yUmVzaXpp
bmcoKSBjb25zdCB7IHJldHVybiBtX21pbmltdW1TaXplRm9yUmVzaXppbmc7IH0KKyAgICB2b2lk
IHNldE1pbmltdW1TaXplRm9yUmVzaXppbmcoTGF5b3V0U2l6ZSBzaXplKSB7IG1fbWluaW11bVNp
emVGb3JSZXNpemluZyA9IHNpemU7IH0KKworICAgIEludFNpemUgc2F2ZWRMYXllclNjcm9sbE9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbE9mZnNldDsgfQorICAgIHZv
aWQgc2V0U2F2ZWRMYXllclNjcm9sbE9mZnNldChJbnRTaXplIHNpemUpIHsgbV9zYXZlZExheWVy
U2Nyb2xsT2Zmc2V0ID0gc2l6ZTsgfQorCitwcml2YXRlOgorICAgIC8vIE1hbnkgZmllbGRzIGFy
ZSBpbiBOb2RlUmFyZURhdGEgZm9yIGJldHRlciBwYWNraW5nLgogICAgIExheW91dFNpemUgbV9t
aW5pbXVtU2l6ZUZvclJlc2l6aW5nOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9jb21wdXRl
ZFN0eWxlOwogCi0gICAgT3duUHRyPERhdGFzZXRET01TdHJpbmdNYXA+IG1fZGF0YXNldERPTVN0
cmluZ01hcDsKKyAgICBPd25QdHI8RGF0YXNldERPTVN0cmluZ01hcD4gbV9kYXRhc2V0OwogICAg
IE93blB0cjxDbGFzc0xpc3Q+IG1fY2xhc3NMaXN0OwogICAgIE93blB0cjxFbGVtZW50U2hhZG93
PiBtX3NoYWRvdzsKICAgICBPd25QdHI8TmFtZWROb2RlTWFwPiBtX2F0dHJpYnV0ZU1hcDsKQEAg
LTEwNCw3ICsxMzMsNyBAQCBpbmxpbmUgRWxlbWVudFJhcmVEYXRhOjp+RWxlbWVudFJhcmVEYXRh
KCkKIAogaW5saW5lIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldENvbXB1dGVkU3R5bGUoKQog
ewotICAgIG1fY29tcHV0ZWRTdHlsZS5jbGVhcigpOworICAgIHNldENvbXB1dGVkU3R5bGUoMCk7
CiAgICAgc2V0U3R5bGVBZmZlY3RlZEJ5RW1wdHkoZmFsc2UpOwogICAgIHNldENoaWxkSW5kZXgo
MCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRhLmgKaW5kZXggZjhmODU4Y2JhMmE3MzU2Y2Zi
ZGFjMjcyMDk5MDY5Y2YyOWE3MDFjZC4uMjRlZjIzMzRiZGQwYzE1ZTdjZTA0NDIwZDRjMGUwZmQ4
MGY0Nzg1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaApAQCAtMzI3LDQyICszMjcsNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIC8vIGZvciBFbGVtZW50UmFyZURhdGEK
LSAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNoKCkgY29u
c3QgeyByZXR1cm4gbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZVNvb25BZnRlckF0dGFjaDsg
fQotICAgIHZvaWQgc2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGVTb29uQWZ0ZXJBdHRhY2go
Ym9vbCBuZWVkcykgeyBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlU29vbkFmdGVyQXR0YWNo
ID0gbmVlZHM7IH0KLSAgICBib29sIHN0eWxlQWZmZWN0ZWRCeUVtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZUFmZmVjdGVkQnlFbXB0eTsgfQotICAgIHZvaWQgc2V0U3R5bGVBZmZlY3RlZEJ5
RW1wdHkoYm9vbCB2YWx1ZSkgeyBtX3N0eWxlQWZmZWN0ZWRCeUVtcHR5ID0gdmFsdWU7IH0KLSAg
ICBib29sIGlzSW5DYW52YXNTdWJ0cmVlKCkgY29uc3QgeyByZXR1cm4gbV9pc0luQ2FudmFzU3Vi
dHJlZTsgfQotICAgIHZvaWQgc2V0SXNJbkNhbnZhc1N1YnRyZWUoYm9vbCB2YWx1ZSkgeyBtX2lz
SW5DYW52YXNTdWJ0cmVlID0gdmFsdWU7IH0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0g
ICAgYm9vbCBjb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkgeyByZXR1cm4gbV9jb250YWluc0Z1
bGxTY3JlZW5FbGVtZW50OyB9Ci0gICAgdm9pZCBzZXRDb250YWluc0Z1bGxTY3JlZW5FbGVtZW50
KGJvb2wgdmFsdWUpIHsgbV9jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50ID0gdmFsdWU7IH0KLSNl
bmRpZgotI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKLSAgICBib29sIGlzSW5Ub3BMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1faXNJblRvcExheWVyOyB9Ci0gICAgdm9pZCBzZXRJc0luVG9wTGF5
ZXIoYm9vbCB2YWx1ZSkgeyBtX2lzSW5Ub3BMYXllciA9IHZhbHVlOyB9Ci0jZW5kaWYKLSAgICBi
b29sIGNoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFm
ZmVjdGVkQnlIb3ZlcjsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5SG92ZXIoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUhvdmVyID0gdmFsdWU7IH0KLSAgICBib29s
IGNoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZl
Y3RlZEJ5QWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlBY3RpdmUoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUFjdGl2ZSA9IHZhbHVlOyB9Ci0gICAgYm9v
bCBjaGlsZHJlbkFmZmVjdGVkQnlEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVj
dGVkQnlEcmFnOyB9Ci0gICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGJvb2wgdmFs
dWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlEcmFnID0gdmFsdWU7IH0KLQotICAgIGJvb2wgY2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJl
bkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXM7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rmly
c3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0KLSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUxhc3RD
aGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlczsgfQotICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoYm9v
bCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0gdmFsdWU7IH0K
LSAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoKSBjb25zdCB7
IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXM7IH0KLSAgICB2
b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMoYm9vbCB2YWx1ZSkg
eyBtX2NoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50UnVsZXMgPSB2YWx1ZTsgfQotICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlczsgfQotICAg
IHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhib29sIHZh
bHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyA9IHZhbHVl
OyB9Ci0gICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXM7IH0KLSAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKGJvb2wgdmFsdWUpIHsgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxS
dWxlcyA9IHZhbHVlOyB9Ci0gICAgdW5zaWduZWQgY2hpbGRJbmRleCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2hpbGRJbmRleDsgfQotICAgIHZvaWQgc2V0Q2hpbGRJbmRleCh1bnNpZ25lZCBpbmRleCkg
eyBtX2NoaWxkSW5kZXggPSBpbmRleDsgfQotCi1wcml2YXRlOgogICAgIE93blB0cjxOb2RlTGlz
dHNOb2RlRGF0YT4gbV9ub2RlTGlzdHM7CiAgICAgQ2hpbGROb2RlTGlzdCogbV9jaGlsZE5vZGVM
aXN0OwogICAgIHNob3J0IG1fdGFiSW5kZXg7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>