<?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>86058</bug_id>
          
          <creation_ts>2012-05-09 22:07:35 -0700</creation_ts>
          <short_desc>[Forms] Move ValidityState methods implementation to another place</short_desc>
          <delta_ts>2012-05-28 22:52:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</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>
          <dependson>86201</dependson>
          <blocked>80381</blocked>
    
    <blocked>82034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>620246</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-05-09 22:07:35 -0700</bug_when>
    <thetext>This is part of re-factoring of HTMLInputElement class for Steppable input type.

The objective of this change is
 1. Limit scope of Steppable input type related methods, maximumString, minimumString and stepString.
 2. Dispatching by virtual method rather than type checking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620409</commentid>
    <comment_count>1</comment_count>
      <attachid>141119</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 02:43:43 -0700</bug_when>
    <thetext>Created attachment 141119
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620413</commentid>
    <comment_count>2</comment_count>
      <attachid>141122</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 02:51:13 -0700</bug_when>
    <thetext>Created attachment 141122
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620416</commentid>
    <comment_count>3</comment_count>
      <attachid>141124</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 02:56:25 -0700</bug_when>
    <thetext>Created attachment 141124
Patch 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620419</commentid>
    <comment_count>4</comment_count>
      <attachid>141125</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 03:00:42 -0700</bug_when>
    <thetext>Created attachment 141125
Patch 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620422</commentid>
    <comment_count>5</comment_count>
      <attachid>141126</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 03:06:19 -0700</bug_when>
    <thetext>Created attachment 141126
Patch 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620423</commentid>
    <comment_count>6</comment_count>
      <attachid>141127</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 03:14:19 -0700</bug_when>
    <thetext>Created attachment 141127
Patch 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621189</commentid>
    <comment_count>7</comment_count>
      <attachid>141310</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 18:47:28 -0700</bug_when>
    <thetext>Created attachment 141310
Patch 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621208</commentid>
    <comment_count>8</comment_count>
      <attachid>141310</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-10 19:27:27 -0700</bug_when>
    <thetext>Comment on attachment 141310
Patch 7

It seems cr-linux is too busy. Could you review changes for style and design?
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621293</commentid>
    <comment_count>9</comment_count>
      <attachid>141310</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-10 23:09:40 -0700</bug_when>
    <thetext>Comment on attachment 141310
Patch 7

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

&gt; Source/WebCore/ChangeLog:91
&gt; +        * html/FormAssociatedElement.cpp:
&gt; +        (WebCore::FormAssociatedElement::formAttributeChanged):
&gt; +        (WebCore::FormAssociatedElement::customError):
&gt; +        (WebCore):
&gt; +        (WebCore::FormAssociatedElement::patternMismatch):
&gt; +        (WebCore::FormAssociatedElement::rangeOverflow):
&gt; +        (WebCore::FormAssociatedElement::rangeUnderflow):
&gt; +        (WebCore::FormAssociatedElement::stepMismatch):
&gt; +        (WebCore::FormAssociatedElement::tooLong):
&gt; +        (WebCore::FormAssociatedElement::typeMismatch):
&gt; +        (WebCore::FormAssociatedElement::valid):
&gt; +        (WebCore::FormAssociatedElement::valueMissing):
&gt; +        (WebCore::FormAssociatedElement::customValidationMessage):
&gt; +        (WebCore::FormAssociatedElement::validationMessage):
&gt; +        (WebCore::FormAssociatedElement::setCustomValidity):
&gt; +        * html/FormAssociatedElement.h:
&gt; +        (FormAssociatedElement):
&gt; +        * html/HTMLFormControlElement.cpp:
&gt; +        (WebCore::HTMLFormControlElement::setCustomValidity):
&gt; +        * html/HTMLFormControlElement.h:
&gt; +        (HTMLFormControlElement):
&gt; +        * html/HTMLInputElement.cpp:
&gt; +        (WebCore::HTMLInputElement::isValidValue):
&gt; +        (WebCore::HTMLInputElement::tooLong):
&gt; +        (WebCore):
&gt; +        (WebCore::HTMLInputElement::typeMismatch):
&gt; +        (WebCore::HTMLInputElement::valueMissing):
&gt; +        (WebCore::HTMLInputElement::patternMismatch):
&gt; +        (WebCore::HTMLInputElement::rangeUnderflow):
&gt; +        (WebCore::HTMLInputElement::rangeOverflow):
&gt; +        (WebCore::HTMLInputElement::validationMessage):
&gt; +        (WebCore::HTMLInputElement::minimum):
&gt; +        (WebCore::HTMLInputElement::maximum):
&gt; +        (WebCore::HTMLInputElement::stepMismatch):
&gt; +        (WebCore::HTMLInputElement::isInRange):
&gt; +        (WebCore::HTMLInputElement::isOutOfRange):
&gt; +        * html/HTMLInputElement.h:
&gt; +        (HTMLInputElement):
&gt; +        * html/HTMLObjectElement.h:
&gt; +        * html/HTMLSelectElement.cpp:
&gt; +        (WebCore::HTMLSelectElement::validationMessage):
&gt; +        (WebCore):
&gt; +        (WebCore::HTMLSelectElement::valueMissing):
&gt; +        * html/HTMLSelectElement.h:
&gt; +        (HTMLSelectElement):
&gt; +        * html/HTMLTextAreaElement.cpp:
&gt; +        (WebCore::HTMLTextAreaElement::validationMessage):
&gt; +        (WebCore):
&gt; +        (WebCore::HTMLTextAreaElement::valueMissing):
&gt; +        (WebCore::HTMLTextAreaElement::tooLong):
&gt; +        * html/HTMLTextAreaElement.h:
&gt; +        (HTMLTextAreaElement):
&gt; +        * html/InputType.cpp:
&gt; +        (WebCore::InputType::stepMismatch):
&gt; +        (WebCore):
&gt; +        (WebCore::InputType::alignValueForStep):
&gt; +        (WebCore::InputType::stepUpFromRenderer):
&gt; +        (WebCore::InputType::validationMessage):
&gt; +        * html/InputType.h:
&gt; +        (InputType):
&gt; +        * html/ValidityState.cpp:
&gt; +        (WebCore::ValidityState::validationMessage):
&gt; +        (WebCore::ValidityState::valueMissing):
&gt; +        (WebCore::ValidityState::typeMismatch):
&gt; +        (WebCore::ValidityState::patternMismatch):
&gt; +        (WebCore::ValidityState::tooLong):
&gt; +        (WebCore::ValidityState::rangeUnderflow):
&gt; +        (WebCore::ValidityState::rangeOverflow):
&gt; +        (WebCore::ValidityState::stepMismatch):
&gt; +        (WebCore::ValidityState::customError):
&gt; +        (WebCore::ValidityState::valid):
&gt; +        * html/ValidityState.h:
&gt; +        (ValidityState):

You had better write what you changed for each of functions.

&gt; Source/WebCore/html/HTMLInputElement.h:51
&gt;      bool tooLong(const String&amp;, NeedsToCheckDirtyFlag) const;

I think we can make this private.

&gt; Source/WebCore/html/HTMLInputElement.h:60
&gt; +    // valueMissing() ignores the specified string value for CHECKBOX and RADIO.
&gt; +    virtual bool valueMissing() const OVERRIDE;

This comment is stale.  We should remove it.

&gt; Source/WebCore/html/HTMLTextAreaElement.h:55
&gt;      bool valueMissing(const String&amp; value) const { return isRequiredFormControl() &amp;&amp; !disabled() &amp;&amp; !readOnly() &amp;&amp; value.isEmpty(); }
&gt;      bool tooLong(const String&amp;, NeedsToCheckDirtyFlag) const;

We should make them private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621317</commentid>
    <comment_count>10</comment_count>
      <attachid>141337</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 00:02:52 -0700</bug_when>
    <thetext>Created attachment 141337
Patch 8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621334</commentid>
    <comment_count>11</comment_count>
      <attachid>141339</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 00:16:05 -0700</bug_when>
    <thetext>Created attachment 141339
Patch 9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621347</commentid>
    <comment_count>12</comment_count>
      <attachid>141343</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 00:26:51 -0700</bug_when>
    <thetext>Created attachment 141343
Patch 10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621381</commentid>
    <comment_count>13</comment_count>
      <attachid>141343</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 01:31:37 -0700</bug_when>
    <thetext>Comment on attachment 141343
Patch 10

Thanks for review. I updated this patch as you suggested.

Failure of EWS-WIN doesn&apos;t relate to my patch, I copy/paste error message at botton.

Thanks in advance.

..\WebProcess\WebCoreSupport\win\WebPopupMenuWin.cpp(122) : error C2664: &apos;WebCore::TextRun::TextRun(const UChar *,int,float,float,WebCore::TextRun::ExpansionBehavior,WebCore::TextDirection,bool,bool,WebCore::TextRun::RoundingHacks)&apos; : cannot convert parameter 6 from &apos;WebCore::TextRun::ExpansionBehaviorFlags&apos; to &apos;WebCore::TextDirection&apos;
7&gt;        Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621423</commentid>
    <comment_count>14</comment_count>
      <attachid>141343</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 02:29:37 -0700</bug_when>
    <thetext>Comment on attachment 141343
Patch 10

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

&gt; Source/WebCore/html/InputType.h:160
&gt; +    virtual bool stepMismatch(const String&amp;) const;

We don&apos;t need to make this virtual, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621433</commentid>
    <comment_count>15</comment_count>
      <attachid>141343</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 02:40:36 -0700</bug_when>
    <thetext>Comment on attachment 141343
Patch 10

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

&gt; Source/WebCore/html/FormAssociatedElement.h:64
&gt; +    virtual bool customError() const;

We don&apos;t need to make this virtual.

&gt; Source/WebCore/html/FormAssociatedElement.h:70
&gt; +    virtual bool patternMismatch() const;
&gt; +    virtual bool rangeOverflow() const;
&gt; +    virtual bool rangeUnderflow() const;
&gt; +    virtual bool stepMismatch() const;
&gt; +    virtual bool tooLong() const;
&gt; +    virtual bool typeMismatch() const;

We should add a comment that an override function must call willValidate().

&gt; Source/WebCore/html/FormAssociatedElement.h:71
&gt; +    virtual bool valid() const;

We don&apos;t need to make this virtual.

&gt; Source/WebCore/html/FormAssociatedElement.h:72
&gt; +    virtual bool valueMissing() const;

We should add a comment that an override function must call willValidate().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621441</commentid>
    <comment_count>16</comment_count>
      <attachid>141366</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 02:50:31 -0700</bug_when>
    <thetext>Created attachment 141366
Patch 11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621443</commentid>
    <comment_count>17</comment_count>
      <attachid>141366</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-11 02:53:22 -0700</bug_when>
    <thetext>Comment on attachment 141366
Patch 11

Thanks for review.
I updated comments in FormAssociateElement.h as you suggested.

Local build was succeeded and changes at this time is comment only. So, EWS build should be passed.

Please review this patch.
Thanks in advance!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621447</commentid>
    <comment_count>18</comment_count>
      <attachid>141366</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 02:59:49 -0700</bug_when>
    <thetext>Comment on attachment 141366
Patch 11

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621511</commentid>
    <comment_count>19</comment_count>
      <attachid>141366</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 05:39:04 -0700</bug_when>
    <thetext>Comment on attachment 141366
Patch 11

Clearing flags on attachment: 141366

Committed r116752: &lt;http://trac.webkit.org/changeset/116752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621512</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 05:39:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621529</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-11 05:48:10 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 86201</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>621531</commentid>
    <comment_count>22</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-05-11 05:49:27 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 141366 [details])
&gt; Clearing flags on attachment: 141366
&gt; 
&gt; Committed r116752: &lt;http://trac.webkit.org/changeset/116752&gt;

roll out because of Chromium-mac build errors.


In file included from third_party/WebKit/Source/WebCore/html/HTMLFormControlElementWithState.h:27:
third_party/WebKit/Source/WebCore/html/HTMLFormControlElement.h:98:12:error: &apos;WebCore::HTMLFormControlElement::validationMessage&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    String validationMessage();
           ^
third_party/WebKit/Source/WebCore/html/FormAssociatedElement.h:75:20: note: hidden overloaded virtual function &apos;WebCore::FormAssociatedElement::validationMessage&apos; declared here
    virtual String validationMessage() const;
                   ^</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622607</commentid>
    <comment_count>23</comment_count>
      <attachid>141627</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-13 19:03:15 -0700</bug_when>
    <thetext>Created attachment 141627
Patch 12 - Fix virtual/override issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622613</commentid>
    <comment_count>24</comment_count>
      <attachid>141627</attachid>
    <who name="">yosin</who>
    <bug_when>2012-05-13 19:19:33 -0700</bug_when>
    <thetext>Comment on attachment 141627
Patch 12 - Fix virtual/override issues

Build locally with Chromium-Mac/clang to make sure virtual/override declaration correct.

Changes are in HTMLFormControlElement.{cpp,h}, HTMLObjectElement.h.

Please review again.
Thanks in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622628</commentid>
    <comment_count>25</comment_count>
      <attachid>141627</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-13 21:22:00 -0700</bug_when>
    <thetext>Comment on attachment 141627
Patch 12 - Fix virtual/override issues

Clearing flags on attachment: 141627

Committed r116915: &lt;http://trac.webkit.org/changeset/116915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622629</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-13 21:22:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141119</attachid>
            <date>2012-05-10 02:43:43 -0700</date>
            <delta_ts>2012-05-10 02:51:08 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-86058-20120510184341.patch</filename>
            <type>text/plain</type>
            <size>32325</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uMTg5YzJhZTIyMjMyODljMmJlYWVlNmFmZGExNmE2MTQzYWU1ZjllOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyZXNldEZvcm1Pd25l
cigpCiAKIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgp
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOworICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChjb25zdF9jYXN0PEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCo+KHRoaXMpKTsKICAgICBpZiAoIWVsZW1lbnQtPmZhc3RIYXNBdHRyaWJ1
dGUoZm9ybUF0dHIpKSB7CiAgICAgICAgIC8vIFRoZSBmb3JtIGF0dHJpYnV0ZSByZW1vdmVkLiBX
ZSBuZWVkIHRvIHJlc2V0IGZvcm0gb3duZXIgaGVyZS4KICAgICAgICAgc2V0Rm9ybShlbGVtZW50
LT5maW5kRm9ybUFuY2VzdG9yKCkpOwpAQCAtMTU3LDYgKzE1Nyw3NSBAQCB2b2lkIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1P
d25lcigpOwogfQogCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBj
b25zdAoreworICAgIGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0
aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFs
aWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVy
ZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0
Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sKKyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNt
YXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVy
ZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmcoKSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1
ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigpOworICAgIHJldHVybiAhc29tZUVycm9yOworfQor
Citib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3Rv
bVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0
aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICghdG9IVE1MRWxlbWVudCh0aGlzKS0+d2lsbFZh
bGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0b21FcnJv
cigpKQorICAgICAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKKworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3Rv
bVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3IpCit7CisgICAgbV9jdXN0b21WYWxpZGF0aW9u
TWVzc2FnZSA9IGVycm9yOworfQorCiBjb25zdCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChj
b25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50KQogewogICAgIGlm
IChhc3NvY2lhdGVkRWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IDI4NGUyOThmZDk3ZTU0MmQx
YjBiMmNkNDZiYzM0Mjg1MWVkNGEyZjEuLjk4MjhhYTJhN2UyYmFiMjNiNTQyMjFlNDdkZjczYmQ1
NDZlZTdhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQu
aApAQCAtNjAsNiArNjAsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JtUmVtb3ZlZEZyb21U
cmVlKGNvbnN0IE5vZGUqIGZvcm1Sb290KTsKIAorICAgIC8vIFZhbGlkaXR5U3RhdGUgYXR0cmli
dXRlIGltcGxlbWVudGF0aW9ucworICAgIHZpcnR1YWwgYm9vbCBjdXN0b21FcnJvcigpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVy
ZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlz
bWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsaWQoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRh
dGlvbk1lc3NhZ2UoKSBjb25zdDsKKyAgICB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0
cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAg
LTc2LDYgKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRm9y
bSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJpbmcgY3Vz
dG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNv
bnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3QgPSAwOwogCkBAIC04NCw2
ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBP
d25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBtX2N1c3Rv
bVZhbGlkYXRpb25NZXNzYWdlOwogfTsKIAogSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9y
bUFzc29jaWF0ZWRFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAppbmRleCA5NzQ5MzhmMGNkODUzNmExNjdhNGNhYmY0Njk4NmU0Njhi
ZmVmMWI2Li5kNGU5Y2Y5ZDhiYWZmNGNmOTZlNGJlNTk5Y2FiYTljOGZmYzQ5Mjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4Miw3
ICs0ODIsOCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlD
aGVjaygpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHko
Y29uc3QgU3RyaW5nJiBlcnJvcikKIHsKLSAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1l
c3NhZ2UoZXJyb3IpOworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRp
dHkoZXJyb3IpOworICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3
Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29u
dHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCmluZGV4IDM2NDc5NjhkYTE0NDMzNzc2OTc1NTFiZGIxYmVhZDAxODM4NDA4Y2IuLmU4ZGZj
ZGEyNWFlYTc2NTQxZmUyODg4NjE4YTdlNDY1ZjE5NTU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxl
bWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0
IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUg
aXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIHZvaWQg
c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1
c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgYm9vbCByZWFkT25s
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAKaW5kZXggNmZlNTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4OTFlNDhk
NDc5YWVmNy4uYjc1YzViNDA0MThkZmJhYjFmM2MwNjBjNDk4MjM0MTdhY2ViMTBlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xOTIsMjYgKzE5MiwzNSBA
QCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogICAgIH0KICAgICByZXR1cm4gIW1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hGb3Io
dmFsdWUpCiAgICAgICAgICYmICFzdGVwTWlzbWF0Y2godmFsdWUpCi0gICAgICAgICYmICFyYW5n
ZVVuZGVyZmxvdyh2YWx1ZSkKLSAgICAgICAgJiYgIXJhbmdlT3ZlcmZsb3codmFsdWUpCisgICAg
ICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpCisgICAgICAgICYmICFt
X2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSkKICAgICAgICAgJiYgIXRvb0xvbmcodmFs
dWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAgICAgJiYgIXBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkK
LSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAgICAgICYmICFtX2lucHV0VHlw
ZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnZhbHVl
TWlzc2luZyh2YWx1ZSk7CiB9CiAKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZygpIGNv
bnN0Cit7CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgcmV0dXJuIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCisKIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAm
JiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVu
dDo6dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT52YWx1ZU1pc3NpbmcodmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lu
cHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRl
KCkgJiYgbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAgLTIzMiw2OCArMjQxLDc2IEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0
eUZsYWcgY2hlY2spCiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUpID4gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1heCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFu
Z2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+
cmFuZ2VVbmRlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lu
cHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxl
bWVudDo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAm
JiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAotZG91YmxlIEhUTUxJ
bnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAorU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmlt
dW0oKTsKLX0KKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsKLX0KKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkK
KyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKLWJvb2wgSFRNTElu
cHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0g
ICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNo
KHZhbHVlLCBzdGVwKTsKLX0KKyAgICAvLyBUaGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjaGVj
a3MgaXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdkIGxpa2UgdG8gc2hvdyB0aGUKKyAgICAvLyB2YWx1
ZU1pc3NpbmcgbWVzc2FnZSBldmVuIGlmIHRoZSBjb250cm9sIGhhcyBvdGhlciB2YWxpZGF0aW9u
IGVycm9ycy4KKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAgICAgIHJldHVybiBtX2lucHV0
VHlwZS0+dmFsdWVNaXNzaW5nVGV4dCgpOwogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6bWlu
aW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUo
bWluaW11bSgpKTsKLX0KKyAgICBpZiAodG9vTG9uZygpKQorICAgICAgICByZXR1cm4gdmFsaWRh
dGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKCkpLCBtYXhM
ZW5ndGgoKSk7CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtU3RyaW5nKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtYXhpbXVtKCkpOworICAg
IGlmICh0eXBlTWlzbWF0Y2goKSkKKyAgICAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlz
bWF0Y2hUZXh0KCk7CisKKyAgICBpZiAocGF0dGVybk1pc21hdGNoKCkpCisgICAgICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKworICAgIGlmICh0b29M
b25nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdy
YXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIGlmIChyYW5nZVVu
ZGVyZmxvdygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxv
d1RleHQobV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtaW5pbXVtKCkpKTsKKworICAgIGlmIChyYW5n
ZU92ZXJmbG93KCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZs
b3dUZXh0KG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11bSgpKSk7CisKKyAgICBpZiAoc3Rl
cE1pc21hdGNoKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0ZXBTdHJpbmc7CisgICAgICAgIGRvdWJs
ZSBzdGVwOworICAgICAgICBpZiAoZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAg
ICAgICBzdGVwU3RyaW5nID0gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1dFR5
cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
U3RlcE1pc21hdGNoVGV4dChtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1faW5wdXRUeXBlLT5zdGVw
QmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOwogfQog
Ci1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6c3RlcEJhc2VTdHJpbmcoKSBjb25zdAorZG91Ymxl
IEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0
VHlwZS0+c2VyaWFsaXplKG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpKTsKKyAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPm1pbmltdW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBT
dHJpbmcoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAog
ewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkp
IHsKLSAgICAgICAgLy8gc3RlcFN0cmluZygpIHNob3VsZCBiZSBjYWxsZWQgb25seSBpZiBzdGVw
TWlzbWF0Y2goKSBjYW4gYmUgdHJ1ZS4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51
bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBlLT5zdGVwU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50
Ojp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1p
c21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaFRl
eHQoKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgc3RlcE1pc21hdGNoKHZhbHVlKCkp
OwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0
Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nVGV4dCgpOwor
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNoKHZhbHVlKTsKIH0KIAogYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QK
QEAgLTEyNzUsMTIgKzEyOTIsMTIgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpoYXNVbmFjY2Vw
dGFibGVWYWx1ZSgpIGNvbnN0CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9u
KCkgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKCkp
OworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAh
bV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFtX2lucHV0VHlwZS0+cmFu
Z2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc091dE9m
UmFuZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxp
bWl0YXRpb24oKSAmJiAocmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwgcmFuZ2VPdmVyZmxvdyh2
YWx1ZSgpKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlv
bigpICYmIChtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwgbV9pbnB1dFR5
cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6
Om5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKaW5kZXggZTM0YTAzZTYzNWU5ZGZjMzQwYjA1MGRkZTFiZGFjYTk4Mzg3NTg5ZC4uZTUx
MjNkYmJjMDNiZWE2N2I4YjEwMDU0Mzk2MjcxY2M1ODQwZjNjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ4LDEzICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCiAgICAgLy8gRm9yIFZhbGlk
aXR5U3RhdGUKLSAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0OwotICAgIC8vIHZhbHVlTWlz
c2luZygpIGlnbm9yZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdmFsdWUgZm9yIENIRUNLQk9YIGFu
ZCBSQURJTy4KLSAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAg
ICBib29sIHBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIHRv
b0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKLSAgICBi
b29sIHJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VP
dmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICAvLyB2YWx1ZU1pc3NpbmcoKSBp
Z25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8u
CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAv
LyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFu
Z2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90aGVyIHR5cGVzLgogICAgIGRvdWJsZSBtaW5pbXVt
KCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRl
LCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KQEAg
LTY0LDE1ICs2OSw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlz
IG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgogICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChk
b3VibGUqKSBjb25zdDsKIAotICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlLgotICAgIGJvb2wgc3Rl
cE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIFN0cmluZyBtaW5pbXVtU3RyaW5n
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1heGltdW1TdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcg
c3RlcEJhc2VTdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RlcFN0cmluZygpIGNvbnN0Owot
ICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbHVlTWlz
c2luZ1RleHQoKSBjb25zdDsKLQogICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBIVE1MSW5wdXRF
bGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24oKS4KICAgICB2b2lkIHN0ZXBVcChpbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN0ZXBEb3duKGludCwgRXhjZXB0aW9uQ29kZSYpOwpA
QCAtMzM5LDYgKzMzNSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxW
YWxpZGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5n
ZWQoKSBPVkVSUklERTsKIAorICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNv
bnN0OworCiAgICAgdm9pZCB1cGRhdGVUeXBlKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN1
YnRyZWVIYXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
aW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFh
ZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5OWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0
aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50
IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKICAgICB1
c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJl
ZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2UxMDc0Mjg3ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEu
LmZhY2I1MDIyMzgzMGViNWJkNjY1NjFjM2MzYzVhMzAzNmI2NjIwZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE0NSw4ICsxNDYsMTggQEAgYm9vbCBIVE1M
U2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKTsKIH0KIAorU3RyaW5n
IEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGN1c3RvbUVycm9yKCkKKyAgICAgICAgPyBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpCisg
ICAgICAgIDogdmFsdWVNaXNzaW5nKCkgPyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zv
clNlbGVjdFRleHQoKSA6IFN0cmluZygpOworfQorCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp2
YWx1ZU1pc3NpbmcoKSBjb25zdAogeworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGlmICghaXNSZXF1aXJlZEZvcm1Db250cm9sKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
CmluZGV4IDUyNjY1ZTE5NWI0OTFiZTNiMDQ1YzViMmRiZDI2NTZlMTg2ZGUwOTYuLjgyYjcyNzMz
ODg2MmMyMzI3NzQ0ZWEyNWUzMTU5NDE5ZTgzNWEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgb3B0
aW9uU2VsZWN0ZWRCeVVzZXIoaW50IGluZGV4LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJv
b2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKIAogICAgIC8vIEZvciBWYWxpZGl0
eVN0YXRlCi0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2
YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCA2MzY2M2E5N2ZjYzdiMGNiZmZlZjkxZjU5YjQ3ZjVlNGUxNGZiMjRkLi4zNWM1NjAyODAxZjc5
MzIzMGY1YzhlYjg0MzIyMDlmMzUxZTBlZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBA
IC00MjMsNiArNDI0LDMzIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0TWF4TGVuZ3Ro
KGludCBuZXdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldEF0dHJpYnV0ZSht
YXhsZW5ndGhBdHRyLCBTdHJpbmc6Om51bWJlcihuZXdWYWx1ZSkpOwogfQogCitTdHJpbmcgSFRN
TFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICgh
d2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0
b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKwor
ICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAgaWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJu
IHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgp
KSwgbWF4TGVuZ3RoKCkpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxW
YWxpZGF0ZSgpICYmIHZhbHVlTWlzc2luZyh2YWx1ZSgpKTsKK30KKworYm9vbCBIVE1MVGV4dEFy
ZWFFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkg
JiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0RpcnR5RmxhZyk7Cit9CisKIGJvb2wgSFRNTFRleHRB
cmVhRWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0
eUZsYWcgY2hlY2spIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIGZhbHNlIGZvciB0aGUgZGVmYXVs
dCB2YWx1ZSBvciB2YWx1ZSBzZXQgYnkgc2NyaXB0IGV2ZW4gaWYgaXQgaXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggYTE5YTQ3MWE5NjRiYTkwZDMwYWQ3
NDg5NDMwMTM2ZjI0OTU3M2MxYy4uYzg5YTcxODNhNzhjNjIxZWEzMzdkNzhiNzU0ZGJkMzRjZDYx
ZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQ3
LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlKCkubGVuZ3RoKCk7IH0KICAgICB2aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdDsK
ICAgICB2b2lkIHNldE1heExlbmd0aChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBGb3Ig
VmFsaWRpdHlTdGF0ZQorICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgYm9v
bCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUu
aXNFbXB0eSgpOyB9CiAgICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZykgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOTk3MTgyYWJhZTdkNDRiZmI3
MDc5YTRiYTg0YzdlZDk0NWE5NTdmMi4uODY0NjdjODkxODQ4MmU0NTY4ZjUyM2UwNGMxZTI1NDA4
NDA4ODcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjgzLDYgKzI4MywxNCBA
QCBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBw
cmVmZXJyZWRTaXplKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5
cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGRvdWJs
ZSBzdGVwOworICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RlcE1pc21hdGNoKHZhbHVlLCBzdGVwKTsKK30KKwog
Ym9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0
CiB7CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRN
TElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCgpLgpAQCAtODcwLDcgKzg3OCw3IEBA
IGRvdWJsZSBJbnB1dFR5cGU6OmFsaWduVmFsdWVGb3JTdGVwKGRvdWJsZSBuZXdWYWx1ZSwgZG91
YmxlIHN0ZXAsIHVuc2lnbmVkIGN1cnJlCiAgICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFjZXM7
CiAgICAgZG91YmxlIGJhc2UgPSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1h
bFBsYWNlcyk7CiAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBtaW4oYmFzZURlY2ltYWxQbGFjZXMs
IDE2dSk7Ci0gICAgaWYgKGVsZW1lbnQoKS0+c3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUo
KSkpIHsKKyAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAg
ICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBE
ZWNpbWFsUGxhY2VzLCBjdXJyZW50RGVjaW1hbFBsYWNlcykpKTsKICAgICAgICAgbmV3VmFsdWUg
PSByb3VuZChuZXdWYWx1ZSAqIHNjYWxlKSAvIHNjYWxlOwogICAgIH0gZWxzZSB7CkBAIC0xMDIz
LDcgKzEwMzEsNyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQog
ICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6ZShzaWduID4gMCA/IG1pbmltdW0o
KSA6IG1heGltdW0oKSksIERpc3BhdGNoSW5wdXRBbmRDaGFuZ2VFdmVudCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgIGlmIChlbGVtZW50KCktPnN0ZXBN
aXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAgICAgIGlmIChzdGVwTWlzbWF0Y2go
ZWxlbWVudCgpLT52YWx1ZSgpKSkgewogICAgICAgICAgICAgQVNTRVJUKHN0ZXApOwogICAgICAg
ICAgICAgZG91YmxlIG5ld1ZhbHVlOwogICAgICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEw
LjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBiYXNlRGVjaW1h
bFBsYWNlcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmluZGV4IDFjODZjYjBmY2NhOTNhN2Iz
MjEyODhkOTgyZTk4YzRkOWM4YzgwZDYuLmIxZDVmMmZmZDExNTVlYTlkMWVhZTExNWEwNmZlZWRk
ZTEzYjE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBk
b3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVk
ZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29u
c3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRv
dWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmZTczMTJjMmEzMDJkMzU1N2MwY2VjZjhm
NjM0M2QzZWJjYmFjMDYzLi42NDk3NjVkZjkxNDY4N2Q1NDhmOTBiZjUzMWQ0NDU3ZGY2NjRjNmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTM4LDE3NyArMzgsNTIg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogU3RyaW5nIFZhbGlkaXR5U3RhdGU6OnZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIXRvSFRNTEVsZW1lbnQobV9jb250
cm9sKS0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlm
IChjdXN0b21FcnJvcigpKQotICAgICAgICByZXR1cm4gbV9jdXN0b21FcnJvck1lc3NhZ2U7Ci0g
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAg
Ym9vbCBpc0lucHV0RWxlbWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYg
ZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZyk7Ci0gICAgYm9vbCBpc1RleHRBcmVhRWxlbWVu
dCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFt
ZSh0ZXh0YXJlYVRhZyk7Ci0gICAgLy8gVGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tz
IGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNob3cgdGhlCi0gICAgLy8gdmFsdWVN
aXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBl
cnJvcnMuCi0gICAgaWYgKHZhbHVlTWlzc2luZygpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5o
YXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCk7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxl
bWVudCktPnZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nVGV4dCgpOwotICAgIH0KLSAgICBpZiAodHlwZU1pc21hdGNoKCkpIHsK
LSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoVGV4dCgpOwotICAg
ICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAgfQot
ICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2goKSkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwotICAgIGlmICh0b29Mb25nKCkpIHsKLSAgICAgICAg
aWYgKCFpc0lucHV0RWxlbWVudCAmJiAhaXNUZXh0QXJlYUVsZW1lbnQpIHsKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICB9Ci0gICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh0ZXh0
LT52YWx1ZSgpKSwgdGV4dC0+bWF4TGVuZ3RoKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VVbmRl
cmZsb3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT5taW5pbXVtU3RyaW5nKCkp
OwotICAgIH0KLSAgICBpZiAocmFuZ2VPdmVyZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1
dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihl
bGVtZW50KS0+bWF4aW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHN0ZXBNaXNtYXRjaCgp
KSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0g
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlz
bWF0Y2hUZXh0KGlucHV0LT5zdGVwQmFzZVN0cmluZygpLCBpbnB1dC0+c3RlcFN0cmluZygpKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgVmFsaWRpdHlTdGF0ZTo6
c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX2N1
c3RvbUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgaWYgKG1fY29udHJvbC0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVu
dCo+KG1fY29udHJvbCktPnNldE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIHJldHVybiBtX2Nv
bnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFs
dWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVs
ZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRh
ZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBpbnB1dC0+dmFsdWVNaXNz
aW5nKGlucHV0LT52YWx1ZSgpKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUo
dGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0g
c3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1
cm4gdGV4dEFyZWEtPnZhbHVlTWlzc2luZyh0ZXh0QXJlYS0+dmFsdWUoKSk7Ci0gICAgfQotICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJldHVybiB0b0hU
TUxTZWxlY3RFbGVtZW50KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmcoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsdWVNaXNzaW5nKCk7CiB9CiAKIGJvb2wgVmFs
aWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxW
YWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhh
c1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoKCk7Cisg
ICAgcmV0dXJuIG1fY29udHJvbC0+dHlwZU1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlT
dGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxp
ZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0g
ICAgcmV0dXJuIGlucHV0LT5wYXR0ZXJuTWlzbWF0Y2goaW5wdXQtPnZhbHVlKCkpOworICAgIHJl
dHVybiBtX2NvbnRyb2wtPnBhdHRlcm5NaXNtYXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3Rh
dGU6OnRvb0xvbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT50b29Mb25n
KGlucHV0LT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tEaXJ0eUZs
YWcpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpIHsK
LSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB0ZXh0QXJlYS0+dG9v
TG9uZyh0ZXh0QXJlYS0+dmFsdWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNoZWNr
RGlydHlGbGFnKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRy
b2wtPnRvb0xvbmcoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZVVuZGVyZmxvdygp
IGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29u
dHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VV
bmRlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdlVW5k
ZXJmbG93KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7
Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VPdmVyZmxv
dyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VPdmVyZmxvdygp
OwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYg
KCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+c3RlcE1pc21hdGNoKGlucHV0LT52
YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5zdGVwTWlzbWF0Y2goKTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQt
PndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7CisgICAg
cmV0dXJuIG1fY29udHJvbC0+Y3VzdG9tRXJyb3IoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRl
Ojp2YWxpZCgpIGNvbnN0CiB7Ci0gICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8
fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKQot
ICAgICAgICB8fCB0b29Mb25nKCkgfHwgcGF0dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNzaW5n
KCkgfHwgY3VzdG9tRXJyb3IoKTsKLSAgICByZXR1cm4gIXNvbWVFcnJvcjsKKyAgICByZXR1cm4g
bV9jb250cm9sLT52YWxpZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuaAppbmRleCA0YTk2NDg4YmQ1NTY4ZjEzZTlhMDg0OWEzZTBiMjIzYzUxZDRm
NjBlLi4xN2U5NGM5Nzg4ZGJjMDNhY2QxMDVhMzJkMTA5ZDY1YjEyNWFhMmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNTcsMTEgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkgOiBt
X2NvbnRyb2woY29udHJvbCkgeyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29sb3JTdHJp
bmcoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhj
b25zdCBTdHJpbmcmKTsKLQogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwot
ICAgIFN0cmluZyBtX2N1c3RvbUVycm9yTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141122</attachid>
            <date>2012-05-10 02:51:13 -0700</date>
            <delta_ts>2012-05-10 02:56:20 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-86058-20120510185112.patch</filename>
            <type>text/plain</type>
            <size>31899</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uMGRiMWY0ZWVmYTUwOTE2MDE3OTM3ZjMxNjlmMjI3ZWI1ZDIxOGNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTU3LDYgKzE1Nyw3NSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0
ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCitib29sIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
fQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
YW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sK
KyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8
IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmco
KSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigp
OworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlm
ICghdG9IVE1MRWxlbWVudCh0aGlzKS0+d2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gbV9jdXN0
b21WYWxpZGF0aW9uTWVzc2FnZTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJy
b3IpCit7CisgICAgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IGVycm9yOworfQorCiBjb25z
dCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChjb25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGFzc29jaWF0ZWRFbGVtZW50KQogewogICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNGb3Jt
Q29udHJvbEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCmluZGV4IDI4NGUyOThmZDk3ZTU0MmQxYjBiMmNkNDZiYzM0Mjg1MWVkNGEyZjEuLjk4
MjhhYTJhN2UyYmFiMjNiNTQyMjFlNDdkZjczYmQ1NDZlZTdhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtNjAsNiArNjAsMTkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmb3JtUmVtb3ZlZEZyb21UcmVlKGNvbnN0IE5vZGUqIGZvcm1Sb290KTsK
IAorICAgIC8vIFZhbGlkaXR5U3RhdGUgYXR0cmlidXRlIGltcGxlbWVudGF0aW9ucworICAgIHZp
cnR1YWwgYm9vbCBjdXN0b21FcnJvcigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgdmFsaWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKyAgICB2
b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTc2LDYgKzg5LDggQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRm9ybSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJpbmcgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xOYW1lKCkgY29uc3QgPSAwOwogCkBAIC04NCw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBI
VE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxp
ZGl0eVN0YXRlOworICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwogfTsKIAog
SFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA5NzQ5
MzhmMGNkODUzNmExNjdhNGNhYmY0Njk4NmU0NjhiZmVmMWI2Li5kNGU5Y2Y5ZDhiYWZmNGNmOTZl
NGJlNTk5Y2FiYTljOGZmYzQ5Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4Miw3ICs0ODIsOCBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKLSAg
ICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOworICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3IpOworICAgIHNldE5lZWRzVmFs
aWRpdHlDaGVjaygpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDM2NDc5NjhkYTE0NDMzNzc2
OTc1NTFiZGIxYmVhZDAxODM4NDA4Y2IuLmU4ZGZjZGEyNWFlYTc2NTQxZmUyODg4NjE4YTdlNDY1
ZjE5NTU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShW
ZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlv
biBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5l
ZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOwogCiAgICAgYm9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9u
bHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNmZl
NTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4OTFlNDhkNDc5YWVmNy4uYjc1YzViNDA0MThkZmJhYjFm
M2MwNjBjNDk4MjM0MTdhY2ViMTBlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC0xOTIsMjYgKzE5MiwzNSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omlz
VmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIH0KICAgICByZXR1cm4g
IW1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hGb3IodmFsdWUpCiAgICAgICAgICYmICFzdGVwTWlz
bWF0Y2godmFsdWUpCi0gICAgICAgICYmICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSkKLSAgICAgICAg
JiYgIXJhbmdlT3ZlcmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VV
bmRlcmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2
YWx1ZSkKICAgICAgICAgJiYgIXRvb0xvbmcodmFsdWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAg
ICAgJiYgIXBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2
YWx1ZSk7CisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQor
ICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7CiB9CiAKK2Jvb2wg
SFRNTElucHV0RWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgaWYgKCF3aWxsVmFsaWRh
dGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRvb0xvbmcodmFsdWUo
KSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCisKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dHlwZU1p
c21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgp
OworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNo
KCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmcodmFsdWUpOworICAg
IHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVl
KCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0
Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZh
bHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnBhdHRlcm5N
aXNtYXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNv
bnN0IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAg
LTIzMiw2OCArMjQxLDc2IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBT
dHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spCiAgICAgcmV0dXJuIG51
bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1heCk7CiB9
CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25z
dAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpOworICAg
IHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFs
dWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyhjb25zdCBT
dHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUp
OworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxv
dyh2YWx1ZSgpKTsKIH0KIAotZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25z
dAorU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKLX0KKyAgICBpZiAoIXdpbGxWYWxp
ZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVt
ZW50OjptYXhpbXVtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0o
KTsKLX0KKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlk
YXRpb25NZXNzYWdlKCk7CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Ci17Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFn
ZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNoKHZhbHVlLCBzdGVwKTsKLX0KKyAgICAvLyBU
aGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjaGVja3MgaXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdk
IGxpa2UgdG8gc2hvdyB0aGUKKyAgICAvLyB2YWx1ZU1pc3NpbmcgbWVzc2FnZSBldmVuIGlmIHRo
ZSBjb250cm9sIGhhcyBvdGhlciB2YWxpZGF0aW9uIGVycm9ycy4KKyAgICBpZiAodmFsdWVNaXNz
aW5nKCkpCisgICAgICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nVGV4dCgpOwog
Ci1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6bWluaW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWluaW11bSgpKTsKLX0KKyAgICBpZiAodG9v
TG9uZygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1H
cmFwaGVtZUNsdXN0ZXJzKHZhbHVlKCkpLCBtYXhMZW5ndGgoKSk7CiAKLVN0cmluZyBIVE1MSW5w
dXRFbGVtZW50OjptYXhpbXVtU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPnNlcmlhbGl6ZShtYXhpbXVtKCkpOworICAgIGlmICh0eXBlTWlzbWF0Y2goKSkKKyAgICAg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hUZXh0KCk7CisKKyAgICBpZiAocGF0
dGVybk1pc21hdGNoKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5N
aXNtYXRjaFRleHQoKTsKKworICAgIGlmICh0b29Mb25nKCkpCisgICAgICAgIHJldHVybiB2YWxp
ZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1h
eExlbmd0aCgpKTsKKworICAgIGlmIChyYW5nZVVuZGVyZmxvdygpKQorICAgICAgICByZXR1cm4g
dmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQobV9pbnB1dFR5cGUtPnNlcmlhbGl6
ZShtaW5pbXVtKCkpKTsKKworICAgIGlmIChyYW5nZU92ZXJmbG93KCkpCisgICAgICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KG1faW5wdXRUeXBlLT5zZXJpYWxp
emUobWF4aW11bSgpKSk7CisKKyAgICBpZiAoc3RlcE1pc21hdGNoKCkpIHsKKyAgICAgICAgU3Ry
aW5nIHN0ZXBTdHJpbmc7CisgICAgICAgIGRvdWJsZSBzdGVwOworICAgICAgICBpZiAoZ2V0QWxs
b3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgICAgICBzdGVwU3RyaW5nID0gc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChtX2lucHV0VHlw
ZS0+c2VyaWFsaXplKG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAg
fQorCisgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6
c3RlcEJhc2VTdHJpbmcoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0o
KSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1faW5wdXRUeXBl
LT5zdGVwQmFzZSgpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKIH0KIAot
U3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBTdHJpbmcoKSBjb25zdAorZG91YmxlIEhUTUxJ
bnB1dEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAogewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlm
ICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpIHsKLSAgICAgICAgLy8gc3RlcFN0cmluZygp
IHNob3VsZCBiZSBjYWxsZWQgb25seSBpZiBzdGVwTWlzbWF0Y2goKSBjYW4gYmUgdHJ1ZS4KLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBl
LT5zdGVwU2NhbGVGYWN0b3IoKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7
CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QK
K2Jvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gd2lsbFZhbGlk
YXRlKCkgJiYgc3RlcE1pc21hdGNoKHZhbHVlKCkpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxl
bWVudDo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0
ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+dmFsdWVNaXNzaW5nVGV4dCgpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3Rl
cE1pc21hdGNoKHZhbHVlKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2Vk
VmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKQEAgLTEyNzUsMTIgKzEyOTIsMTIgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpoYXNVbmFjY2VwdGFibGVWYWx1ZSgpIGNvbnN0CiAKIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVl
KCkpICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKCkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+
c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93
KHZhbHVlKCkpICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAog
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2UoKSBjb25zdAogewotICAgIHJldHVy
biBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAocmFuZ2VVbmRlcmZs
b3codmFsdWUoKSkgfHwgcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKSk7CisgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmIChtX2lucHV0VHlwZS0+cmFuZ2VV
bmRlcmZsb3codmFsdWUoKSkgfHwgbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSkp
OwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTM0YTAzZTYzNWU5ZGZj
MzQwYjA1MGRkZTFiZGFjYTk4Mzg3NTg5ZC4uZTUxMjNkYmJjMDNiZWE2N2I4YjEwMDU0Mzk2Mjcx
Y2M1ODQwZjNjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ4
LDEzICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9jb21wbGV0
ZSgpIGNvbnN0OwogCiAgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKLSAgICBib29sIHR5cGVNaXNt
YXRjaCgpIGNvbnN0OwotICAgIC8vIHZhbHVlTWlzc2luZygpIGlnbm9yZXMgdGhlIHNwZWNpZmll
ZCBzdHJpbmcgdmFsdWUgZm9yIENIRUNLQk9YIGFuZCBSQURJTy4KLSAgICBib29sIHZhbHVlTWlz
c2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHBhdHRlcm5NaXNtYXRjaChjb25z
dCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNU
b0NoZWNrRGlydHlGbGFnKSBjb25zdDsKLSAgICBib29sIHJhbmdlVW5kZXJmbG93KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZsb3coKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVw
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVS
UklERTsKKyAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5n
IHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCisgICAgdmlydHVhbCBib29sIHZhbHVlTWlz
c2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVl
IGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90
aGVyIHR5cGVzLgogICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0
aGUgbWF4aW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3Qg
Y2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KQEAgLTY0LDE1ICs2OSw2IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgog
ICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKIAotICAgIC8vIEZv
ciBWYWxpZGl0eVN0YXRlLgotICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwotICAgIFN0cmluZyBtaW5pbXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1heGlt
dW1TdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RlcEJhc2VTdHJpbmcoKSBjb25zdDsKLSAg
ICBTdHJpbmcgc3RlcFN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKLQogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERv
d24oKS4KICAgICB2b2lkIHN0ZXBVcChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN0
ZXBEb3duKGludCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzM5LDYgKzMzNSw4IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1
YWwgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIAorICAgIGJvb2wg
c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCiAgICAgdm9pZCB1cGRhdGVUeXBl
KCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4
Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFhZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5
OWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJl
IGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFs
aWRpdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25z
dCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKICAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5v
ZGU+OjpyZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2Ux
MDc0Mjg3ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEuLmZhY2I1MDIyMzgzMGViNWJkNjY1NjFjM2Mz
YzVhMzAzNmI2NjIwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50
LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQu
aCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTE0NSw4ICsxNDYsMTggQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xk
ZXJMYWJlbE9wdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52
YWx1ZSgpLmlzRW1wdHkoKTsKIH0KIAorU3RyaW5nIEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0
aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGN1c3RvbUVycm9yKCkKKyAgICAgICAg
PyBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpCisgICAgICAgIDogdmFsdWVNaXNzaW5nKCkgPyB2
YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKSA6IFN0cmluZygpOwor
fQorCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogeworICAg
IGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICgh
aXNSZXF1aXJlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDUyNjY1ZTE5NWI0OTFiZTNiMDQ1
YzViMmRiZDI2NTZlMTg2ZGUwOTYuLjgyYjcyNzMzODg2MmMyMzI3NzQ0ZWEyNWUzMTU5NDE5ZTgz
NWEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTQ2LDcg
KzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgb3B0aW9uU2VsZWN0ZWRCeVVzZXIoaW50IGluZGV4
LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9
IGZhbHNlKTsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB2YWx1ZU1pc3Np
bmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklE
RTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA2MzY2M2E5N2ZjYzdiMGNiZmZlZjkxZjU5
YjQ3ZjVlNGUxNGZiMjRkLi4zNWM1NjAyODAxZjc5MzIzMGY1YzhlYjg0MzIyMDlmMzUxZTBlZTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM3
LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC00MjMsNiArNDI0LDMzIEBAIHZvaWQgSFRN
TFRleHRBcmVhRWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCBuZXdWYWx1ZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgIHNldEF0dHJpYnV0ZShtYXhsZW5ndGhBdHRyLCBTdHJpbmc6Om51bWJl
cihuZXdWYWx1ZSkpOwogfQogCitTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4g
Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKworICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAg
aWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1Rl
eHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgpKSwgbWF4TGVuZ3RoKCkpOworCisgICAgcmV0
dXJuIFN0cmluZygpOworfQorCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
ZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHZhbHVlTWlzc2luZyh2
YWx1ZSgpKTsKK30KKworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0Rp
cnR5RmxhZyk7Cit9CisKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9vTG9uZyhjb25zdCBT
dHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CiB7CiAgICAg
Ly8gUmV0dXJuIGZhbHNlIGZvciB0aGUgZGVmYXVsdCB2YWx1ZSBvciB2YWx1ZSBzZXQgYnkgc2Ny
aXB0IGV2ZW4gaWYgaXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKaW5kZXggYTE5YTQ3MWE5NjRiYTkwZDMwYWQ3NDg5NDMwMTM2ZjI0OTU3M2MxYy4uYzg5YTcx
ODNhNzhjNjIxZWEzMzdkNzhiNzU0ZGJkMzRjZDYxZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQ3LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBp
bnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVuZ3RoKCk7IH0KICAgICB2
aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIHNldE1heExlbmd0aChpbnQs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQorICAgIHZpcnR1YWwg
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29M
b25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2Fi
bGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCB0b29M
b25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7CiAgICAgYm9v
bCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKaW5kZXggOTk3MTgyYWJhZTdkNDRiZmI3MDc5YTRiYTg0YzdlZDk0NWE5NTdmMi4uODY0
NjdjODkxODQ4MmU0NTY4ZjUyM2UwNGMxZTI1NDA4NDA4ODcwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcApAQCAtMjgzLDYgKzI4MywxNCBAQCBib29sIElucHV0VHlwZTo6c2l6ZVNob3Vs
ZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAoreworICAgIGRvdWJsZSBzdGVwOworICAgIGlmICghZ2V0QWxsb3dl
ZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3Rl
cE1pc21hdGNoKHZhbHVlLCBzdGVwKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRj
aChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0
eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZh
bHVlU3RlcCgpLgpAQCAtODcwLDcgKzg3OCw3IEBAIGRvdWJsZSBJbnB1dFR5cGU6OmFsaWduVmFs
dWVGb3JTdGVwKGRvdWJsZSBuZXdWYWx1ZSwgZG91YmxlIHN0ZXAsIHVuc2lnbmVkIGN1cnJlCiAg
ICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFjZXM7CiAgICAgZG91YmxlIGJhc2UgPSBzdGVwQmFz
ZVdpdGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CiAgICAgYmFzZURlY2ltYWxQ
bGFjZXMgPSBtaW4oYmFzZURlY2ltYWxQbGFjZXMsIDE2dSk7Ci0gICAgaWYgKGVsZW1lbnQoKS0+
c3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICBpZiAoc3RlcE1pc21hdGNo
KGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAs
IHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50RGVjaW1h
bFBsYWNlcykpKTsKICAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNjYWxlKSAv
IHNjYWxlOwogICAgIH0gZWxzZSB7CkBAIC0xMDIzLDcgKzEwMzEsNyBAQCB2b2lkIElucHV0VHlw
ZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgICAgICBlbGVtZW50KCktPnNldFZhbHVl
KHNlcmlhbGl6ZShzaWduID4gMCA/IG1pbmltdW0oKSA6IG1heGltdW0oKSksIERpc3BhdGNoSW5w
dXRBbmRDaGFuZ2VFdmVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7
Ci0gICAgICAgIGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkp
KSB7CisgICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewogICAg
ICAgICAgICAgQVNTRVJUKHN0ZXApOwogICAgICAgICAgICAgZG91YmxlIG5ld1ZhbHVlOwogICAg
ICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4
KHN0ZXBEZWNpbWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5oCmluZGV4IDFjODZjYjBmY2NhOTNhN2IzMjEyODhkOTgyZTk4YzRkOWM4YzgwZDYuLmIx
ZDVmMmZmZDExNTVlYTlkMWVhZTExNWEwNmZlZWRkZTEzYjE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBt
aW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXpl
LCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0
Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChj
b25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3Rl
cEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxh
Y2VzKHVuc2lnbmVkKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApp
bmRleCBmZTczMTJjMmEzMDJkMzU1N2MwY2VjZjhmNjM0M2QzZWJjYmFjMDYzLi42NDk3NjVkZjkx
NDY4N2Q1NDhmOTBiZjUzMWQ0NDU3ZGY2NjRjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAKQEAgLTM4LDE3NyArMzgsNTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAogU3RyaW5nIFZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsK
LSAgICBpZiAoIXRvSFRNTEVsZW1lbnQobV9jb250cm9sKS0+d2lsbFZhbGlkYXRlKCkpCi0gICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChjdXN0b21FcnJvcigpKQotICAgICAgICBy
ZXR1cm4gbV9jdXN0b21FcnJvck1lc3NhZ2U7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0
b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgYm9vbCBpc0lucHV0RWxlbWVudCA9IGVsZW1l
bnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRh
Zyk7Ci0gICAgYm9vbCBpc1RleHRBcmVhRWxlbWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xF
bGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZyk7Ci0gICAgLy8gVGhl
IG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBs
aWtlIHRvIHNob3cgdGhlCi0gICAgLy8gdmFsdWVNaXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUg
Y29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJvcnMuCi0gICAgaWYgKHZhbHVlTWlzc2lu
ZygpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAg
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0
KCk7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnZhbHVlTWlzc2luZ1RleHQoKTsK
LSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwotICAg
IH0KLSAgICBpZiAodHlwZU1pc21hdGNoKCkpIHsKLSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50
KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVt
ZW50KS0+dHlwZU1pc21hdGNoVGV4dCgpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VUeXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAgfQotICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2goKSkK
LSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwot
ICAgIGlmICh0b29Mb25nKCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCAmJiAhaXNU
ZXh0QXJlYUVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9u
Z1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh0ZXh0LT52YWx1ZSgpKSwgdGV4dC0+bWF4TGVuZ3Ro
KCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VVbmRlcmZsb3coKSkgewotICAgICAgICBpZiAoIWlz
SW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsaWRh
dGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KGVsZW1lbnQpLT5taW5pbXVtU3RyaW5nKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VPdmVy
ZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWF4aW11bVN0cmluZygpKTsK
LSAgICB9Ci0gICAgaWYgKHN0ZXBNaXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICBy
ZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGlucHV0LT5zdGVwQmFzZVN0
cmluZygpLCBpbnB1dC0+c3RlcFN0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5n
KCk7Ci19Ci0KLXZvaWQgVmFsaWRpdHlTdGF0ZTo6c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX2N1c3RvbUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7
Ci0gICAgaWYgKG1fY29udHJvbC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fY29udHJvbCktPnNldE5lZWRzVmFs
aWRpdHlDaGVjaygpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7
CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAo
IWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0g
ICAgICAgIHJldHVybiBpbnB1dC0+dmFsdWVNaXNzaW5nKGlucHV0LT52YWx1ZSgpKTsKLSAgICB9
Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhU
TUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxl
bWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdGV4dEFyZWEtPnZhbHVlTWlzc2luZyh0
ZXh0QXJlYS0+dmFsdWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNl
bGVjdFRhZykpCi0gICAgICAgIHJldHVybiB0b0hUTUxTZWxlY3RFbGVtZW50KGVsZW1lbnQpLT52
YWx1ZU1pc3NpbmcoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbC0+
dmFsdWVNaXNzaW5nKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkg
Y29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250
cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
PihlbGVtZW50KS0+dHlwZU1pc21hdGNoKCk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dHlwZU1p
c21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29u
c3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9s
KTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5wYXR0ZXJuTWlz
bWF0Y2goaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnBhdHRlcm5NaXNt
YXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnRvb0xvbmcoKSBjb25zdAogewotICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlm
ICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRF
bGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsK
LSAgICAgICAgcmV0dXJuIGlucHV0LT50b29Mb25nKGlucHV0LT52YWx1ZSgpLCBIVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudDo6Q2hlY2tEaXJ0eUZsYWcpOwotICAgIH0KLSAgICBpZiAoZWxlbWVu
dC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVu
dCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7
Ci0gICAgICAgIHJldHVybiB0ZXh0QXJlYS0+dG9vTG9uZyh0ZXh0QXJlYS0+dmFsdWUoKSwgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2wtPnRvb0xvbmcoKTsKIH0KIAogYm9vbCBW
YWxpZGl0eVN0YXRlOjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53
aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50
LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1l
bnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VVbmRlcmZsb3coaW5wdXQtPnZhbHVlKCkpOwor
ICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdlVW5kZXJmbG93KCk7CiB9CiAKIGJvb2wgVmFsaWRp
dHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFs
aWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNU
YWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwot
ICAgIHJldHVybiBpbnB1dC0+cmFuZ2VPdmVyZmxvdyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0
dXJuIG1fY29udHJvbC0+cmFuZ2VPdmVyZmxvdygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6
OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hU
TUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVy
biBpbnB1dC0+c3RlcE1pc21hdGNoKGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250
cm9sLT5zdGVwTWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJv
cigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1f
Y29udHJvbCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3Rv
bUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+Y3VzdG9tRXJy
b3IoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpIGNvbnN0CiB7Ci0gICAgYm9v
bCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVu
ZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKQotICAgICAgICB8fCB0b29Mb25nKCkgfHwgcGF0
dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNzaW5nKCkgfHwgY3VzdG9tRXJyb3IoKTsKLSAgICBy
ZXR1cm4gIXNvbWVFcnJvcjsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCA0YTk2NDg4
YmQ1NTY4ZjEzZTlhMDg0OWEzZTBiMjIzYzUxZDRmNjBlLi4xN2U5NGM5Nzg4ZGJjMDNhY2QxMDVh
MzJkMTA5ZDY1YjEyNWFhMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlk
aXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAt
NTcsMTEgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWYWxpZGl0eVN0YXRlKEZvcm1B
c3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkgeyB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmKTsKLQogICAgIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwotICAgIFN0cmluZyBtX2N1c3RvbUVycm9yTWVz
c2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141124</attachid>
            <date>2012-05-10 02:56:25 -0700</date>
            <delta_ts>2012-05-10 03:00:36 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-86058-20120510185624.patch</filename>
            <type>text/plain</type>
            <size>31925</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uMGRiMWY0ZWVmYTUwOTE2MDE3OTM3ZjMxNjlmMjI3ZWI1ZDIxOGNiMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTU3LDYgKzE1Nyw3NSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0
ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCitib29sIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
fQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
YW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sK
KyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8
IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmco
KSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigp
OworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlm
ICghdG9IVE1MRWxlbWVudCh0aGlzKS0+d2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKKworICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gbV9jdXN0
b21WYWxpZGF0aW9uTWVzc2FnZTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwordm9pZCBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJy
b3IpCit7CisgICAgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IGVycm9yOworfQorCiBjb25z
dCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChjb25zdCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGFzc29jaWF0ZWRFbGVtZW50KQogewogICAgIGlmIChhc3NvY2lhdGVkRWxlbWVudC0+aXNGb3Jt
Q29udHJvbEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFz
c29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCmluZGV4IDI4NGUyOThmZDk3ZTU0MmQxYjBiMmNkNDZiYzM0Mjg1MWVkNGEyZjEuLjk4
MjhhYTJhN2UyYmFiMjNiNTQyMjFlNDdkZjczYmQ1NDZlZTdhNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtNjAsNiArNjAsMTkgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBmb3JtUmVtb3ZlZEZyb21UcmVlKGNvbnN0IE5vZGUqIGZvcm1Sb290KTsK
IAorICAgIC8vIFZhbGlkaXR5U3RhdGUgYXR0cmlidXRlIGltcGxlbWVudGF0aW9ucworICAgIHZp
cnR1YWwgYm9vbCBjdXN0b21FcnJvcigpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNv
bnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgdmFsaWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKyAgICB2
b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTc2LDYgKzg5LDggQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRm9ybSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJpbmcgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRy
b2xOYW1lKCkgY29uc3QgPSAwOwogCkBAIC04NCw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBI
VE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxp
ZGl0eVN0YXRlOworICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwogfTsKIAog
SFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA5NzQ5
MzhmMGNkODUzNmExNjdhNGNhYmY0Njk4NmU0NjhiZmVmMWI2Li5kNGU5Y2Y5ZDhiYWZmNGNmOTZl
NGJlNTk5Y2FiYTljOGZmYzQ5Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4Miw3ICs0ODIsOCBAQCB2b2lkIEhUTUxGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKLSAg
ICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOworICAgIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3IpOworICAgIHNldE5lZWRzVmFs
aWRpdHlDaGVjaygpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNo
Qmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDM2NDc5NjhkYTE0NDMzNzc2
OTc1NTFiZGIxYmVhZDAxODM4NDA4Y2IuLmU4ZGZjZGEyNWFlYTc2NTQxZmUyODg4NjE4YTdlNDY1
ZjE5NTU5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShW
ZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENv
bnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlv
biBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5l
ZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOwogCiAgICAgYm9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9u
bHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNmZl
NTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4OTFlNDhkNDc5YWVmNy4uNjNlMDVlNDVmOTFmN2U5ZDFh
M2JjMGY2ZDVhZTZkYjE2NWFiMzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCkBAIC0xOTIsMjYgKzE5MiwzMSBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omlz
VmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgIH0KICAgICByZXR1cm4g
IW1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hGb3IodmFsdWUpCiAgICAgICAgICYmICFzdGVwTWlz
bWF0Y2godmFsdWUpCi0gICAgICAgICYmICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSkKLSAgICAgICAg
JiYgIXJhbmdlT3ZlcmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VV
bmRlcmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2
YWx1ZSkKICAgICAgICAgJiYgIXRvb0xvbmcodmFsdWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAg
ICAgJiYgIXBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2
YWx1ZSk7CisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQor
ICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7Cit9CisKK2Jvb2wg
SFRNTElucHV0RWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxp
ZGF0ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOwogfQogCiBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5w
dXRUeXBlLT50eXBlTWlzbWF0Y2goKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9p
bnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZh
bHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVt
ZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFs
dWVNaXNzaW5nKHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5
cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpw
YXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYm
IG1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0
eUZsYWcgY2hlY2spIGNvbnN0CkBAIC0yMzIsNjggKzIzNyw3NiBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFn
IGNoZWNrKQogICAgIHJldHVybiBudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKSA+IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtYXgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5k
ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdl
VW5kZXJmbG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5
cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0
RWxlbWVudDo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5yYW5nZU92ZXJmbG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9p
bnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAKLWRvdWJsZSBIVE1MSW5wdXRF
bGVtZW50OjptaW5pbXVtKCkgY29uc3QKK1N0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0
aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5taW5pbXVtKCk7
Ci19CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
Ci1kb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWF4aW11bSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7Ci19CisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAg
ICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwogCi1ib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAotewotICAgIGRv
dWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1
ZSwgc3RlcCk7Ci19CisgICAgLy8gVGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlz
IG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNob3cgdGhlCisgICAgLy8gdmFsdWVNaXNz
aW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJv
cnMuCisgICAgaWYgKHZhbHVlTWlzc2luZygpKQorICAgICAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnZhbHVlTWlzc2luZ1RleHQoKTsKIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW1T
dHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1pbmlt
dW0oKSk7Ci19CisgICAgaWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgpKSwgbWF4TGVuZ3Ro
KCkpOwogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6bWF4aW11bVN0cmluZygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11bSgpKTsKKyAgICBpZiAo
dHlwZU1pc21hdGNoKCkpCisgICAgICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNo
VGV4dCgpOworCisgICAgaWYgKHBhdHRlcm5NaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7CisKKyAgICBpZiAodG9vTG9uZygp
KQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVt
ZUNsdXN0ZXJzKHZhbHVlKCkpLCBtYXhMZW5ndGgoKSk7CisKKyAgICBpZiAocmFuZ2VVbmRlcmZs
b3coKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0
KG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWluaW11bSgpKSk7CisKKyAgICBpZiAocmFuZ2VPdmVy
ZmxvdygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4
dChtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1heGltdW0oKSkpOworCisgICAgaWYgKHN0ZXBNaXNt
YXRjaCgpKSB7CisgICAgICAgIFN0cmluZyBzdGVwU3RyaW5nOworICAgICAgICBkb3VibGUgc3Rl
cDsKKyAgICAgICAgaWYgKGdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICAgICAg
c3RlcFN0cmluZyA9IHNlcmlhbGl6ZUZvck51bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBlLT5z
dGVwU2NhbGVGYWN0b3IoKSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBN
aXNtYXRjaFRleHQobV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2Uo
KSksIHN0ZXBTdHJpbmcpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3Ry
aW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBCYXNlU3RyaW5nKCkgY29uc3QKK2RvdWJsZSBIVE1M
SW5wdXRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2UoKSk7CisgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5taW5pbXVtKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpzdGVwU3RyaW5n
KCkgY29uc3QKK2RvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKIHsKLSAg
ICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKSB7Ci0g
ICAgICAgIC8vIHN0ZXBTdHJpbmcoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgaWYgc3RlcE1pc21h
dGNoKCkgY2FuIGJlIHRydWUuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJU
eXBlKHN0ZXAgLyBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBt
X2lucHV0VHlwZS0+bWF4aW11bSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dHlw
ZU1pc21hdGNoVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRj
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hUZXh0KCk7
CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHN0ZXBNaXNtYXRjaCh2YWx1ZSgpKTsKIH0K
IAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdAorYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZ1RleHQoKTsKKyAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSk7CiB9CiAKIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CkBAIC0x
Mjc1LDEyICsxMjg4LDEyIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aGFzVW5hY2NlcHRhYmxl
VmFsdWUoKSBjb25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SYW5nZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYm
ICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKKyAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIW1faW5w
dXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlT3Zl
cmZsb3codmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0
aW9uKCkgJiYgKHJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IHJhbmdlT3ZlcmZsb3codmFsdWUo
KSkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAm
JiAobV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IG1faW5wdXRUeXBlLT5y
YW5nZU92ZXJmbG93KHZhbHVlKCkpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpuZWVk
c1N1c3BlbnNpb25DYWxsYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CmluZGV4IGUzNGEwM2U2MzVlOWRmYzM0MGIwNTBkZGUxYmRhY2E5ODM4NzU4OWQuLmU1MTIzZGJi
YzAzYmVhNjdiOGIxMDA1NDM5NjI3MWNjNTg0MGYzYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5oCkBAIC00OCwxMyArNDgsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0
YXRlCi0gICAgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsKLSAgICAvLyB2YWx1ZU1pc3Npbmco
KSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFE
SU8uCi0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9v
bCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgYm9vbCB0b29Mb25n
KGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7Ci0gICAgYm9vbCBy
YW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHJhbmdlT3ZlcmZs
b3coY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21h
dGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJhbmdlT3ZlcmZsb3coKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdHlw
ZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgLy8gdmFsdWVNaXNzaW5nKCkgaWdub3Jl
cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB2YWx1ZSBmb3IgQ0hFQ0tCT1ggYW5kIFJBRElPLgorICAg
IHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8gUmV0
dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdlLiAg
RG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KICAgICBkb3VibGUgbWluaW11bSgpIGNv
bnN0OwogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHR5cGU9ZGF0ZSwgbnVt
YmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Igb3RoZXIgdHlwZXMuCkBAIC02NCwx
NSArNjksNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBubyAi
YWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91Ymxl
KikgY29uc3Q7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZS4KLSAgICBib29sIHN0ZXBNaXNt
YXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBTdHJpbmcgbWluaW11bVN0cmluZygpIGNv
bnN0OwotICAgIFN0cmluZyBtYXhpbXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBC
YXNlU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBTdHJpbmcoKSBjb25zdDsKLSAgICBT
dHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0OwotICAgIFN0cmluZyB2YWx1ZU1pc3NpbmdU
ZXh0KCkgY29uc3Q7Ci0KICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgSFRNTElucHV0RWxlbWVu
dDo6c3RlcFVwKCkgYW5kIHN0ZXBEb3duKCkuCiAgICAgdm9pZCBzdGVwVXAoaW50LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgdm9pZCBzdGVwRG93bihpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTMz
OSw2ICszMzUsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRh
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCkg
T1ZFUlJJREU7CiAKKyAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsK
KwogICAgIHZvaWQgdXBkYXRlVHlwZSgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzdWJ0cmVl
SGFzQ2hhbmdlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCmluZGV4
IGEwZTY2Mzc3YTY0MTg1MzBhZDg1ODI4ODA3ODdhYzUzNGUwYzRlNmIuLjMxMzg5M2JhYWU4Y2Mw
NmYxYjA4Njk4MzFlYjFiMjNjYjA0OTlhYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIC8vIE5vdGUgdGhhdCB0
aGUgb2JqZWN0IGVsZW1lbnRzIGFyZSBhbHdheXMgYmFycmVkIGZyb20gY29uc3RyYWludCB2YWxp
ZGF0aW9uLgogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIHsgcmV0dXJuIFN0cmluZygp
OyB9CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCkgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQg
c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFIHsgfQogCiAgICAgdXNpbmcg
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6cmVmOwogICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29u
dGFpbmVyTm9kZT46OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcAppbmRleCA1OGE5YTczOWNlMTA3NDI4N2QxNDliM2UzZGFlOTU3YTZiNDNlYzkxLi5lZTU3
ZGFlODA0MTdiMTc1ZGU2OGQxY2YyMzg1MGMxZWFiOGUxYWJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkhU
TUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIK
ICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNDUsOCArMTQ2LDIyIEBAIGJvb2wgSFRNTFNlbGVj
dEVsZW1lbnQ6Omhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24oKSBjb25zdAogICAgIHJldHVybiAh
bGlzdEluZGV4ICYmIG9wdGlvbi0+dmFsdWUoKS5pc0VtcHR5KCk7CiB9CiAKK1N0cmluZyBIVE1M
U2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICghd2ls
bFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0b21F
cnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKworICAg
IHJldHVybiB2YWx1ZU1pc3NpbmcoKSA/IHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9y
U2VsZWN0VGV4dCgpIDogU3RyaW5nKCk7Cit9CisKIGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6OnZh
bHVlTWlzc2luZygpIGNvbnN0CiB7CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
aW5kZXggNTI2NjVlMTk1YjQ5MWJlM2IwNDVjNWIyZGJkMjY1NmUxODZkZTA5Ni4uODJiNzI3MzM4
ODYyYzIzMjc3NDRlYTI1ZTMxNTk0MTllODM1YTNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuaApAQCAtNDYsNyArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBvcHRp
b25TZWxlY3RlZEJ5VXNlcihpbnQgaW5kZXgsIGJvb2wgZGlzcGF0Y2hDaGFuZ2VFdmVudCwgYm9v
bCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwogCiAgICAgLy8gRm9yIFZhbGlkaXR5
U3RhdGUKLSAgICBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5n
IHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZh
bHVlTWlzc2luZygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IDYzNjYzYTk3ZmNjN2IwY2JmZmVmOTFmNTliNDdmNWU0ZTE0ZmIyNGQuLjM1YzU2MDI4MDFmNzkz
MjMwZjVjOGViODQzMjIwOWYzNTFlMGVlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkZvcm1EYXRh
TGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sTXVs
dGlMaW5lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKQEAg
LTQyMyw2ICs0MjQsMzMgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRNYXhMZW5ndGgo
aW50IG5ld1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgc2V0QXR0cmlidXRlKG1h
eGxlbmd0aEF0dHIsIFN0cmluZzo6bnVtYmVyKG5ld1ZhbHVlKSk7CiB9CiAKK1N0cmluZyBIVE1M
VGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgaWYgKCF3
aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGN1c3Rv
bUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOworCisg
ICAgaWYgKHZhbHVlTWlzc2luZygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VW
YWx1ZU1pc3NpbmdUZXh0KCk7CisKKyAgICBpZiAodG9vTG9uZygpKQorICAgICAgICByZXR1cm4g
dmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKCkp
LCBtYXhMZW5ndGgoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgSFRNTFRl
eHRBcmVhRWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbFZh
bGlkYXRlKCkgJiYgdmFsdWVNaXNzaW5nKHZhbHVlKCkpOworfQorCitib29sIEhUTUxUZXh0QXJl
YUVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAoreworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAm
JiB0b29Mb25nKHZhbHVlKCksIENoZWNrRGlydHlGbGFnKTsKK30KKwogYm9vbCBIVE1MVGV4dEFy
ZWFFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5
RmxhZyBjaGVjaykgY29uc3QKIHsKICAgICAvLyBSZXR1cm4gZmFsc2UgZm9yIHRoZSBkZWZhdWx0
IHZhbHVlIG9yIHZhbHVlIHNldCBieSBzY3JpcHQgZXZlbiBpZiBpdCBpcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBhMTlhNDcxYTk2NGJhOTBkMzBhZDc0
ODk0MzAxMzZmMjQ5NTczYzFjLi5jODlhNzE4M2E3OGM2MjFlYTMzN2Q3OGI3NTRkYmQzNGNkNjFl
Njk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaApAQCAtNDcs
NiArNDcsMTAgQEAgcHVibGljOgogICAgIGludCB0ZXh0TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
dmFsdWUoKS5sZW5ndGgoKTsgfQogICAgIHZpcnR1YWwgaW50IG1heExlbmd0aCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9uQ29kZSYpOworICAgIC8vIEZvciBW
YWxpZGl0eVN0YXRlCisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCBPVkVSUklERTsKICAgICBib29s
IHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdCB7IHJldHVybiBpc1JlcXVp
cmVkRm9ybUNvbnRyb2woKSAmJiAhZGlzYWJsZWQoKSAmJiAhcmVhZE9ubHkoKSAmJiB2YWx1ZS5p
c0VtcHR5KCk7IH0KICAgICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNr
RGlydHlGbGFnKSBjb25zdDsKICAgICBib29sIGlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5OTcxODJhYmFlN2Q0NGJmYjcw
NzlhNGJhODRjN2VkOTQ1YTk1N2YyLi44NjQ2N2M4OTE4NDgyZTQ1NjhmNTIzZTA0YzFlMjU0MDg0
MDg4NzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yODMsNiArMjgzLDE0IEBA
IGJvb2wgSW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50LCBpbnQmIHBy
ZWZlcnJlZFNpemUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIElucHV0VHlw
ZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgZG91Ymxl
IHN0ZXA7CisgICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBzdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOworfQorCiBi
b29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QK
IHsKICAgICAvLyBOb24tc3VwcG9ydGVkIHR5cGVzIHNob3VsZCBiZSByZWplY3RlZCBieSBIVE1M
SW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKCkuCkBAIC04NzAsNyArODc4LDcgQEAg
ZG91YmxlIElucHV0VHlwZTo6YWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIG5ld1ZhbHVlLCBkb3Vi
bGUgc3RlcCwgdW5zaWduZWQgY3VycmUKICAgICB1bnNpZ25lZCBiYXNlRGVjaW1hbFBsYWNlczsK
ICAgICBkb3VibGUgYmFzZSA9IHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXMoJmJhc2VEZWNpbWFs
UGxhY2VzKTsKICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IG1pbihiYXNlRGVjaW1hbFBsYWNlcywg
MTZ1KTsKLSAgICBpZiAoZWxlbWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgp
KSkgeworICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewogICAgICAg
ICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgoc3RlcERl
Y2ltYWxQbGFjZXMsIGN1cnJlbnREZWNpbWFsUGxhY2VzKSkpOwogICAgICAgICBuZXdWYWx1ZSA9
IHJvdW5kKG5ld1ZhbHVlICogc2NhbGUpIC8gc2NhbGU7CiAgICAgfSBlbHNlIHsKQEAgLTEwMjMs
NyArMTAzMSw3IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIoaW50IG4pCiAg
ICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplKHNpZ24gPiAwID8gbWluaW11bSgp
IDogbWF4aW11bSgpKSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKICAgICBlbHNlIHsK
ICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgaWYgKGVsZW1lbnQoKS0+c3RlcE1p
c21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKHN0ZXBNaXNtYXRjaChl
bGVtZW50KCktPnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3RlcCk7CiAgICAgICAg
ICAgICBkb3VibGUgbmV3VmFsdWU7CiAgICAgICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAu
MCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgoc3RlcERlY2ltYWxQbGFjZXMsIGJhc2VEZWNpbWFs
UGxhY2VzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMWM4NmNiMGZjY2E5M2E3YjMy
MTI4OGQ5ODJlOThjNGQ5YzhjODBkNi4uYjFkNWYyZmZkMTE1NWVhOWQxZWFlMTE1YTA2ZmVlZGRl
MTNiMTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNTcsNiArMTU3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRv
dWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzdGVwKSBjb25z
dDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91
YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCmluZGV4IGZlNzMxMmMyYTMwMmQzNTU3YzBjZWNmOGY2
MzQzZDNlYmNiYWMwNjMuLjY0OTc2NWRmOTE0Njg3ZDU0OGY5MGJmNTMxZDQ0NTdkZjY2NGM2ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApAQCAtMzgsMTc3ICszOCw1MiBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBTdHJpbmcgVmFsaWRpdHlTdGF0ZTo6dmFs
aWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewotICAgIGlmICghdG9IVE1MRWxlbWVudChtX2NvbnRy
b2wpLT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYg
KGN1c3RvbUVycm9yKCkpCi0gICAgICAgIHJldHVybiBtX2N1c3RvbUVycm9yTWVzc2FnZTsKLSAg
ICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBi
b29sIGlzSW5wdXRFbGVtZW50ID0gZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSAmJiBl
bGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKTsKLSAgICBib29sIGlzVGV4dEFyZWFFbGVtZW50
ID0gZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSAmJiBlbGVtZW50LT5oYXNUYWdOYW1l
KHRleHRhcmVhVGFnKTsKLSAgICAvLyBUaGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjaGVja3Mg
aXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdkIGxpa2UgdG8gc2hvdyB0aGUKLSAgICAvLyB2YWx1ZU1p
c3NpbmcgbWVzc2FnZSBldmVuIGlmIHRoZSBjb250cm9sIGhhcyBvdGhlciB2YWxpZGF0aW9uIGVy
cm9ycy4KLSAgICBpZiAodmFsdWVNaXNzaW5nKCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUoc2VsZWN0VGFnKSkKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKTsKLSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50
KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVt
ZW50KS0+dmFsdWVNaXNzaW5nVGV4dCgpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdUZXh0KCk7Ci0gICAgfQotICAgIGlmICh0eXBlTWlzbWF0Y2goKSkgewot
ICAgICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT50eXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICB9Ci0g
ICAgaWYgKHBhdHRlcm5NaXNtYXRjaCgpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7Ci0gICAgaWYgKHRvb0xvbmcoKSkgewotICAgICAgICBp
ZiAoIWlzSW5wdXRFbGVtZW50ICYmICFpc1RleHRBcmVhRWxlbWVudCkgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHQgPSBzdGF0aWNf
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHRleHQt
PnZhbHVlKCkpLCB0ZXh0LT5tYXhMZW5ndGgoKSk7Ci0gICAgfQotICAgIGlmIChyYW5nZVVuZGVy
ZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPm1pbmltdW1TdHJpbmcoKSk7
Ci0gICAgfQotICAgIGlmIChyYW5nZU92ZXJmbG93KCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0
RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVs
ZW1lbnQpLT5tYXhpbXVtU3RyaW5nKCkpOwotICAgIH0KLSAgICBpZiAoc3RlcE1pc21hdGNoKCkp
IHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNt
YXRjaFRleHQoaW5wdXQtPnN0ZXBCYXNlU3RyaW5nKCksIGlucHV0LT5zdGVwU3RyaW5nKCkpOwot
ICAgIH0KLQotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBWYWxpZGl0eVN0YXRlOjpz
ZXRDdXN0b21FcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fY3Vz
dG9tRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsKLSAgICBpZiAobV9jb250cm9sLT5pc0Zvcm1Db250
cm9sRWxlbWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Kj4obV9jb250cm9sKS0+c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgcmV0dXJuIG1fY29u
dHJvbC0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWx1
ZU1pc3NpbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxl
bWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT52YWx1ZU1pc3Np
bmcoaW5wdXQtPnZhbHVlKCkpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0
ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBz
dGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVy
biB0ZXh0QXJlYS0+dmFsdWVNaXNzaW5nKHRleHRBcmVhLT52YWx1ZSgpKTsKLSAgICB9Ci0gICAg
aWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkKLSAgICAgICAgcmV0dXJuIHRvSFRN
TFNlbGVjdEVsZW1lbnQoZWxlbWVudCktPnZhbHVlTWlzc2luZygpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWx1ZU1pc3NpbmcoKTsKIH0KIAogYm9vbCBWYWxp
ZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZh
bGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT50eXBlTWlzbWF0Y2goKTsKKyAg
ICByZXR1cm4gbV9jb250cm9sLT50eXBlTWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0
YXRlOjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlk
YXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFn
TmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAg
ICByZXR1cm4gaW5wdXQtPnBhdHRlcm5NaXNtYXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0
dXJuIG1fY29udHJvbC0+cGF0dGVybk1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0
ZTo6dG9vTG9uZygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRU
YWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gaW5wdXQtPnRvb0xvbmco
aW5wdXQtPnZhbHVlKCksIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpDaGVja0RpcnR5Rmxh
Zyk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkgewot
ICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxU
ZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT50b29M
b25nKHRleHRBcmVhLT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tE
aXJ0eUZsYWcpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJv
bC0+dG9vTG9uZygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnJhbmdlVW5kZXJmbG93KCkg
Y29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250
cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5yYW5nZVVu
ZGVyZmxvdyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VVbmRl
cmZsb3coKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZU92ZXJmbG93KCkgY29uc3QK
IHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsK
LSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5yYW5nZU92ZXJmbG93
KGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5yYW5nZU92ZXJmbG93KCk7
CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAo
IWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5zdGVwTWlzbWF0Y2goaW5wdXQtPnZh
bHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnN0ZXBNaXNtYXRjaCgpOwogfQogCiBib29s
IFZhbGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tRXJyb3JNZXNzYWdlLmlzRW1wdHkoKTsKKyAgICBy
ZXR1cm4gbV9jb250cm9sLT5jdXN0b21FcnJvcigpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6
OnZhbGlkKCkgY29uc3QKIHsKLSAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8
IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCi0g
ICAgICAgIHx8IHRvb0xvbmcoKSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3Npbmco
KSB8fCBjdXN0b21FcnJvcigpOwotICAgIHJldHVybiAhc29tZUVycm9yOworICAgIHJldHVybiBt
X2NvbnRyb2wtPnZhbGlkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5oCmluZGV4IDRhOTY0ODhiZDU1NjhmMTNlOWEwODQ5YTNlMGIyMjNjNTFkNGY2
MGUuLjE3ZTk0Yzk3ODhkYmMwM2FjZDEwNWEzMmQxMDlkNjViMTI1YWEyYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC01NywxMSArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFZhbGlkaXR5U3RhdGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sKSA6IG1f
Y29udHJvbChjb250cm9sKSB7IH0KIAotICAgIHN0YXRpYyBib29sIGlzVmFsaWRDb2xvclN0cmlu
Zyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW1haWxBZGRyZXNzKGNv
bnN0IFN0cmluZyYpOwotCiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBtX2NvbnRyb2w7Ci0g
ICAgU3RyaW5nIG1fY3VzdG9tRXJyb3JNZXNzYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141125</attachid>
            <date>2012-05-10 03:00:42 -0700</date>
            <delta_ts>2012-05-10 03:06:14 -0700</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-86058-20120510190040.patch</filename>
            <type>text/plain</type>
            <size>31825</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uNzZkZDBkMTU5ZjA3NWQ5ZGI2NmZkN2ExZmRlYmUyZGE5NTk0OWFmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTU3LDYgKzE1Nyw2OSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0
ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCitib29sIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
fQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
YW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sK
KyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8
IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmco
KSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigp
OworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBjdXN0b21FcnJvcigpID8gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA6IFN0cmluZygp
OworfQorCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29u
c3QgU3RyaW5nJiBlcnJvcikKK3sKKyAgICBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZXJy
b3I7Cit9CisKIGNvbnN0IEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KGNvbnN0IEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGFzc29jaWF0ZWRF
bGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggMjg0ZTI5OGZkOTdlNTQyZDFiMGIyY2Q0NmJjMzQy
ODUxZWQ0YTJmMS4uOTgyOGFhMmE3ZTJiYWIyM2I1NDIyMWU0N2RmNzNiZDU0NmVlN2E3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCkBAIC02MCw2ICs2
MCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcm1SZW1vdmVkRnJvbVRyZWUoY29uc3QgTm9k
ZSogZm9ybVJvb3QpOwogCisgICAgLy8gVmFsaWRpdHlTdGF0ZSBhdHRyaWJ1dGUgaW1wbGVtZW50
YXRpb25zCisgICAgdmlydHVhbCBib29sIGN1c3RvbUVycm9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92
ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB0b29Mb25nKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCB2YWxpZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB2YWx1
ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgp
IGNvbnN0OworICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CisKIHBy
b3RlY3RlZDoKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKIApAQCAtNzYsNiArODksOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VGb3JtKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUZvcm0oKTsKIAorICAgIFN0cmluZyBjdXN0b21WYWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdCA9IDA7CiAKQEAgLTg0LDYgKzk5LDcgQEAgcHJp
dmF0ZToKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIE93blB0cjxWYWxpZGl0
eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CisgICAgU3RyaW5nIG1fY3VzdG9tVmFsaWRhdGlvbk1l
c3NhZ2U7CiB9OwogCiBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChGb3JtQXNzb2NpYXRlZEVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCmluZGV4IDk3NDkzOGYwY2Q4NTM2YTE2N2E0Y2FiZjQ2OTg2ZTQ2OGJmZWYxYjYuLmQ0ZTlj
ZjlkOGJhZmY0Y2Y5NmU0YmU1OTljYWJhOWM4ZmZjNDkyNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgyLDcgKzQ4Miw4IEBAIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCkKIAogdm9p
ZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcm
IGVycm9yKQogewotICAgIHZhbGlkaXR5KCktPnNldEN1c3RvbUVycm9yTWVzc2FnZShlcnJvcik7
CisgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShlcnJvcik7Cisg
ICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxl
bWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2VkTm9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5kZXggMzY0
Nzk2OGRhMTQ0MzM3NzY5NzU1MWJkYjFiZWFkMDE4Mzg0MDhjYi4uZThkZmNkYTI1YWVhNzY1NDFm
ZTI4ODg2MThhN2U0NjVmMTk1NTljZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBj
aGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiA+KiB1bmhh
bmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdo
ZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgog
ICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxp
ZGl0eShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHko
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZWFkT25seTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmNwcAppbmRleCA2ZmU1NTk2NWQ0ZjFkYTc1OTlkNjI5MDJkOTg5MWU0OGQ0NzlhZWY3Li42M2Uw
NWU0NWY5MWY3ZTlkMWEzYmMwZjZkNWFlNmRiMTY1YWIzOTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE5MiwyNiArMTkyLDMxIEBAIGJvb2wgSFRNTElu
cHV0RWxlbWVudDo6aXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAg
fQogICAgIHJldHVybiAhbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaEZvcih2YWx1ZSkKICAgICAg
ICAgJiYgIXN0ZXBNaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXJhbmdlVW5kZXJmbG93KHZh
bHVlKQotICAgICAgICAmJiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5w
dXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5y
YW5nZU92ZXJmbG93KHZhbHVlKQogICAgICAgICAmJiAhdG9vTG9uZyh2YWx1ZSwgSWdub3JlRGly
dHlGbGFnKQotICAgICAgICAmJiAhcGF0dGVybk1pc21hdGNoKHZhbHVlKQotICAgICAgICAmJiAh
dmFsdWVNaXNzaW5nKHZhbHVlKTsKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5wYXR0ZXJuTWlz
bWF0Y2godmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVl
KTsKK30KKworYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0RpcnR5RmxhZyk7
CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOworICAgIHJldHVybiB3aWxsVmFs
aWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7CiB9CiAKLWJvb2wgSFRNTElu
cHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT52YWx1ZU1pc3NpbmcodmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUo
KSAmJiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAogewotICAgIHJl
dHVybiBtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKTsKKyAgICByZXR1cm4gd2ls
bFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSgpKTsKIH0K
IAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUsIE5l
ZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAgLTIzMiw2OCArMjM3LDc2IEBAIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1Rv
Q2hlY2tEaXJ0eUZsYWcgY2hlY2spCiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnModmFs
dWUpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1heCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxl
bWVudDo6cmFuZ2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRN
TElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUo
KSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSk7CiB9CiAKLWJvb2wgSFRN
TElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkgY29uc3QKIHsKLSAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFs
aWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAotZG91
YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAorU3RyaW5nIEhUTUxJbnB1dEVs
ZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPm1pbmltdW0oKTsKLX0KKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsKLX0KKyAgICBpZiAoY3VzdG9t
RXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKLWJv
b2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0Ci17Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZz
dGVwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3Rl
cE1pc21hdGNoKHZhbHVlLCBzdGVwKTsKLX0KKyAgICAvLyBUaGUgb3JkZXIgb2YgdGhlIGZvbGxv
d2luZyBjaGVja3MgaXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdkIGxpa2UgdG8gc2hvdyB0aGUKKyAg
ICAvLyB2YWx1ZU1pc3NpbmcgbWVzc2FnZSBldmVuIGlmIHRoZSBjb250cm9sIGhhcyBvdGhlciB2
YWxpZGF0aW9uIGVycm9ycy4KKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAgICAgIHJldHVy
biBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nVGV4dCgpOwogCi1TdHJpbmcgSFRNTElucHV0RWxl
bWVudDo6bWluaW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5z
ZXJpYWxpemUobWluaW11bSgpKTsKLX0KKyAgICBpZiAodG9vTG9uZygpKQorICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVl
KCkpLCBtYXhMZW5ndGgoKSk7CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtYXhpbXVt
KCkpOworICAgIGlmICh0eXBlTWlzbWF0Y2goKSkKKyAgICAgICAgcmV0dXJuIG1faW5wdXRUeXBl
LT50eXBlTWlzbWF0Y2hUZXh0KCk7CisKKyAgICBpZiAocGF0dGVybk1pc21hdGNoKCkpCisgICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKworICAg
IGlmICh0b29Mb25nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdU
ZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIGlm
IChyYW5nZVVuZGVyZmxvdygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZVVuZGVyZmxvd1RleHQobV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtaW5pbXVtKCkpKTsKKworICAg
IGlmIChyYW5nZU92ZXJmbG93KCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJh
bmdlT3ZlcmZsb3dUZXh0KG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11bSgpKSk7CisKKyAg
ICBpZiAoc3RlcE1pc21hdGNoKCkpIHsKKyAgICAgICAgU3RyaW5nIHN0ZXBTdHJpbmc7CisgICAg
ICAgIGRvdWJsZSBzdGVwOworICAgICAgICBpZiAoZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkp
CisgICAgICAgICAgICBzdGVwU3RyaW5nID0gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8g
bV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRp
b25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1faW5wdXRU
eXBlLT5zdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmlu
ZygpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6c3RlcEJhc2VTdHJpbmcoKSBjb25z
dAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAogewotICAgIHJldHVy
biBtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpKTsKKyAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1l
bnQ6OnN0ZXBTdHJpbmcoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0o
KSBjb25zdAogewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3Rl
cCgmc3RlcCkpIHsKLSAgICAgICAgLy8gc3RlcFN0cmluZygpIHNob3VsZCBiZSBjYWxsZWQgb25s
eSBpZiBzdGVwTWlzbWF0Y2goKSBjYW4gYmUgdHJ1ZS4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcmlh
bGl6ZUZvck51bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBlLT5zdGVwU2NhbGVGYWN0b3IoKSk7
CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5w
dXRFbGVtZW50Ojp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVu
dDo6c3RlcE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVN
aXNtYXRjaFRleHQoKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgc3RlcE1pc21hdGNo
KHZhbHVlKCkpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nVGV4
dCgpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5n
VGV4dCgpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNoKHZhbHVlKTsKIH0K
IAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3Rl
cCkgY29uc3QKQEAgLTEyNzUsMTIgKzEyODgsMTIgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojpo
YXNVbmFjY2VwdGFibGVWYWx1ZSgpIGNvbnN0CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNJ
blJhbmdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VM
aW1pdGF0aW9uKCkgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFyYW5nZU92ZXJmbG93
KHZhbHVlKCkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRp
b24oKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFtX2lucHV0
VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc091dE9mUmFuZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9y
dHNSYW5nZUxpbWl0YXRpb24oKSAmJiAocmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwgcmFuZ2VP
dmVyZmxvdyh2YWx1ZSgpKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1Jhbmdl
TGltaXRhdGlvbigpICYmIChtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwg
bV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOwogfQogCiBib29sIEhUTUxJbnB1
dEVsZW1lbnQ6Om5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmgKaW5kZXggZTM0YTAzZTYzNWU5ZGZjMzQwYjA1MGRkZTFiZGFjYTk4Mzg3
NTg5ZC4uZTUxMjNkYmJjMDNiZWE2N2I4YjEwMDU0Mzk2MjcxY2M1ODQwZjNjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ4LDEzICs0OCwxOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCiAgICAgLy8g
Rm9yIFZhbGlkaXR5U3RhdGUKLSAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0OwotICAgIC8v
IHZhbHVlTWlzc2luZygpIGlnbm9yZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdmFsdWUgZm9yIENI
RUNLQk9YIGFuZCBSQURJTy4KLSAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKLSAgICBib29sIHBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25z
dDsKLSAgICBib29sIHJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIGJv
b2wgcmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9v
bCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmFu
Z2VVbmRlcmZsb3coKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVy
ZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICAvLyB2YWx1ZU1p
c3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVlIGZvciBDSEVDS0JPWCBh
bmQgUkFESU8uCisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7
CisKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0eXBlPWRhdGUsIG51bWJl
ciwgb3IgcmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90aGVyIHR5cGVzLgogICAgIGRvdWJs
ZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBmb3Ig
dHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0
eXBlcy4KQEAgLTY0LDE1ICs2OSw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIGZhbHNlIGlm
IHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgogICAgIGJvb2wgZ2V0QWxsb3dlZFZh
bHVlU3RlcChkb3VibGUqKSBjb25zdDsKIAotICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlLgotICAg
IGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIFN0cmluZyBtaW5p
bXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1heGltdW1TdHJpbmcoKSBjb25zdDsKLSAg
ICBTdHJpbmcgc3RlcEJhc2VTdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RlcFN0cmluZygp
IGNvbnN0OwotICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3Q7Ci0gICAgU3RyaW5n
IHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKLQogICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBI
VE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24oKS4KICAgICB2b2lkIHN0ZXBV
cChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN0ZXBEb3duKGludCwgRXhjZXB0aW9u
Q29kZSYpOwpAQCAtMzM5LDYgKzMzNSw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIHJl
Y2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCByZXF1aXJlZEF0dHJp
YnV0ZUNoYW5nZWQoKSBPVkVSUklERTsKIAorICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0
cmluZyYpIGNvbnN0OworCiAgICAgdm9pZCB1cGRhdGVUeXBlKCk7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RF
bGVtZW50LmgKaW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4u
MzEzODkzYmFhZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5OWFiOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gTm90ZSB0aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBj
b25zdHJhaW50IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgeyBy
ZXR1cm4gU3RyaW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9
CiAKICAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7CiAgICAgdXNpbmcg
VHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2UxMDc0Mjg3ZDE0OWIzZTNkYWU5NTdh
NmI0M2VjOTEuLmVlNTdkYWU4MDQxN2IxNzVkZTY4ZDFjZjIzODUwYzFlYWI4ZTFhYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVu
ZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE0NSw4ICsxNDYsMjIgQEAg
Ym9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0
CiAgICAgcmV0dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKTsKIH0K
IAorU3RyaW5nIEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7
CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisg
ICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVz
c2FnZSgpOworCisgICAgcmV0dXJuIHZhbHVlTWlzc2luZygpID8gdmFsaWRhdGlvbk1lc3NhZ2VW
YWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCkgOiBTdHJpbmcoKTsKK30KKwogYm9vbCBIVE1MU2Vs
ZWN0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKKyAgICBpZiAoIXdpbGxWYWxpZGF0
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29u
dHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuaAppbmRleCA1MjY2NWUxOTViNDkxYmUzYjA0NWM1YjJkYmQyNjU2ZTE4NmRl
MDk2Li44MmI3MjczMzg4NjJjMjMyNzc0NGVhMjVlMzE1OTQxOWU4MzVhM2ZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC00Niw3ICs0Niw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENo
YW5nZUV2ZW50LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICAv
LyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAg
dmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKaW5kZXggNjM2NjNhOTdmY2M3YjBjYmZmZWY5MWY1OWI0N2Y1ZTRlMTRmYjI0ZC4u
MzVjNTYwMjgwMWY3OTMyMzBmNWM4ZWI4NDMyMjA5ZjM1MWUwZWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1M
TmFtZXMuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgpAQCAtNDIzLDYgKzQyNCwzMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6
OnNldE1heExlbmd0aChpbnQgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBz
ZXRBdHRyaWJ1dGUobWF4bGVuZ3RoQXR0ciwgU3RyaW5nOjpudW1iZXIobmV3VmFsdWUpKTsKIH0K
IAorU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisK
KyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25N
ZXNzYWdlKCk7CisKKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAgICAgIHJldHVybiB2YWxp
ZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKworICAgIGlmICh0b29Mb25nKCkpCisg
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1
c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30K
KworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAg
IHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiB2YWx1ZU1pc3NpbmcodmFsdWUoKSk7Cit9CisKK2Jv
b2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdp
bGxWYWxpZGF0ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCiBi
b29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVl
ZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKSBjb25zdAogewogICAgIC8vIFJldHVybiBmYWxzZSBm
b3IgdGhlIGRlZmF1bHQgdmFsdWUgb3IgdmFsdWUgc2V0IGJ5IHNjcmlwdCBldmVuIGlmIGl0IGlz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGExOWE0NzFh
OTY0YmE5MGQzMGFkNzQ4OTQzMDEzNmYyNDk1NzNjMWMuLmM4OWE3MTgzYTc4YzYyMWVhMzM3ZDc4
Yjc1NGRiZDM0Y2Q2MWU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCkBAIC00Nyw2ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgoKSBj
b25zdCB7IHJldHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgbWF4TGVu
Z3RoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7
CisgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3Npbmco
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IE9WRVJS
SURFOwogICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0IHsg
cmV0dXJuIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpICYmICFkaXNhYmxlZCgpICYmICFyZWFkT25s
eSgpICYmIHZhbHVlLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcm
LCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNv
bnN0IFN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDk5NzE4
MmFiYWU3ZDQ0YmZiNzA3OWE0YmE4NGM3ZWQ5NDVhOTU3ZjIuLjg2NDY3Yzg5MTg0ODJlNDU2OGY1
MjNlMDRjMWUyNTQwODQwODg3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI4
Myw2ICsyODMsMTQgQEAgYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlv
bihpbnQsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
K3sKKyAgICBkb3VibGUgc3RlcDsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXAp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZXBNaXNtYXRjaCh2YWx1ZSwg
c3RlcCk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwg
ZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0ZWQgdHlwZXMgc2hvdWxkIGJlIHJl
amVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoKS4KQEAgLTg3
MCw3ICs4NzgsNyBAQCBkb3VibGUgSW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcChkb3VibGUg
bmV3VmFsdWUsIGRvdWJsZSBzdGVwLCB1bnNpZ25lZCBjdXJyZQogICAgIHVuc2lnbmVkIGJhc2VE
ZWNpbWFsUGxhY2VzOwogICAgIGRvdWJsZSBiYXNlID0gc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNl
cygmYmFzZURlY2ltYWxQbGFjZXMpOwogICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gbWluKGJhc2VE
ZWNpbWFsUGxhY2VzLCAxNnUpOwotICAgIGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVt
ZW50KCktPnZhbHVlKCkpKSB7CisgICAgaWYgKHN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVl
KCkpKSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3Vi
bGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgY3VycmVudERlY2ltYWxQbGFjZXMpKSk7CiAgICAg
ICAgIG5ld1ZhbHVlID0gcm91bmQobmV3VmFsdWUgKiBzY2FsZSkgLyBzY2FsZTsKICAgICB9IGVs
c2UgewpAQCAtMTAyMyw3ICsxMDMxLDcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5k
ZXJlcihpbnQgbikKICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUoc2lnbiA+
IDAgPyBtaW5pbXVtKCkgOiBtYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQp
OwogICAgIGVsc2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBpZiAoZWxl
bWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgeworICAgICAgICBpZiAo
c3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChz
dGVwKTsKICAgICAgICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBz
Y2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNl
cywgYmFzZURlY2ltYWxQbGFjZXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAxYzg2
Y2IwZmNjYTkzYTdiMzIxMjg4ZDk4MmU5OGM0ZDljOGM4MGQ2Li5iMWQ1ZjJmZmQxMTU1ZWE5ZDFl
YWUxMTVhMDZmZWVkZGUxM2IxNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTE1Nyw2
ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgbWluaW11bSgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2l6
ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRT
aXplKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91
YmxlIHN0ZXApIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKaW5kZXggZmU3MzEyYzJhMzAy
ZDM1NTdjMGNlY2Y4ZjYzNDNkM2ViY2JhYzA2My4uNjQ5NzY1ZGY5MTQ2ODdkNTQ4ZjkwYmY1MzFk
NDQ1N2RmNjY0YzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0z
OCwxNzcgKzM4LDUyIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFN0cmluZyBWYWxp
ZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCF0b0hUTUxF
bGVtZW50KG1fY29udHJvbCktPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0KLSAgICBpZiAoY3VzdG9tRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIG1fY3VzdG9tRXJy
b3JNZXNzYWdlOwotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2Nv
bnRyb2wpOwotICAgIGJvb2wgaXNJbnB1dEVsZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9s
RWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpOwotICAgIGJvb2wgaXNU
ZXh0QXJlYUVsZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYmIGVsZW1l
bnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpOwotICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9s
bG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQot
ICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFzIG90aGVy
IHZhbGlkYXRpb24gZXJyb3JzLgotICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkgewotICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yU2VsZWN0VGV4dCgpOwotICAgICAgICBpZiAo
aXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmdUZXh0KCk7Ci0gICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICB9Ci0gICAgaWYgKHR5cGVN
aXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnR5cGVNaXNtYXRj
aFRleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4
dCgpOwotICAgIH0KLSAgICBpZiAocGF0dGVybk1pc21hdGNoKCkpCi0gICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKLSAgICBpZiAodG9vTG9uZygp
KSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQgJiYgIWlzVGV4dEFyZWFFbGVtZW50KSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCog
dGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7
Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1l
Q2x1c3RlcnModGV4dC0+dmFsdWUoKSksIHRleHQtPm1heExlbmd0aCgpKTsKLSAgICB9Ci0gICAg
aWYgKHJhbmdlVW5kZXJmbG93KCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCkgewot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VV
bmRlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWlu
aW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlT3ZlcmZsb3coKSkgewotICAgICAg
ICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4oZWxlbWVudCktPm1heGltdW1TdHJpbmcoKSk7Ci0gICAgfQotICAgIGlmIChz
dGVwTWlzbWF0Y2goKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICAgICAgfQotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlU3RlcE1pc21hdGNoVGV4dChpbnB1dC0+c3RlcEJhc2VTdHJpbmcoKSwgaW5wdXQtPnN0
ZXBTdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi12b2lkIFZh
bGlkaXR5U3RhdGU6OnNldEN1c3RvbUVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgbV9jdXN0b21FcnJvck1lc3NhZ2UgPSBtZXNzYWdlOwotICAgIGlmIChtX2NvbnRy
b2wtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQqPihtX2NvbnRyb2wpLT5zZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKKyAg
ICByZXR1cm4gbV9jb250cm9sLT52YWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiBib29sIFZhbGlk
aXR5U3RhdGU6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFs
aWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gaW5w
dXQtPnZhbHVlTWlzc2luZyhpbnB1dC0+dmFsdWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkgewotICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50
KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsK
LSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT52YWx1ZU1pc3NpbmcodGV4dEFyZWEtPnZhbHVlKCkp
OwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAg
ICByZXR1cm4gdG9IVE1MU2VsZWN0RWxlbWVudChlbGVtZW50KS0+dmFsdWVNaXNzaW5nKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbHVlTWlzc2luZygpOwog
fQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFl
bGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnR5cGVN
aXNtYXRjaCgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnR5cGVNaXNtYXRjaCgpOwogfQogCiBi
b29sIFZhbGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVt
ZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFl
bGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cGF0dGVybk1pc21hdGNoKGlucHV0LT52YWx1
ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5wYXR0ZXJuTWlzbWF0Y2goKTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjp0b29Mb25nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxW
YWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBp
bnB1dC0+dG9vTG9uZyhpbnB1dC0+dmFsdWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4
dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3Rh
dGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
dGV4dEFyZWEtPnRvb0xvbmcodGV4dEFyZWEtPnZhbHVlKCksIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpDaGVja0RpcnR5RmxhZyk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9jb250cm9sLT50b29Mb25nKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFu
Z2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1
dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4g
aW5wdXQtPnJhbmdlVW5kZXJmbG93KGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250
cm9sLT5yYW5nZVVuZGVyZmxvdygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnJhbmdlT3Zl
cmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVu
dChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQt
PnJhbmdlT3ZlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJh
bmdlT3ZlcmZsb3coKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2goKSBj
b25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRy
b2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQtPnN0ZXBNaXNt
YXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+c3RlcE1pc21hdGNo
KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IoKSBjb25zdAogewotICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIHJl
dHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNF
bXB0eSgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPmN1c3RvbUVycm9yKCk7CiB9CiAKIGJvb2wg
VmFsaWRpdHlTdGF0ZTo6dmFsaWQoKSBjb25zdAogewotICAgIGJvb2wgc29tZUVycm9yID0gdHlw
ZU1pc21hdGNoKCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5n
ZU92ZXJmbG93KCkKLSAgICAgICAgfHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8
IHZhbHVlTWlzc2luZygpIHx8IGN1c3RvbUVycm9yKCk7Ci0gICAgcmV0dXJuICFzb21lRXJyb3I7
CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsaWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXggNGE5NjQ4OGJkNTU2OGYxM2U5YTA4NDlh
M2UwYjIyM2M1MWQ0ZjYwZS4uMTdlOTRjOTc4OGRiYzAzYWNkMTA1YTMyZDEwOWQ2NWIxMjVhYTJi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTU3LDExICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVmFsaWRpdHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpIHsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNW
YWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJik7Ci0KICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IG1fY29udHJvbDsKLSAgICBTdHJpbmcgbV9jdXN0b21FcnJvck1lc3NhZ2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141126</attachid>
            <date>2012-05-10 03:06:19 -0700</date>
            <delta_ts>2012-05-10 03:14:13 -0700</delta_ts>
            <desc>Patch 5</desc>
            <filename>bug-86058-20120510190618.patch</filename>
            <type>text/plain</type>
            <size>31833</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uNzZkZDBkMTU5ZjA3NWQ5ZGI2NmZkN2ExZmRlYmUyZGE5NTk0OWFmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTU3LDYgKzE1Nyw2OSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0
ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCitib29sIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
fQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
YW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sK
KyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8
IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmco
KSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigp
OworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBjdXN0b21FcnJvcigpID8gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA6IFN0cmluZygp
OworfQorCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29u
c3QgU3RyaW5nJiBlcnJvcikKK3sKKyAgICBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZXJy
b3I7Cit9CisKIGNvbnN0IEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KGNvbnN0IEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGFzc29jaWF0ZWRF
bGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggMjg0ZTI5OGZkOTdlNTQyZDFiMGIyY2Q0NmJjMzQy
ODUxZWQ0YTJmMS4uN2RhMmZiMzA1ZmZhNjVkYjkyNmE1ZGUzNmE2MDY5N2Q3NjVmODY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCkBAIC02MCw2ICs2
MCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcm1SZW1vdmVkRnJvbVRyZWUoY29uc3QgTm9k
ZSogZm9ybVJvb3QpOwogCisgICAgLy8gVmFsaWRpdHlTdGF0ZSBhdHRyaWJ1dGUgaW1wbGVtZW50
YXRpb25zCisgICAgdmlydHVhbCBib29sIGN1c3RvbUVycm9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92
ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB0b29Mb25nKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCB2YWxpZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB2YWx1
ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcm
KTsKKwogcHJvdGVjdGVkOgogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogCkBAIC03Niw2
ICs4OSw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUZvcm0oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9ybSgpOwogCisgICAgU3RyaW5nIGN1c3RvbVZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0ID0gMDsKIApAQCAtODQsNiArOTks
NyBAQCBwcml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRy
PFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKKyAgICBTdHJpbmcgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZTsKIH07CiAKIEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggOTc0OTM4ZjBjZDg1MzZhMTY3YTRjYWJmNDY5ODZlNDY4YmZlZjFi
Ni4uZDRlOWNmOWQ4YmFmZjRjZjk2ZTRiZTU5OWNhYmE5YzhmZmM0OTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00ODIsNyArNDgy
LDggQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0
IFN0cmluZyYgZXJyb3IpCiB7Ci0gICAgdmFsaWRpdHkoKS0+c2V0Q3VzdG9tRXJyb3JNZXNzYWdl
KGVycm9yKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGVy
cm9yKTsKKyAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3Vz
ZWROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApp
bmRleCAzNjQ3OTY4ZGExNDQzMzc3Njk3NTUxYmRiMWJlYWQwMTgzODQwOGNiLi5lOGRmY2RhMjVh
ZWE3NjU0MWZlMjg4ODYxOGE3ZTQ2NWYxOTU1OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+
ID4qIHVuaGFuZGxlZEludmFsaWRDb250cm9scyA9IDApOwogICAgIC8vIFRoaXMgbXVzdCBiZSBj
YWxsZWQgd2hlbiBhIHZhbGlkYXRpb24gY29uc3RyYWludCBvciBjb250cm9sIHZhbHVlIGlzIGNo
YW5nZWQuCiAgICAgdm9pZCBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICB2b2lkIHNldEN1
c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIGJvb2wgcmVhZE9ubHkoKSBj
b25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCmluZGV4IDZmZTU1OTY1ZDRmMWRhNzU5OWQ2MjkwMmQ5ODkxZTQ4ZDQ3OWFl
ZjcuLjYzZTA1ZTQ1ZjkxZjdlOWQxYTNiYzBmNmQ1YWU2ZGIxNjVhYjM5OWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTkyLDI2ICsxOTIsMzEgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojppc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKICAgICB9CiAgICAgcmV0dXJuICFtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoRm9yKHZhbHVl
KQogICAgICAgICAmJiAhc3RlcE1pc21hdGNoKHZhbHVlKQotICAgICAgICAmJiAhcmFuZ2VVbmRl
cmZsb3codmFsdWUpCi0gICAgICAgICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKQorICAgICAgICAm
JiAhbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1
dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUpCiAgICAgICAgICYmICF0b29Mb25nKHZhbHVlLCBJ
Z25vcmVEaXJ0eUZsYWcpCi0gICAgICAgICYmICFwYXR0ZXJuTWlzbWF0Y2godmFsdWUpCi0gICAg
ICAgICYmICF2YWx1ZU1pc3NpbmcodmFsdWUpOworICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnBh
dHRlcm5NaXNtYXRjaCh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT52YWx1ZU1pc3Np
bmcodmFsdWUpOworfQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAor
eworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiB0b29Mb25nKHZhbHVlKCksIENoZWNrRGly
dHlGbGFnKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25z
dAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7CisgICAgcmV0dXJu
IHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2goKTsKIH0KIAotYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAgcmV0dXJuIHdpbGxW
YWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmcodmFsdWUoKSk7CiB9CiAKLWJv
b2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUpOworICAgIHJl
dHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVl
KCkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKSBjb25zdApAQCAtMjMyLDY4ICsyMzcs
NzYgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUs
IE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykKICAgICByZXR1cm4gbnVtR3JhcGhlbWVDbHVz
dGVycyh2YWx1ZSkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWF4KTsKIH0KIAotYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSk7CisgICAgcmV0dXJuIHdpbGxW
YWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKTsKIH0KIAot
Ym9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUp
IGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAogewot
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSk7CisgICAgcmV0dXJu
IHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKCkpOwog
fQogCi1kb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNvbnN0CitTdHJpbmcgSFRN
TElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewotICAgIHJldHVybiBt
X2lucHV0VHlwZS0+bWluaW11bSgpOwotfQorICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0o
KSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4aW11bSgpOwotfQorICAgIGlm
IChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2Uo
KTsKIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRWYWx1
ZVN0ZXAoJnN0ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5zdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAgIC8vIFRoZSBvcmRlciBvZiB0
aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93
IHRoZQorICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFz
IG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgorICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkKKyAgICAg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmdUZXh0KCk7CiAKLVN0cmluZyBIVE1M
SW5wdXRFbGVtZW50OjptaW5pbXVtU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPnNlcmlhbGl6ZShtaW5pbXVtKCkpOwotfQorICAgIGlmICh0b29Mb25nKCkpCisgICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3Rl
cnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6Om1h
eGltdW1TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFsaXpl
KG1heGltdW0oKSk7CisgICAgaWYgKHR5cGVNaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPnR5cGVNaXNtYXRjaFRleHQoKTsKKworICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2go
KSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgp
OworCisgICAgaWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
VG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgpKSwgbWF4TGVuZ3RoKCkpOwor
CisgICAgaWYgKHJhbmdlVW5kZXJmbG93KCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVJhbmdlVW5kZXJmbG93VGV4dChtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1pbmltdW0oKSkp
OworCisgICAgaWYgKHJhbmdlT3ZlcmZsb3coKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQobV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtYXhpbXVtKCkp
KTsKKworICAgIGlmIChzdGVwTWlzbWF0Y2goKSkgeworICAgICAgICBTdHJpbmcgc3RlcFN0cmlu
ZzsKKyAgICAgICAgZG91YmxlIHN0ZXA7CisgICAgICAgIGlmIChnZXRBbGxvd2VkVmFsdWVTdGVw
KCZzdGVwKSkKKyAgICAgICAgICAgIHN0ZXBTdHJpbmcgPSBzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHN0ZXAgLyBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFjdG9yKCkpOworICAgICAgICByZXR1cm4g
dmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KG1faW5wdXRUeXBlLT5zZXJpYWxpemUo
bV9pbnB1dFR5cGUtPnN0ZXBCYXNlKCkpLCBzdGVwU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpzdGVwQmFzZVN0cmlu
ZygpIGNvbnN0Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUobV9pbnB1dFR5cGUtPnN0ZXBCYXNlKCkp
OworICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWluaW11bSgpOwogfQogCi1TdHJpbmcgSFRNTElu
cHV0RWxlbWVudDo6c3RlcFN0cmluZygpIGNvbnN0Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6
bWF4aW11bSgpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2Vk
VmFsdWVTdGVwKCZzdGVwKSkgewotICAgICAgICAvLyBzdGVwU3RyaW5nKCkgc2hvdWxkIGJlIGNh
bGxlZCBvbmx5IGlmIHN0ZXBNaXNtYXRjaCgpIGNhbiBiZSB0cnVlLgotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICByZXR1
cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZh
Y3RvcigpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsKIH0KIAotU3RyaW5n
IEhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaFRleHQoKSBjb25zdAorYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+dHlwZU1pc21hdGNoVGV4dCgpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBzdGVw
TWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1p
c3NpbmdUZXh0KCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1
ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFs
dWUpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91
YmxlKiBzdGVwKSBjb25zdApAQCAtMTI3NSwxMiArMTI4OCwxMiBAQCBib29sIEhUTUxJbnB1dEVs
ZW1lbnQ6Omhhc1VuYWNjZXB0YWJsZVZhbHVlKCkgY29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVt
ZW50Ojppc0luUmFuZ2UoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9y
dHNSYW5nZUxpbWl0YXRpb24oKSAmJiAhcmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgJiYgIXJhbmdl
T3ZlcmZsb3codmFsdWUoKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1Jhbmdl
TGltaXRhdGlvbigpICYmICFtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgJiYg
IW1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKCkpOwogfQogCiBib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OmlzT3V0T2ZSYW5nZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmIChyYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSB8
fCByYW5nZU92ZXJmbG93KHZhbHVlKCkpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBv
cnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgKG1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1
ZSgpKSB8fCBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKSk7CiB9CiAKIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6bmVlZHNTdXNwZW5zaW9uQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBlMzRhMDNlNjM1ZTlkZmMzNDBiMDUwZGRlMWJk
YWNhOTgzODc1ODlkLi5lNTEyM2RiYmMwM2JlYTY3YjhiMTAwNTQzOTYyNzFjYzU4NDBmM2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtNDgsMTMgKzQ4LDE4IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAK
ICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3Q7
Ci0gICAgLy8gdmFsdWVNaXNzaW5nKCkgaWdub3JlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyB2YWx1
ZSBmb3IgQ0hFQ0tCT1ggYW5kIFJBRElPLgotICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcGF0dGVybk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBOZWVkc1RvQ2hlY2tEaXJ0eUZs
YWcpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7
Ci0gICAgYm9vbCByYW5nZU92ZXJmbG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgdmly
dHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBy
YW5nZU92ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIC8v
IHZhbHVlTWlzc2luZygpIGlnbm9yZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdmFsdWUgZm9yIENI
RUNLQk9YIGFuZCBSQURJTy4KKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBP
VkVSUklERTsKKwogICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHR5cGU9ZGF0
ZSwgbnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Igb3RoZXIgdHlwZXMuCiAg
ICAgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHZh
bHVlIGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9y
IG90aGVyIHR5cGVzLgpAQCAtNjQsMTUgKzY5LDYgQEAgcHVibGljOgogICAgIC8vIFJldHVybnMg
ZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQgdmFsdWUgc3RlcC4iCiAgICAgYm9vbCBnZXRB
bGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0OwogCi0gICAgLy8gRm9yIFZhbGlkaXR5U3Rh
dGUuCi0gICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgU3Ry
aW5nIG1pbmltdW1TdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgbWF4aW11bVN0cmluZygpIGNv
bnN0OwotICAgIFN0cmluZyBzdGVwQmFzZVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyBzdGVw
U3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHR5cGVNaXNtYXRjaFRleHQoKSBjb25zdDsKLSAg
ICBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0OwotCiAgICAgLy8gSW1wbGVtZW50YXRp
b25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBVcCgpIGFuZCBzdGVwRG93bigpLgogICAgIHZv
aWQgc3RlcFVwKGludCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc3RlcERvd24oaW50LCBF
eGNlcHRpb25Db2RlJik7CkBAIC0zMzksNiArMzM1LDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRlKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVp
cmVkQXR0cmlidXRlQ2hhbmdlZCgpIE9WRVJSSURFOwogCisgICAgYm9vbCBzdGVwTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisKICAgICB2b2lkIHVwZGF0ZVR5cGUoKTsKICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaAppbmRleCBhMGU2NjM3N2E2NDE4NTMwYWQ4NTgyODgwNzg3YWM1MzRl
MGM0ZTZiLi4zMTM4OTNiYWFlOGNjMDZmMWIwODY5ODMxZWIxYjIzY2IwNDk5YWI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1Ymxp
YzoKICAgICAvLyBOb3RlIHRoYXQgdGhlIG9iamVjdCBlbGVtZW50cyBhcmUgYWx3YXlzIGJhcnJl
ZCBmcm9tIGNvbnN0cmFpbnQgdmFsaWRhdGlvbi4KICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3Nh
Z2UoKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpIHsgcmV0
dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSBPVkVS
UklERSB7IH0KIAogICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJlZjsKICAg
ICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNThhOWE3MzljZTEwNzQyODdkMTQ5YjNl
M2RhZTk1N2E2YjQzZWM5MS4uZWU1N2RhZTgwNDE3YjE3NWRlNjhkMWNmMjM4NTBjMWVhYjhlMWFi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxP
cHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRl
ICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUg
Ik5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTQ1LDggKzE0
NiwyMiBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpoYXNQbGFjZWhvbGRlckxhYmVsT3B0aW9u
KCkgY29uc3QKICAgICByZXR1cm4gIWxpc3RJbmRleCAmJiBvcHRpb24tPnZhbHVlKCkuaXNFbXB0
eSgpOwogfQogCitTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3QKK3sKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlk
YXRpb25NZXNzYWdlKCk7CisKKyAgICByZXR1cm4gdmFsdWVNaXNzaW5nKCkgPyB2YWxpZGF0aW9u
TWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKSA6IFN0cmluZygpOworfQorCiBib29s
IEhUTUxTZWxlY3RFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogeworICAgIGlmICghd2ls
bFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghaXNSZXF1aXJl
ZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDUyNjY1ZTE5NWI0OTFiZTNiMDQ1YzViMmRiZDI2
NTZlMTg2ZGUwOTYuLjgyYjcyNzMzODg2MmMyMzI3NzQ0ZWEyNWUzMTU5NDE5ZTgzNWEzZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDggQEAg
cHVibGljOgogICAgIHZvaWQgb3B0aW9uU2VsZWN0ZWRCeVVzZXIoaW50IGluZGV4LCBib29sIGRp
c3BhdGNoQ2hhbmdlRXZlbnQsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsK
IAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAg
IHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmNwcAppbmRleCA2MzY2M2E5N2ZjYzdiMGNiZmZlZjkxZjU5YjQ3ZjVlNGUx
NGZiMjRkLi4zNWM1NjAyODAxZjc5MzIzMGY1YzhlYjg0MzIyMDlmMzUxZTBlZTAzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcg
QEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRl
ICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCkBAIC00MjMsNiArNDI0LDMzIEBAIHZvaWQgSFRNTFRleHRBcmVh
RWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCBuZXdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHNldEF0dHJpYnV0ZShtYXhsZW5ndGhBdHRyLCBTdHJpbmc6Om51bWJlcihuZXdWYWx1
ZSkpOwogfQogCitTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdAoreworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFs
aWRhdGlvbk1lc3NhZ2UoKTsKKworICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkKKyAgICAgICAgcmV0
dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAgaWYgKHRvb0xv
bmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3Jh
cGhlbWVDbHVzdGVycyh2YWx1ZSgpKSwgbWF4TGVuZ3RoKCkpOworCisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHZhbHVlTWlzc2luZyh2YWx1ZSgpKTsK
K30KKworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0RpcnR5RmxhZyk7
Cit9CisKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZh
bHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJu
IGZhbHNlIGZvciB0aGUgZGVmYXVsdCB2YWx1ZSBvciB2YWx1ZSBzZXQgYnkgc2NyaXB0IGV2ZW4g
aWYgaXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXgg
YTE5YTQ3MWE5NjRiYTkwZDMwYWQ3NDg5NDMwMTM2ZjI0OTU3M2MxYy4uYzg5YTcxODNhNzhjNjIx
ZWEzMzdkNzhiNzU0ZGJkMzRjZDYxZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgKQEAgLTQ3LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dExl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVuZ3RoKCk7IH0KICAgICB2aXJ0dWFsIGlu
dCBtYXhMZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIHNldE1heExlbmd0aChpbnQsIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQorICAgIHZpcnR1YWwgU3RyaW5nIHZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVl
TWlzc2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkg
Y29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYg
IXJlYWRPbmx5KCkgJiYgdmFsdWUuaXNFbXB0eSgpOyB9CiAgICAgYm9vbCB0b29Mb25nKGNvbnN0
IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlk
VmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5k
ZXggOTk3MTgyYWJhZTdkNDRiZmI3MDc5YTRiYTg0YzdlZDk0NWE5NTdmMi4uODY0NjdjODkxODQ4
MmU0NTY4ZjUyM2UwNGMxZTI1NDA4NDA4ODcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNw
cApAQCAtMjgzLDYgKzI4MywxNCBAQCBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVE
ZWNvcmF0aW9uKGludCwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAorYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAoreworICAgIGRvdWJsZSBzdGVwOworICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3Rl
cCgmc3RlcCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RlcE1pc21hdGNo
KHZhbHVlLCBzdGVwKTsKK30KKwogYm9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBT
dHJpbmcmLCBkb3VibGUpIGNvbnN0CiB7CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0eXBlcyBzaG91
bGQgYmUgcmVqZWN0ZWQgYnkgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCgp
LgpAQCAtODcwLDcgKzg3OCw3IEBAIGRvdWJsZSBJbnB1dFR5cGU6OmFsaWduVmFsdWVGb3JTdGVw
KGRvdWJsZSBuZXdWYWx1ZSwgZG91YmxlIHN0ZXAsIHVuc2lnbmVkIGN1cnJlCiAgICAgdW5zaWdu
ZWQgYmFzZURlY2ltYWxQbGFjZXM7CiAgICAgZG91YmxlIGJhc2UgPSBzdGVwQmFzZVdpdGhEZWNp
bWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CiAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBt
aW4oYmFzZURlY2ltYWxQbGFjZXMsIDE2dSk7Ci0gICAgaWYgKGVsZW1lbnQoKS0+c3RlcE1pc21h
dGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQo
KS0+dmFsdWUoKSkpIHsKICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19j
YXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50RGVjaW1hbFBsYWNlcykp
KTsKICAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNjYWxlKSAvIHNjYWxlOwog
ICAgIH0gZWxzZSB7CkBAIC0xMDIzLDcgKzEwMzEsNyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVw
RnJvbVJlbmRlcmVyKGludCBuKQogICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6
ZShzaWduID4gMCA/IG1pbmltdW0oKSA6IG1heGltdW0oKSksIERpc3BhdGNoSW5wdXRBbmRDaGFu
Z2VFdmVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAg
IGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAg
ICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewogICAgICAgICAgICAg
QVNTRVJUKHN0ZXApOwogICAgICAgICAgICAgZG91YmxlIG5ld1ZhbHVlOwogICAgICAgICAgICAg
ZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNp
bWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmlu
ZGV4IDFjODZjYjBmY2NhOTNhN2IzMjEyODhkOTgyZTk4YzRkOWM4YzgwZDYuLmIxZDVmMmZmZDEx
NTVlYTlkMWVhZTExNWEwNmZlZWRkZTEzYjE3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApA
QCAtMTU3LDYgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHBy
ZWZlcnJlZFNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJp
bmcmLCBkb3VibGUgc3RlcCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBj
b25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2ln
bmVkKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmZTcz
MTJjMmEzMDJkMzU1N2MwY2VjZjhmNjM0M2QzZWJjYmFjMDYzLi42NDk3NjVkZjkxNDY4N2Q1NDhm
OTBiZjUzMWQ0NDU3ZGY2NjRjNmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5j
cHAKQEAgLTM4LDE3NyArMzgsNTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogU3Ry
aW5nIFZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICBpZiAo
IXRvSFRNTEVsZW1lbnQobV9jb250cm9sKS0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIGlmIChjdXN0b21FcnJvcigpKQotICAgICAgICByZXR1cm4gbV9j
dXN0b21FcnJvck1lc3NhZ2U7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVt
ZW50KG1fY29udHJvbCk7Ci0gICAgYm9vbCBpc0lucHV0RWxlbWVudCA9IGVsZW1lbnQtPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZyk7Ci0gICAg
Ym9vbCBpc1RleHRBcmVhRWxlbWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkg
JiYgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZyk7Ci0gICAgLy8gVGhlIG9yZGVyIG9m
IHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNo
b3cgdGhlCi0gICAgLy8gdmFsdWVNaXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBo
YXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJvcnMuCi0gICAgaWYgKHZhbHVlTWlzc2luZygpKSB7Ci0g
ICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgICAgICBy
ZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCk7Ci0gICAg
ICAgIGlmIChpc0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICAgICAg
cmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwotICAgIH0KLSAgICBp
ZiAodHlwZU1pc21hdGNoKCkpIHsKLSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KQotICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlw
ZU1pc21hdGNoVGV4dCgpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlz
bWF0Y2hUZXh0KCk7Ci0gICAgfQotICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2goKSkKLSAgICAgICAg
cmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwotICAgIGlmICh0
b29Mb25nKCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCAmJiAhaXNUZXh0QXJlYUVs
ZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihl
bGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVt
R3JhcGhlbWVDbHVzdGVycyh0ZXh0LT52YWx1ZSgpKSwgdGV4dC0+bWF4TGVuZ3RoKCkpOwotICAg
IH0KLSAgICBpZiAocmFuZ2VVbmRlcmZsb3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZVVuZGVyZmxvd1RleHQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1l
bnQpLT5taW5pbXVtU3RyaW5nKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VPdmVyZmxvdygpKSB7
Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWF4aW11bVN0cmluZygpKTsKLSAgICB9Ci0g
ICAgaWYgKHN0ZXBNaXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGlucHV0LT5zdGVwQmFzZVN0cmluZygpLCBp
bnB1dC0+c3RlcFN0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0K
LXZvaWQgVmFsaWRpdHlTdGF0ZTo6c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKLXsKLSAgICBtX2N1c3RvbUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgaWYg
KG1fY29udHJvbC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8
SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fY29udHJvbCktPnNldE5lZWRzVmFsaWRpdHlDaGVj
aygpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIGJv
b2wgVmFsaWRpdHlTdGF0ZTo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQt
PndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVu
dC0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5w
dXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJl
dHVybiBpbnB1dC0+dmFsdWVNaXNzaW5nKGlucHV0LT52YWx1ZSgpKTsKLSAgICB9Ci0gICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJl
YUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVs
ZW1lbnQpOwotICAgICAgICByZXR1cm4gdGV4dEFyZWEtPnZhbHVlTWlzc2luZyh0ZXh0QXJlYS0+
dmFsdWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykp
Ci0gICAgICAgIHJldHVybiB0b0hUTUxTZWxlY3RFbGVtZW50KGVsZW1lbnQpLT52YWx1ZU1pc3Np
bmcoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsdWVNaXNz
aW5nKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsK
LSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAg
ICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50
KS0+dHlwZU1pc21hdGNoKCk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dHlwZU1pc21hdGNoKCk7
CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAg
ICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBp
ZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5wYXR0ZXJuTWlzbWF0Y2goaW5w
dXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnBhdHRlcm5NaXNtYXRjaCgpOwog
fQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnRvb0xvbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVu
dC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVt
ZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBp
bnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAg
cmV0dXJuIGlucHV0LT50b29Mb25nKGlucHV0LT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudDo6Q2hlY2tEaXJ0eUZsYWcpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFn
TmFtZSh0ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFy
ZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAg
IHJldHVybiB0ZXh0QXJlYS0+dG9vTG9uZyh0ZXh0QXJlYS0+dmFsdWUoKSwgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBtX2NvbnRyb2wtPnRvb0xvbmcoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0
YXRlOjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQg
PSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRh
dGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdO
YW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAg
IHJldHVybiBpbnB1dC0+cmFuZ2VVbmRlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVy
biBtX2NvbnRyb2wtPnJhbmdlVW5kZXJmbG93KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hU
TUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlu
cHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVy
biBpbnB1dC0+cmFuZ2VPdmVyZmxvdyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29u
dHJvbC0+cmFuZ2VPdmVyZmxvdygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNt
YXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50
KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+
c3RlcE1pc21hdGNoKGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5zdGVw
TWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJvcigpIGNvbnN0
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7
Ci0gICAgcmV0dXJuIGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbUVycm9yTWVz
c2FnZS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+Y3VzdG9tRXJyb3IoKTsKIH0K
IAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpIGNvbnN0CiB7Ci0gICAgYm9vbCBzb21lRXJy
b3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygp
IHx8IHJhbmdlT3ZlcmZsb3coKQotICAgICAgICB8fCB0b29Mb25nKCkgfHwgcGF0dGVybk1pc21h
dGNoKCkgfHwgdmFsdWVNaXNzaW5nKCkgfHwgY3VzdG9tRXJyb3IoKTsKLSAgICByZXR1cm4gIXNv
bWVFcnJvcjsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZCgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRleCA0YTk2NDg4YmQ1NTY4ZjEz
ZTlhMDg0OWEzZTBiMjIzYzUxZDRmNjBlLi4xN2U5NGM5Nzg4ZGJjMDNhY2QxMDVhMzJkMTA5ZDY1
YjEyNWFhMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNTcsMTEgKzU3
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCogY29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkgeyB9CiAKLSAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wg
aXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmKTsKLQogICAgIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCogbV9jb250cm9sOwotICAgIFN0cmluZyBtX2N1c3RvbUVycm9yTWVzc2FnZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141127</attachid>
            <date>2012-05-10 03:14:19 -0700</date>
            <delta_ts>2012-05-10 18:47:21 -0700</delta_ts>
            <desc>Patch 6</desc>
            <filename>bug-86058-20120510191417.patch</filename>
            <type>text/plain</type>
            <size>31555</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NjE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJjYWVkYTAzNDE5ZTli
MzFkNGFhNmZjZDdhYWEyNWRmMjQ4OWI1ZS4uMGJhMzZjOWNmMWE5N2QzYjMyYzI1ZGYzZGRkYzBh
ZWMwOGRkYzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgICogaHRtbC9JbnB1
dFR5cGUuaDoKKyAgICAgICAgKElucHV0VHlwZSk6CisgICAgICAgICogaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNz
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNv
cmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlT
dGF0ZTo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlz
bWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgorICAgICAgICAqIGh0bWwv
VmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6CisKIDIwMTItMDUtMTAg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBBdXRvY29tcGxldGUgZm9yIENTUyBwcm9wZXJ0eSB2YWx1ZXMgaW4gdGhlIFN0
eWxlcyBwYW5lIGJlaGF2aW5nIGluY29ycmVjdGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZhNzZhOTIyZmUzMjUyYjBkNDU3ZjNk
Y2RhODZlNzM4MTIwMS4uNzZkZDBkMTU5ZjA3NWQ5ZGI2NmZkN2ExZmRlYmUyZGE5NTk0OWFmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcApAQCAt
MTU3LDYgKzE1Nyw2OSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0
ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigpOwogfQogCitib29sIEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAoreworICAgIGNvbnN0IEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsKKyAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UuaXNFbXB0eSgpOwor
fQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpy
YW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkKCkgY29uc3QKK3sK
KyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8IHN0ZXBNaXNtYXRjaCgpIHx8
IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCisgICAgICAgIHx8IHRvb0xvbmco
KSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3NpbmcoKSB8fCBjdXN0b21FcnJvcigp
OworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmlu
ZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZTsKK30KKworU3RyaW5nIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBjdXN0b21FcnJvcigpID8gbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA6IFN0cmluZygp
OworfQorCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29u
c3QgU3RyaW5nJiBlcnJvcikKK3sKKyAgICBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlID0gZXJy
b3I7Cit9CisKIGNvbnN0IEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KGNvbnN0IEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQpCiB7CiAgICAgaWYgKGFzc29jaWF0ZWRF
bGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9y
bUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggMjg0ZTI5OGZkOTdlNTQyZDFiMGIyY2Q0NmJjMzQy
ODUxZWQ0YTJmMS4uN2RhMmZiMzA1ZmZhNjVkYjkyNmE1ZGUzNmE2MDY5N2Q3NjVmODY1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCkBAIC02MCw2ICs2
MCwxOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcm1SZW1vdmVkRnJvbVRyZWUoY29uc3QgTm9k
ZSogZm9ybVJvb3QpOwogCisgICAgLy8gVmFsaWRpdHlTdGF0ZSBhdHRyaWJ1dGUgaW1wbGVtZW50
YXRpb25zCisgICAgdmlydHVhbCBib29sIGN1c3RvbUVycm9yKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92
ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB0b29Mb25nKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCB2YWxpZCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB2YWx1
ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcm
KTsKKwogcHJvdGVjdGVkOgogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCgpOwogCkBAIC03Niw2
ICs4OSw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUZvcm0oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlRm9ybSgpOwogCisgICAgU3RyaW5nIGN1c3RvbVZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0ID0gMDsKIApAQCAtODQsNiArOTks
NyBAQCBwcml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRy
PFZhbGlkaXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKKyAgICBTdHJpbmcgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZTsKIH07CiAKIEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KEZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5jcHAKaW5kZXggOTc0OTM4ZjBjZDg1MzZhMTY3YTRjYWJmNDY5ODZlNDY4YmZlZjFi
Ni4uZDRlOWNmOWQ4YmFmZjRjZjk2ZTRiZTU5OWNhYmE5YzhmZmM0OTI3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC00ODIsNyArNDgy
LDggQEAgdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2so
KQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0
IFN0cmluZyYgZXJyb3IpCiB7Ci0gICAgdmFsaWRpdHkoKS0+c2V0Q3VzdG9tRXJyb3JNZXNzYWdl
KGVycm9yKTsKKyAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGVy
cm9yKTsKKyAgICBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNv
bnRyb2xFbGVtZW50OjpkaXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3Vz
ZWROb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApp
bmRleCAzNjQ3OTY4ZGExNDQzMzc3Njk3NTUxYmRiMWJlYWQwMTgzODQwOGNiLi5lOGRmY2RhMjVh
ZWE3NjU0MWZlMjg4ODYxOGE3ZTQ2NWYxOTU1OWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+
ID4qIHVuaGFuZGxlZEludmFsaWRDb250cm9scyA9IDApOwogICAgIC8vIFRoaXMgbXVzdCBiZSBj
YWxsZWQgd2hlbiBhIHZhbGlkYXRpb24gY29uc3RyYWludCBvciBjb250cm9sIHZhbHVlIGlzIGNo
YW5nZWQuCiAgICAgdm9pZCBzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKLSAgICB2b2lkIHNldEN1
c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIGJvb2wgcmVhZE9ubHkoKSBj
b25zdCB7IHJldHVybiBtX3JlYWRPbmx5OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCmluZGV4IDZmZTU1OTY1ZDRmMWRhNzU5OWQ2MjkwMmQ5ODkxZTQ4ZDQ3OWFl
ZjcuLmVlOTNiYjVjZWJhZjczMThmMGViYzY3NmU4MGVkMWY2ZGZkNmMxMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTkxLDI3ICsxOTEsMzIgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojppc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gIW1faW5wdXRUeXBl
LT50eXBlTWlzbWF0Y2hGb3IodmFsdWUpCi0gICAgICAgICYmICFzdGVwTWlzbWF0Y2godmFsdWUp
Ci0gICAgICAgICYmICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSkKLSAgICAgICAgJiYgIXJhbmdlT3Zl
cmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+c3RlcE1pc21hdGNoKHZhbHVl
KQorICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKQorICAgICAg
ICAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUpCiAgICAgICAgICYmICF0b29M
b25nKHZhbHVlLCBJZ25vcmVEaXJ0eUZsYWcpCi0gICAgICAgICYmICFwYXR0ZXJuTWlzbWF0Y2go
dmFsdWUpCi0gICAgICAgICYmICF2YWx1ZU1pc3NpbmcodmFsdWUpOworICAgICAgICAmJiAhbV9p
bnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBl
LT52YWx1ZU1pc3NpbmcodmFsdWUpOworfQorCitib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xv
bmcoKSBjb25zdAoreworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiB0b29Mb25nKHZhbHVl
KCksIENoZWNrRGlydHlGbGFnKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0eXBlTWlz
bWF0Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7
CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2go
KTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAg
cmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmcodmFsdWUo
KSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKGNvbnN0IFN0
cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRj
aCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFs
dWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cGF0dGVybk1p
c21hdGNoKHZhbHVlKCkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKSBjb25zdApAQCAt
MjMyLDY4ICsyMzcsNzEgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0
cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykKICAgICByZXR1cm4gbnVt
R3JhcGhlbWVDbHVzdGVycyh2YWx1ZSkgPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWF4KTsKIH0K
IAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSk7CisgICAg
cmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1
ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KGNvbnN0IFN0
cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3co
KSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSk7
CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93
KHZhbHVlKCkpOwogfQogCi1kb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNvbnN0
CitTdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWluaW11bSgpOwotfQorICAgIGlmICghd2lsbFZhbGlk
YXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotZG91YmxlIEhUTUxJbnB1dEVsZW1l
bnQ6Om1heGltdW0oKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4aW11bSgp
OwotfQorICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRh
dGlvbk1lc3NhZ2UoKTsKIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdl
dEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAgIC8vIFRo
ZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2Qg
bGlrZSB0byBzaG93IHRoZQorICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhl
IGNvbnRyb2wgaGFzIG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgorICAgIGlmICh2YWx1ZU1pc3Np
bmcoKSkKKyAgICAgICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmdUZXh0KCk7CiAK
LVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtU3RyaW5nKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtaW5pbXVtKCkpOwotfQorICAgIGlmICh0b29M
b25nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdy
YXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKIAotU3RyaW5nIEhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW1TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+c2VyaWFsaXplKG1heGltdW0oKSk7Ci19CisgICAgaWYgKHR5cGVNaXNtYXRjaCgpKQorICAg
ICAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaFRleHQoKTsKIAotU3RyaW5nIEhU
TUxJbnB1dEVsZW1lbnQ6OnN0ZXBCYXNlU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2UoKSk7CisgICAgaWYgKHBh
dHRlcm5NaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJu
TWlzbWF0Y2hUZXh0KCk7CisKKyAgICBpZiAodG9vTG9uZygpKQorICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKCkpLCBt
YXhMZW5ndGgoKSk7CisKKyAgICBpZiAocmFuZ2VVbmRlcmZsb3coKSkKKyAgICAgICAgcmV0dXJu
IHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KG1faW5wdXRUeXBlLT5zZXJpYWxp
emUobWluaW11bSgpKSk7CisKKyAgICBpZiAocmFuZ2VPdmVyZmxvdygpKQorICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChtX2lucHV0VHlwZS0+c2VyaWFs
aXplKG1heGltdW0oKSkpOworCisgICAgaWYgKHN0ZXBNaXNtYXRjaCgpKSB7CisgICAgICAgIFN0
cmluZyBzdGVwU3RyaW5nOworICAgICAgICBkb3VibGUgc3RlcDsKKyAgICAgICAgaWYgKGdldEFs
bG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICAgICAgc3RlcFN0cmluZyA9IHNlcmlhbGl6
ZUZvck51bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBlLT5zdGVwU2NhbGVGYWN0b3IoKSk7Cisg
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQobV9pbnB1dFR5
cGUtPnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2UoKSksIHN0ZXBTdHJpbmcpOworICAg
IH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6
OnN0ZXBTdHJpbmcoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBj
b25zdAogewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgm
c3RlcCkpIHsKLSAgICAgICAgLy8gc3RlcFN0cmluZygpIHNob3VsZCBiZSBjYWxsZWQgb25seSBp
ZiBzdGVwTWlzbWF0Y2goKSBjYW4gYmUgdHJ1ZS4KLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHNlcmlhbGl6
ZUZvck51bWJlclR5cGUoc3RlcCAvIG1faW5wdXRUeXBlLT5zdGVwU2NhbGVGYWN0b3IoKSk7Cisg
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5taW5pbXVtKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRF
bGVtZW50Ojp0eXBlTWlzbWF0Y2hUZXh0KCkgY29uc3QKK2RvdWJsZSBIVE1MSW5wdXRFbGVtZW50
OjptYXhpbXVtKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRj
aFRleHQoKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsKIH0KIAotU3RyaW5n
IEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdAorYm9vbCBIVE1MSW5w
dXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+dmFsdWVNaXNzaW5nVGV4dCgpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lu
cHV0VHlwZS0+c3RlcE1pc21hdGNoKHZhbHVlKCkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91YmxlKiBzdGVwKSBjb25zdApAQCAtMTI3NSwxMiAr
MTI4MywxMiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Omhhc1VuYWNjZXB0YWJsZVZhbHVlKCkg
Y29uc3QKIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc0luUmFuZ2UoKSBjb25zdAogewotICAg
IHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAhcmFuZ2VV
bmRlcmZsb3codmFsdWUoKSkgJiYgIXJhbmdlT3ZlcmZsb3codmFsdWUoKSk7CisgICAgcmV0dXJu
IG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmICFtX2lucHV0VHlwZS0+
cmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgJiYgIW1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZh
bHVlKCkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzT3V0T2ZSYW5nZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYm
IChyYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSB8fCByYW5nZU92ZXJmbG93KHZhbHVlKCkpKTsKKyAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgKG1faW5w
dXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSB8fCBtX2lucHV0VHlwZS0+cmFuZ2VPdmVy
Zmxvdyh2YWx1ZSgpKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6bmVlZHNTdXNwZW5z
aW9uQ2FsbGJhY2soKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCBl
MzRhMDNlNjM1ZTlkZmMzNDBiMDUwZGRlMWJkYWNhOTgzODc1ODlkLi45ODI3YTliZmVkYjYwMDg0
OTI4YmNmYTMyMTVkNzNlZWY0Y2Q0ZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaApAQCAtNDgsMTMgKzQ4LDE4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQXV0b2NvbXBsZXRlKCkgY29uc3Q7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQotICAg
IGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3Q7Ci0gICAgLy8gdmFsdWVNaXNzaW5nKCkgaWdub3Jl
cyB0aGUgc3BlY2lmaWVkIHN0cmluZyB2YWx1ZSBmb3IgQ0hFQ0tCT1ggYW5kIFJBRElPLgotICAg
IGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcGF0dGVy
bk1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIGJvb2wgdG9vTG9uZyhjb25zdCBT
dHJpbmcmLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VVbmRl
cmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCByYW5nZU92ZXJmbG93KGNvbnN0
IFN0cmluZyYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92ZXJmbG93KCkgY29uc3Q7CisgICAgdmly
dHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRj
aCgpIGNvbnN0IE9WRVJSSURFOworICAgIC8vIHZhbHVlTWlzc2luZygpIGlnbm9yZXMgdGhlIHNw
ZWNpZmllZCBzdHJpbmcgdmFsdWUgZm9yIENIRUNLQk9YIGFuZCBSQURJTy4KKyAgICB2aXJ0dWFs
IGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKwogICAgIC8vIFJldHVybnMgdGhl
IG1pbmltdW0gdmFsdWUgZm9yIHR5cGU9ZGF0ZSwgbnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNh
bGwgdGhpcyBmb3Igb3RoZXIgdHlwZXMuCiAgICAgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAg
ICAvLyBSZXR1cm5zIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3Ig
cmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90aGVyIHR5cGVzLgpAQCAtNjQsMTUgKzY5LDYg
QEAgcHVibGljOgogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlcmUgaXMgbm8gImFsbG93ZWQg
dmFsdWUgc3RlcC4iCiAgICAgYm9vbCBnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSopIGNvbnN0
OwogCi0gICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUuCi0gICAgYm9vbCBzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgU3RyaW5nIG1pbmltdW1TdHJpbmcoKSBjb25zdDsKLSAg
ICBTdHJpbmcgbWF4aW11bVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyBzdGVwQmFzZVN0cmlu
ZygpIGNvbnN0OwotICAgIFN0cmluZyBzdGVwU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHR5
cGVNaXNtYXRjaFRleHQoKSBjb25zdDsKLSAgICBTdHJpbmcgdmFsdWVNaXNzaW5nVGV4dCgpIGNv
bnN0OwotCiAgICAgLy8gSW1wbGVtZW50YXRpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBV
cCgpIGFuZCBzdGVwRG93bigpLgogICAgIHZvaWQgc3RlcFVwKGludCwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgc3RlcERvd24oaW50LCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4Mjg4MDc4
N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFhZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5OWFiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJlIGFsd2F5
cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHko
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJp
bmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5n
JikgT1ZFUlJJREUgeyB9CiAKICAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+Ojpy
ZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2UxMDc0Mjg3
ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEuLmVlNTdkYWU4MDQxN2IxNzVkZTY4ZDFjZjIzODUwYzFl
YWI4ZTFhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisj
aW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNp
bmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE0
NSw4ICsxNDYsMjIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xkZXJMYWJl
bE9wdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52YWx1ZSgp
LmlzRW1wdHkoKTsKIH0KIAorU3RyaW5nIEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0aW9uTWVz
c2FnZSgpIGNvbnN0Cit7CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0
b21WYWxpZGF0aW9uTWVzc2FnZSgpOworCisgICAgcmV0dXJuIHZhbHVlTWlzc2luZygpID8gdmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCkgOiBTdHJpbmcoKTsKK30K
KwogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKKyAgICBp
ZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWlz
UmVxdWlyZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA1MjY2NWUxOTViNDkxYmUzYjA0NWM1
YjJkYmQyNjU2ZTE4NmRlMDk2Li44MmI3MjczMzg4NjJjMjMyNzc0NGVhMjVlMzE1OTQxOWU4MzVh
M2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC00Niw3ICs0
Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwg
Ym9vbCBkaXNwYXRjaENoYW5nZUV2ZW50LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBm
YWxzZSk7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIGJvb2wgdmFsdWVNaXNzaW5n
KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJREU7
CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNjM2NjNhOTdmY2M3YjBjYmZmZWY5MWY1OWI0
N2Y1ZTRlMTRmYjI0ZC4uMzVjNTYwMjgwMWY3OTMyMzBmNWM4ZWI4NDMyMjA5ZjM1MWUwZWUwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtNDIzLDYgKzQyNCwzMyBAQCB2b2lkIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnNldE1heExlbmd0aChpbnQgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgICAgICBzZXRBdHRyaWJ1dGUobWF4bGVuZ3RoQXR0ciwgU3RyaW5nOjpudW1iZXIo
bmV3VmFsdWUpKTsKIH0KIAorU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25N
ZXNzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1
c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CisKKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKworICAgIGlm
ICh0b29Mb25nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0
KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIHJldHVy
biBTdHJpbmcoKTsKK30KKworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3Npbmco
KSBjb25zdAoreworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiB2YWx1ZU1pc3NpbmcodmFs
dWUoKSk7Cit9CisKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0
eUZsYWcpOworfQorCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKSBjb25zdAogewogICAgIC8v
IFJldHVybiBmYWxzZSBmb3IgdGhlIGRlZmF1bHQgdmFsdWUgb3IgdmFsdWUgc2V0IGJ5IHNjcmlw
dCBldmVuIGlmIGl0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
CmluZGV4IGExOWE0NzFhOTY0YmE5MGQzMGFkNzQ4OTQzMDEzNmYyNDk1NzNjMWMuLmM4OWE3MTgz
YTc4YzYyMWVhMzM3ZDc4Yjc1NGRiZDM0Y2Q2MWU2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC00Nyw2ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgaW50
IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgdmly
dHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNYXhMZW5ndGgoaW50LCBF
eGNlcHRpb25Db2RlJik7CisgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKKyAgICB2aXJ0dWFsIFN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9u
ZygpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpIGNvbnN0IHsgcmV0dXJuIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpICYmICFkaXNhYmxl
ZCgpICYmICFyZWFkT25seSgpICYmIHZhbHVlLmlzRW1wdHkoKTsgfQogICAgIGJvb2wgdG9vTG9u
Zyhjb25zdCBTdHJpbmcmLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OwogICAgIGJvb2wg
aXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCmluZGV4IDk5NzE4MmFiYWU3ZDQ0YmZiNzA3OWE0YmE4NGM3ZWQ5NDVhOTU3ZjIuLjg2NDY3
Yzg5MTg0ODJlNDU2OGY1MjNlMDRjMWUyNTQwODQwODg3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0
VHlwZS5jcHAKQEAgLTI4Myw2ICsyODMsMTQgQEAgYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJ
bmNsdWRlRGVjb3JhdGlvbihpbnQsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKK3sKKyAgICBkb3VibGUgc3RlcDsKKyAgICBpZiAoIWdldEFsbG93ZWRW
YWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZXBN
aXNtYXRjaCh2YWx1ZSwgc3RlcCk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2go
Y29uc3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0ZWQgdHlw
ZXMgc2hvdWxkIGJlIHJlamVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1
ZVN0ZXAoKS4KQEAgLTg3MCw3ICs4NzgsNyBAQCBkb3VibGUgSW5wdXRUeXBlOjphbGlnblZhbHVl
Rm9yU3RlcChkb3VibGUgbmV3VmFsdWUsIGRvdWJsZSBzdGVwLCB1bnNpZ25lZCBjdXJyZQogICAg
IHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxhY2VzOwogICAgIGRvdWJsZSBiYXNlID0gc3RlcEJhc2VX
aXRoRGVjaW1hbFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMpOwogICAgIGJhc2VEZWNpbWFsUGxh
Y2VzID0gbWluKGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOwotICAgIGlmIChlbGVtZW50KCktPnN0
ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAgaWYgKHN0ZXBNaXNtYXRjaChl
bGVtZW50KCktPnZhbHVlKCkpKSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgY3VycmVudERlY2ltYWxQ
bGFjZXMpKSk7CiAgICAgICAgIG5ld1ZhbHVlID0gcm91bmQobmV3VmFsdWUgKiBzY2FsZSkgLyBz
Y2FsZTsKICAgICB9IGVsc2UgewpAQCAtMTAyMyw3ICsxMDMxLDcgQEAgdm9pZCBJbnB1dFR5cGU6
OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShz
ZXJpYWxpemUoc2lnbiA+IDAgPyBtaW5pbXVtKCkgOiBtYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0
QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVsc2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwot
ICAgICAgICBpZiAoZWxlbWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkg
eworICAgICAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChzdGVwKTsKICAgICAgICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKICAgICAg
ICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChz
dGVwRGVjaW1hbFBsYWNlcywgYmFzZURlY2ltYWxQbGFjZXMpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAppbmRleCAxYzg2Y2IwZmNjYTkzYTdiMzIxMjg4ZDk4MmU5OGM0ZDljOGM4MGQ2Li5iMWQ1
ZjJmZmQxMTU1ZWE5ZDFlYWUxMTVhMDZmZWVkZGUxM2IxNzkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3VibGUgbWlu
aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0oKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCBkZWZhdWx0U2l6ZSwg
aW50JiBwcmVmZXJyZWRTaXplKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNo
KGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJiwgZG91YmxlIHN0ZXApIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBC
YXNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNl
cyh1bnNpZ25lZCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxp
ZGl0eVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKaW5k
ZXggZmU3MzEyYzJhMzAyZDM1NTdjMGNlY2Y4ZjYzNDNkM2ViY2JhYzA2My4uNjQ5NzY1ZGY5MTQ2
ODdkNTQ4ZjkwYmY1MzFkNDQ1N2RmNjY0YzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5
U3RhdGUuY3BwCkBAIC0zOCwxNzcgKzM4LDUyIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIFN0cmluZyBWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0g
ICAgaWYgKCF0b0hUTUxFbGVtZW50KG1fY29udHJvbCktPndpbGxWYWxpZGF0ZSgpKQotICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoY3VzdG9tRXJyb3IoKSkKLSAgICAgICAgcmV0
dXJuIG1fY3VzdG9tRXJyb3JNZXNzYWdlOwotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9I
VE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGJvb2wgaXNJbnB1dEVsZW1lbnQgPSBlbGVtZW50
LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
OwotICAgIGJvb2wgaXNUZXh0QXJlYUVsZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxl
bWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpOwotICAgIC8vIFRoZSBv
cmRlciBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlr
ZSB0byBzaG93IHRoZQotICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNv
bnRyb2wgaGFzIG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgotICAgIGlmICh2YWx1ZU1pc3Npbmco
KSkgewotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yU2VsZWN0VGV4dCgp
OwotICAgICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmdUZXh0KCk7Ci0g
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICB9
Ci0gICAgaWYgKHR5cGVNaXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVudCkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVu
dCktPnR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
VHlwZU1pc21hdGNoVGV4dCgpOwotICAgIH0KLSAgICBpZiAocGF0dGVybk1pc21hdGNoKCkpCi0g
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKLSAg
ICBpZiAodG9vTG9uZygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQgJiYgIWlzVGV4
dEFyZWFFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdU
ZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModGV4dC0+dmFsdWUoKSksIHRleHQtPm1heExlbmd0aCgp
KTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlVW5kZXJmbG93KCkpIHsKLSAgICAgICAgaWYgKCFpc0lu
cHV0RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRp
b25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
PihlbGVtZW50KS0+bWluaW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlT3ZlcmZs
b3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPm1heGltdW1TdHJpbmcoKSk7Ci0g
ICAgfQotICAgIGlmIChzdGVwTWlzbWF0Y2goKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChpbnB1dC0+c3RlcEJhc2VTdHJp
bmcoKSwgaW5wdXQtPnN0ZXBTdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygp
OwotfQotCi12b2lkIFZhbGlkaXR5U3RhdGU6OnNldEN1c3RvbUVycm9yTWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgbV9jdXN0b21FcnJvck1lc3NhZ2UgPSBtZXNzYWdlOwot
ICAgIGlmIChtX2NvbnRyb2wtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgICAgIHN0YXRp
Y19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX2NvbnRyb2wpLT5zZXROZWVkc1ZhbGlk
aXR5Q2hlY2soKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZGF0aW9uTWVzc2FnZSgpOwog
fQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFl
bGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAg
ICAgICByZXR1cm4gaW5wdXQtPnZhbHVlTWlzc2luZyhpbnB1dC0+dmFsdWUoKSk7Ci0gICAgfQot
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkgewotICAgICAgICBIVE1M
VGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1l
bnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT52YWx1ZU1pc3NpbmcodGV4
dEFyZWEtPnZhbHVlKCkpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxl
Y3RUYWcpKQotICAgICAgICByZXR1cm4gdG9IVE1MU2VsZWN0RWxlbWVudChlbGVtZW50KS0+dmFs
dWVNaXNzaW5nKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZh
bHVlTWlzc2luZygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRjaCgpIGNv
bnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJv
bCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
ZWxlbWVudCktPnR5cGVNaXNtYXRjaCgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnR5cGVNaXNt
YXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7
Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cGF0dGVybk1pc21h
dGNoKGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5wYXR0ZXJuTWlzbWF0
Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp0b29Mb25nKCkgY29uc3QKIHsKLSAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAo
IWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0g
ICAgICAgIHJldHVybiBpbnB1dC0+dG9vTG9uZyhpbnB1dC0+dmFsdWUoKSwgSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQ6OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQt
Pmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQq
IHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwot
ICAgICAgICByZXR1cm4gdGV4dEFyZWEtPnRvb0xvbmcodGV4dEFyZWEtPnZhbHVlKCksIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpDaGVja0RpcnR5RmxhZyk7Ci0gICAgfQotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sLT50b29Mb25nKCk7CiB9CiAKIGJvb2wgVmFs
aWRpdHlTdGF0ZTo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2ls
bFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+
aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50
KTsKLSAgICByZXR1cm4gaW5wdXQtPnJhbmdlVW5kZXJmbG93KGlucHV0LT52YWx1ZSgpKTsKKyAg
ICByZXR1cm4gbV9jb250cm9sLT5yYW5nZVVuZGVyZmxvdygpOwogfQogCiBib29sIFZhbGlkaXR5
U3RhdGU6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlk
YXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFn
TmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAg
ICByZXR1cm4gaW5wdXQtPnJhbmdlT3ZlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVy
biBtX2NvbnRyb2wtPnJhbmdlT3ZlcmZsb3coKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpz
dGVwTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1
dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4g
aW5wdXQtPnN0ZXBNaXNtYXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJv
bC0+c3RlcE1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3Io
KSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2Nv
bnRyb2wpOwotICAgIHJldHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21F
cnJvck1lc3NhZ2UuaXNFbXB0eSgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPmN1c3RvbUVycm9y
KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFsaWQoKSBjb25zdAogewotICAgIGJvb2wg
c29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRl
cmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkKLSAgICAgICAgfHwgdG9vTG9uZygpIHx8IHBhdHRl
cm5NaXNtYXRjaCgpIHx8IHZhbHVlTWlzc2luZygpIHx8IGN1c3RvbUVycm9yKCk7Ci0gICAgcmV0
dXJuICFzb21lRXJyb3I7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsaWQoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXggNGE5NjQ4OGJk
NTU2OGYxM2U5YTA4NDlhM2UwYjIyM2M1MWQ0ZjYwZS4uMTdlOTRjOTc4OGRiYzAzYWNkMTA1YTMy
ZDEwOWQ2NWIxMjVhYTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0
eVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTU3
LDExICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmFsaWRpdHlTdGF0ZShGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpIHsgfQogCi0gICAg
c3RhdGljIGJvb2wgaXNWYWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJik7Ci0KICAgICBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQqIG1fY29udHJvbDsKLSAgICBTdHJpbmcgbV9jdXN0b21FcnJvck1lc3Nh
Z2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141310</attachid>
            <date>2012-05-10 18:47:28 -0700</date>
            <delta_ts>2012-05-11 00:02:45 -0700</delta_ts>
            <desc>Patch 7</desc>
            <filename>bug-86058-20120511104726.patch</filename>
            <type>text/plain</type>
            <size>32083</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU5ODc5OTUwOWUxODgx
YjIwMDU2OWFlZGQ3NjkwMjk5NzRhNDRiOC4uYTYxMzI2NTE5Y2RmZDI4MGQ1ZDc1ZDFhMjkxOWZm
Y2U4NzgxNjg3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk1IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21F
cnJvcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lh
dGVkRWxlbWVudDo6cGF0dGVybk1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3Nv
Y2lhdGVkRWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFz
c29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KToKKyAgICAgICAgKiBodG1s
L0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oOgorICAgICAgICAoRm9ybUFzc29jaWF0ZWRFbGVtZW50
KToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1
dEVsZW1lbnQ6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5S
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2Up
OgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAoSFRNTElucHV0
RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6CisgICAgICAgICog
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOgor
ICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2lu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKToKKyAg
ICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0QXJl
YUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklucHV0VHlwZTo6c3RlcE1pc21hdGNoKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OnZhbGlkYXRpb25NZXNzYWdlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5o
OgorICAgICAgICAoSW5wdXRUeXBlKToKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWRhdGlvbk1lc3NhZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsdWVNaXNzaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGl0eVN0YXRlOjpwYXR0ZXJuTWlzbWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6VmFs
aWRpdHlTdGF0ZTo6dG9vTG9uZyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpy
YW5nZVVuZGVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpyYW5nZU92
ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWxpZCk6CisgICAgICAgICogaHRtbC9WYWxpZGl0
eVN0YXRlLmg6CisgICAgICAgIChWYWxpZGl0eVN0YXRlKToKKwogMjAxMi0wNS0xMCAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjExNjU5NC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVt
ZW50LmNwcAppbmRleCA2NjVlZmE3NmE5MjJmZTMyNTJiMGQ0NTdmM2RjZGE4NmU3MzgxMjAxLi43
NmRkMGQxNTlmMDc1ZDlkYjY2ZmQ3YTFmZGViZTJkYTk1OTQ5YWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwCkBAIC0xNTcsNiArMTU3LDY5IEBA
IHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAg
ICAgIHJlc2V0Rm9ybU93bmVyKCk7CiB9CiAKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpj
dXN0b21FcnJvcigpIGNvbnN0Cit7CisgICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0
b0hUTUxFbGVtZW50KHRoaXMpOworICAgIHJldHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAm
JiAhbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZS5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRm9ybUFz
c29jaWF0ZWRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRvb0xvbmcoKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWQoKSBjb25zdAoreworICAgIGJvb2wgc29tZUVy
cm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3co
KSB8fCByYW5nZU92ZXJmbG93KCkKKyAgICAgICAgfHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNt
YXRjaCgpIHx8IHZhbHVlTWlzc2luZygpIHx8IGN1c3RvbUVycm9yKCk7CisgICAgcmV0dXJuICFz
b21lRXJyb3I7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWx1ZU1pc3Npbmco
KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBt
X2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOworfQorCitTdHJpbmcgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGN1c3RvbUVycm9y
KCkgPyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlIDogU3RyaW5nKCk7Cit9CisKK3ZvaWQgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9y
KQoreworICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgPSBlcnJvcjsKK30KKwogY29uc3Qg
SFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoY29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBh
c3NvY2lhdGVkRWxlbWVudCkKIHsKICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRm9ybUNv
bnRyb2xFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuaAppbmRleCAyODRlMjk4ZmQ5N2U1NDJkMWIwYjJjZDQ2YmMzNDI4NTFlZDRhMmYxLi43ZGEy
ZmIzMDVmZmE2NWRiOTI2YTVkZTM2YTYwNjk3ZDc2NWY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKQEAgLTYwLDYgKzYwLDE5IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgZm9ybVJlbW92ZWRGcm9tVHJlZShjb25zdCBOb2RlKiBmb3JtUm9vdCk7CiAK
KyAgICAvLyBWYWxpZGl0eVN0YXRlIGF0dHJpYnV0ZSBpbXBsZW1lbnRhdGlvbnMKKyAgICB2aXJ0
dWFsIGJvb2wgY3VzdG9tRXJyb3IoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1p
c21hdGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJhbmdlT3ZlcmZsb3coKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZsb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgc3RlcE1pc21hdGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIHZhbGlkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0
OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6
CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTc2LDYgKzg5LDggQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRm9ybSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJpbmcgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9y
bUNvbnRyb2xOYW1lKCkgY29uc3QgPSAwOwogCkBAIC04NCw2ICs5OSw3IEBAIHByaXZhdGU6CiAK
ICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4g
bV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwog
fTsKIAogSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRl
eCAyZjlmMjI1YmNhOWM1NTliMDkyMzRhYTE0NDk1Nzk0YmE0OGY3MjhmLi43MDIxNzUzNTlhYzdh
YWZlM2RhNTc0N2MwZTU3NTcwMzUzZWU4NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4NCw3ICs0ODQsOCBAQCB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAKIHZvaWQgSFRNTEZv
cm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikK
IHsKLSAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3IpOworICAgIEZv
cm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3IpOworICAgIHNldE5l
ZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
c3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDYwODQxMWYzNjM2
ZmZmOGY3Y2E0NmE3NTUxNzYwZWQzNThhNzIzNWEuLmNhZmJmNTI5YTUxYWM4NzJlNGVhMzA0MGEy
YTkxMzUyZGMyNWVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxp
ZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52
YWxpZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFs
aWRhdGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lk
IHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29u
c3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOwogCiAgICAgYm9vbCByZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVhZE9ubHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5k
ZXggNmZlNTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4OTFlNDhkNDc5YWVmNy4uN2FlMGFmODk1YTFh
YWE5ZjMwYjU5MGJlYTNlNjUzYWIwNGVkYzE1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuY3BwCkBAIC0xOTEsMjcgKzE5MSwzMiBAQCBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OmlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAhbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaEZv
cih2YWx1ZSkKLSAgICAgICAgJiYgIXN0ZXBNaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXJh
bmdlVW5kZXJmbG93KHZhbHVlKQotICAgICAgICAmJiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSkKKyAg
ICAgICAgJiYgIW1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUpCisgICAgICAgICYmICFt
X2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlw
ZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSkKICAgICAgICAgJiYgIXRvb0xvbmcodmFsdWUsIElnbm9y
ZURpcnR5RmxhZykKLSAgICAgICAgJiYgIXBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAg
JiYgIXZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cGF0dGVy
bk1pc21hdGNoKHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2
YWx1ZSk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZs
YWcpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2goKTsKKyAgICByZXR1cm4gd2ls
bFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOwogfQogCi1ib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAor
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogewotICAgIHJldHVy
biBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlk
YXRlKCkgJiYgbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSgpKTsKIH0KIAotYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSk7CisgICAgcmV0dXJu
IHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUoKSk7
CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVl
LCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CkBAIC0yMzIsNjggKzIzNyw0MCBA
QCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVl
ZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKQogICAgIHJldHVybiBudW1HcmFwaGVtZUNsdXN0ZXJz
KHZhbHVlKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXgpOwogfQogCi1ib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlk
YXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpOwogfQogCi1ib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2ls
bFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAK
LWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QKK1N0cmluZyBIVE1MSW5w
dXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5taW5pbXVtKCk7Ci19Ci0KLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVt
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsKLX0KLQotYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0
ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdGVw
TWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW1T
dHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1pbmlt
dW0oKSk7Ci19CisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21W
YWxpZGF0aW9uTWVzc2FnZSgpOwogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6bWF4aW11bVN0
cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11
bSgpKTsKLX0KLQotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBCYXNlU3RyaW5nKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3Rl
cEJhc2UoKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWxpZGF0aW9uTWVzc2FnZSgpOwog
fQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6c3RlcFN0cmluZygpIGNvbnN0Citkb3VibGUg
SFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNvbnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7Ci0g
ICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkgewotICAgICAgICAvLyBzdGVwU3Ry
aW5nKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGlmIHN0ZXBNaXNtYXRjaCgpIGNhbiBiZSB0cnVl
LgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgIH0KLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1
dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmlt
dW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaFRleHQoKSBj
b25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAogewotICAgIHJl
dHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoVGV4dCgpOworICAgIHJldHVybiBtX2lucHV0
VHlwZS0+bWF4aW11bSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNz
aW5nVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmdUZXh0KCk7CisgICAg
cmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUo
KSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3Vi
bGUqIHN0ZXApIGNvbnN0CkBAIC0xMjc1LDEyICsxMjUyLDEyIEBAIGJvb2wgSFRNTElucHV0RWxl
bWVudDo6aGFzVW5hY2NlcHRhYmxlVmFsdWUoKSBjb25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OmlzSW5SYW5nZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0
c1JhbmdlTGltaXRhdGlvbigpICYmICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAhcmFuZ2VP
dmVyZmxvdyh2YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VM
aW1pdGF0aW9uKCkgJiYgIW1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAh
bV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0
RWxlbWVudDo6aXNPdXRPZlJhbmdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgKHJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8
IHJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9y
dHNSYW5nZUxpbWl0YXRpb24oKSAmJiAobV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVl
KCkpIHx8IG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKCkpKTsKIH0KIAogYm9vbCBI
VE1MSW5wdXRFbGVtZW50OjpuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUzNGEwM2U2MzVlOWRmYzM0MGIwNTBkZGUxYmRh
Y2E5ODM4NzU4OWQuLjk4MjdhOWJmZWRiNjAwODQ5MjhiY2ZhMzIxNWQ3M2VlZjRjZDRlOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC00OCwxMyArNDgsMTggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAog
ICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsK
LSAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVl
IGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCi0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3Ry
aW5nJikgY29uc3Q7Ci0gICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29u
c3Q7CiAgICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5Rmxh
ZykgY29uc3Q7Ci0gICAgYm9vbCByYW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsK
LSAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHJhbmdlVW5kZXJmbG93KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJh
bmdlT3ZlcmZsb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgLy8g
dmFsdWVNaXNzaW5nKCkgaWdub3JlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyB2YWx1ZSBmb3IgQ0hF
Q0tCT1ggYW5kIFJBRElPLgorICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9W
RVJSSURFOworCiAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRl
LCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KICAg
ICBkb3VibGUgbWluaW11bSgpIGNvbnN0OwogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFs
dWUgZm9yIHR5cGU9ZGF0ZSwgbnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Ig
b3RoZXIgdHlwZXMuCkBAIC02NCwxNSArNjksNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFs
bG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29uc3Q7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0
ZS4KLSAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBTdHJp
bmcgbWluaW11bVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyBtYXhpbXVtU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHN0ZXBCYXNlU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBT
dHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0OwotICAg
IFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3Q7Ci0KICAgICAvLyBJbXBsZW1lbnRhdGlv
bnMgb2YgSFRNTElucHV0RWxlbWVudDo6c3RlcFVwKCkgYW5kIHN0ZXBEb3duKCkuCiAgICAgdm9p
ZCBzdGVwVXAoaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzdGVwRG93bihpbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAppbmRl
eCBhMGU2NjM3N2E2NDE4NTMwYWQ4NTgyODgwNzg3YWM1MzRlMGM0ZTZiLi4zMTM4OTNiYWFlOGNj
MDZmMWIwODY5ODMxZWIxYjIzY2IwNDk5YWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2Jq
ZWN0RWxlbWVudC5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICAvLyBOb3RlIHRoYXQg
dGhlIG9iamVjdCBlbGVtZW50cyBhcmUgYWx3YXlzIGJhcnJlZCBmcm9tIGNvbnN0cmFpbnQgdmFs
aWRhdGlvbi4KICAgICBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSB7IHJldHVybiBTdHJpbmco
KTsgfQogICAgIGJvb2wgY2hlY2tWYWxpZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lk
IHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSBPVkVSUklERSB7IH0KIAogICAgIHVzaW5n
IFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OnJlZjsKICAgICB1c2luZyBUcmVlU2hhcmVkPENv
bnRhaW5lck5vZGU+OjpkZXJlZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFNlbGVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5jcHAKaW5kZXggNThhOWE3MzljZTEwNzQyODdkMTQ5YjNlM2RhZTk1N2E2YjQzZWM5MS4uZWU1
N2RhZTgwNDE3YjE3NWRlNjhkMWNmMjM4NTBjMWVhYjhlMWFiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJI
VE1MT3B0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgi
CiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTQ1LDggKzE0NiwyMiBAQCBib29sIEhUTUxTZWxl
Y3RFbGVtZW50OjpoYXNQbGFjZWhvbGRlckxhYmVsT3B0aW9uKCkgY29uc3QKICAgICByZXR1cm4g
IWxpc3RJbmRleCAmJiBvcHRpb24tPnZhbHVlKCkuaXNFbXB0eSgpOwogfQogCitTdHJpbmcgSFRN
TFNlbGVjdEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIXdp
bGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoY3VzdG9t
RXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CisKKyAg
ICByZXR1cm4gdmFsdWVNaXNzaW5nKCkgPyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0Zv
clNlbGVjdFRleHQoKSA6IFN0cmluZygpOworfQorCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp2
YWx1ZU1pc3NpbmcoKSBjb25zdAogeworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIGlmICghaXNSZXF1aXJlZEZvcm1Db250cm9sKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U2VsZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
CmluZGV4IDUyNjY1ZTE5NWI0OTFiZTNiMDQ1YzViMmRiZDI2NTZlMTg2ZGUwOTYuLjgyYjcyNzMz
ODg2MmMyMzI3NzQ0ZWEyNWUzMTU5NDE5ZTgzNWEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmgKQEAgLTQ2LDcgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgb3B0
aW9uU2VsZWN0ZWRCeVVzZXIoaW50IGluZGV4LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJv
b2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKIAogICAgIC8vIEZvciBWYWxpZGl0
eVN0YXRlCi0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2
YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRl
eCA2MzY2M2E5N2ZjYzdiMGNiZmZlZjkxZjU5YjQ3ZjVlNGUxNGZiMjRkLi4zNWM1NjAyODAxZjc5
MzIzMGY1YzhlYjg0MzIyMDlmMzUxZTBlZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0
YUxpc3QuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBA
IC00MjMsNiArNDI0LDMzIEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0TWF4TGVuZ3Ro
KGludCBuZXdWYWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIHNldEF0dHJpYnV0ZSht
YXhsZW5ndGhBdHRyLCBTdHJpbmc6Om51bWJlcihuZXdWYWx1ZSkpOwogfQogCitTdHJpbmcgSFRN
TFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICgh
d2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0
b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKwor
ICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAgaWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJu
IHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgp
KSwgbWF4TGVuZ3RoKCkpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxW
YWxpZGF0ZSgpICYmIHZhbHVlTWlzc2luZyh2YWx1ZSgpKTsKK30KKworYm9vbCBIVE1MVGV4dEFy
ZWFFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkg
JiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0RpcnR5RmxhZyk7Cit9CisKIGJvb2wgSFRNTFRleHRB
cmVhRWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0
eUZsYWcgY2hlY2spIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIGZhbHNlIGZvciB0aGUgZGVmYXVs
dCB2YWx1ZSBvciB2YWx1ZSBzZXQgYnkgc2NyaXB0IGV2ZW4gaWYgaXQgaXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKaW5kZXggYTE5YTQ3MWE5NjRiYTkwZDMwYWQ3
NDg5NDMwMTM2ZjI0OTU3M2MxYy4uYzg5YTcxODNhNzhjNjIxZWEzMzdkNzhiNzU0ZGJkMzRjZDYx
ZTY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQ3
LDYgKzQ3LDEwIEBAIHB1YmxpYzoKICAgICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJu
IHZhbHVlKCkubGVuZ3RoKCk7IH0KICAgICB2aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdDsK
ICAgICB2b2lkIHNldE1heExlbmd0aChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAvLyBGb3Ig
VmFsaWRpdHlTdGF0ZQorICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgYm9v
bCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUu
aXNFbXB0eSgpOyB9CiAgICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZykgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKaW5kZXggOTk3MTgyYWJhZTdkNDRiZmI3
MDc5YTRiYTg0YzdlZDk0NWE5NTdmMi4uNjM4NTZhZGU0MzExZGQ2M2E2Yzg0MzUxM2Q0YjhiN2Fi
ZmY4YWQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcApAQCAtMjgzLDYgKzI4MywxNCBA
QCBib29sIElucHV0VHlwZTo6c2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGludCwgaW50JiBw
cmVmZXJyZWRTaXplKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBJbnB1dFR5
cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAoreworICAgIGRvdWJs
ZSBzdGVwOworICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gc3RlcE1pc21hdGNoKHZhbHVlLCBzdGVwKTsKK30KKwog
Ym9vbCBJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUpIGNvbnN0
CiB7CiAgICAgLy8gTm9uLXN1cHBvcnRlZCB0eXBlcyBzaG91bGQgYmUgcmVqZWN0ZWQgYnkgSFRN
TElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVlU3RlcCgpLgpAQCAtMzM4LDYgKzM0Niw0MSBA
QCBTdHJpbmcgSW5wdXRUeXBlOjp2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
dmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnB1dFR5
cGU6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBjb25zdCBTdHJpbmcgdmFsdWUg
PSBlbGVtZW50KCktPnZhbHVlKCk7CisKKyAgICAvLyBUaGUgb3JkZXIgb2YgdGhlIGZvbGxvd2lu
ZyBjaGVja3MgaXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdkIGxpa2UgdG8gc2hvdyB0aGUKKyAgICAv
LyB2YWx1ZU1pc3NpbmcgbWVzc2FnZSBldmVuIGlmIHRoZSBjb250cm9sIGhhcyBvdGhlciB2YWxp
ZGF0aW9uIGVycm9ycy4KKyAgICBpZiAodmFsdWVNaXNzaW5nKHZhbHVlKSkKKyAgICAgICAgcmV0
dXJuIHZhbHVlTWlzc2luZ1RleHQoKTsKKworICAgIGlmICh0eXBlTWlzbWF0Y2goKSkKKyAgICAg
ICAgcmV0dXJuIHR5cGVNaXNtYXRjaFRleHQoKTsKKworICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2go
dmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VQYXR0ZXJuTWlzbWF0Y2hU
ZXh0KCk7CisKKyAgICBpZiAoZWxlbWVudCgpLT50b29Mb25nKCkpCisgICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUpLCBl
bGVtZW50KCktPm1heExlbmd0aCgpKTsKKworICAgIGlmIChyYW5nZVVuZGVyZmxvdyh2YWx1ZSkp
CisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChzZXJp
YWxpemUobWluaW11bSgpKSk7CisKKyAgICBpZiAocmFuZ2VPdmVyZmxvdyh2YWx1ZSkpCisgICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHNlcmlhbGl6ZSht
YXhpbXVtKCkpKTsKKworICAgIGlmIChzdGVwTWlzbWF0Y2godmFsdWUpKSB7CisgICAgICAgIFN0
cmluZyBzdGVwU3RyaW5nOworICAgICAgICBkb3VibGUgc3RlcDsKKyAgICAgICAgaWYgKGdldEFs
bG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQorICAgICAgICAgICAgc3RlcFN0cmluZyA9IHNlcmlhbGl6
ZUZvck51bWJlclR5cGUoc3RlcCAvIHN0ZXBTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgcmV0dXJu
IHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChzZXJpYWxpemUoc3RlcEJhc2UoKSks
IHN0ZXBTdHJpbmcpOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKwogdm9pZCBJ
bnB1dFR5cGU6OmhhbmRsZUNsaWNrRXZlbnQoTW91c2VFdmVudCopCiB7CiB9CkBAIC04NzAsNyAr
OTEzLDcgQEAgZG91YmxlIElucHV0VHlwZTo6YWxpZ25WYWx1ZUZvclN0ZXAoZG91YmxlIG5ld1Zh
bHVlLCBkb3VibGUgc3RlcCwgdW5zaWduZWQgY3VycmUKICAgICB1bnNpZ25lZCBiYXNlRGVjaW1h
bFBsYWNlczsKICAgICBkb3VibGUgYmFzZSA9IHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXMoJmJh
c2VEZWNpbWFsUGxhY2VzKTsKICAgICBiYXNlRGVjaW1hbFBsYWNlcyA9IG1pbihiYXNlRGVjaW1h
bFBsYWNlcywgMTZ1KTsKLSAgICBpZiAoZWxlbWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVudCgp
LT52YWx1ZSgpKSkgeworICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkg
ewogICAgICAgICBkb3VibGUgc2NhbGUgPSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPiht
YXgoc3RlcERlY2ltYWxQbGFjZXMsIGN1cnJlbnREZWNpbWFsUGxhY2VzKSkpOwogICAgICAgICBu
ZXdWYWx1ZSA9IHJvdW5kKG5ld1ZhbHVlICogc2NhbGUpIC8gc2NhbGU7CiAgICAgfSBlbHNlIHsK
QEAgLTEwMjMsNyArMTA2Niw3IEBAIHZvaWQgSW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIo
aW50IG4pCiAgICAgICAgIGVsZW1lbnQoKS0+c2V0VmFsdWUoc2VyaWFsaXplKHNpZ24gPiAwID8g
bWluaW11bSgpIDogbWF4aW11bSgpKSwgRGlzcGF0Y2hJbnB1dEFuZENoYW5nZUV2ZW50KTsKICAg
ICBlbHNlIHsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgaWYgKGVsZW1lbnQo
KS0+c3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKHN0ZXBN
aXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc3RlcCk7
CiAgICAgICAgICAgICBkb3VibGUgbmV3VmFsdWU7CiAgICAgICAgICAgICBkb3VibGUgc2NhbGUg
PSBwb3coMTAuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXgoc3RlcERlY2ltYWxQbGFjZXMsIGJh
c2VEZWNpbWFsUGxhY2VzKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMWM4NmNiMGZj
Y2E5M2E3YjMyMTI4OGQ5ODJlOThjNGQ5YzhjODBkNi4uODc2NmZlYzFjODc4YzViMTcwOTgxMDU4
NWE1YWEzN2ZkNTgyZjg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC0xNDAsNyArMTQw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZUFzTnVtYmVyKGRvdWJsZSwg
VGV4dEZpZWxkRXZlbnRCZWhhdmlvciwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogCiAgICAgLy8g
VmFsaWRhdGlvbiBmdW5jdGlvbnMKLQorICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzVmFsaWRhdGlvbigpIGNvbnN0
OwogICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2hGb3IoY29uc3QgU3RyaW5nJikgY29uc3Q7
CiAgICAgLy8gVHlwZSBjaGVjayBmb3IgdGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUuIFdlIGRvIG5v
dGhpbmcgZm9yIHNvbWUgdHlwZXMKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBkb3VibGUgbWluaW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIG1heGltdW0o
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc2l6ZVNob3VsZEluY2x1ZGVEZWNvcmF0aW9uKGlu
dCBkZWZhdWx0U2l6ZSwgaW50JiBwcmVmZXJyZWRTaXplKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91YmxlIHN0ZXApIGNvbnN0OwogICAgIHZpcnR1
YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VX
aXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRp
dHlTdGF0ZS5jcHAKaW5kZXggZmU3MzEyYzJhMzAyZDM1NTdjMGNlY2Y4ZjYzNDNkM2ViY2JhYzA2
My4uNjQ5NzY1ZGY5MTQ2ODdkNTQ4ZjkwYmY1MzFkNDQ1N2RmNjY0YzZkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0zOCwxNzcgKzM4LDUyIEBAIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKIFN0cmluZyBWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2Fn
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCF0b0hUTUxFbGVtZW50KG1fY29udHJvbCktPndpbGxWYWxp
ZGF0ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoY3VzdG9tRXJyb3Io
KSkKLSAgICAgICAgcmV0dXJuIG1fY3VzdG9tRXJyb3JNZXNzYWdlOwotICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGJvb2wgaXNJbnB1dEVs
ZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpOwotICAgIGJvb2wgaXNUZXh0QXJlYUVsZW1lbnQgPSBlbGVtZW50LT5p
c0Zvcm1Db250cm9sRWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcp
OwotICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVs
LiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQotICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdl
IGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFzIG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgotICAgIGlm
ICh2YWx1ZU1pc3NpbmcoKSkgewotICAgICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxl
Y3RUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5n
Rm9yU2VsZWN0VGV4dCgpOwotICAgICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT52YWx1ZU1p
c3NpbmdUZXh0KCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2lu
Z1RleHQoKTsKLSAgICB9Ci0gICAgaWYgKHR5cGVNaXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmIChp
c0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRF
bGVtZW50Kj4oZWxlbWVudCktPnR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICAgICAgcmV0dXJuIHZh
bGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4dCgpOwotICAgIH0KLSAgICBpZiAocGF0dGVy
bk1pc21hdGNoKCkpCi0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNt
YXRjaFRleHQoKTsKLSAgICBpZiAodG9vTG9uZygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVs
ZW1lbnQgJiYgIWlzVGV4dEFyZWFFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAg
ICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCogdGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9u
TWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModGV4dC0+dmFsdWUoKSksIHRl
eHQtPm1heExlbmd0aCgpKTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlVW5kZXJmbG93KCkpIHsKLSAg
ICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWluaW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAg
aWYgKHJhbmdlT3ZlcmZsb3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0g
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92
ZXJmbG93VGV4dChzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPm1heGlt
dW1TdHJpbmcoKSk7Ci0gICAgfQotICAgIGlmIChzdGVwTWlzbWF0Y2goKSkgewotICAgICAgICBp
ZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlU3RlcE1pc21hdGNoVGV4dChpbnB1
dC0+c3RlcEJhc2VTdHJpbmcoKSwgaW5wdXQtPnN0ZXBTdHJpbmcoKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIFN0cmluZygpOwotfQotCi12b2lkIFZhbGlkaXR5U3RhdGU6OnNldEN1c3RvbUVycm9y
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgbV9jdXN0b21FcnJvck1lc3Nh
Z2UgPSBtZXNzYWdlOwotICAgIGlmIChtX2NvbnRyb2wtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkp
Ci0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX2NvbnRyb2wp
LT5zZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZGF0
aW9uTWVzc2FnZSgpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZygpIGNv
bnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJv
bCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gaW5wdXQtPnZhbHVlTWlzc2luZyhpbnB1dC0+dmFs
dWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkg
ewotICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhU
TUxUZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT52
YWx1ZU1pc3NpbmcodGV4dEFyZWEtPnZhbHVlKCkpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+
aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAgICByZXR1cm4gdG9IVE1MU2VsZWN0RWxlbWVu
dChlbGVtZW50KS0+dmFsdWVNaXNzaW5nKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBtX2NvbnRyb2wtPnZhbHVlTWlzc2luZygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnR5
cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnR5cGVNaXNtYXRjaCgpOworICAgIHJldHVybiBtX2Nv
bnRyb2wtPnR5cGVNaXNtYXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnBhdHRlcm5N
aXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVt
ZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0g
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1
dC0+cGF0dGVybk1pc21hdGNoKGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9s
LT5wYXR0ZXJuTWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp0b29Mb25nKCkg
Y29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250
cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAg
ICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50
Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBpbnB1dC0+dG9vTG9uZyhpbnB1dC0+dmFsdWUo
KSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0g
ICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxU
ZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVu
dCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdGV4dEFyZWEtPnRvb0xvbmcodGV4dEFyZWEt
PnZhbHVlKCksIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpDaGVja0RpcnR5RmxhZyk7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9jb250cm9sLT50b29Mb25nKCk7
CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogewotICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlm
ICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQtPnJhbmdlVW5kZXJmbG93KGlucHV0
LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5yYW5nZVVuZGVyZmxvdygpOwogfQog
CiBib29sIFZhbGlkaXR5U3RhdGU6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAogewotICAgIEhUTUxF
bGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxl
bWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
ZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
PihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQtPnJhbmdlT3ZlcmZsb3coaW5wdXQtPnZhbHVl
KCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdlT3ZlcmZsb3coKTsKIH0KIAogYm9vbCBW
YWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBl
bGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2ls
bFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+
aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5w
dXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50
KTsKLSAgICByZXR1cm4gaW5wdXQtPnN0ZXBNaXNtYXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAg
cmV0dXJuIG1fY29udHJvbC0+c3RlcE1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0
ZTo6Y3VzdG9tRXJyb3IoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9I
VE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIHJldHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUo
KSAmJiAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNFbXB0eSgpOworICAgIHJldHVybiBtX2NvbnRy
b2wtPmN1c3RvbUVycm9yKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFsaWQoKSBjb25z
dAogewotICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1pc21hdGNo
KCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkKLSAgICAgICAgfHwgdG9v
TG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8IHZhbHVlTWlzc2luZygpIHx8IGN1c3RvbUVy
cm9yKCk7Ci0gICAgcmV0dXJuICFzb21lRXJyb3I7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFs
aWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVmFsaWRpdHlTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgK
aW5kZXggNGE5NjQ4OGJkNTU2OGYxM2U5YTA4NDlhM2UwYjIyM2M1MWQ0ZjYwZS4uMTdlOTRjOTc4
OGRiYzAzYWNkMTA1YTMyZDEwOWQ2NWIxMjVhYTJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0
eVN0YXRlLmgKQEAgLTU3LDExICs1Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgVmFsaWRp
dHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRy
b2wpIHsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJik7
Ci0KICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQqIG1fY29udHJvbDsKLSAgICBTdHJpbmcgbV9j
dXN0b21FcnJvck1lc3NhZ2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141337</attachid>
            <date>2012-05-11 00:02:52 -0700</date>
            <delta_ts>2012-05-11 00:15:59 -0700</delta_ts>
            <desc>Patch 8</desc>
            <filename>bug-86058-20120511160250.patch</filename>
            <type>text/plain</type>
            <size>34377</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU5ODc5OTUwOWUxODgx
YjIwMDU2OWFlZGQ3NjkwMjk5NzRhNDRiOC4uMjNjNjg4MmM1Y2ExMjgzZDhiMjg4OGMzODk5NTM3
MTk4MTJlYjNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBB
ZGRlZC4gQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gUmV0dXJucyBjdXN0b20gZXJyb3IgbXNz
YWdlIGluIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0
YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3cpOiBBZGRlZC4gIENhbGxlZCBmcm9t
IFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOiBBZGRlZC4g
IENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNo
KTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRv
b0xvbmcpOiBBZGRlZC4gIENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dHlwZU1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlz
IGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBU
aGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRh
dGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVk
LiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eSk6IEFkZGVkLiAgc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgIChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZCBuZXcgaW5zdGFuY2UgdmFsdWUgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkpOiBDaGFuZ2VkLiBDYWxscyBiYXNlIGNsYXNzIHNldEN1c3RvbVZhbGlkaXR5LgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6IENhbGwgbV9p
bnB1dFR5cGUgbWV0aG9kcyBpbnN0ZWFkIG9mIEhUTUxJbnB1dEVsZW1lbnQncy4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcpOiBDYWxsIG1faW5wdXRUeXBlIG1l
dGhvZHMgaW5zdGVhZCBvZiBIVE1MSW5wdXRFbGVtZW50J3MuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6IE1vdmUg
aW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dmFsdWVNaXNzaW5nKTogIE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTog
TW92ZSBpbXBsZW1lbnRhdGlvbiB0byBJbnB1dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxv
dyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9u
IHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBN
aXNtYXRjaCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRo
b2RzIGluc3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGlu
c3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5oOiBBZGQgInZpcnR1YWwiIGFuZCAiT1ZFUlJJREUiLgorICAgICAgICAq
IGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNlbGVj
dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKTogQWRkZWQuIEltcGxlbWVudGF0aW9uIGZvciBI
VE1MU2VsZWN0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50Ojp2
YWx1ZU1pc3NpbmcpOiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxTZWxlY3RFbGVtZW50
LgorICAgICAgICAqIGh0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTZWxl
Y3RFbGVtZW50KTogIEFkZGVkIGVudHJpZXMgZm9yIG5ld2x5IGFkZGVkIG1ldGhvZHMuCisgICAg
ICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKTogQWRkZWQuIEltcGxlbWVudGF0
aW9uIGZvciBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRB
cmVhRWxlbWVudDo6dmFsdWVNaXNzaW5nKTogQWRkZWQuIEltcGxlbWVudGF0aW9uIGZvciBIVE1M
VGV4dEFyZWFFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
dG9vTG9uZyk6IEFkZGVkLiBJbXBsZW1lbnRhdGlvbiBmb3IgSFRNTFRleHRBcmVhRWxlbWVudC4K
KyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxUZXh0
QXJlYUVsZW1lbnQpOiBBZGRlZCBlbnRyaWVzIGZvciBuZXdseSBhZGRlZCBtZXRob2RzLgorICAg
ICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6
c3RlcE1pc21hdGNoKTogQ2hhbmdlIG1ldGhvZCBzaWduYXR1cmUuCisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OmFsaWduVmFsdWVGb3JTdGVwKTogIENoYW5nZWQgZm9yIGNhbGxpbmcgSW5w
dXRDbGFzcyBpbnN0ZWFkIG9mIEhUTUxJTnB1dEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpJ
bnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcik6ICBBZGRlZC4gTW92ZWQgZnJvbSBIVE1MSW5w
dXRFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2Fn
ZSk6IEFkZGVkLiAgTW92ZWQgZnJvbSBIVE1MSW5wdXRFbGVtZW50LgorICAgICAgICAqIGh0bWwv
SW5wdXRUeXBlLmg6CisgICAgICAgIChJbnB1dFR5cGUpOiBBZGRlZCBlbnRyaWVzIGZvciBuZXds
eSBhZGRlZCBtZXRob2RzIGFuZCB1cGRhdGUgbWV0aG9kcyBzaWduYXR1cmUuCisgICAgICAgICog
aHRtbC9WYWxpZGl0eVN0YXRlLmNwcDogTW92ZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gdG8gRm9y
bUFzc29jaWF0ZWRFbGVtZW50IGFuZCBkZXJpdmVkIGNsYXNzZXMgZm9yIGxvY2FsaXppbmcgaW1w
bGVtZW50YXRpb24gY2hhbmdlIG9mIGVsZW1lbnRzIGFuZCBpbnB1dCB0eXBlcy4KKyAgICAgICAg
KFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNzYWdlKTogQ2hhbmdlZCB0byBj
YWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OnZhbHVlTWlzc2luZyk6IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0eXBl
TWlzbWF0Y2gpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9k
LgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKTogQ2hh
bmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkaXR5U3RhdGU6OnRvb0xvbmcpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29j
aWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
cmFuZ2VVbmRlcmZsb3cpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3Mg
bWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdyk6
IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2gpOiBDaGFuZ2VkIHRvIGNhbGwg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRp
dHlTdGF0ZTo6Y3VzdG9tRXJyb3IpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6dmFsaWQpOgor
ICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5oOgorICAgICAgICAoVmFsaWRpdHlTdGF0ZSk6
IFJlbW92ZSBjdXN0b20gdmFsaWRhdGlvbiBtZXNzYWdlIHJlbGF0ZWQgdGhpbmdzLgorCiAyMDEy
LTA1LTEwICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTE2NTk0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCmluZGV4IDY2NWVmYTc2YTkyMmZlMzI1MmIwZDQ1N2YzZGNk
YTg2ZTczODEyMDEuLjc2ZGQwZDE1OWYwNzVkOWRiNjZmZDdhMWZkZWJlMmRhOTU5NDlhZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKQEAgLTE1
Nyw2ICsxNTcsNjkgQEAgdm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmZvcm1BdHRyaWJ1dGVD
aGFuZ2VkKCkKICAgICAgICAgcmVzZXRGb3JtT3duZXIoKTsKIH0KIAorYm9vbCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OmN1c3RvbUVycm9yKCkgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRWxlbWVu
dCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQodGhpcyk7CisgICAgcmV0dXJuIGVsZW1lbnQtPndp
bGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlLmlzRW1wdHkoKTsKK30K
KworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFu
Z2VPdmVyZmxvdygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1B
c3NvY2lhdGVkRWxlbWVudDo6dHlwZU1pc21hdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZCgpIGNvbnN0Cit7Cisg
ICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8fCBy
YW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKQorICAgICAgICB8fCB0b29Mb25nKCkg
fHwgcGF0dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNzaW5nKCkgfHwgY3VzdG9tRXJyb3IoKTsK
KyAgICByZXR1cm4gIXNvbWVFcnJvcjsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6
OnZhbHVlTWlzc2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitTdHJpbmcg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2U7Cit9CisKK1N0cmluZyBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gY3VzdG9tRXJyb3IoKSA/IG1fY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UgOiBTdHJpbmcoKTsK
K30KKwordm9pZCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0
IFN0cmluZyYgZXJyb3IpCit7CisgICAgbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZSA9IGVycm9y
OworfQorCiBjb25zdCBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChjb25zdCBGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqIGFzc29jaWF0ZWRFbGVtZW50KQogewogICAgIGlmIChhc3NvY2lhdGVkRWxl
bWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5oCmluZGV4IDI4NGUyOThmZDk3ZTU0MmQxYjBiMmNkNDZiYzM0Mjg1
MWVkNGEyZjEuLjdkYTJmYjMwNWZmYTY1ZGI5MjZhNWRlMzZhNjA2OTdkNzY1Zjg2NTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaApAQCAtNjAsNiArNjAs
MTkgQEAgcHVibGljOgogCiAgICAgdm9pZCBmb3JtUmVtb3ZlZEZyb21UcmVlKGNvbnN0IE5vZGUq
IGZvcm1Sb290KTsKIAorICAgIC8vIFZhbGlkaXR5U3RhdGUgYXR0cmlidXRlIGltcGxlbWVudGF0
aW9ucworICAgIHZpcnR1YWwgYm9vbCBjdXN0b21FcnJvcigpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VPdmVy
ZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wg
dG9vTG9uZygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgdmFsaWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVN
aXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7
CisKIHByb3RlY3RlZDoKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKIApAQCAtNzYsNiAr
ODksOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VGb3JtKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUZvcm0oKTsKIAorICAgIFN0cmluZyBjdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdCA9IDA7CiAKQEAgLTg0LDYgKzk5LDcg
QEAgcHJpdmF0ZToKIAogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIE93blB0cjxW
YWxpZGl0eVN0YXRlPiBtX3ZhbGlkaXR5U3RhdGU7CisgICAgU3RyaW5nIG1fY3VzdG9tVmFsaWRh
dGlvbk1lc3NhZ2U7CiB9OwogCiBIVE1MRWxlbWVudCogdG9IVE1MRWxlbWVudChGb3JtQXNzb2Np
YXRlZEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IDJmOWYyMjViY2E5YzU1OWIwOTIzNGFhMTQ0OTU3OTRiYTQ4ZjcyOGYu
LjcwMjE3NTM1OWFjN2FhZmUzZGE1NzQ3YzBlNTc1NzAzNTNlZTg1ZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDg0LDcgKzQ4NCw4
IEBAIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCkK
IAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShjb25zdCBT
dHJpbmcmIGVycm9yKQogewotICAgIHZhbGlkaXR5KCktPnNldEN1c3RvbUVycm9yTWVzc2FnZShl
cnJvcik7CisgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21WYWxpZGl0eShlcnJv
cik7CisgICAgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CiB9CiAKIHZvaWQgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6ZGlzcGF0Y2hCbHVyRXZlbnQoUGFzc1JlZlB0cjxOb2RlPiBuZXdGb2N1c2Vk
Tm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKaW5k
ZXggNjA4NDExZjM2MzZmZmY4ZjdjYTQ2YTc1NTE3NjBlZDM1OGE3MjM1YS4uY2FmYmY1MjlhNTFh
Yzg3MmU0ZWEzMDQwYTJhOTEzNTJkYzI1ZWUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiA+
KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsKICAgICAvLyBUaGlzIG11c3QgYmUgY2Fs
bGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQgb3IgY29udHJvbCB2YWx1ZSBpcyBjaGFu
Z2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7Ci0gICAgdm9pZCBzZXRDdXN0
b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICBib29sIHJlYWRPbmx5KCkgY29u
c3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAppbmRleCA2ZmU1NTk2NWQ0ZjFkYTc1OTlkNjI5MDJkOTg5MWU0OGQ0NzlhZWY3
Li43YWUwYWY4OTVhMWFhYTlmMzBiNTkwYmVhM2U2NTNhYjA0ZWRjMTUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTE5MSwyNyArMTkxLDMyIEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6aXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuICFtX2lucHV0VHlwZS0+
dHlwZU1pc21hdGNoRm9yKHZhbHVlKQotICAgICAgICAmJiAhc3RlcE1pc21hdGNoKHZhbHVlKQot
ICAgICAgICAmJiAhcmFuZ2VVbmRlcmZsb3codmFsdWUpCi0gICAgICAgICYmICFyYW5nZU92ZXJm
bG93KHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSkK
KyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1ZSkKKyAgICAgICAg
JiYgIW1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKQogICAgICAgICAmJiAhdG9vTG9u
Zyh2YWx1ZSwgSWdub3JlRGlydHlGbGFnKQotICAgICAgICAmJiAhcGF0dGVybk1pc21hdGNoKHZh
bHVlKQotICAgICAgICAmJiAhdmFsdWVNaXNzaW5nKHZhbHVlKTsKKyAgICAgICAgJiYgIW1faW5w
dXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+
dmFsdWVNaXNzaW5nKHZhbHVlKTsKK30KKworYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25n
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgp
LCBDaGVja0RpcnR5RmxhZyk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21h
dGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOwor
ICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7
CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYg
dmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmcodmFsdWUpOworICAgIHJl
dHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKCkp
OwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2go
KSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVl
KTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNt
YXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0
IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKQEAgLTIz
Miw2OCArMjM3LDQwIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJp
bmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spCiAgICAgcmV0dXJuIG51bUdy
YXBoZW1lQ2x1c3RlcnModmFsdWUpID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1heCk7CiB9CiAK
LWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coY29uc3QgU3RyaW5nJiB2YWx1
ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRlcmZsb3coKSBjb25zdAog
ewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpOworICAgIHJl
dHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUo
KSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUpOwor
ICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2
YWx1ZSgpKTsKIH0KIAotZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW0oKSBjb25zdAor
U3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKLX0KLQotZG91YmxlIEhUTUxJbnB1dEVs
ZW1lbnQ6Om1heGltdW0oKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4aW11
bSgpOwotfQotCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdAotewotICAgIGRvdWJsZSBzdGVwOwotICAgIGlmICghZ2V0QWxsb3dl
ZFZhbHVlU3RlcCgmc3RlcCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSwgc3RlcCk7Ci19CisgICAgaWYgKCF3aWxsVmFs
aWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi1TdHJpbmcgSFRNTElucHV0RWxl
bWVudDo6bWluaW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5z
ZXJpYWxpemUobWluaW11bSgpKTsKLX0KKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAg
cmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVt
ZW50OjptYXhpbXVtU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNl
cmlhbGl6ZShtYXhpbXVtKCkpOwotfQotCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6c3RlcEJh
c2VTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFsaXplKG1f
aW5wdXRUeXBlLT5zdGVwQmFzZSgpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbGlkYXRp
b25NZXNzYWdlKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjpzdGVwU3RyaW5nKCkg
Y29uc3QKK2RvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QKIHsKLSAgICBk
b3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKSB7Ci0gICAg
ICAgIC8vIHN0ZXBTdHJpbmcoKSBzaG91bGQgYmUgY2FsbGVkIG9ubHkgaWYgc3RlcE1pc21hdGNo
KCkgY2FuIGJlIHRydWUuCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBzZXJpYWxpemVGb3JOdW1iZXJUeXBl
KHN0ZXAgLyBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+bWluaW11bSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6dHlwZU1p
c21hdGNoVGV4dCgpIGNvbnN0Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWF4aW11bSgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2hUZXh0KCk7CisgICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVt
ZW50Ojp2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6c3Rl
cE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2lu
Z1RleHQoKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnN0ZXBN
aXNtYXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2Vk
VmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKQEAgLTEyNzUsMTIgKzEyNTIsMTIgQEAgYm9v
bCBIVE1MSW5wdXRFbGVtZW50OjpoYXNVbmFjY2VwdGFibGVWYWx1ZSgpIGNvbnN0CiAKIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVl
KCkpICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKCkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+
c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93
KHZhbHVlKCkpICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAog
Ym9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFuZ2UoKSBjb25zdAogewotICAgIHJldHVy
biBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAocmFuZ2VVbmRlcmZs
b3codmFsdWUoKSkgfHwgcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKSk7CisgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmIChtX2lucHV0VHlwZS0+cmFuZ2VV
bmRlcmZsb3codmFsdWUoKSkgfHwgbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSkp
OwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om5lZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggZTM0YTAzZTYzNWU5ZGZj
MzQwYjA1MGRkZTFiZGFjYTk4Mzg3NTg5ZC4uOTgyN2E5YmZlZGI2MDA4NDkyOGJjZmEzMjE1ZDcz
ZWVmNGNkNGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ4
LDEzICs0OCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9jb21wbGV0
ZSgpIGNvbnN0OwogCiAgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKLSAgICBib29sIHR5cGVNaXNt
YXRjaCgpIGNvbnN0OwotICAgIC8vIHZhbHVlTWlzc2luZygpIGlnbm9yZXMgdGhlIHNwZWNpZmll
ZCBzdHJpbmcgdmFsdWUgZm9yIENIRUNLQk9YIGFuZCBSQURJTy4KLSAgICBib29sIHZhbHVlTWlz
c2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHBhdHRlcm5NaXNtYXRjaChjb25z
dCBTdHJpbmcmKSBjb25zdDsKICAgICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNU
b0NoZWNrRGlydHlGbGFnKSBjb25zdDsKLSAgICBib29sIHJhbmdlVW5kZXJmbG93KGNvbnN0IFN0
cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmKSBjb25z
dDsKKworICAgIHZpcnR1YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZsb3coKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgcmFuZ2VPdmVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzdGVw
TWlzbWF0Y2goKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdCBPVkVS
UklERTsKKyAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3RyaW5n
IHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCisgICAgdmlydHVhbCBib29sIHZhbHVlTWlz
c2luZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNz
YWdlKCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVl
IGZvciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90
aGVyIHR5cGVzLgogICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0
aGUgbWF4aW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3Qg
Y2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KQEAgLTY0LDE1ICs2OSw2IEBAIHB1YmxpYzoKICAg
ICAvLyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgog
ICAgIGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKIAotICAgIC8vIEZv
ciBWYWxpZGl0eVN0YXRlLgotICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNv
bnN0OwotICAgIFN0cmluZyBtaW5pbXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1heGlt
dW1TdHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RlcEJhc2VTdHJpbmcoKSBjb25zdDsKLSAg
ICBTdHJpbmcgc3RlcFN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0
KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKLQogICAgIC8v
IEltcGxlbWVudGF0aW9ucyBvZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERv
d24oKS4KICAgICB2b2lkIHN0ZXBVcChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN0
ZXBEb3duKGludCwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oCmluZGV4IGEwZTY2Mzc3YTY0MTg1MzBhZDg1ODI4ODA3ODdhYzUzNGUwYzRlNmIu
LjMxMzg5M2JhYWU4Y2MwNmYxYjA4Njk4MzFlYjFiMjNjYjA0OTlhYjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAg
IC8vIE5vdGUgdGhhdCB0aGUgb2JqZWN0IGVsZW1lbnRzIGFyZSBhbHdheXMgYmFycmVkIGZyb20g
Y29uc3RyYWludCB2YWxpZGF0aW9uLgogICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIHsg
cmV0dXJuIFN0cmluZygpOyB9CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KCkgeyByZXR1cm4gdHJ1
ZTsgfQotICAgIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgeyB9CisgICAg
dmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFIHsg
fQogCiAgICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6cmVmOwogICAgIHVzaW5n
IFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9kZT46OmRlcmVmOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcAppbmRleCA1OGE5YTczOWNlMTA3NDI4N2QxNDliM2UzZGFlOTU3
YTZiNDNlYzkxLi5lZTU3ZGFlODA0MTdiMTc1ZGU2OGQxY2YyMzg1MGMxZWFiOGUxYWJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcApAQCAtNDEsNiArNDEsNyBA
QAogI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIkxvY2Fs
aXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm9kZVJl
bmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0xNDUsOCArMTQ2LDIyIEBA
IGJvb2wgSFRNTFNlbGVjdEVsZW1lbnQ6Omhhc1BsYWNlaG9sZGVyTGFiZWxPcHRpb24oKSBjb25z
dAogICAgIHJldHVybiAhbGlzdEluZGV4ICYmIG9wdGlvbi0+dmFsdWUoKS5pc0VtcHR5KCk7CiB9
CiAKK1N0cmluZyBIVE1MU2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAor
eworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKwor
ICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1cm4gY3VzdG9tVmFsaWRhdGlvbk1l
c3NhZ2UoKTsKKworICAgIHJldHVybiB2YWx1ZU1pc3NpbmcoKSA/IHZhbGlkYXRpb25NZXNzYWdl
VmFsdWVNaXNzaW5nRm9yU2VsZWN0VGV4dCgpIDogU3RyaW5nKCk7Cit9CisKIGJvb2wgSFRNTFNl
bGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7CisgICAgaWYgKCF3aWxsVmFsaWRh
dGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFpc1JlcXVpcmVkRm9ybUNv
bnRyb2woKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmgKaW5kZXggNTI2NjVlMTk1YjQ5MWJlM2IwNDVjNWIyZGJkMjY1NmUxODZk
ZTA5Ni4uODJiNzI3MzM4ODYyYzIzMjc3NDRlYTI1ZTMxNTk0MTllODM1YTNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaApAQCAtNDYsNyArNDYsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBvcHRpb25TZWxlY3RlZEJ5VXNlcihpbnQgaW5kZXgsIGJvb2wgZGlzcGF0Y2hD
aGFuZ2VFdmVudCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOwogCiAgICAg
Ly8gRm9yIFZhbGlkaXR5U3RhdGUKLSAgICBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0OworICAg
IHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuY3BwCmluZGV4IDYzNjYzYTk3ZmNjN2IwY2JmZmVmOTFmNTliNDdmNWU0ZTE0ZmIyNGQu
LjM1YzU2MDI4MDFmNzkzMjMwZjVjOGViODQzMjIwOWYzNTFlMGVlMDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2lu
Y2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIlJlbmRl
clRleHRDb250cm9sTXVsdGlMaW5lLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1
ZGUgIlRleHQuaCIKQEAgLTQyMyw2ICs0MjQsMzMgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
OjpzZXRNYXhMZW5ndGgoaW50IG5ld1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
c2V0QXR0cmlidXRlKG1heGxlbmd0aEF0dHIsIFN0cmluZzo6bnVtYmVyKG5ld1ZhbHVlKSk7CiB9
CiAKK1N0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0
Cit7CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwor
CisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9u
TWVzc2FnZSgpOworCisgICAgaWYgKHZhbHVlTWlzc2luZygpKQorICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdUZXh0KCk7CisKKyAgICBpZiAodG9vTG9uZygpKQor
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNs
dXN0ZXJzKHZhbHVlKCkpLCBtYXhMZW5ndGgoKSk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdmFsdWVNaXNzaW5nKHZhbHVlKCkpOworfQorCiti
b29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAoreworICAgIHJldHVybiB3
aWxsVmFsaWRhdGUoKSAmJiB0b29Mb25nKHZhbHVlKCksIENoZWNrRGlydHlGbGFnKTsKK30KKwog
Ym9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUsIE5l
ZWRzVG9DaGVja0RpcnR5RmxhZyBjaGVjaykgY29uc3QKIHsKICAgICAvLyBSZXR1cm4gZmFsc2Ug
Zm9yIHRoZSBkZWZhdWx0IHZhbHVlIG9yIHZhbHVlIHNldCBieSBzY3JpcHQgZXZlbiBpZiBpdCBp
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaAppbmRleCBhMTlhNDcx
YTk2NGJhOTBkMzBhZDc0ODk0MzAxMzZmMjQ5NTczYzFjLi5jODlhNzE4M2E3OGM2MjFlYTMzN2Q3
OGI3NTRkYmQzNGNkNjFlNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaApAQCAtNDcsNiArNDcsMTAgQEAgcHVibGljOgogICAgIGludCB0ZXh0TGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gdmFsdWUoKS5sZW5ndGgoKTsgfQogICAgIHZpcnR1YWwgaW50IG1heExl
bmd0aCgpIGNvbnN0OwogICAgIHZvaWQgc2V0TWF4TGVuZ3RoKGludCwgRXhjZXB0aW9uQ29kZSYp
OworICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5n
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCBPVkVS
UklERTsKICAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdCB7
IHJldHVybiBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSAmJiAhZGlzYWJsZWQoKSAmJiAhcmVhZE9u
bHkoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7IH0KICAgICBib29sIHRvb0xvbmcoY29uc3QgU3RyaW5n
JiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKICAgICBib29sIGlzVmFsaWRWYWx1ZShj
b25zdCBTdHJpbmcmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5OTcx
ODJhYmFlN2Q0NGJmYjcwNzlhNGJhODRjN2VkOTQ1YTk1N2YyLi42Mzg1NmFkZTQzMTFkZDYzYTZj
ODQzNTEzZDRiOGI3YWJmZjhhZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0y
ODMsNiArMjgzLDE0IEBAIGJvb2wgSW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRp
b24oaW50LCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Citib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0
Cit7CisgICAgZG91YmxlIHN0ZXA7CisgICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVw
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdGVwTWlzbWF0Y2godmFsdWUs
IHN0ZXApOworfQorCiBib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYs
IGRvdWJsZSkgY29uc3QKIHsKICAgICAvLyBOb24tc3VwcG9ydGVkIHR5cGVzIHNob3VsZCBiZSBy
ZWplY3RlZCBieSBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKCkuCkBAIC0z
MzgsNiArMzQ2LDQxIEBAIFN0cmluZyBJbnB1dFR5cGU6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25z
dAogICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0KIAor
U3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGNvbnN0
IFN0cmluZyB2YWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsKKworICAgIC8vIFRoZSBvcmRlciBv
ZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBz
aG93IHRoZQorICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNvbnRyb2wg
aGFzIG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgorICAgIGlmICh2YWx1ZU1pc3NpbmcodmFsdWUp
KQorICAgICAgICByZXR1cm4gdmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAgaWYgKHR5cGVNaXNt
YXRjaCgpKQorICAgICAgICByZXR1cm4gdHlwZU1pc21hdGNoVGV4dCgpOworCisgICAgaWYgKHBh
dHRlcm5NaXNtYXRjaCh2YWx1ZSkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBh
dHRlcm5NaXNtYXRjaFRleHQoKTsKKworICAgIGlmIChlbGVtZW50KCktPnRvb0xvbmcoKSkKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVz
dGVycyh2YWx1ZSksIGVsZW1lbnQoKS0+bWF4TGVuZ3RoKCkpOworCisgICAgaWYgKHJhbmdlVW5k
ZXJmbG93KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRl
cmZsb3dUZXh0KHNlcmlhbGl6ZShtaW5pbXVtKCkpKTsKKworICAgIGlmIChyYW5nZU92ZXJmbG93
KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1Rl
eHQoc2VyaWFsaXplKG1heGltdW0oKSkpOworCisgICAgaWYgKHN0ZXBNaXNtYXRjaCh2YWx1ZSkp
IHsKKyAgICAgICAgU3RyaW5nIHN0ZXBTdHJpbmc7CisgICAgICAgIGRvdWJsZSBzdGVwOworICAg
ICAgICBpZiAoZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgICAgICBzdGVwU3Ry
aW5nID0gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8gc3RlcFNjYWxlRmFjdG9yKCkpOwor
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KHNlcmlhbGl6
ZShzdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCiB2b2lkIElucHV0VHlwZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50KikKIHsK
IH0KQEAgLTg3MCw3ICs5MTMsNyBAQCBkb3VibGUgSW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3Rl
cChkb3VibGUgbmV3VmFsdWUsIGRvdWJsZSBzdGVwLCB1bnNpZ25lZCBjdXJyZQogICAgIHVuc2ln
bmVkIGJhc2VEZWNpbWFsUGxhY2VzOwogICAgIGRvdWJsZSBiYXNlID0gc3RlcEJhc2VXaXRoRGVj
aW1hbFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMpOwogICAgIGJhc2VEZWNpbWFsUGxhY2VzID0g
bWluKGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOwotICAgIGlmIChlbGVtZW50KCktPnN0ZXBNaXNt
YXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAgaWYgKHN0ZXBNaXNtYXRjaChlbGVtZW50
KCktPnZhbHVlKCkpKSB7CiAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNf
Y2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgY3VycmVudERlY2ltYWxQbGFjZXMp
KSk7CiAgICAgICAgIG5ld1ZhbHVlID0gcm91bmQobmV3VmFsdWUgKiBzY2FsZSkgLyBzY2FsZTsK
ICAgICB9IGVsc2UgewpAQCAtMTAyMyw3ICsxMDY2LDcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBV
cEZyb21SZW5kZXJlcihpbnQgbikKICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxp
emUoc2lnbiA+IDAgPyBtaW5pbXVtKCkgOiBtYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hh
bmdlRXZlbnQpOwogICAgIGVsc2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAg
ICBpZiAoZWxlbWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgeworICAg
ICAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAg
IEFTU0VSVChzdGVwKTsKICAgICAgICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKICAgICAgICAgICAg
IGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwRGVj
aW1hbFBsYWNlcywgYmFzZURlY2ltYWxQbGFjZXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApp
bmRleCAxYzg2Y2IwZmNjYTkzYTdiMzIxMjg4ZDk4MmU5OGM0ZDljOGM4MGQ2Li44NzY2ZmVjMWM4
NzhjNWIxNzA5ODEwNTg1YTVhYTM3ZmQ1ODJmODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgK
QEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNO
dW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAKICAgICAvLyBWYWxpZGF0aW9uIGZ1bmN0aW9ucwotCisgICAgdmlydHVhbCBTdHJpbmcg
dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxp
ZGF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBT
dHJpbmcmKSBjb25zdDsKICAgICAvLyBUeXBlIGNoZWNrIGZvciB0aGUgY3VycmVudCBpbnB1dCB2
YWx1ZS4gV2UgZG8gbm90aGluZyBmb3Igc29tZSB0eXBlcwpAQCAtMTU3LDYgKzE1Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBk
b3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVk
ZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0Owor
ICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29u
c3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRv
dWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmZTczMTJjMmEzMDJkMzU1N2MwY2VjZjhm
NjM0M2QzZWJjYmFjMDYzLi42NDk3NjVkZjkxNDY4N2Q1NDhmOTBiZjUzMWQ0NDU3ZGY2NjRjNmQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTM4LDE3NyArMzgsNTIg
QEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogU3RyaW5nIFZhbGlkaXR5U3RhdGU6OnZh
bGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIXRvSFRNTEVsZW1lbnQobV9jb250
cm9sKS0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlm
IChjdXN0b21FcnJvcigpKQotICAgICAgICByZXR1cm4gbV9jdXN0b21FcnJvck1lc3NhZ2U7Ci0g
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAg
Ym9vbCBpc0lucHV0RWxlbWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYg
ZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZyk7Ci0gICAgYm9vbCBpc1RleHRBcmVhRWxlbWVu
dCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFt
ZSh0ZXh0YXJlYVRhZyk7Ci0gICAgLy8gVGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tz
IGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNob3cgdGhlCi0gICAgLy8gdmFsdWVN
aXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBl
cnJvcnMuCi0gICAgaWYgKHZhbHVlTWlzc2luZygpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5o
YXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCk7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxl
bWVudCktPnZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlVmFsdWVNaXNzaW5nVGV4dCgpOwotICAgIH0KLSAgICBpZiAodHlwZU1pc21hdGNoKCkpIHsK
LSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoVGV4dCgpOwotICAg
ICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAgfQot
ICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2goKSkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwotICAgIGlmICh0b29Mb25nKCkpIHsKLSAgICAgICAg
aWYgKCFpc0lucHV0RWxlbWVudCAmJiAhaXNUZXh0QXJlYUVsZW1lbnQpIHsKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICB9Ci0gICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0ID0gc3RhdGlj
X2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh0ZXh0
LT52YWx1ZSgpKSwgdGV4dC0+bWF4TGVuZ3RoKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VVbmRl
cmZsb3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQo
c3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT5taW5pbXVtU3RyaW5nKCkp
OwotICAgIH0KLSAgICBpZiAocmFuZ2VPdmVyZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1
dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9u
TWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihl
bGVtZW50KS0+bWF4aW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHN0ZXBNaXNtYXRjaCgp
KSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0g
ICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlz
bWF0Y2hUZXh0KGlucHV0LT5zdGVwQmFzZVN0cmluZygpLCBpbnB1dC0+c3RlcFN0cmluZygpKTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgVmFsaWRpdHlTdGF0ZTo6
c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX2N1
c3RvbUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgaWYgKG1fY29udHJvbC0+aXNGb3JtQ29u
dHJvbEVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVu
dCo+KG1fY29udHJvbCktPnNldE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIHJldHVybiBtX2Nv
bnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFs
dWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVs
ZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRh
ZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBpbnB1dC0+dmFsdWVNaXNz
aW5nKGlucHV0LT52YWx1ZSgpKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUo
dGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0g
c3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1
cm4gdGV4dEFyZWEtPnZhbHVlTWlzc2luZyh0ZXh0QXJlYS0+dmFsdWUoKSk7Ci0gICAgfQotICAg
IGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJldHVybiB0b0hU
TUxTZWxlY3RFbGVtZW50KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmcoKTsKLSAgICByZXR1cm4gZmFs
c2U7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsdWVNaXNzaW5nKCk7CiB9CiAKIGJvb2wgVmFs
aWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxW
YWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhh
c1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoKCk7Cisg
ICAgcmV0dXJuIG1fY29udHJvbC0+dHlwZU1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlT
dGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVu
dCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxp
ZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxl
bWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0g
ICAgcmV0dXJuIGlucHV0LT5wYXR0ZXJuTWlzbWF0Y2goaW5wdXQtPnZhbHVlKCkpOworICAgIHJl
dHVybiBtX2NvbnRyb2wtPnBhdHRlcm5NaXNtYXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3Rh
dGU6OnRvb0xvbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0
VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhU
TUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT50b29Mb25n
KGlucHV0LT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tEaXJ0eUZs
YWcpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpIHsK
LSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1M
VGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB0ZXh0QXJlYS0+dG9v
TG9uZyh0ZXh0QXJlYS0+dmFsdWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNoZWNr
RGlydHlGbGFnKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRy
b2wtPnRvb0xvbmcoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZVVuZGVyZmxvdygp
IGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29u
dHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VV
bmRlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdlVW5k
ZXJmbG93KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0
CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7
Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VPdmVyZmxv
dyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VPdmVyZmxvdygp
OwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAg
SFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYg
KCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxl
bWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+c3RlcE1pc21hdGNoKGlucHV0LT52
YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5zdGVwTWlzbWF0Y2goKTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQq
IGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQt
PndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7CisgICAg
cmV0dXJuIG1fY29udHJvbC0+Y3VzdG9tRXJyb3IoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRl
Ojp2YWxpZCgpIGNvbnN0CiB7Ci0gICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8
fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKQot
ICAgICAgICB8fCB0b29Mb25nKCkgfHwgcGF0dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNzaW5n
KCkgfHwgY3VzdG9tRXJyb3IoKTsKLSAgICByZXR1cm4gIXNvbWVFcnJvcjsKKyAgICByZXR1cm4g
bV9jb250cm9sLT52YWxpZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkaXR5U3RhdGUuaAppbmRleCA0YTk2NDg4YmQ1NTY4ZjEzZTlhMDg0OWEzZTBiMjIzYzUxZDRm
NjBlLi4xN2U5NGM5Nzg4ZGJjMDNhY2QxMDVhMzJkMTA5ZDY1YjEyNWFhMmJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNTcsMTEgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkgOiBt
X2NvbnRyb2woY29udHJvbCkgeyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29sb3JTdHJp
bmcoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhj
b25zdCBTdHJpbmcmKTsKLQogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwot
ICAgIFN0cmluZyBtX2N1c3RvbUVycm9yTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141339</attachid>
            <date>2012-05-11 00:16:05 -0700</date>
            <delta_ts>2012-05-11 00:26:45 -0700</delta_ts>
            <desc>Patch 9</desc>
            <filename>bug-86058-20120511161604.patch</filename>
            <type>text/plain</type>
            <size>35060</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU5ODc5OTUwOWUxODgx
YjIwMDU2OWFlZGQ3NjkwMjk5NzRhNDRiOC4uN2JmYmY1M2YyYzJkOWFhM2I4MThlZWNkOWVlNjIx
YWQxY2Q2ZGM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBB
ZGRlZC4gQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gUmV0dXJucyBjdXN0b20gZXJyb3IgbXNz
YWdlIGluIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0
YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3cpOiBBZGRlZC4gIENhbGxlZCBmcm9t
IFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOiBBZGRlZC4g
IENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNo
KTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRv
b0xvbmcpOiBBZGRlZC4gIENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dHlwZU1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlz
IGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBU
aGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRh
dGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVk
LiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eSk6IEFkZGVkLiAgc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgIChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZCBuZXcgaW5zdGFuY2UgdmFsdWUgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkpOiBDaGFuZ2VkLiBDYWxscyBiYXNlIGNsYXNzIHNldEN1c3RvbVZhbGlkaXR5LgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6IENhbGwgbV9p
bnB1dFR5cGUgbWV0aG9kcyBpbnN0ZWFkIG9mIEhUTUxJbnB1dEVsZW1lbnQncy4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcpOiBDYWxsIG1faW5wdXRUeXBlIG1l
dGhvZHMgaW5zdGVhZCBvZiBIVE1MSW5wdXRFbGVtZW50J3MuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6IE1vdmUg
aW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dmFsdWVNaXNzaW5nKTogIE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTog
TW92ZSBpbXBsZW1lbnRhdGlvbiB0byBJbnB1dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxv
dyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9u
IHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBN
aXNtYXRjaCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRo
b2RzIGluc3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGlu
c3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6IE1ha2UgdG9vTG9uZyBtZXRob2Qg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IEFkZCAidmlydHVh
bCIgYW5kICJPVkVSUklERSIuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Up
OiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxTZWxlY3RFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiBJbXBsZW1l
bnRhdGlvbiBmb3IgSFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOiAgQWRkZWQgZW50cmllcyBm
b3IgbmV3bHkgYWRkZWQgbWV0aG9kcy4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UpOiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBB
ZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKTogQWRkZWQuIEltcGxlbWVudGF0
aW9uIGZvciBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFRleHRBcmVhRWxlbWVudCk6IEFkZGVkIGVudHJpZXMg
Zm9yIG5ld2x5IGFkZGVkIG1ldGhvZHMuIENoYW5nZSB0b29Mb25nIGFuZCB2YWx1ZU1pc3Npbmcg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaCk6IENoYW5nZSBtZXRob2Qgc2lnbmF0dXJlLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6ICBDaGFuZ2VkIGZv
ciBjYWxsaW5nIElucHV0Q2xhc3MgaW5zdGVhZCBvZiBIVE1MSU5wdXRFbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIpOiAgQWRkZWQuIE1vdmVk
IGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFs
aWRhdGlvbk1lc3NhZ2UpOiBBZGRlZC4gIE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBlKTogQWRkZWQgZW50
cmllcyBmb3IgbmV3bHkgYWRkZWQgbWV0aG9kcyBhbmQgdXBkYXRlIG1ldGhvZHMgc2lnbmF0dXJl
LgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6IE1vdmUgYWN0dWFsIGltcGxlbWVu
dGF0aW9uIHRvIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhbmQgZGVyaXZlZCBjbGFzc2VzIGZvciBs
b2NhbGl6aW5nIGltcGxlbWVudGF0aW9uIGNoYW5nZSBvZiBlbGVtZW50cyBhbmQgaW5wdXQgdHlw
ZXMuCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSk6
IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3NpbmcpOiBDaGFuZ2VkIHRvIGNhbGwg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRp
dHlTdGF0ZTo6dHlwZU1pc21hdGNoKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnBhdHRlcm5N
aXNtYXRjaCk6IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0b29Mb25nKTogQ2hhbmdlZCB0byBj
YWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OnJhbmdlVW5kZXJmbG93KTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnJh
bmdlT3ZlcmZsb3cpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0
aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKTogQ2hh
bmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3Rh
dGU6OnZhbGlkKToKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAgICAgKFZh
bGlkaXR5U3RhdGUpOiBSZW1vdmUgY3VzdG9tIHZhbGlkYXRpb24gbWVzc2FnZSByZWxhdGVkIHRo
aW5ncy4KKwogMjAxMi0wNS0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNjU5NC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA2NjVlZmE3NmE5MjJmZTMy
NTJiMGQ0NTdmM2RjZGE4NmU3MzgxMjAxLi43NmRkMGQxNTlmMDc1ZDlkYjY2ZmQ3YTFmZGViZTJk
YTk1OTQ5YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCkBAIC0xNTcsNiArMTU3LDY5IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpm
b3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIHJlc2V0Rm9ybU93bmVyKCk7CiB9CiAKK2Jv
b2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21FcnJvcigpIGNvbnN0Cit7CisgICAgY29u
c3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOworICAgIHJldHVy
biBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZS5p
c0VtcHR5KCk7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0
Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzdGVw
TWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWQo
KSBjb25zdAoreworICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1p
c21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkKKyAgICAgICAg
fHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8IHZhbHVlTWlzc2luZygpIHx8IGN1
c3RvbUVycm9yKCk7CisgICAgcmV0dXJuICFzb21lRXJyb3I7Cit9CisKK2Jvb2wgRm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3Nh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOworfQor
CitTdHJpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGN1c3RvbUVycm9yKCkgPyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdl
IDogU3RyaW5nKCk7Cit9CisKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQoreworICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1l
c3NhZ2UgPSBlcnJvcjsKK30KKwogY29uc3QgSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoY29u
c3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCkKIHsKICAgICBpZiAo
YXNzb2NpYXRlZEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCAyODRlMjk4ZmQ5N2U1NDJkMWIw
YjJjZDQ2YmMzNDI4NTFlZDRhMmYxLi43ZGEyZmIzMDVmZmE2NWRiOTI2YTVkZTM2YTYwNjk3ZDc2
NWY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgK
QEAgLTYwLDYgKzYwLDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9ybVJlbW92ZWRGcm9tVHJl
ZShjb25zdCBOb2RlKiBmb3JtUm9vdCk7CiAKKyAgICAvLyBWYWxpZGl0eVN0YXRlIGF0dHJpYnV0
ZSBpbXBsZW1lbnRhdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgY3VzdG9tRXJyb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIHJhbmdlT3ZlcmZsb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21h
dGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbGlkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNv
bnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7
CiAKQEAgLTc2LDYgKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlRm9ybSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJp
bmcgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3QgPSAwOwogCkBA
IC04NCw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsK
ICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBt
X2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwogfTsKIAogSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1l
bnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAyZjlmMjI1YmNhOWM1NTliMDkyMzRhYTE0NDk1
Nzk0YmE0OGY3MjhmLi43MDIxNzUzNTlhYzdhYWZlM2RhNTc0N2MwZTU3NTcwMzUzZWU4NWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTQ4NCw3ICs0ODQsOCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFs
aWRpdHlDaGVjaygpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKLSAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21F
cnJvck1lc3NhZ2UoZXJyb3IpOworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9t
VmFsaWRpdHkoZXJyb3IpOworICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCmluZGV4IDYwODQxMWYzNjM2ZmZmOGY3Y2E0NmE3NTUxNzYwZWQzNThhNzIzNWEu
LmNhZmJmNTI5YTUxYWM4NzJlNGVhMzA0MGEyYTkxMzUyZGMyNWVlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lh
dGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhp
cyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wg
dmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAg
IHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lk
IHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgYm9vbCBy
ZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNmZlNTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4
OTFlNDhkNDc5YWVmNy4uN2FlMGFmODk1YTFhYWE5ZjMwYjU5MGJlYTNlNjUzYWIwNGVkYzE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xOTEsMjcgKzE5
MSwzMiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAh
bV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaEZvcih2YWx1ZSkKLSAgICAgICAgJiYgIXN0ZXBNaXNt
YXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKQotICAgICAgICAm
JiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5zdGVwTWlz
bWF0Y2godmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFs
dWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSkKICAgICAg
ICAgJiYgIXRvb0xvbmcodmFsdWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAgICAgJiYgIXBhdHRl
cm5NaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAg
ICAgICYmICFtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQorICAgICAgICAmJiAh
bV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRv
b0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBl
TWlzbWF0Y2goKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnR5
cGVNaXNtYXRjaCgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyhj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1p
c3NpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZh
bHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnZhbHVlTWlz
c2luZyh2YWx1ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0
dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRlcm5N
aXNtYXRjaCh2YWx1ZSk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBl
LT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2sp
IGNvbnN0CkBAIC0yMzIsNjggKzIzNyw0MCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xv
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKQogICAg
IHJldHVybiBudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtYXgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJm
bG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZh
bHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlVW5k
ZXJmbG93KHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZs
b3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFu
Z2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJm
bG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJh
bmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptaW5p
bXVtKCkgY29uc3QKK1N0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5taW5pbXVtKCk7Ci19Ci0KLWRvdWJs
ZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPm1heGltdW0oKTsKLX0KLQotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBp
ZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAg
IGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotU3RyaW5n
IEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW1TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBt
X2lucHV0VHlwZS0+c2VyaWFsaXplKG1pbmltdW0oKSk7Ci19CisgICAgaWYgKGN1c3RvbUVycm9y
KCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwogCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6bWF4aW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11bSgpKTsKLX0KLQotU3RyaW5nIEhUTUxJbnB1dEVs
ZW1lbnQ6OnN0ZXBCYXNlU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2UoKSk7CisgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT52YWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6
c3RlcFN0cmluZygpIGNvbnN0Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNv
bnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZz
dGVwKSkgewotICAgICAgICAvLyBzdGVwU3RyaW5nKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGlm
IHN0ZXBNaXNtYXRjaCgpIGNhbiBiZSB0cnVlLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICByZXR1cm4gc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVs
ZW1lbnQ6OnR5cGVNaXNtYXRjaFRleHQoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6
Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNo
VGV4dCgpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4aW11bSgpOwogfQogCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT52YWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5w
dXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVu
dDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CkBAIC0xMjc1LDEyICsx
MjUyLDEyIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aGFzVW5hY2NlcHRhYmxlVmFsdWUoKSBj
b25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SYW5nZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmICFyYW5nZVVu
ZGVyZmxvdyh2YWx1ZSgpKSAmJiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKKyAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIW1faW5wdXRUeXBlLT5y
YW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFs
dWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYg
KHJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IHJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOworICAg
IHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAobV9pbnB1
dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IG1faW5wdXRUeXBlLT5yYW5nZU92ZXJm
bG93KHZhbHVlKCkpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpuZWVkc1N1c3BlbnNp
b25DYWxsYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUz
NGEwM2U2MzVlOWRmYzM0MGIwNTBkZGUxYmRhY2E5ODM4NzU4OWQuLjVjMmU4MTIyZmEyMTk3YTA5
OTAzZmUxODJiNmMxZGIzNTVlYjIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCkBAIC00OCwxMyArNDgsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAg
Ym9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsKLSAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVz
IHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCi0gICAg
Ym9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0
cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7Ci0gICAgYm9vbCByYW5nZVVuZGVy
Zmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0
b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9W
RVJSSURFOworCiAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRl
LCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KICAg
ICBkb3VibGUgbWluaW11bSgpIGNvbnN0OwogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFs
dWUgZm9yIHR5cGU9ZGF0ZSwgbnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Ig
b3RoZXIgdHlwZXMuCkBAIC02NCwxNSArNjYsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFs
bG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29uc3Q7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0
ZS4KLSAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBTdHJp
bmcgbWluaW11bVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyBtYXhpbXVtU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHN0ZXBCYXNlU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBT
dHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0OwotICAg
IFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3Q7Ci0KICAgICAvLyBJbXBsZW1lbnRhdGlv
bnMgb2YgSFRNTElucHV0RWxlbWVudDo6c3RlcFVwKCkgYW5kIHN0ZXBEb3duKCkuCiAgICAgdm9p
ZCBzdGVwVXAoaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzdGVwRG93bihpbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKQEAgLTMyNSw2ICszMTgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBz
dXBwb3J0c01heExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dFR5cGUoKTsgfQogICAgIGJv
b2wgaXNUZXh0VHlwZSgpIGNvbnN0OworICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBO
ZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGFjZWhvbGRlckVtcHR5
KCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
aW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFh
ZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5OWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0
aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50
IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKICAgICB1
c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJl
ZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2UxMDc0Mjg3ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEu
LmVlNTdkYWU4MDQxN2IxNzVkZTY4ZDFjZjIzODUwYzFlYWI4ZTFhYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE0NSw4ICsxNDYsMjIgQEAgYm9vbCBIVE1M
U2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKTsKIH0KIAorU3RyaW5n
IEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgaWYg
KCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGN1
c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwor
CisgICAgcmV0dXJuIHZhbHVlTWlzc2luZygpID8gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3Np
bmdGb3JTZWxlY3RUZXh0KCkgOiBTdHJpbmcoKTsKK30KKwogYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAppbmRleCA1MjY2NWUxOTViNDkxYmUzYjA0NWM1YjJkYmQyNjU2ZTE4NmRlMDk2Li44MmI3
MjczMzg4NjJjMjMyNzc0NGVhMjVlMzE1OTQxOWU4MzVhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC00Niw3ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENoYW5nZUV2ZW50
LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICAvLyBGb3IgVmFs
aWRpdHlTdGF0ZQotICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggNjM2NjNhOTdmY2M3YjBjYmZmZWY5MWY1OWI0N2Y1ZTRlMTRmYjI0ZC4uMzVjNTYwMjgw
MWY3OTMyMzBmNWM4ZWI4NDMyMjA5ZjM1MWUwZWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRm9y
bURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgpAQCAtNDIzLDYgKzQyNCwzMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldE1heExl
bmd0aChpbnQgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBzZXRBdHRyaWJ1
dGUobWF4bGVuZ3RoQXR0ciwgU3RyaW5nOjpudW1iZXIobmV3VmFsdWUpKTsKIH0KIAorU3RyaW5n
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAo
Y3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7
CisKKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKworICAgIGlmICh0b29Mb25nKCkpCisgICAgICAgIHJl
dHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFs
dWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVybiB3
aWxsVmFsaWRhdGUoKSAmJiB2YWx1ZU1pc3NpbmcodmFsdWUoKSk7Cit9CisKK2Jvb2wgSFRNTFRl
eHRBcmVhRWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0
ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCiBib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNr
RGlydHlGbGFnIGNoZWNrKSBjb25zdAogewogICAgIC8vIFJldHVybiBmYWxzZSBmb3IgdGhlIGRl
ZmF1bHQgdmFsdWUgb3IgdmFsdWUgc2V0IGJ5IHNjcmlwdCBldmVuIGlmIGl0IGlzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGExOWE0NzFhOTY0YmE5MGQz
MGFkNzQ4OTQzMDEzNmYyNDk1NzNjMWMuLjU4NjQ2NzQ0OWU0YmZkYzcxMzc4NmQ5YTRlNjllNzlm
ZDIxN2VjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBA
IC00Nyw4ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9v
bCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUu
aXNFbXB0eSgpOyB9Ci0gICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZykgY29uc3Q7CisgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKKyAgICB2aXJ0dWFs
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9v
TG9uZygpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdDsKQEAgLTEwOCw2ICsxMTAsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCk7CiAKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNz
aW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGlzUmVxdWly
ZWRGb3JtQ29udHJvbCgpICYmICFkaXNhYmxlZCgpICYmICFyZWFkT25seSgpICYmIHZhbHVlLmlz
RW1wdHkoKTsgfQorICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBOZWVkc1RvQ2hlY2tE
aXJ0eUZsYWcpIGNvbnN0OworCiAgICAgaW50IG1fcm93czsKICAgICBpbnQgbV9jb2xzOwogICAg
IFdyYXBNZXRob2QgbV93cmFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1
dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCmluZGV4IDk5NzE4
MmFiYWU3ZDQ0YmZiNzA3OWE0YmE4NGM3ZWQ5NDVhOTU3ZjIuLjYzODU2YWRlNDMxMWRkNjNhNmM4
NDM1MTNkNGI4YjdhYmZmOGFkMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKQEAgLTI4
Myw2ICsyODMsMTQgQEAgYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNsdWRlRGVjb3JhdGlv
bihpbnQsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
K2Jvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
K3sKKyAgICBkb3VibGUgc3RlcDsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXAp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZXBNaXNtYXRjaCh2YWx1ZSwg
c3RlcCk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwg
ZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0ZWQgdHlwZXMgc2hvdWxkIGJlIHJl
amVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0ZXAoKS4KQEAgLTMz
OCw2ICszNDYsNDEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwogfQogCitT
dHJpbmcgSW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgY29uc3Qg
U3RyaW5nIHZhbHVlID0gZWxlbWVudCgpLT52YWx1ZSgpOworCisgICAgLy8gVGhlIG9yZGVyIG9m
IHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNo
b3cgdGhlCisgICAgLy8gdmFsdWVNaXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBo
YXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJvcnMuCisgICAgaWYgKHZhbHVlTWlzc2luZyh2YWx1ZSkp
CisgICAgICAgIHJldHVybiB2YWx1ZU1pc3NpbmdUZXh0KCk7CisKKyAgICBpZiAodHlwZU1pc21h
dGNoKCkpCisgICAgICAgIHJldHVybiB0eXBlTWlzbWF0Y2hUZXh0KCk7CisKKyAgICBpZiAocGF0
dGVybk1pc21hdGNoKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUGF0
dGVybk1pc21hdGNoVGV4dCgpOworCisgICAgaWYgKGVsZW1lbnQoKS0+dG9vTG9uZygpKQorICAg
ICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0
ZXJzKHZhbHVlKSwgZWxlbWVudCgpLT5tYXhMZW5ndGgoKSk7CisKKyAgICBpZiAocmFuZ2VVbmRl
cmZsb3codmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVy
Zmxvd1RleHQoc2VyaWFsaXplKG1pbmltdW0oKSkpOworCisgICAgaWYgKHJhbmdlT3ZlcmZsb3co
dmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4
dChzZXJpYWxpemUobWF4aW11bSgpKSk7CisKKyAgICBpZiAoc3RlcE1pc21hdGNoKHZhbHVlKSkg
eworICAgICAgICBTdHJpbmcgc3RlcFN0cmluZzsKKyAgICAgICAgZG91YmxlIHN0ZXA7CisgICAg
ICAgIGlmIChnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAgICAgIHN0ZXBTdHJp
bmcgPSBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHN0ZXAgLyBzdGVwU2NhbGVGYWN0b3IoKSk7Cisg
ICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRleHQoc2VyaWFsaXpl
KHN0ZXBCYXNlKCkpLCBzdGVwU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7
Cit9CisKIHZvaWQgSW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1vdXNlRXZlbnQqKQogewog
fQpAQCAtODcwLDcgKzkxMyw3IEBAIGRvdWJsZSBJbnB1dFR5cGU6OmFsaWduVmFsdWVGb3JTdGVw
KGRvdWJsZSBuZXdWYWx1ZSwgZG91YmxlIHN0ZXAsIHVuc2lnbmVkIGN1cnJlCiAgICAgdW5zaWdu
ZWQgYmFzZURlY2ltYWxQbGFjZXM7CiAgICAgZG91YmxlIGJhc2UgPSBzdGVwQmFzZVdpdGhEZWNp
bWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CiAgICAgYmFzZURlY2ltYWxQbGFjZXMgPSBt
aW4oYmFzZURlY2ltYWxQbGFjZXMsIDE2dSk7Ci0gICAgaWYgKGVsZW1lbnQoKS0+c3RlcE1pc21h
dGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQo
KS0+dmFsdWUoKSkpIHsKICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19j
YXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50RGVjaW1hbFBsYWNlcykp
KTsKICAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNjYWxlKSAvIHNjYWxlOwog
ICAgIH0gZWxzZSB7CkBAIC0xMDIzLDcgKzEwNjYsNyBAQCB2b2lkIElucHV0VHlwZTo6c3RlcFVw
RnJvbVJlbmRlcmVyKGludCBuKQogICAgICAgICBlbGVtZW50KCktPnNldFZhbHVlKHNlcmlhbGl6
ZShzaWduID4gMCA/IG1pbmltdW0oKSA6IG1heGltdW0oKSksIERpc3BhdGNoSW5wdXRBbmRDaGFu
Z2VFdmVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAg
IGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAg
ICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewogICAgICAgICAgICAg
QVNTRVJUKHN0ZXApOwogICAgICAgICAgICAgZG91YmxlIG5ld1ZhbHVlOwogICAgICAgICAgICAg
ZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNp
bWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCmlu
ZGV4IDFjODZjYjBmY2NhOTNhN2IzMjEyODhkOTgyZTk4YzRkOWM4YzgwZDYuLjg3NjZmZWMxYzg3
OGM1YjE3MDk4MTA1ODVhNWFhMzdmZDU4MmY4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaApA
QCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVBc051
bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKIAogICAgIC8vIFZhbGlkYXRpb24gZnVuY3Rpb25zCi0KKyAgICB2aXJ0dWFsIFN0cmluZyB2
YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c1ZhbGlk
YXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNoRm9yKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogICAgIC8vIFR5cGUgY2hlY2sgZm9yIHRoZSBjdXJyZW50IGlucHV0IHZh
bHVlLiBXZSBkbyBub3RoaW5nIGZvciBzb21lIHR5cGVzCkBAIC0xNTcsNiArMTU3LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAgICB2aXJ0dWFsIGRv
dWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNpemVTaG91bGRJbmNsdWRl
RGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2
aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSBzdGVwKSBjb25z
dDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgZG91
YmxlIHN0ZXBCYXNlV2l0aERlY2ltYWxQbGFjZXModW5zaWduZWQqKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCmluZGV4IGZlNzMxMmMyYTMwMmQzNTU3YzBjZWNmOGY2
MzQzZDNlYmNiYWMwNjMuLjY0OTc2NWRmOTE0Njg3ZDU0OGY5MGJmNTMxZDQ0NTdkZjY2NGM2ZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcApAQCAtMzgsMTc3ICszOCw1MiBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBTdHJpbmcgVmFsaWRpdHlTdGF0ZTo6dmFs
aWRhdGlvbk1lc3NhZ2UoKSBjb25zdAogewotICAgIGlmICghdG9IVE1MRWxlbWVudChtX2NvbnRy
b2wpLT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYg
KGN1c3RvbUVycm9yKCkpCi0gICAgICAgIHJldHVybiBtX2N1c3RvbUVycm9yTWVzc2FnZTsKLSAg
ICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBi
b29sIGlzSW5wdXRFbGVtZW50ID0gZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSAmJiBl
bGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKTsKLSAgICBib29sIGlzVGV4dEFyZWFFbGVtZW50
ID0gZWxlbWVudC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSAmJiBlbGVtZW50LT5oYXNUYWdOYW1l
KHRleHRhcmVhVGFnKTsKLSAgICAvLyBUaGUgb3JkZXIgb2YgdGhlIGZvbGxvd2luZyBjaGVja3Mg
aXMgbWVhbmluZ2Z1bC4gZS5nLiBXZSdkIGxpa2UgdG8gc2hvdyB0aGUKLSAgICAvLyB2YWx1ZU1p
c3NpbmcgbWVzc2FnZSBldmVuIGlmIHRoZSBjb250cm9sIGhhcyBvdGhlciB2YWxpZGF0aW9uIGVy
cm9ycy4KLSAgICBpZiAodmFsdWVNaXNzaW5nKCkpIHsKLSAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUoc2VsZWN0VGFnKSkKLSAgICAgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2Fn
ZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKTsKLSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50
KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVt
ZW50KS0+dmFsdWVNaXNzaW5nVGV4dCgpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VWYWx1ZU1pc3NpbmdUZXh0KCk7Ci0gICAgfQotICAgIGlmICh0eXBlTWlzbWF0Y2goKSkgewot
ICAgICAgICBpZiAoaXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT50eXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAg
ICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVR5cGVNaXNtYXRjaFRleHQoKTsKLSAgICB9Ci0g
ICAgaWYgKHBhdHRlcm5NaXNtYXRjaCgpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VQYXR0ZXJuTWlzbWF0Y2hUZXh0KCk7Ci0gICAgaWYgKHRvb0xvbmcoKSkgewotICAgICAgICBp
ZiAoIWlzSW5wdXRFbGVtZW50ICYmICFpc1RleHRBcmVhRWxlbWVudCkgewotICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
ICAgIH0KLSAgICAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqIHRleHQgPSBzdGF0aWNf
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1HcmFwaGVtZUNsdXN0ZXJzKHRleHQt
PnZhbHVlKCkpLCB0ZXh0LT5tYXhMZW5ndGgoKSk7Ci0gICAgfQotICAgIGlmIChyYW5nZVVuZGVy
ZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlVW5kZXJmbG93VGV4dChz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPm1pbmltdW1TdHJpbmcoKSk7
Ci0gICAgfQotICAgIGlmIChyYW5nZU92ZXJmbG93KCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0
RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVs
ZW1lbnQpLT5tYXhpbXVtU3RyaW5nKCkpOwotICAgIH0KLSAgICBpZiAoc3RlcE1pc21hdGNoKCkp
IHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCkgewotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNt
YXRjaFRleHQoaW5wdXQtPnN0ZXBCYXNlU3RyaW5nKCksIGlucHV0LT5zdGVwU3RyaW5nKCkpOwot
ICAgIH0KLQotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBWYWxpZGl0eVN0YXRlOjpz
ZXRDdXN0b21FcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewotICAgIG1fY3Vz
dG9tRXJyb3JNZXNzYWdlID0gbWVzc2FnZTsKLSAgICBpZiAobV9jb250cm9sLT5pc0Zvcm1Db250
cm9sRWxlbWVudCgpKQotICAgICAgICBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50
Kj4obV9jb250cm9sKS0+c2V0TmVlZHNWYWxpZGl0eUNoZWNrKCk7CisgICAgcmV0dXJuIG1fY29u
dHJvbC0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWx1
ZU1pc3NpbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxl
bWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFn
KSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT52YWx1ZU1pc3Np
bmcoaW5wdXQtPnZhbHVlKCkpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0
ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBz
dGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVy
biB0ZXh0QXJlYS0+dmFsdWVNaXNzaW5nKHRleHRBcmVhLT52YWx1ZSgpKTsKLSAgICB9Ci0gICAg
aWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkKLSAgICAgICAgcmV0dXJuIHRvSFRN
TFNlbGVjdEVsZW1lbnQoZWxlbWVudCktPnZhbHVlTWlzc2luZygpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWx1ZU1pc3NpbmcoKTsKIH0KIAogYm9vbCBWYWxp
ZGl0eVN0YXRlOjp0eXBlTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVt
ZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZh
bGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT50eXBlTWlzbWF0Y2goKTsKKyAg
ICByZXR1cm4gbV9jb250cm9sLT50eXBlTWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0
YXRlOjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlk
YXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFn
TmFtZShpbnB1dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVt
ZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAg
ICByZXR1cm4gaW5wdXQtPnBhdHRlcm5NaXNtYXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0
dXJuIG1fY29udHJvbC0+cGF0dGVybk1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0
ZTo6dG9vTG9uZygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRU
YWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRN
TElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gaW5wdXQtPnRvb0xvbmco
aW5wdXQtPnZhbHVlKCksIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpDaGVja0RpcnR5Rmxh
Zyk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkgewot
ICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxU
ZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT50b29M
b25nKHRleHRBcmVhLT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tE
aXJ0eUZsYWcpOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJv
bC0+dG9vTG9uZygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnJhbmdlVW5kZXJmbG93KCkg
Y29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250
cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2Fz
dDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5yYW5nZVVu
ZGVyZmxvdyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VVbmRl
cmZsb3coKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZU92ZXJmbG93KCkgY29uc3QK
IHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsK
LSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1M
SW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5yYW5nZU92ZXJmbG93
KGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5yYW5nZU92ZXJmbG93KCk7
CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBI
VE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAo
IWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBp
ZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5zdGVwTWlzbWF0Y2goaW5wdXQtPnZh
bHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnN0ZXBNaXNtYXRjaCgpOwogfQogCiBib29s
IFZhbGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICByZXR1cm4gZWxlbWVudC0+
d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tRXJyb3JNZXNzYWdlLmlzRW1wdHkoKTsKKyAgICBy
ZXR1cm4gbV9jb250cm9sLT5jdXN0b21FcnJvcigpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6
OnZhbGlkKCkgY29uc3QKIHsKLSAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgpIHx8
IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygpCi0g
ICAgICAgIHx8IHRvb0xvbmcoKSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3Npbmco
KSB8fCBjdXN0b21FcnJvcigpOwotICAgIHJldHVybiAhc29tZUVycm9yOworICAgIHJldHVybiBt
X2NvbnRyb2wtPnZhbGlkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRpdHlTdGF0ZS5oCmluZGV4IDRhOTY0ODhiZDU1NjhmMTNlOWEwODQ5YTNlMGIyMjNjNTFkNGY2
MGUuLjE3ZTk0Yzk3ODhkYmMwM2FjZDEwNWEzMmQxMDlkNjViMTI1YWEyYmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRpdHlTdGF0ZS5oCkBAIC01NywxMSArNTcsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIFZhbGlkaXR5U3RhdGUoRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBjb250cm9sKSA6IG1f
Y29udHJvbChjb250cm9sKSB7IH0KIAotICAgIHN0YXRpYyBib29sIGlzVmFsaWRDb2xvclN0cmlu
Zyhjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRW1haWxBZGRyZXNzKGNv
bnN0IFN0cmluZyYpOwotCiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBtX2NvbnRyb2w7Ci0g
ICAgU3RyaW5nIG1fY3VzdG9tRXJyb3JNZXNzYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141343</attachid>
            <date>2012-05-11 00:26:51 -0700</date>
            <delta_ts>2012-05-11 02:50:24 -0700</delta_ts>
            <desc>Patch 10</desc>
            <filename>bug-86058-20120511162650.patch</filename>
            <type>text/plain</type>
            <size>35043</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU5ODc5OTUwOWUxODgx
YjIwMDU2OWFlZGQ3NjkwMjk5NzRhNDRiOC4uN2JmYmY1M2YyYzJkOWFhM2I4MThlZWNkOWVlNjIx
YWQxY2Q2ZGM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBB
ZGRlZC4gQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gUmV0dXJucyBjdXN0b20gZXJyb3IgbXNz
YWdlIGluIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0
YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3cpOiBBZGRlZC4gIENhbGxlZCBmcm9t
IFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOiBBZGRlZC4g
IENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNo
KTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRv
b0xvbmcpOiBBZGRlZC4gIENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dHlwZU1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlz
IGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBU
aGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRh
dGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVk
LiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eSk6IEFkZGVkLiAgc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgIChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZCBuZXcgaW5zdGFuY2UgdmFsdWUgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkpOiBDaGFuZ2VkLiBDYWxscyBiYXNlIGNsYXNzIHNldEN1c3RvbVZhbGlkaXR5LgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6IENhbGwgbV9p
bnB1dFR5cGUgbWV0aG9kcyBpbnN0ZWFkIG9mIEhUTUxJbnB1dEVsZW1lbnQncy4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcpOiBDYWxsIG1faW5wdXRUeXBlIG1l
dGhvZHMgaW5zdGVhZCBvZiBIVE1MSW5wdXRFbGVtZW50J3MuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6IE1vdmUg
aW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dmFsdWVNaXNzaW5nKTogIE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTog
TW92ZSBpbXBsZW1lbnRhdGlvbiB0byBJbnB1dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxv
dyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9u
IHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBN
aXNtYXRjaCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRo
b2RzIGluc3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGlu
c3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6IE1ha2UgdG9vTG9uZyBtZXRob2Qg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IEFkZCAidmlydHVh
bCIgYW5kICJPVkVSUklERSIuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Up
OiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxTZWxlY3RFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiBJbXBsZW1l
bnRhdGlvbiBmb3IgSFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOiAgQWRkZWQgZW50cmllcyBm
b3IgbmV3bHkgYWRkZWQgbWV0aG9kcy4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UpOiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBB
ZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKTogQWRkZWQuIEltcGxlbWVudGF0
aW9uIGZvciBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFRleHRBcmVhRWxlbWVudCk6IEFkZGVkIGVudHJpZXMg
Zm9yIG5ld2x5IGFkZGVkIG1ldGhvZHMuIENoYW5nZSB0b29Mb25nIGFuZCB2YWx1ZU1pc3Npbmcg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaCk6IENoYW5nZSBtZXRob2Qgc2lnbmF0dXJlLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6ICBDaGFuZ2VkIGZv
ciBjYWxsaW5nIElucHV0Q2xhc3MgaW5zdGVhZCBvZiBIVE1MSU5wdXRFbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIpOiAgQWRkZWQuIE1vdmVk
IGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFs
aWRhdGlvbk1lc3NhZ2UpOiBBZGRlZC4gIE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBlKTogQWRkZWQgZW50
cmllcyBmb3IgbmV3bHkgYWRkZWQgbWV0aG9kcyBhbmQgdXBkYXRlIG1ldGhvZHMgc2lnbmF0dXJl
LgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6IE1vdmUgYWN0dWFsIGltcGxlbWVu
dGF0aW9uIHRvIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhbmQgZGVyaXZlZCBjbGFzc2VzIGZvciBs
b2NhbGl6aW5nIGltcGxlbWVudGF0aW9uIGNoYW5nZSBvZiBlbGVtZW50cyBhbmQgaW5wdXQgdHlw
ZXMuCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSk6
IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3NpbmcpOiBDaGFuZ2VkIHRvIGNhbGwg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRp
dHlTdGF0ZTo6dHlwZU1pc21hdGNoKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnBhdHRlcm5N
aXNtYXRjaCk6IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0b29Mb25nKTogQ2hhbmdlZCB0byBj
YWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OnJhbmdlVW5kZXJmbG93KTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnJh
bmdlT3ZlcmZsb3cpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0
aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKTogQ2hh
bmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3Rh
dGU6OnZhbGlkKToKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAgICAgKFZh
bGlkaXR5U3RhdGUpOiBSZW1vdmUgY3VzdG9tIHZhbGlkYXRpb24gbWVzc2FnZSByZWxhdGVkIHRo
aW5ncy4KKwogMjAxMi0wNS0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNjU5NC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA2NjVlZmE3NmE5MjJmZTMy
NTJiMGQ0NTdmM2RjZGE4NmU3MzgxMjAxLi43NmRkMGQxNTlmMDc1ZDlkYjY2ZmQ3YTFmZGViZTJk
YTk1OTQ5YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1l
bnQuY3BwCkBAIC0xNTcsNiArMTU3LDY5IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpm
b3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIHJlc2V0Rm9ybU93bmVyKCk7CiB9CiAKK2Jv
b2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21FcnJvcigpIGNvbnN0Cit7CisgICAgY29u
c3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOworICAgIHJldHVy
biBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21WYWxpZGF0aW9uTWVzc2FnZS5p
c0VtcHR5KCk7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0
Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRl
ZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzdGVw
TWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWQo
KSBjb25zdAoreworICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkgfHwgc3RlcE1p
c21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkKKyAgICAgICAg
fHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8IHZhbHVlTWlzc2luZygpIHx8IGN1
c3RvbUVycm9yKCk7CisgICAgcmV0dXJuICFzb21lRXJyb3I7Cit9CisKK2Jvb2wgRm9ybUFzc29j
aWF0ZWRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tVmFsaWRhdGlvbk1lc3Nh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOworfQor
CitTdHJpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGN1c3RvbUVycm9yKCkgPyBtX2N1c3RvbVZhbGlkYXRpb25NZXNzYWdl
IDogU3RyaW5nKCk7Cit9CisKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpzZXRDdXN0b21W
YWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQoreworICAgIG1fY3VzdG9tVmFsaWRhdGlvbk1l
c3NhZ2UgPSBlcnJvcjsKK30KKwogY29uc3QgSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoY29u
c3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCkKIHsKICAgICBpZiAo
YXNzb2NpYXRlZEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCAyODRlMjk4ZmQ5N2U1NDJkMWIw
YjJjZDQ2YmMzNDI4NTFlZDRhMmYxLi43ZGEyZmIzMDVmZmE2NWRiOTI2YTVkZTM2YTYwNjk3ZDc2
NWY4NjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgK
QEAgLTYwLDYgKzYwLDE5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9ybVJlbW92ZWRGcm9tVHJl
ZShjb25zdCBOb2RlKiBmb3JtUm9vdCk7CiAKKyAgICAvLyBWYWxpZGl0eVN0YXRlIGF0dHJpYnV0
ZSBpbXBsZW1lbnRhdGlvbnMKKyAgICB2aXJ0dWFsIGJvb2wgY3VzdG9tRXJyb3IoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21hdGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIHJhbmdlT3ZlcmZsb3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VVbmRlcmZs
b3coKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIHRvb0xvbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21h
dGNoKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHZhbGlkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNv
bnN0IFN0cmluZyYpOworCiBwcm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7
CiAKQEAgLTc2LDYgKzg5LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlRm9ybSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJp
bmcgY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3QgPSAwOwogCkBA
IC04NCw2ICs5OSw3IEBAIHByaXZhdGU6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsK
ICAgICBPd25QdHI8VmFsaWRpdHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBt
X2N1c3RvbVZhbGlkYXRpb25NZXNzYWdlOwogfTsKIAogSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1l
bnQoRm9ybUFzc29jaWF0ZWRFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCAyZjlmMjI1YmNhOWM1NTliMDkyMzRhYTE0NDk1
Nzk0YmE0OGY3MjhmLi43MDIxNzUzNTlhYzdhYWZlM2RhNTc0N2MwZTU3NTcwMzUzZWU4NWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAg
LTQ4NCw3ICs0ODQsOCBAQCB2b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFs
aWRpdHlDaGVjaygpCiAKIHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKIHsKLSAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21F
cnJvck1lc3NhZ2UoZXJyb3IpOworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9t
VmFsaWRpdHkoZXJyb3IpOworICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCiB2b2lk
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9k
ZT4gbmV3Rm9jdXNlZE5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
b3JtQ29udHJvbEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9s
RWxlbWVudC5oCmluZGV4IDYwODQxMWYzNjM2ZmZmOGY3Y2E0NmE3NTUxNzYwZWQzNThhNzIzNWEu
LmNhZmJmNTI5YTUxYWM4NzJlNGVhMzA0MGEyYTkxMzUyZGMyNWVlM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAg
cHVibGljOgogICAgIGJvb2wgY2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lh
dGVkRWxlbWVudD4gPiogdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhp
cyBtdXN0IGJlIGNhbGxlZCB3aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wg
dmFsdWUgaXMgY2hhbmdlZC4KICAgICB2b2lkIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAg
IHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lk
IHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgYm9vbCBy
ZWFkT25seSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZE9ubHk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNmZlNTU5NjVkNGYxZGE3NTk5ZDYyOTAyZDk4
OTFlNDhkNDc5YWVmNy4uN2FlMGFmODk1YTFhYWE5ZjMwYjU5MGJlYTNlNjUzYWIwNGVkYzE1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xOTEsMjcgKzE5
MSwzMiBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAh
bV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaEZvcih2YWx1ZSkKLSAgICAgICAgJiYgIXN0ZXBNaXNt
YXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKQotICAgICAgICAm
JiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5zdGVwTWlz
bWF0Y2godmFsdWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFs
dWUpCisgICAgICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSkKICAgICAg
ICAgJiYgIXRvb0xvbmcodmFsdWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAgICAgJiYgIXBhdHRl
cm5NaXNtYXRjaCh2YWx1ZSkKLSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAg
ICAgICYmICFtX2lucHV0VHlwZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQorICAgICAgICAmJiAh
bV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxl
bWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRv
b0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBl
TWlzbWF0Y2goKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnR5
cGVNaXNtYXRjaCgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyhj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1p
c3NpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZh
bHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnZhbHVlTWlz
c2luZyh2YWx1ZSgpKTsKIH0KIAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0
dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRlcm5N
aXNtYXRjaCh2YWx1ZSk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBl
LT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2sp
IGNvbnN0CkBAIC0yMzIsNjggKzIzNyw0MCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xv
bmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKQogICAg
IHJldHVybiBudW1HcmFwaGVtZUNsdXN0ZXJzKHZhbHVlKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtYXgpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJm
bG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZh
bHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlVW5k
ZXJmbG93KHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZs
b3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFu
Z2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJm
bG93KHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJh
bmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptaW5p
bXVtKCkgY29uc3QKK1N0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5taW5pbXVtKCk7Ci19Ci0KLWRvdWJs
ZSBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPm1heGltdW0oKTsKLX0KLQotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0
Y2goY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBp
ZiAoIWdldEFsbG93ZWRWYWx1ZVN0ZXAoJnN0ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAg
IGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotU3RyaW5n
IEhUTUxJbnB1dEVsZW1lbnQ6Om1pbmltdW1TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBt
X2lucHV0VHlwZS0+c2VyaWFsaXplKG1pbmltdW0oKSk7Ci19CisgICAgaWYgKGN1c3RvbUVycm9y
KCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwogCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6bWF4aW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
aW5wdXRUeXBlLT5zZXJpYWxpemUobWF4aW11bSgpKTsKLX0KLQotU3RyaW5nIEhUTUxJbnB1dEVs
ZW1lbnQ6OnN0ZXBCYXNlU3RyaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnNlcmlhbGl6ZShtX2lucHV0VHlwZS0+c3RlcEJhc2UoKSk7CisgICAgcmV0dXJuIG1faW5wdXRU
eXBlLT52YWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6
c3RlcFN0cmluZygpIGNvbnN0Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNv
bnN0CiB7Ci0gICAgZG91YmxlIHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZz
dGVwKSkgewotICAgICAgICAvLyBzdGVwU3RyaW5nKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGlm
IHN0ZXBNaXNtYXRjaCgpIGNhbiBiZSB0cnVlLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICByZXR1cm4gc2VyaWFsaXpl
Rm9yTnVtYmVyVHlwZShzdGVwIC8gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVs
ZW1lbnQ6OnR5cGVNaXNtYXRjaFRleHQoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6
Om1heGltdW0oKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNo
VGV4dCgpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWF4aW11bSgpOwogfQogCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1
dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT52YWx1ZU1pc3NpbmdUZXh0KCk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5w
dXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVu
dDo6Z2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CkBAIC0xMjc1LDEyICsx
MjUyLDEyIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aGFzVW5hY2NlcHRhYmxlVmFsdWUoKSBj
b25zdAogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzSW5SYW5nZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmICFyYW5nZVVu
ZGVyZmxvdyh2YWx1ZSgpKSAmJiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKKyAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIW1faW5wdXRUeXBlLT5y
YW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFs
dWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYg
KHJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IHJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOworICAg
IHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAobV9pbnB1
dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpIHx8IG1faW5wdXRUeXBlLT5yYW5nZU92ZXJm
bG93KHZhbHVlKCkpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpuZWVkc1N1c3BlbnNp
b25DYWxsYmFjaygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUz
NGEwM2U2MzVlOWRmYzM0MGIwNTBkZGUxYmRhY2E5ODM4NzU4OWQuLjVjMmU4MTIyZmEyMTk3YTA5
OTAzZmUxODJiNmMxZGIzNTVlYjIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5oCkBAIC00OCwxMyArNDgsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRBdXRvY29tcGxldGUoKSBjb25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAg
Ym9vbCB0eXBlTWlzbWF0Y2goKSBjb25zdDsKLSAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVz
IHRoZSBzcGVjaWZpZWQgc3RyaW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCi0gICAg
Ym9vbCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBwYXR0ZXJu
TWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0
cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7Ci0gICAgYm9vbCByYW5nZVVuZGVy
Zmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3Qg
U3RyaW5nJikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVh
bCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0
b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9W
RVJSSURFOworCiAgICAgLy8gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRl
LCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KICAg
ICBkb3VibGUgbWluaW11bSgpIGNvbnN0OwogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFs
dWUgZm9yIHR5cGU9ZGF0ZSwgbnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Ig
b3RoZXIgdHlwZXMuCkBAIC02NCwxNSArNjYsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBm
YWxzZSBpZiB0aGVyZSBpcyBubyAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFs
bG93ZWRWYWx1ZVN0ZXAoZG91YmxlKikgY29uc3Q7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0
ZS4KLSAgICBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBTdHJp
bmcgbWluaW11bVN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyBtYXhpbXVtU3RyaW5nKCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHN0ZXBCYXNlU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBT
dHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0OwotICAg
IFN0cmluZyB2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3Q7Ci0KICAgICAvLyBJbXBsZW1lbnRhdGlv
bnMgb2YgSFRNTElucHV0RWxlbWVudDo6c3RlcFVwKCkgYW5kIHN0ZXBEb3duKCkuCiAgICAgdm9p
ZCBzdGVwVXAoaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzdGVwRG93bihpbnQsIEV4
Y2VwdGlvbkNvZGUmKTsKQEAgLTMyNSw2ICszMTgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBz
dXBwb3J0c01heExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGlzVGV4dFR5cGUoKTsgfQogICAgIGJv
b2wgaXNUZXh0VHlwZSgpIGNvbnN0OworICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBO
ZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRz
UGxhY2Vob2xkZXIoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGFjZWhvbGRlckVtcHR5
KCkgY29uc3QgT1ZFUlJJREU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxP
YmplY3RFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgK
aW5kZXggYTBlNjYzNzdhNjQxODUzMGFkODU4Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFh
ZThjYzA2ZjFiMDg2OTgzMWViMWIyM2NiMDQ5OWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0
aGF0IHRoZSBvYmplY3QgZWxlbWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50
IHZhbGlkYXRpb24uCiAgICAgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICBib29sIGNoZWNrVmFsaWRpdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
dm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKICAgICB1
c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpyZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJl
ZDxDb250YWluZXJOb2RlPjo6ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxTZWxlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVs
ZW1lbnQuY3BwCmluZGV4IDU4YTlhNzM5Y2UxMDc0Mjg3ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEu
LmVlNTdkYWU4MDQxN2IxNzVkZTY4ZDFjZjIzODUwYzFlYWI4ZTFhYmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVk
ZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24u
aCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5n
cy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29u
dGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTE0NSw4ICsxNDYsMjIgQEAgYm9vbCBIVE1M
U2VsZWN0RWxlbWVudDo6aGFzUGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0CiAgICAgcmV0
dXJuICFsaXN0SW5kZXggJiYgb3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKTsKIH0KIAorU3RyaW5n
IEhUTUxTZWxlY3RFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgaWYg
KCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGN1
c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwor
CisgICAgcmV0dXJuIHZhbHVlTWlzc2luZygpID8gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3Np
bmdGb3JTZWxlY3RUZXh0KCkgOiBTdHJpbmcoKTsKK30KKwogYm9vbCBIVE1MU2VsZWN0RWxlbWVu
dDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAppbmRleCA1MjY2NWUxOTViNDkxYmUzYjA0NWM1YjJkYmQyNjU2ZTE4NmRlMDk2Li44MmI3
MjczMzg4NjJjMjMyNzc0NGVhMjVlMzE1OTQxOWU4MzVhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCkBAIC00Niw3ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IG9wdGlvblNlbGVjdGVkQnlVc2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENoYW5nZUV2ZW50
LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICAvLyBGb3IgVmFs
aWRpdHlTdGF0ZQotICAgIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgdmFsdWVNaXNzaW5nKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgo
KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggNjM2NjNhOTdmY2M3YjBjYmZmZWY5MWY1OWI0N2Y1ZTRlMTRmYjI0ZC4uMzVjNTYwMjgw
MWY3OTMyMzBmNWM4ZWI4NDMyMjA5ZjM1MWUwZWUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRm9y
bURhdGFMaXN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRy
b2xNdWx0aUxpbmUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5o
IgpAQCAtNDIzLDYgKzQyNCwzMyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldE1heExl
bmd0aChpbnQgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBzZXRBdHRyaWJ1
dGUobWF4bGVuZ3RoQXR0ciwgU3RyaW5nOjpudW1iZXIobmV3VmFsdWUpKTsKIH0KIAorU3RyaW5n
IEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBp
ZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAo
Y3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7
CisKKyAgICBpZiAodmFsdWVNaXNzaW5nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKKworICAgIGlmICh0b29Mb25nKCkpCisgICAgICAgIHJl
dHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFs
dWUoKSksIG1heExlbmd0aCgpKTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBI
VE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVybiB3
aWxsVmFsaWRhdGUoKSAmJiB2YWx1ZU1pc3NpbmcodmFsdWUoKSk7Cit9CisKK2Jvb2wgSFRNTFRl
eHRBcmVhRWxlbWVudDo6dG9vTG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0
ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCiBib29sIEhUTUxU
ZXh0QXJlYUVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNr
RGlydHlGbGFnIGNoZWNrKSBjb25zdAogewogICAgIC8vIFJldHVybiBmYWxzZSBmb3IgdGhlIGRl
ZmF1bHQgdmFsdWUgb3IgdmFsdWUgc2V0IGJ5IHNjcmlwdCBldmVuIGlmIGl0IGlzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4IGExOWE0NzFhOTY0YmE5MGQz
MGFkNzQ4OTQzMDEzNmYyNDk1NzNjMWMuLmQ3NTVkODgyN2Y3NmY2ZWU4NWY0YzRkYzI4OTU3ZGRi
ZGY3NWRiZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBA
IC00Nyw4ICs0NywxMCBAQCBwdWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJl
dHVybiB2YWx1ZSgpLmxlbmd0aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRNYXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9v
bCB2YWx1ZU1pc3NpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1
aXJlZEZvcm1Db250cm9sKCkgJiYgIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUu
aXNFbXB0eSgpOyB9Ci0gICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZykgY29uc3Q7CisgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKKyAgICB2aXJ0dWFs
IFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9v
TG9uZygpIGNvbnN0IE9WRVJSSURFOwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmlu
ZyYpIGNvbnN0OwogICAgIAogICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdDsKQEAgLTEwOCw2ICsxMTAsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBi
b29sIHNob3VsZFVzZUlucHV0TWV0aG9kKCk7CiAKKyAgICBib29sIHZhbHVlTWlzc2luZyhjb25z
dCBTdHJpbmcmIHZhbHVlKSBjb25zdCB7IHJldHVybiBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSAm
JiAhZGlzYWJsZWQoKSAmJiAhcmVhZE9ubHkoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7IH0KKyAgICBi
b29sIHRvb0xvbmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsK
KwogICAgIGludCBtX3Jvd3M7CiAgICAgaW50IG1fY29sczsKICAgICBXcmFwTWV0aG9kIG1fd3Jh
cDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAppbmRleCA5OTcxODJhYmFlN2Q0NGJmYjcwNzlh
NGJhODRjN2VkOTQ1YTk1N2YyLi42Mzg1NmFkZTQzMTFkZDYzYTZjODQzNTEzZDRiOGI3YWJmZjhh
ZDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCkBAIC0yODMsNiArMjgzLDE0IEBAIGJv
b2wgSW5wdXRUeXBlOjpzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50LCBpbnQmIHByZWZl
cnJlZFNpemUpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIElucHV0VHlwZTo6
c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgZG91YmxlIHN0
ZXA7CisgICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBzdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOworfQorCiBib29s
IElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QKIHsK
ICAgICAvLyBOb24tc3VwcG9ydGVkIHR5cGVzIHNob3VsZCBiZSByZWplY3RlZCBieSBIVE1MSW5w
dXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKCkuCkBAIC0zMzgsNiArMzQ2LDQxIEBAIFN0
cmluZyBJbnB1dFR5cGU6OnZhbHVlTWlzc2luZ1RleHQoKSBjb25zdAogICAgIHJldHVybiB2YWxp
ZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKIH0KIAorU3RyaW5nIElucHV0VHlwZTo6
dmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGNvbnN0IFN0cmluZyB2YWx1ZSA9IGVs
ZW1lbnQoKS0+dmFsdWUoKTsKKworICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGNo
ZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQorICAgIC8vIHZh
bHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFzIG90aGVyIHZhbGlkYXRp
b24gZXJyb3JzLgorICAgIGlmICh2YWx1ZU1pc3NpbmcodmFsdWUpKQorICAgICAgICByZXR1cm4g
dmFsdWVNaXNzaW5nVGV4dCgpOworCisgICAgaWYgKHR5cGVNaXNtYXRjaCgpKQorICAgICAgICBy
ZXR1cm4gdHlwZU1pc21hdGNoVGV4dCgpOworCisgICAgaWYgKHBhdHRlcm5NaXNtYXRjaCh2YWx1
ZSkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQo
KTsKKworICAgIGlmIChlbGVtZW50KCktPnRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlk
YXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSksIGVsZW1l
bnQoKS0+bWF4TGVuZ3RoKCkpOworCisgICAgaWYgKHJhbmdlVW5kZXJmbG93KHZhbHVlKSkKKyAg
ICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KHNlcmlhbGl6
ZShtaW5pbXVtKCkpKTsKKworICAgIGlmIChyYW5nZU92ZXJmbG93KHZhbHVlKSkKKyAgICAgICAg
cmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoc2VyaWFsaXplKG1heGlt
dW0oKSkpOworCisgICAgaWYgKHN0ZXBNaXNtYXRjaCh2YWx1ZSkpIHsKKyAgICAgICAgU3RyaW5n
IHN0ZXBTdHJpbmc7CisgICAgICAgIGRvdWJsZSBzdGVwOworICAgICAgICBpZiAoZ2V0QWxsb3dl
ZFZhbHVlU3RlcCgmc3RlcCkpCisgICAgICAgICAgICBzdGVwU3RyaW5nID0gc2VyaWFsaXplRm9y
TnVtYmVyVHlwZShzdGVwIC8gc3RlcFNjYWxlRmFjdG9yKCkpOworICAgICAgICByZXR1cm4gdmFs
aWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KHNlcmlhbGl6ZShzdGVwQmFzZSgpKSwgc3Rl
cFN0cmluZyk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB2b2lkIElucHV0
VHlwZTo6aGFuZGxlQ2xpY2tFdmVudChNb3VzZUV2ZW50KikKIHsKIH0KQEAgLTg3MCw3ICs5MTMs
NyBAQCBkb3VibGUgSW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcChkb3VibGUgbmV3VmFsdWUs
IGRvdWJsZSBzdGVwLCB1bnNpZ25lZCBjdXJyZQogICAgIHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxh
Y2VzOwogICAgIGRvdWJsZSBiYXNlID0gc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcygmYmFzZURl
Y2ltYWxQbGFjZXMpOwogICAgIGJhc2VEZWNpbWFsUGxhY2VzID0gbWluKGJhc2VEZWNpbWFsUGxh
Y2VzLCAxNnUpOwotICAgIGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZh
bHVlKCkpKSB7CisgICAgaWYgKHN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CiAg
ICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChz
dGVwRGVjaW1hbFBsYWNlcywgY3VycmVudERlY2ltYWxQbGFjZXMpKSk7CiAgICAgICAgIG5ld1Zh
bHVlID0gcm91bmQobmV3VmFsdWUgKiBzY2FsZSkgLyBzY2FsZTsKICAgICB9IGVsc2UgewpAQCAt
MTAyMyw3ICsxMDY2LDcgQEAgdm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQg
bikKICAgICAgICAgZWxlbWVudCgpLT5zZXRWYWx1ZShzZXJpYWxpemUoc2lnbiA+IDAgPyBtaW5p
bXVtKCkgOiBtYXhpbXVtKCkpLCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVs
c2UgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBpZiAoZWxlbWVudCgpLT5z
dGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgeworICAgICAgICBpZiAoc3RlcE1pc21h
dGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKICAg
ICAgICAgICAgIGRvdWJsZSBuZXdWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBv
dygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgYmFzZURl
Y2ltYWxQbGFjZXMpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAxYzg2Y2IwZmNjYTkz
YTdiMzIxMjg4ZDk4MmU5OGM0ZDljOGM4MGQ2Li44NzY2ZmVjMWM4NzhjNWIxNzA5ODEwNTg1YTVh
YTM3ZmQ1ODJmODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTE0MCw3ICsxNDAsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0
RmllbGRFdmVudEJlaGF2aW9yLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAvLyBWYWxp
ZGF0aW9uIGZ1bmN0aW9ucwotCisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAg
ICAvLyBUeXBlIGNoZWNrIGZvciB0aGUgY3VycmVudCBpbnB1dCB2YWx1ZS4gV2UgZG8gbm90aGlu
ZyBmb3Igc29tZSB0eXBlcwpAQCAtMTU3LDYgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNv
bnN0OwogICAgIHZpcnR1YWwgYm9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRl
ZmF1bHRTaXplLCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBz
dGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkgY29uc3Q7CiAgICAgdmlydHVhbCBk
b3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIGRvdWJsZSBzdGVwQmFzZVdpdGhE
ZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcAppbmRleCBmZTczMTJjMmEzMDJkMzU1N2MwY2VjZjhmNjM0M2QzZWJjYmFjMDYzLi42
NDk3NjVkZjkxNDY4N2Q1NDhmOTBiZjUzMWQ0NDU3ZGY2NjRjNmQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTM4LDE3NyArMzgsNTIgQEAgdXNpbmcgbmFtZXNwYWNl
IEhUTUxOYW1lczsKIAogU3RyaW5nIFZhbGlkaXR5U3RhdGU6OnZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3QKIHsKLSAgICBpZiAoIXRvSFRNTEVsZW1lbnQobV9jb250cm9sKS0+d2lsbFZhbGlkYXRl
KCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIGlmIChjdXN0b21FcnJvcigpKQot
ICAgICAgICByZXR1cm4gbV9jdXN0b21FcnJvck1lc3NhZ2U7Ci0gICAgSFRNTEVsZW1lbnQqIGVs
ZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgYm9vbCBpc0lucHV0RWxlbWVu
dCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFt
ZShpbnB1dFRhZyk7Ci0gICAgYm9vbCBpc1RleHRBcmVhRWxlbWVudCA9IGVsZW1lbnQtPmlzRm9y
bUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZyk7Ci0g
ICAgLy8gVGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlzIG1lYW5pbmdmdWwuIGUu
Zy4gV2UnZCBsaWtlIHRvIHNob3cgdGhlCi0gICAgLy8gdmFsdWVNaXNzaW5nIG1lc3NhZ2UgZXZl
biBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJvcnMuCi0gICAgaWYgKHZh
bHVlTWlzc2luZygpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRh
ZykpCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JT
ZWxlY3RUZXh0KCk7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnZhbHVlTWlzc2lu
Z1RleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4
dCgpOwotICAgIH0KLSAgICBpZiAodHlwZU1pc21hdGNoKCkpIHsKLSAgICAgICAgaWYgKGlzSW5w
dXRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1l
bnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoVGV4dCgpOwotICAgICAgICByZXR1cm4gdmFsaWRh
dGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAgfQotICAgIGlmIChwYXR0ZXJuTWlz
bWF0Y2goKSkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUGF0dGVybk1pc21hdGNo
VGV4dCgpOwotICAgIGlmICh0b29Mb25nKCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVu
dCAmJiAhaXNUZXh0QXJlYUVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0ID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNz
YWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh0ZXh0LT52YWx1ZSgpKSwgdGV4dC0+
bWF4TGVuZ3RoKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VVbmRlcmZsb3coKSkgewotICAgICAg
ICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1RleHQoc3RhdGljX2Nhc3Q8SFRNTElu
cHV0RWxlbWVudCo+KGVsZW1lbnQpLT5taW5pbXVtU3RyaW5nKCkpOwotICAgIH0KLSAgICBpZiAo
cmFuZ2VPdmVyZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVJhbmdlT3ZlcmZs
b3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWF4aW11bVN0
cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHN0ZXBNaXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmICgh
aXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwot
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVwTWlzbWF0Y2hUZXh0KGlucHV0LT5z
dGVwQmFzZVN0cmluZygpLCBpbnB1dC0+c3RlcFN0cmluZygpKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgVmFsaWRpdHlTdGF0ZTo6c2V0Q3VzdG9tRXJyb3JNZXNz
YWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBtX2N1c3RvbUVycm9yTWVzc2FnZSA9
IG1lc3NhZ2U7Ci0gICAgaWYgKG1fY29udHJvbC0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSkKLSAg
ICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fY29udHJvbCktPnNl
dE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbGlkYXRpb25N
ZXNzYWdlKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dmFsdWVNaXNzaW5nKCkgY29uc3QK
IHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsK
LSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRN
TElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxl
bWVudCk7Ci0gICAgICAgIHJldHVybiBpbnB1dC0+dmFsdWVNaXNzaW5nKGlucHV0LT52YWx1ZSgp
KTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpKSB7Ci0g
ICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3RhdGljX2Nhc3Q8SFRNTFRl
eHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdGV4dEFyZWEtPnZhbHVl
TWlzc2luZyh0ZXh0QXJlYS0+dmFsdWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50LT5oYXNU
YWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJldHVybiB0b0hUTUxTZWxlY3RFbGVtZW50KGVs
ZW1lbnQpLT52YWx1ZU1pc3NpbmcoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG1f
Y29udHJvbC0+dmFsdWVNaXNzaW5nKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6dHlwZU1p
c21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1l
bnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxJbnB1
dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoKCk7CisgICAgcmV0dXJuIG1fY29udHJv
bC0+dHlwZU1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cGF0dGVybk1pc21h
dGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQo
bV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0
aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgcmV0dXJuIGlucHV0LT5w
YXR0ZXJuTWlzbWF0Y2goaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnBh
dHRlcm5NaXNtYXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnRvb0xvbmcoKSBjb25z
dAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wp
OwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkgewotICAgICAgICBI
VE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihl
bGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT50b29Mb25nKGlucHV0LT52YWx1ZSgpLCBI
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tEaXJ0eUZsYWcpOwotICAgIH0KLSAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykpIHsKLSAgICAgICAgSFRNTFRleHRB
cmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxIVE1MVGV4dEFyZWFFbGVtZW50Kj4o
ZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB0ZXh0QXJlYS0+dG9vTG9uZyh0ZXh0QXJlYS0+dmFs
dWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2wtPnRvb0xvbmcoKTsKIH0K
IAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZVVuZGVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFl
bGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVu
dCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VVbmRlcmZsb3coaW5wdXQtPnZh
bHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdlVW5kZXJmbG93KCk7CiB9CiAKIGJv
b2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50
LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVt
ZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhU
TUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVs
ZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VPdmVyZmxvdyhpbnB1dC0+dmFsdWUoKSk7
CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VPdmVyZmxvdygpOwogfQogCiBib29sIFZhbGlk
aXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFs
aWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNU
YWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVs
ZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwot
ICAgIHJldHVybiBpbnB1dC0+c3RlcE1pc21hdGNoKGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1
cm4gbV9jb250cm9sLT5zdGVwTWlzbWF0Y2goKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpj
dXN0b21FcnJvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxF
bGVtZW50KG1fY29udHJvbCk7Ci0gICAgcmV0dXJuIGVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpICYm
ICFtX2N1c3RvbUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+
Y3VzdG9tRXJyb3IoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjp2YWxpZCgpIGNvbnN0CiB7
Ci0gICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2goKSB8fCBzdGVwTWlzbWF0Y2goKSB8
fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3coKQotICAgICAgICB8fCB0b29Mb25n
KCkgfHwgcGF0dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNzaW5nKCkgfHwgY3VzdG9tRXJyb3Io
KTsKLSAgICByZXR1cm4gIXNvbWVFcnJvcjsKKyAgICByZXR1cm4gbV9jb250cm9sLT52YWxpZCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9W
YWxpZGl0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAppbmRl
eCA0YTk2NDg4YmQ1NTY4ZjEzZTlhMDg0OWEzZTBiMjIzYzUxZDRmNjBlLi4xN2U5NGM5Nzg4ZGJj
MDNhY2QxMDVhMzJkMTA5ZDY1YjEyNWFhMmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3Rh
dGUuaApAQCAtNTcsMTEgKzU3LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBWYWxpZGl0eVN0
YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkgOiBtX2NvbnRyb2woY29udHJvbCkg
eyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29sb3JTdHJpbmcoY29uc3QgU3RyaW5nJik7
Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVzcyhjb25zdCBTdHJpbmcmKTsKLQog
ICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9sOwotICAgIFN0cmluZyBtX2N1c3Rv
bUVycm9yTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141366</attachid>
            <date>2012-05-11 02:50:31 -0700</date>
            <delta_ts>2012-05-13 19:03:08 -0700</delta_ts>
            <desc>Patch 11</desc>
            <filename>bug-86058-20120511185030.patch</filename>
            <type>text/plain</type>
            <size>35188</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjgwZTc5YjllNzRjNmU1
NTJjY2RhMWJkMTgzODVmMTA0NTY2NWQ1ZC4uN2FhYzgwZDRmNGI2Yjk0ZjliMTIxZjcxMzRmNmQ2
NWQxZmZjNDVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBB
ZGRlZC4gQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gUmV0dXJucyBjdXN0b20gZXJyb3IgbXNz
YWdlIGluIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0
YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3cpOiBBZGRlZC4gIENhbGxlZCBmcm9t
IFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOiBBZGRlZC4g
IENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNo
KTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRv
b0xvbmcpOiBBZGRlZC4gIENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dHlwZU1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlz
IGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBU
aGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRh
dGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVk
LiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eSk6IEFkZGVkLiAgc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgIChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZCBuZXcgaW5zdGFuY2UgdmFsdWUgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFs
aWRpdHkpOiBDaGFuZ2VkLiBDYWxscyBiYXNlIGNsYXNzIHNldEN1c3RvbVZhbGlkaXR5LgorICAg
ICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1D
b250cm9sRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6IENhbGwgbV9p
bnB1dFR5cGUgbWV0aG9kcyBpbnN0ZWFkIG9mIEhUTUxJbnB1dEVsZW1lbnQncy4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcpOiBDYWxsIG1faW5wdXRUeXBlIG1l
dGhvZHMgaW5zdGVhZCBvZiBIVE1MSW5wdXRFbGVtZW50J3MuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6IE1vdmUg
aW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dmFsdWVNaXNzaW5nKTogIE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBl
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTog
TW92ZSBpbXBsZW1lbnRhdGlvbiB0byBJbnB1dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5w
dXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxv
dyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9u
IHRvIElucHV0VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBN
aXNtYXRjaCk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRo
b2RzIGluc3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGlu
c3RlYWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxl
bWVudC5oOgorICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6IE1ha2UgdG9vTG9uZyBtZXRob2Qg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IEFkZCAidmlydHVh
bCIgYW5kICJPVkVSUklERSIuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Up
OiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxTZWxlY3RFbGVtZW50LgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiBJbXBsZW1l
bnRhdGlvbiBmb3IgSFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOiAgQWRkZWQgZW50cmllcyBm
b3IgbmV3bHkgYWRkZWQgbWV0aG9kcy4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlv
bk1lc3NhZ2UpOiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBB
ZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKTogQWRkZWQuIEltcGxlbWVudGF0
aW9uIGZvciBIVE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5oOgorICAgICAgICAoSFRNTFRleHRBcmVhRWxlbWVudCk6IEFkZGVkIGVudHJpZXMg
Zm9yIG5ld2x5IGFkZGVkIG1ldGhvZHMuIENoYW5nZSB0b29Mb25nIGFuZCB2YWx1ZU1pc3Npbmcg
cHJpdmF0ZS4KKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnB1dFR5cGU6OnN0ZXBNaXNtYXRjaCk6IENoYW5nZSBtZXRob2Qgc2lnbmF0dXJlLgorICAg
ICAgICAoV2ViQ29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6ICBDaGFuZ2VkIGZv
ciBjYWxsaW5nIElucHV0Q2xhc3MgaW5zdGVhZCBvZiBIVE1MSU5wdXRFbGVtZW50LgorICAgICAg
ICAoV2ViQ29yZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIpOiAgQWRkZWQuIE1vdmVk
IGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFs
aWRhdGlvbk1lc3NhZ2UpOiBBZGRlZC4gIE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAg
ICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBlKTogQWRkZWQgZW50
cmllcyBmb3IgbmV3bHkgYWRkZWQgbWV0aG9kcyBhbmQgdXBkYXRlIG1ldGhvZHMgc2lnbmF0dXJl
LgorICAgICAgICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6IE1vdmUgYWN0dWFsIGltcGxlbWVu
dGF0aW9uIHRvIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhbmQgZGVyaXZlZCBjbGFzc2VzIGZvciBs
b2NhbGl6aW5nIGltcGxlbWVudGF0aW9uIGNoYW5nZSBvZiBlbGVtZW50cyBhbmQgaW5wdXQgdHlw
ZXMuCisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSk6
IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3NpbmcpOiBDaGFuZ2VkIHRvIGNhbGwg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRp
dHlTdGF0ZTo6dHlwZU1pc21hdGNoKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnBhdHRlcm5N
aXNtYXRjaCk6IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2Qu
CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0b29Mb25nKTogQ2hhbmdlZCB0byBj
YWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OnJhbmdlVW5kZXJmbG93KTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lh
dGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnJh
bmdlT3ZlcmZsb3cpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0
aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKTogQ2hh
bmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdl
YkNvcmU6OlZhbGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3Rh
dGU6OnZhbGlkKToKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAgICAgKFZh
bGlkaXR5U3RhdGUpOiBSZW1vdmUgY3VzdG9tIHZhbGlkYXRpb24gbWVzc2FnZSByZWxhdGVkIHRo
aW5ncy4KKwogMjAxMi0wNS0xMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjExNjcyNy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcAppbmRleCA2NjVlZmE3
NmE5MjJmZTMyNTJiMGQ0NTdmM2RjZGE4NmU3MzgxMjAxLi43NmRkMGQxNTlmMDc1ZDlkYjY2ZmQ3
YTFmZGViZTJkYTk1OTQ5YWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1B
c3NvY2lhdGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2Np
YXRlZEVsZW1lbnQuY3BwCkBAIC0xNTcsNiArMTU3LDY5IEBAIHZvaWQgRm9ybUFzc29jaWF0ZWRF
bGVtZW50Ojpmb3JtQXR0cmlidXRlQ2hhbmdlZCgpCiAgICAgICAgIHJlc2V0Rm9ybU93bmVyKCk7
CiB9CiAKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21FcnJvcigpIGNvbnN0Cit7
CisgICAgY29uc3QgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KHRoaXMpOwor
ICAgIHJldHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21WYWxpZGF0aW9u
TWVzc2FnZS5pc0VtcHR5KCk7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpwYXR0
ZXJuTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzdGVwTWlzbWF0Y2goKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRvb0xvbmcoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dmFsaWQoKSBjb25zdAoreworICAgIGJvb2wgc29tZUVycm9yID0gdHlwZU1pc21hdGNoKCkg
fHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5nZU92ZXJmbG93KCkK
KyAgICAgICAgfHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8IHZhbHVlTWlzc2lu
ZygpIHx8IGN1c3RvbUVycm9yKCk7CisgICAgcmV0dXJuICFzb21lRXJyb3I7Cit9CisKK2Jvb2wg
Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tVmFsaWRh
dGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1c3RvbVZhbGlkYXRpb25NZXNz
YWdlOworfQorCitTdHJpbmcgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2Fn
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGN1c3RvbUVycm9yKCkgPyBtX2N1c3RvbVZhbGlkYXRp
b25NZXNzYWdlIDogU3RyaW5nKCk7Cit9CisKK3ZvaWQgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojpz
ZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmIGVycm9yKQoreworICAgIG1fY3VzdG9tVmFs
aWRhdGlvbk1lc3NhZ2UgPSBlcnJvcjsKK30KKwogY29uc3QgSFRNTEVsZW1lbnQqIHRvSFRNTEVs
ZW1lbnQoY29uc3QgRm9ybUFzc29jaWF0ZWRFbGVtZW50KiBhc3NvY2lhdGVkRWxlbWVudCkKIHsK
ICAgICBpZiAoYXNzb2NpYXRlZEVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaAppbmRleCAyODRlMjk4ZmQ5
N2U1NDJkMWIwYjJjZDQ2YmMzNDI4NTFlZDRhMmYxLi45MmViOGQ3ZWZiZTc4MmE1MTk1MDhmYzNj
MzUyYzk5ZDYzYjMzYWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRF
bGVtZW50LmgKQEAgLTYwLDYgKzYwLDIyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZm9ybVJlbW92
ZWRGcm9tVHJlZShjb25zdCBOb2RlKiBmb3JtUm9vdCk7CiAKKyAgICAvLyBWYWxpZGl0eVN0YXRl
IGF0dHJpYnV0ZSBpbXBsZW1lbnRhdGlvbnMKKyAgICBib29sIGN1c3RvbUVycm9yKCkgY29uc3Q7
CisKKyAgICAvLyBPdmVycmlkZSBmdW5jdGlvbnMgZm9yIHBhdHRlck1pc21hdGNoLCByYW5nZU92
ZXJmbG93LCByYW5nZXJVbmRlcmZsb3csCisgICAgLy8gc3RlcE1pc21hdGNoLCB0b29Mb25nIGFu
ZCB2YWx1ZU1pc3NpbmcgbXVzdCBjYWxsIHdpbGxWYWxpZGF0ZSBtZXRob2QuCisgICAgdmlydHVh
bCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZU92
ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkgY29uc3Q7
CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCB0b29Mb25nKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0
cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OworICAgIGJvb2wgdmFsaWQoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJik7CisKIHBy
b3RlY3RlZDoKICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKTsKIApAQCAtNzYsNiArOTIsOCBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VGb3JtKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUZvcm0oKTsKIAorICAgIFN0cmluZyBjdXN0b21WYWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBmb3JtQ29udHJvbE5hbWUoKSBjb25zdCA9IDA7CiAKQEAgLTg0LDYgKzEwMiw3IEBAIHBy
aXZhdGU6CiAKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1fZm9ybTsKICAgICBPd25QdHI8VmFsaWRp
dHlTdGF0ZT4gbV92YWxpZGl0eVN0YXRlOworICAgIFN0cmluZyBtX2N1c3RvbVZhbGlkYXRpb25N
ZXNzYWdlOwogfTsKIAogSFRNTEVsZW1lbnQqIHRvSFRNTEVsZW1lbnQoRm9ybUFzc29jaWF0ZWRF
bGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCAyZjlmMjI1YmNhOWM1NTliMDkyMzRhYTE0NDk1Nzk0YmE0OGY3MjhmLi43MDIx
NzUzNTlhYzdhYWZlM2RhNTc0N2MwZTU3NTcwMzUzZWU4NWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4NCw3ICs0ODQsOCBAQCB2
b2lkIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OnNldE5lZWRzVmFsaWRpdHlDaGVjaygpCiAKIHZv
aWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5n
JiBlcnJvcikKIHsKLSAgICB2YWxpZGl0eSgpLT5zZXRDdXN0b21FcnJvck1lc3NhZ2UoZXJyb3Ip
OworICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkoZXJyb3IpOwor
ICAgIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwogfQogCiB2b2lkIEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpc3BhdGNoQmx1ckV2ZW50KFBhc3NSZWZQdHI8Tm9kZT4gbmV3Rm9jdXNlZE5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oCmluZGV4IDYw
ODQxMWYzNjM2ZmZmOGY3Y2E0NmE3NTUxNzYwZWQzNThhNzIzNWEuLmNhZmJmNTI5YTUxYWM4NzJl
NGVhMzA0MGEyYTkxMzUyZGMyNWVlM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZvcm1Db250cm9sRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1Db250cm9sRWxlbWVudC5oCkBAIC0xMDEsNyArMTAxLDcgQEAgcHVibGljOgogICAgIGJvb2wg
Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4gPiogdW5o
YW5kbGVkSW52YWxpZENvbnRyb2xzID0gMCk7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCB3
aGVuIGEgdmFsaWRhdGlvbiBjb25zdHJhaW50IG9yIGNvbnRyb2wgdmFsdWUgaXMgY2hhbmdlZC4K
ICAgICB2b2lkIHNldE5lZWRzVmFsaWRpdHlDaGVjaygpOwotICAgIHZvaWQgc2V0Q3VzdG9tVmFs
aWRpdHkoY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5
KGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgYm9vbCByZWFkT25seSgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVhZE9ubHk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVu
dC5jcHAKaW5kZXggNzc4ZWQyNTdhZDg0ZTZlMWE5YTBiMjEyOWY1OTI4NGI0MGE4NzkzZi4uZDZj
ZWNjODg2NDkzNWFmYzBjMmUxNGY5MDMzMDQ3N2NlMjkwN2FiMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xOTEsMjcgKzE5MSwzMiBAQCBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiAhbV9pbnB1dFR5cGUtPnR5cGVN
aXNtYXRjaEZvcih2YWx1ZSkKLSAgICAgICAgJiYgIXN0ZXBNaXNtYXRjaCh2YWx1ZSkKLSAgICAg
ICAgJiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKQotICAgICAgICAmJiAhcmFuZ2VPdmVyZmxvdyh2
YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5zdGVwTWlzbWF0Y2godmFsdWUpCisgICAg
ICAgICYmICFtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUpCisgICAgICAgICYmICFt
X2lucHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSkKICAgICAgICAgJiYgIXRvb0xvbmcodmFs
dWUsIElnbm9yZURpcnR5RmxhZykKLSAgICAgICAgJiYgIXBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkK
LSAgICAgICAgJiYgIXZhbHVlTWlzc2luZyh2YWx1ZSk7CisgICAgICAgICYmICFtX2lucHV0VHlw
ZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1dFR5cGUtPnZhbHVl
TWlzc2luZyh2YWx1ZSk7Cit9CisKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRvb0xvbmcodmFsdWUoKSwgQ2hl
Y2tEaXJ0eUZsYWcpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50eXBlTWlzbWF0Y2goKTsKKyAgICBy
ZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnR5cGVNaXNtYXRjaCgpOwogfQog
Ci1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAorYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKTsKKyAgICByZXR1cm4g
d2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZyh2YWx1ZSgpKTsKIH0K
IAotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSk7Cisg
ICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2go
dmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6dG9vTG9uZyhjb25zdCBTdHJp
bmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CkBAIC0yMzIsNjgg
KzIzNyw0MCBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKQogICAgIHJldHVybiBudW1HcmFwaGVt
ZUNsdXN0ZXJzKHZhbHVlKSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtYXgpOwogfQogCi1ib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYgdmFsdWUpIGNv
bnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlVW5kZXJmbG93KCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKTsKKyAgICByZXR1cm4g
d2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpOwog
fQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKTsKKyAgICBy
ZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUo
KSk7CiB9CiAKLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50OjptaW5pbXVtKCkgY29uc3QKK1N0cmlu
ZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1faW5wdXRUeXBlLT5taW5pbXVtKCk7Ci19Ci0KLWRvdWJsZSBIVE1MSW5wdXRFbGVtZW50
OjptYXhpbXVtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1heGltdW0oKTsK
LX0KLQotYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKLXsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRWYWx1
ZVN0ZXAoJnN0ZXApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1faW5wdXRU
eXBlLT5zdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOwotfQorICAgIGlmICghd2lsbFZhbGlkYXRl
KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6
Om1pbmltdW1TdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2VyaWFs
aXplKG1pbmltdW0oKSk7Ci19CisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAgICAgIHJldHVy
biBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOwogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6
bWF4aW11bVN0cmluZygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxp
emUobWF4aW11bSgpKTsKLX0KLQotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBCYXNlU3Ry
aW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtX2lucHV0
VHlwZS0+c3RlcEJhc2UoKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWxpZGF0aW9uTWVz
c2FnZSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6c3RlcFN0cmluZygpIGNvbnN0
Citkb3VibGUgSFRNTElucHV0RWxlbWVudDo6bWluaW11bSgpIGNvbnN0CiB7Ci0gICAgZG91Ymxl
IHN0ZXA7Ci0gICAgaWYgKCFnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkgewotICAgICAgICAv
LyBzdGVwU3RyaW5nKCkgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGlmIHN0ZXBNaXNtYXRjaCgpIGNh
biBiZSB0cnVlLgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIH0KLSAgICByZXR1cm4gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVw
IC8gbV9pbnB1dFR5cGUtPnN0ZXBTY2FsZUZhY3RvcigpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPm1pbmltdW0oKTsKIH0KIAotU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRj
aFRleHQoKSBjb25zdAorZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAog
ewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoVGV4dCgpOworICAgIHJldHVy
biBtX2lucHV0VHlwZS0+bWF4aW11bSgpOwogfQogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6
dmFsdWVNaXNzaW5nVGV4dCgpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNt
YXRjaCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1ZU1pc3NpbmdUZXh0
KCk7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIG1faW5wdXRUeXBlLT5zdGVwTWlzbWF0
Y2godmFsdWUoKSk7CiB9CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6Z2V0QWxsb3dlZFZhbHVl
U3RlcChkb3VibGUqIHN0ZXApIGNvbnN0CkBAIC0xMjc1LDEyICsxMjUyLDEyIEBAIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6aGFzVW5hY2NlcHRhYmxlVmFsdWUoKSBjb25zdAogCiBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OmlzSW5SYW5nZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBl
LT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigpICYmICFyYW5nZVVuZGVyZmxvdyh2YWx1ZSgpKSAm
JiAhcmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBv
cnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgIW1faW5wdXRUeXBlLT5yYW5nZVVuZGVyZmxvdyh2YWx1
ZSgpKSAmJiAhbV9pbnB1dFR5cGUtPnJhbmdlT3ZlcmZsb3codmFsdWUoKSk7CiB9CiAKIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6aXNPdXRPZlJhbmdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9p
bnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkgJiYgKHJhbmdlVW5kZXJmbG93KHZh
bHVlKCkpIHx8IHJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOworICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAobV9pbnB1dFR5cGUtPnJhbmdlVW5kZXJm
bG93KHZhbHVlKCkpIHx8IG1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZhbHVlKCkpKTsKIH0K
IAogYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCmluZGV4IGUzNGEwM2U2MzVlOWRmYzM0MGIw
NTBkZGUxYmRhY2E5ODM4NzU4OWQuLjVjMmU4MTIyZmEyMTk3YTA5OTAzZmUxODJiNmMxZGIzNTVl
YjIxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCkBAIC00OCwxMyAr
NDgsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRBdXRvY29tcGxldGUoKSBj
b25zdDsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB0eXBlTWlzbWF0Y2go
KSBjb25zdDsKLSAgICAvLyB2YWx1ZU1pc3NpbmcoKSBpZ25vcmVzIHRoZSBzcGVjaWZpZWQgc3Ry
aW5nIHZhbHVlIGZvciBDSEVDS0JPWCBhbmQgUkFESU8uCi0gICAgYm9vbCB2YWx1ZU1pc3Npbmco
Y29uc3QgU3RyaW5nJikgY29uc3Q7Ci0gICAgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goY29uc3QgU3Ry
aW5nJikgY29uc3Q7Ci0gICAgYm9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVj
a0RpcnR5RmxhZykgY29uc3Q7Ci0gICAgYm9vbCByYW5nZVVuZGVyZmxvdyhjb25zdCBTdHJpbmcm
KSBjb25zdDsKLSAgICBib29sIHJhbmdlT3ZlcmZsb3coY29uc3QgU3RyaW5nJikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIHBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCByYW5nZU92ZXJmbG93KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRj
aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworCiAgICAgLy8g
UmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdl
LiAgRG9uJ3QgY2FsbCB0aGlzIGZvciBvdGhlciB0eXBlcy4KICAgICBkb3VibGUgbWluaW11bSgp
IGNvbnN0OwogICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHR5cGU9ZGF0ZSwg
bnVtYmVyLCBvciByYW5nZS4gIERvbid0IGNhbGwgdGhpcyBmb3Igb3RoZXIgdHlwZXMuCkBAIC02
NCwxNSArNjYsNiBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGVyZSBpcyBu
byAiYWxsb3dlZCB2YWx1ZSBzdGVwLiIKICAgICBib29sIGdldEFsbG93ZWRWYWx1ZVN0ZXAoZG91
YmxlKikgY29uc3Q7CiAKLSAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZS4KLSAgICBib29sIHN0ZXBN
aXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBTdHJpbmcgbWluaW11bVN0cmluZygp
IGNvbnN0OwotICAgIFN0cmluZyBtYXhpbXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0
ZXBCYXNlU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIHN0ZXBTdHJpbmcoKSBjb25zdDsKLSAg
ICBTdHJpbmcgdHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0OwotICAgIFN0cmluZyB2YWx1ZU1pc3Np
bmdUZXh0KCkgY29uc3Q7Ci0KICAgICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgSFRNTElucHV0RWxl
bWVudDo6c3RlcFVwKCkgYW5kIHN0ZXBEb3duKCkuCiAgICAgdm9pZCBzdGVwVXAoaW50LCBFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBzdGVwRG93bihpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKQEAg
LTMyNSw2ICszMTgsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBzdXBwb3J0c01heExlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIGlzVGV4dFR5cGUoKTsgfQogICAgIGJvb2wgaXNUZXh0VHlwZSgpIGNv
bnN0OworICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBOZWVkc1RvQ2hlY2tEaXJ0eUZs
YWcpIGNvbnN0OwogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGxhY2Vob2xkZXIoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQbGFjZWhvbGRlckVtcHR5KCkgY29uc3QgT1ZFUlJJREU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKaW5kZXggYTBlNjYzNzdhNjQx
ODUzMGFkODU4Mjg4MDc4N2FjNTM0ZTBjNGU2Yi4uMzEzODkzYmFhZThjYzA2ZjFiMDg2OTgzMWVi
MWIyM2NiMDQ5OWFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaApA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgLy8gTm90ZSB0aGF0IHRoZSBvYmplY3QgZWxl
bWVudHMgYXJlIGFsd2F5cyBiYXJyZWQgZnJvbSBjb25zdHJhaW50IHZhbGlkYXRpb24uCiAgICAg
U3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkgeyByZXR1cm4gU3RyaW5nKCk7IH0KICAgICBib29s
IGNoZWNrVmFsaWRpdHkoKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxp
ZGl0eShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRp
dHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREUgeyB9CiAKICAgICB1c2luZyBUcmVlU2hhcmVkPENv
bnRhaW5lck5vZGU+OjpyZWY7CiAgICAgdXNpbmcgVHJlZVNoYXJlZDxDb250YWluZXJOb2RlPjo6
ZGVyZWY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4IDU4
YTlhNzM5Y2UxMDc0Mjg3ZDE0OWIzZTNkYWU5NTdhNmI0M2VjOTEuLmVlNTdkYWU4MDQxN2IxNzVk
ZTY4ZDFjZjIzODUwYzFlYWI4ZTFhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVj
dEVsZW1lbnQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCIKICNpbmNsdWRlICJLZXli
b2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1v
dXNlRXZlbnQuaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKQEAgLTE0NSw4ICsxNDYsMjIgQEAgYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6aGFz
UGxhY2Vob2xkZXJMYWJlbE9wdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuICFsaXN0SW5kZXggJiYg
b3B0aW9uLT52YWx1ZSgpLmlzRW1wdHkoKTsKIH0KIAorU3RyaW5nIEhUTUxTZWxlY3RFbGVtZW50
Ojp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkK
KyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgaWYgKGN1c3RvbUVycm9yKCkpCisgICAg
ICAgIHJldHVybiBjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSgpOworCisgICAgcmV0dXJuIHZhbHVl
TWlzc2luZygpID8gdmFsaWRhdGlvbk1lc3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCkg
OiBTdHJpbmcoKTsKK30KKwogYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6dmFsdWVNaXNzaW5nKCkg
Y29uc3QKIHsKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBpZiAoIWlzUmVxdWlyZWRGb3JtQ29udHJvbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAppbmRleCA1MjY2NWUx
OTViNDkxYmUzYjA0NWM1YjJkYmQyNjU2ZTE4NmRlMDk2Li44MmI3MjczMzg4NjJjMjMyNzc0NGVh
MjVlMzE1OTQxOWU4MzVhM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oCkBAIC00Niw3ICs0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG9wdGlvblNlbGVjdGVkQnlV
c2VyKGludCBpbmRleCwgYm9vbCBkaXNwYXRjaENoYW5nZUV2ZW50LCBib29sIGFsbG93TXVsdGlw
bGVTZWxlY3Rpb24gPSBmYWxzZSk7CiAKICAgICAvLyBGb3IgVmFsaWRpdHlTdGF0ZQotICAgIGJv
b2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1l
c3NhZ2UoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkg
Y29uc3QgT1ZFUlJJREU7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggODI1N2QwZjkzYzNk
MTM1NTJjMDQyNDBmODJiMGZkNWE2ZGJhNzI4My4uM2ZjODE1MTAwZjYzM2ViMjgwNzg5NmM4OTFi
MmYxZDE0ZjQ5OWJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJMb2NhbGl6
ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaCIKICNp
bmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtNDIzLDYgKzQyNCwz
MyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldE1heExlbmd0aChpbnQgbmV3VmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBzZXRBdHRyaWJ1dGUobWF4bGVuZ3RoQXR0ciwg
U3RyaW5nOjpudW1iZXIobmV3VmFsdWUpKTsKIH0KIAorU3RyaW5nIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgp
KQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAg
ICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CisKKyAgICBpZiAodmFsdWVN
aXNzaW5nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1Rl
eHQoKTsKKworICAgIGlmICh0b29Mb25nKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVz
c2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUoKSksIG1heExlbmd0aCgp
KTsKKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50
Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAoreworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiB2
YWx1ZU1pc3NpbmcodmFsdWUoKSk7Cit9CisKK2Jvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9v
TG9uZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHRvb0xvbmcodmFs
dWUoKSwgQ2hlY2tEaXJ0eUZsYWcpOworfQorCiBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnRv
b0xvbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSwgTmVlZHNUb0NoZWNrRGlydHlGbGFnIGNoZWNrKSBj
b25zdAogewogICAgIC8vIFJldHVybiBmYWxzZSBmb3IgdGhlIGRlZmF1bHQgdmFsdWUgb3IgdmFs
dWUgc2V0IGJ5IHNjcmlwdCBldmVuIGlmIGl0IGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCmluZGV4IGExOWE0NzFhOTY0YmE5MGQzMGFkNzQ4OTQzMDEzNmYyNDk1
NzNjMWMuLmQ3NTVkODgyN2Y3NmY2ZWU4NWY0YzRkYzI4OTU3ZGRiZGY3NWRiZDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCkBAIC00Nyw4ICs0NywxMCBAQCBw
dWJsaWM6CiAgICAgaW50IHRleHRMZW5ndGgoKSBjb25zdCB7IHJldHVybiB2YWx1ZSgpLmxlbmd0
aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgbWF4TGVuZ3RoKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRN
YXhMZW5ndGgoaW50LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgYm9vbCB2YWx1ZU1pc3NpbmcoY29u
c3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QgeyByZXR1cm4gaXNSZXF1aXJlZEZvcm1Db250cm9sKCkg
JiYgIWRpc2FibGVkKCkgJiYgIXJlYWRPbmx5KCkgJiYgdmFsdWUuaXNFbXB0eSgpOyB9Ci0gICAg
Ym9vbCB0b29Mb25nKGNvbnN0IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7
CisgICAgLy8gRm9yIFZhbGlkaXR5U3RhdGUKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9u
TWVzc2FnZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3Npbmco
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdG9vTG9uZygpIGNvbnN0IE9WRVJS
SURFOwogICAgIGJvb2wgaXNWYWxpZFZhbHVlKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIAog
ICAgIHZpcnR1YWwgSFRNTEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQoKSBjb25zdDsKQEAgLTEw
OCw2ICsxMTAsOSBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFVzZUlucHV0
TWV0aG9kKCk7CiAKKyAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdCB7IHJldHVybiBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSAmJiAhZGlzYWJsZWQoKSAmJiAh
cmVhZE9ubHkoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7IH0KKyAgICBib29sIHRvb0xvbmcoY29uc3Qg
U3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKKwogICAgIGludCBtX3Jvd3M7
CiAgICAgaW50IG1fY29sczsKICAgICBXcmFwTWV0aG9kIG1fd3JhcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5w
dXRUeXBlLmNwcAppbmRleCBjZjEyNWM5ZTAxODZkNjQ5ZGQ3NWViODVkODVkYTZhODZlMTc3ZGE4
Li4xNDZkOTE4OWM3YzM4MzM5ZTFlOTAwMmNlMzJlZWI1NzI5NzE5NmMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCkBAIC0yODMsNiArMjgzLDE0IEBAIGJvb2wgSW5wdXRUeXBlOjpzaXpl
U2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50LCBpbnQmIHByZWZlcnJlZFNpemUpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIElucHV0VHlwZTo6c3RlcE1pc21hdGNoKGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit7CisgICAgZG91YmxlIHN0ZXA7CisgICAgaWYgKCFnZXRB
bGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBzdGVwTWlzbWF0Y2godmFsdWUsIHN0ZXApOworfQorCiBib29sIElucHV0VHlwZTo6c3RlcE1p
c21hdGNoKGNvbnN0IFN0cmluZyYsIGRvdWJsZSkgY29uc3QKIHsKICAgICAvLyBOb24tc3VwcG9y
dGVkIHR5cGVzIHNob3VsZCBiZSByZWplY3RlZCBieSBIVE1MSW5wdXRFbGVtZW50OjpnZXRBbGxv
d2VkVmFsdWVTdGVwKCkuCkBAIC0zMzgsNiArMzQ2LDQxIEBAIFN0cmluZyBJbnB1dFR5cGU6OnZh
bHVlTWlzc2luZ1RleHQoKSBjb25zdAogICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVZhbHVl
TWlzc2luZ1RleHQoKTsKIH0KIAorU3RyaW5nIElucHV0VHlwZTo6dmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdAoreworICAgIGNvbnN0IFN0cmluZyB2YWx1ZSA9IGVsZW1lbnQoKS0+dmFsdWUoKTsK
KworICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVs
LiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQorICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdl
IGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFzIG90aGVyIHZhbGlkYXRpb24gZXJyb3JzLgorICAgIGlm
ICh2YWx1ZU1pc3NpbmcodmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsdWVNaXNzaW5nVGV4dCgp
OworCisgICAgaWYgKHR5cGVNaXNtYXRjaCgpKQorICAgICAgICByZXR1cm4gdHlwZU1pc21hdGNo
VGV4dCgpOworCisgICAgaWYgKHBhdHRlcm5NaXNtYXRjaCh2YWx1ZSkpCisgICAgICAgIHJldHVy
biB2YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKKworICAgIGlmIChlbGVt
ZW50KCktPnRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9u
Z1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSksIGVsZW1lbnQoKS0+bWF4TGVuZ3RoKCkp
OworCisgICAgaWYgKHJhbmdlVW5kZXJmbG93KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlk
YXRpb25NZXNzYWdlUmFuZ2VVbmRlcmZsb3dUZXh0KHNlcmlhbGl6ZShtaW5pbXVtKCkpKTsKKwor
ICAgIGlmIChyYW5nZU92ZXJmbG93KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlUmFuZ2VPdmVyZmxvd1RleHQoc2VyaWFsaXplKG1heGltdW0oKSkpOworCisgICAgaWYg
KHN0ZXBNaXNtYXRjaCh2YWx1ZSkpIHsKKyAgICAgICAgU3RyaW5nIHN0ZXBTdHJpbmc7CisgICAg
ICAgIGRvdWJsZSBzdGVwOworICAgICAgICBpZiAoZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkp
CisgICAgICAgICAgICBzdGVwU3RyaW5nID0gc2VyaWFsaXplRm9yTnVtYmVyVHlwZShzdGVwIC8g
c3RlcFNjYWxlRmFjdG9yKCkpOworICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVw
TWlzbWF0Y2hUZXh0KHNlcmlhbGl6ZShzdGVwQmFzZSgpKSwgc3RlcFN0cmluZyk7CisgICAgfQor
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB2b2lkIElucHV0VHlwZTo6aGFuZGxlQ2xpY2tF
dmVudChNb3VzZUV2ZW50KikKIHsKIH0KQEAgLTg3MCw3ICs5MTMsNyBAQCBkb3VibGUgSW5wdXRU
eXBlOjphbGlnblZhbHVlRm9yU3RlcChkb3VibGUgbmV3VmFsdWUsIGRvdWJsZSBzdGVwLCB1bnNp
Z25lZCBjdXJyZQogICAgIHVuc2lnbmVkIGJhc2VEZWNpbWFsUGxhY2VzOwogICAgIGRvdWJsZSBi
YXNlID0gc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcygmYmFzZURlY2ltYWxQbGFjZXMpOwogICAg
IGJhc2VEZWNpbWFsUGxhY2VzID0gbWluKGJhc2VEZWNpbWFsUGxhY2VzLCAxNnUpOwotICAgIGlm
IChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CisgICAgaWYg
KHN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVlKCkpKSB7CiAgICAgICAgIGRvdWJsZSBzY2Fs
ZSA9IHBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywg
Y3VycmVudERlY2ltYWxQbGFjZXMpKSk7CiAgICAgICAgIG5ld1ZhbHVlID0gcm91bmQobmV3VmFs
dWUgKiBzY2FsZSkgLyBzY2FsZTsKICAgICB9IGVsc2UgewpAQCAtMTAyMyw3ICsxMDY2LDcgQEAg
dm9pZCBJbnB1dFR5cGU6OnN0ZXBVcEZyb21SZW5kZXJlcihpbnQgbikKICAgICAgICAgZWxlbWVu
dCgpLT5zZXRWYWx1ZShzZXJpYWxpemUoc2lnbiA+IDAgPyBtaW5pbXVtKCkgOiBtYXhpbXVtKCkp
LCBEaXNwYXRjaElucHV0QW5kQ2hhbmdlRXZlbnQpOwogICAgIGVsc2UgewogICAgICAgICBFeGNl
cHRpb25Db2RlIGVjOwotICAgICAgICBpZiAoZWxlbWVudCgpLT5zdGVwTWlzbWF0Y2goZWxlbWVu
dCgpLT52YWx1ZSgpKSkgeworICAgICAgICBpZiAoc3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFs
dWUoKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzdGVwKTsKICAgICAgICAgICAgIGRvdWJsZSBu
ZXdWYWx1ZTsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZSA9IHBvdygxMC4wLCBzdGF0aWNfY2Fz
dDxkb3VibGU+KG1heChzdGVwRGVjaW1hbFBsYWNlcywgYmFzZURlY2ltYWxQbGFjZXMpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuaAppbmRleCAxYzg2Y2IwZmNjYTkzYTdiMzIxMjg4ZDk4MmU5OGM0
ZDljOGM4MGQ2Li5iMDA4MjZiMDg3N2MzNjE4NWNhN2I5ZjU5NWMwM2VmMjAxNjM2ZTY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmgKQEAgLTE0MCw3ICsxNDAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFZhbHVlQXNOdW1iZXIoZG91YmxlLCBUZXh0RmllbGRFdmVudEJlaGF2aW9y
LCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKICAgICAvLyBWYWxpZGF0aW9uIGZ1bmN0aW9ucwot
CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNWYWxpZGF0aW9uKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHR5
cGVNaXNtYXRjaEZvcihjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICAvLyBUeXBlIGNoZWNrIGZv
ciB0aGUgY3VycmVudCBpbnB1dCB2YWx1ZS4gV2UgZG8gbm90aGluZyBmb3Igc29tZSB0eXBlcwpA
QCAtMTU3LDYgKzE1Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVtKCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgbWF4aW11bSgpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBzaXplU2hvdWxkSW5jbHVkZURlY29yYXRpb24oaW50IGRlZmF1bHRTaXplLCBpbnQmIHBy
ZWZlcnJlZFNpemUpIGNvbnN0OworICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiwgZG91
YmxlIHN0ZXApIGNvbnN0OwogICAgIHZpcnR1YWwgZG91YmxlIHN0ZXBCYXNlKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2VXaXRoRGVjaW1hbFBsYWNlcyh1bnNpZ25lZCopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKaW5kZXggZmU3MzEyYzJhMzAy
ZDM1NTdjMGNlY2Y4ZjYzNDNkM2ViY2JhYzA2My4uNjQ5NzY1ZGY5MTQ2ODdkNTQ4ZjkwYmY1MzFk
NDQ1N2RmNjY0YzZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCkBAIC0z
OCwxNzcgKzM4LDUyIEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIFN0cmluZyBWYWxp
ZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCF0b0hUTUxF
bGVtZW50KG1fY29udHJvbCktPndpbGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gU3RyaW5n
KCk7Ci0KLSAgICBpZiAoY3VzdG9tRXJyb3IoKSkKLSAgICAgICAgcmV0dXJuIG1fY3VzdG9tRXJy
b3JNZXNzYWdlOwotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2Nv
bnRyb2wpOwotICAgIGJvb2wgaXNJbnB1dEVsZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9s
RWxlbWVudCgpICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUoaW5wdXRUYWcpOwotICAgIGJvb2wgaXNU
ZXh0QXJlYUVsZW1lbnQgPSBlbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpICYmIGVsZW1l
bnQtPmhhc1RhZ05hbWUodGV4dGFyZWFUYWcpOwotICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgZm9s
bG93aW5nIGNoZWNrcyBpcyBtZWFuaW5nZnVsLiBlLmcuIFdlJ2QgbGlrZSB0byBzaG93IHRoZQot
ICAgIC8vIHZhbHVlTWlzc2luZyBtZXNzYWdlIGV2ZW4gaWYgdGhlIGNvbnRyb2wgaGFzIG90aGVy
IHZhbGlkYXRpb24gZXJyb3JzLgotICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkgewotICAgICAgICBp
ZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAgICAgICAgcmV0dXJuIHZh
bGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nRm9yU2VsZWN0VGV4dCgpOwotICAgICAgICBpZiAo
aXNJbnB1dEVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmdUZXh0KCk7Ci0gICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICB9Ci0gICAgaWYgKHR5cGVN
aXNtYXRjaCgpKSB7Ci0gICAgICAgIGlmIChpc0lucHV0RWxlbWVudCkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnR5cGVNaXNtYXRj
aFRleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVHlwZU1pc21hdGNoVGV4
dCgpOwotICAgIH0KLSAgICBpZiAocGF0dGVybk1pc21hdGNoKCkpCi0gICAgICAgIHJldHVybiB2
YWxpZGF0aW9uTWVzc2FnZVBhdHRlcm5NaXNtYXRjaFRleHQoKTsKLSAgICBpZiAodG9vTG9uZygp
KSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQgJiYgIWlzVGV4dEFyZWFFbGVtZW50KSB7
Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCog
dGV4dCA9IHN0YXRpY19jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Kj4oZWxlbWVudCk7
Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVRvb0xvbmdUZXh0KG51bUdyYXBoZW1l
Q2x1c3RlcnModGV4dC0+dmFsdWUoKSksIHRleHQtPm1heExlbmd0aCgpKTsKLSAgICB9Ci0gICAg
aWYgKHJhbmdlVW5kZXJmbG93KCkpIHsKLSAgICAgICAgaWYgKCFpc0lucHV0RWxlbWVudCkgewot
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlUmFuZ2VV
bmRlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+bWlu
aW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHJhbmdlT3ZlcmZsb3coKSkgewotICAgICAg
ICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZU92ZXJmbG93VGV4dChzdGF0aWNfY2FzdDxIVE1MSW5w
dXRFbGVtZW50Kj4oZWxlbWVudCktPm1heGltdW1TdHJpbmcoKSk7Ci0gICAgfQotICAgIGlmIChz
dGVwTWlzbWF0Y2goKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
LSAgICAgICAgfQotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlU3RlcE1pc21hdGNoVGV4dChpbnB1dC0+c3RlcEJhc2VTdHJpbmcoKSwgaW5wdXQtPnN0
ZXBTdHJpbmcoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi12b2lkIFZh
bGlkaXR5U3RhdGU6OnNldEN1c3RvbUVycm9yTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
Ci17Ci0gICAgbV9jdXN0b21FcnJvck1lc3NhZ2UgPSBtZXNzYWdlOwotICAgIGlmIChtX2NvbnRy
b2wtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkpCi0gICAgICAgIHN0YXRpY19jYXN0PEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQqPihtX2NvbnRyb2wpLT5zZXROZWVkc1ZhbGlkaXR5Q2hlY2soKTsKKyAg
ICByZXR1cm4gbV9jb250cm9sLT52YWxpZGF0aW9uTWVzc2FnZSgpOwogfQogCiBib29sIFZhbGlk
aXR5U3RhdGU6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1l
bnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFs
aWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGVsZW1lbnQtPmhhc1Rh
Z05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3Rh
dGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gaW5w
dXQtPnZhbHVlTWlzc2luZyhpbnB1dC0+dmFsdWUoKSk7Ci0gICAgfQotICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKHRleHRhcmVhVGFnKSkgewotICAgICAgICBIVE1MVGV4dEFyZWFFbGVtZW50
KiB0ZXh0QXJlYSA9IHN0YXRpY19jYXN0PEhUTUxUZXh0QXJlYUVsZW1lbnQqPihlbGVtZW50KTsK
LSAgICAgICAgcmV0dXJuIHRleHRBcmVhLT52YWx1ZU1pc3NpbmcodGV4dEFyZWEtPnZhbHVlKCkp
OwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShzZWxlY3RUYWcpKQotICAgICAg
ICByZXR1cm4gdG9IVE1MU2VsZWN0RWxlbWVudChlbGVtZW50KS0+dmFsdWVNaXNzaW5nKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2NvbnRyb2wtPnZhbHVlTWlzc2luZygpOwog
fQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnR5cGVNaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRN
TEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFl
bGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYg
KCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCktPnR5cGVN
aXNtYXRjaCgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnR5cGVNaXNtYXRjaCgpOwogfQogCiBi
b29sIFZhbGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCgpIGNvbnN0CiB7Ci0gICAgSFRNTEVs
ZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgaWYgKCFlbGVt
ZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFl
bGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+
KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cGF0dGVybk1pc21hdGNoKGlucHV0LT52YWx1
ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5wYXR0ZXJuTWlzbWF0Y2goKTsKIH0KIAogYm9v
bCBWYWxpZGl0eVN0YXRlOjp0b29Mb25nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxW
YWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFz
VGFnTmFtZShpbnB1dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBz
dGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBp
bnB1dC0+dG9vTG9uZyhpbnB1dC0+dmFsdWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6
OkNoZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUodGV4
dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVhID0gc3Rh
dGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4g
dGV4dEFyZWEtPnRvb0xvbmcodGV4dEFyZWEtPnZhbHVlKCksIEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50OjpDaGVja0RpcnR5RmxhZyk7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICBy
ZXR1cm4gbV9jb250cm9sLT50b29Mb25nKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFu
Z2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1M
RWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1
dFRhZykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dCA9IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4g
aW5wdXQtPnJhbmdlVW5kZXJmbG93KGlucHV0LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250
cm9sLT5yYW5nZVVuZGVyZmxvdygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnJhbmdlT3Zl
cmZsb3coKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVu
dChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0
YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQt
PnJhbmdlT3ZlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJh
bmdlT3ZlcmZsb3coKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpzdGVwTWlzbWF0Y2goKSBj
b25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRy
b2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICByZXR1cm4gaW5wdXQtPnN0ZXBNaXNt
YXRjaChpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+c3RlcE1pc21hdGNo
KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6Y3VzdG9tRXJyb3IoKSBjb25zdAogewotICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIHJl
dHVybiBlbGVtZW50LT53aWxsVmFsaWRhdGUoKSAmJiAhbV9jdXN0b21FcnJvck1lc3NhZ2UuaXNF
bXB0eSgpOworICAgIHJldHVybiBtX2NvbnRyb2wtPmN1c3RvbUVycm9yKCk7CiB9CiAKIGJvb2wg
VmFsaWRpdHlTdGF0ZTo6dmFsaWQoKSBjb25zdAogewotICAgIGJvb2wgc29tZUVycm9yID0gdHlw
ZU1pc21hdGNoKCkgfHwgc3RlcE1pc21hdGNoKCkgfHwgcmFuZ2VVbmRlcmZsb3coKSB8fCByYW5n
ZU92ZXJmbG93KCkKLSAgICAgICAgfHwgdG9vTG9uZygpIHx8IHBhdHRlcm5NaXNtYXRjaCgpIHx8
IHZhbHVlTWlzc2luZygpIHx8IGN1c3RvbUVycm9yKCk7Ci0gICAgcmV0dXJuICFzb21lRXJyb3I7
CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsaWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKaW5kZXggNGE5NjQ4OGJkNTU2OGYxM2U5YTA4NDlh
M2UwYjIyM2M1MWQ0ZjYwZS4uMTdlOTRjOTc4OGRiYzAzYWNkMTA1YTMyZDEwOWQ2NWIxMjVhYTJi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmgKQEAgLTU3LDExICs1Nyw3IEBAIHB1
YmxpYzoKIHByaXZhdGU6CiAgICAgVmFsaWRpdHlTdGF0ZShGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IGNvbnRyb2wpIDogbV9jb250cm9sKGNvbnRyb2wpIHsgfQogCi0gICAgc3RhdGljIGJvb2wgaXNW
YWxpZENvbG9yU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIGlzVmFsaWRF
bWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJik7Ci0KICAgICBGb3JtQXNzb2NpYXRlZEVsZW1lbnQq
IG1fY29udHJvbDsKLSAgICBTdHJpbmcgbV9jdXN0b21FcnJvck1lc3NhZ2U7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141627</attachid>
            <date>2012-05-13 19:03:15 -0700</date>
            <delta_ts>2012-05-13 21:21:59 -0700</delta_ts>
            <desc>Patch 12 - Fix virtual/override issues</desc>
            <filename>bug-86058-20120514110314.patch</filename>
            <type>text/plain</type>
            <size>36033</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2OTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg1OTljOGY3NmIwOTBh
MDU3MjhkYWJiMmYzY2RhODgwNDZhZDVmZi4uNzIwZjNmMTA0NDU2MDRmODQ1MjY0ZjMyOTNmYjI1
MGM3OWRiOGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA1LTEwICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Zvcm1zXSBNb3Zl
IFZhbGlkaXR5U3RhdGUgbWV0aG9kcyBpbXBsZW1lbnRhdGlvbiB0byBhbm90aGVyIHBsYWNlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjA1OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlcyBWYWxpZGl0eVN0YXRlIGNsYXNzIGZvciBsaW1pdGluZyBzY29wZSBvZgorICAgICAg
ICBudW1iZXIvcmFuZ2UgaW5wdXQgdHlwZSByZWxhdGVkIG1ldGhvZHMgZm9yIGludHJvZHVjaW5n
IGRlY2ltYWwKKyAgICAgICAgYXJpdGhtZXRpYy4KKworICAgICAgICBNZXRob2RzIHJlbGF0ZWQg
dG8gdmFsaWRhdGlvbiBhcmUgbW92ZWQgZnJvbSBWYWxpZGF0ZVN0YXRlIHRvCisgICAgICAgIGlu
cHV0LCBzZWxlY3QgYW5kIHRleHRhcmVhIGVsZW1lbnRzIHdpdGggdmlydHVhbCBtZXRob2QgYmFz
ZWQKKyAgICAgICAgZGlzcGF0Y2hpbmcgdmlhIEZvcm1Bc3NvY2lhdGVFbGVtZW50IGluc3RlYWQg
b2YgdGFnIG5hbWUKKyAgICAgICAgZGlzcGF0Y2hpbmcgc28gZmFyIGZvciBjb2RlIHNpbXBsaWZp
Y2F0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5n
ZSBiZWhhdmlvci4KKworICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IpOiBB
ZGRlZC4gQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gUmV0dXJucyBjdXN0b20gZXJyb3IgbXNz
YWdlIGluIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0
YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnJhbmdlT3ZlcmZsb3cpOiBBZGRlZC4gIENhbGxlZCBmcm9t
IFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAg
KFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cmFuZ2VVbmRlcmZsb3cpOiBBZGRlZC4g
IENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6c3RlcE1pc21hdGNo
KTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlzIGlzIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnRv
b0xvbmcpOiBBZGRlZC4gIENhbGxlZCBmcm9tIFZhbGlkYXRlU3RhdGUuIFRoaXMgaXMgZGVmYXVs
dCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1Bc3NvY2lhdGVkRWxlbWVu
dDo6dHlwZU1pc21hdGNoKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBUaGlz
IGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNzb2Np
YXRlZEVsZW1lbnQ6OnZhbGlkKTogQWRkZWQuICBDYWxsZWQgZnJvbSBWYWxpZGF0ZVN0YXRlLiBU
aGlzIGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCisgICAgICAgIChXZWJDb3JlOjpGb3JtQXNz
b2NpYXRlZEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRh
dGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50OjpjdXN0b21WYWxpZGF0aW9uTWVzc2FnZSk6IEFkZGVk
LiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp2YWxpZGF0aW9u
TWVzc2FnZSk6IEFkZGVkLiAgQ2FsbGVkIGZyb20gVmFsaWRhdGVTdGF0ZS4gVGhpcyBpcyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50OjpzZXRDdXN0b21WYWxpZGl0eSk6IEFkZGVkLiAgc2V0IGN1c3RvbSBlcnJvciBtZXNzYWdl
LgorICAgICAgICAqIGh0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50Lmg6CisgICAgICAgIChGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQpOiBBZGRlZCBuZXcgaW5zdGFuY2UgdmFsdWUgbV9jdXN0b21WYWxp
ZGF0aW9uTWVzc2FnZS4KKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6dmFsaWRhdGlvbk1l
c3NhZ2UpOiBSZW1vdmVkLiBOb3RlOiBIVE1MSW5wdXRFbGVtZW50LCBIVE1MU2VsZWN0RWxlbWVu
dCwgYW5kIEhUTUxUZXh0QXJlYUVsZW1lbnQgaW1wbGVtZW50IHRoaXMgbWV0aG9kLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0Q3VzdG9tVmFsaWRpdHkpOiBD
aGFuZ2VkLiBDYWxscyBiYXNlIGNsYXNzIHNldEN1c3RvbVZhbGlkaXR5LgorICAgICAgICAqIGh0
bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5oOgorICAgICAgICAoSFRNTEZvcm1Db250cm9sRWxl
bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzVmFsaWRWYWx1ZSk6IENhbGwgbV9pbnB1dFR5cGUg
bWV0aG9kcyBpbnN0ZWFkIG9mIEhUTUxJbnB1dEVsZW1lbnQncy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnRvb0xvbmcpOiBDYWxsIG1faW5wdXRUeXBlIG1ldGhvZHMgaW5z
dGVhZCBvZiBIVE1MSW5wdXRFbGVtZW50J3MuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnR5cGVNaXNtYXRjaCk6IE1vdmUgaW1wbGVtZW50
YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
dmFsdWVNaXNzaW5nKTogIE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGF0dGVybk1pc21hdGNoKTogTW92ZSBpbXBs
ZW1lbnRhdGlvbiB0byBJbnB1dFR5cGUuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVt
ZW50OjpyYW5nZVVuZGVyZmxvdyk6IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cmFuZ2VPdmVyZmxvdyk6IE1vdmUg
aW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0
RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBNb3ZlIGltcGxlbWVudGF0aW9uIHRvIElucHV0
VHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnN0ZXBNaXNtYXRjaCk6
IE1vdmUgaW1wbGVtZW50YXRpb24gdG8gSW5wdXRUeXBlLgorICAgICAgICAoV2ViQ29yZTo6SFRN
TElucHV0RWxlbWVudDo6aXNJblJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGluc3Rl
YWQgb2YgSFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxl
bWVudDo6aXNPdXRPZlJhbmdlKTogQ2FsbCBtX2lucHV0VHlwZSBtZXRob2RzIGluc3RlYWQgb2Yg
SFRNTElucHV0RWxlbWVudCdzLgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgor
ICAgICAgICAoSFRNTElucHV0RWxlbWVudCk6IE1ha2UgdG9vTG9uZyBtZXRob2QgcHJpdmF0ZS4K
KyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50Lmg6IEFkZCAidmlydHVhbCIgYW5kICJP
VkVSUklERSIuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2UpOiBBZGRlZC4g
SW1wbGVtZW50YXRpb24gZm9yIEhUTUxTZWxlY3RFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNlbGVjdEVsZW1lbnQ6OnZhbHVlTWlzc2luZyk6IEFkZGVkLiBJbXBsZW1lbnRhdGlvbiBm
b3IgSFRNTFNlbGVjdEVsZW1lbnQuCisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
OgorICAgICAgICAoSFRNTFNlbGVjdEVsZW1lbnQpOiAgQWRkZWQgZW50cmllcyBmb3IgbmV3bHkg
YWRkZWQgbWV0aG9kcy4KKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRhdGlvbk1lc3NhZ2Up
OiBBZGRlZC4gSW1wbGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp2YWx1ZU1pc3NpbmcpOiBBZGRlZC4gSW1w
bGVtZW50YXRpb24gZm9yIEhUTUxUZXh0QXJlYUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpI
VE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKTogQWRkZWQuIEltcGxlbWVudGF0aW9uIGZvciBI
VE1MVGV4dEFyZWFFbGVtZW50LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5o
OgorICAgICAgICAoSFRNTFRleHRBcmVhRWxlbWVudCk6IEFkZGVkIGVudHJpZXMgZm9yIG5ld2x5
IGFkZGVkIG1ldGhvZHMuIENoYW5nZSB0b29Mb25nIGFuZCB2YWx1ZU1pc3NpbmcgcHJpdmF0ZS4K
KyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnB1dFR5
cGU6OnN0ZXBNaXNtYXRjaCk6IENoYW5nZSBtZXRob2Qgc2lnbmF0dXJlLgorICAgICAgICAoV2Vi
Q29yZTo6SW5wdXRUeXBlOjphbGlnblZhbHVlRm9yU3RlcCk6ICBDaGFuZ2VkIGZvciBjYWxsaW5n
IElucHV0Q2xhc3MgaW5zdGVhZCBvZiBIVE1MSU5wdXRFbGVtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6SW5wdXRUeXBlOjpzdGVwVXBGcm9tUmVuZGVyZXIpOiAgQWRkZWQuIE1vdmVkIGZyb20gSFRN
TElucHV0RWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OklucHV0VHlwZTo6dmFsaWRhdGlvbk1l
c3NhZ2UpOiBBZGRlZC4gIE1vdmVkIGZyb20gSFRNTElucHV0RWxlbWVudC4KKyAgICAgICAgKiBo
dG1sL0lucHV0VHlwZS5oOgorICAgICAgICAoSW5wdXRUeXBlKTogQWRkZWQgZW50cmllcyBmb3Ig
bmV3bHkgYWRkZWQgbWV0aG9kcyBhbmQgdXBkYXRlIG1ldGhvZHMgc2lnbmF0dXJlLgorICAgICAg
ICAqIGh0bWwvVmFsaWRpdHlTdGF0ZS5jcHA6IE1vdmUgYWN0dWFsIGltcGxlbWVudGF0aW9uIHRv
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCBhbmQgZGVyaXZlZCBjbGFzc2VzIGZvciBsb2NhbGl6aW5n
IGltcGxlbWVudGF0aW9uIGNoYW5nZSBvZiBlbGVtZW50cyBhbmQgaW5wdXQgdHlwZXMuCisgICAg
ICAgIChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp2YWxpZGF0aW9uTWVzc2FnZSk6IENoYW5nZWQg
dG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAgIChXZWJDb3Jl
OjpWYWxpZGl0eVN0YXRlOjp2YWx1ZU1pc3NpbmcpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29j
aWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6
dHlwZU1pc21hdGNoKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1l
dGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnBhdHRlcm5NaXNtYXRjaCk6
IENoYW5nZWQgdG8gY2FsbCBGb3JtQXNzb2NpYXRlZEVsZW1lbnQncyBtZXRob2QuCisgICAgICAg
IChXZWJDb3JlOjpWYWxpZGl0eVN0YXRlOjp0b29Mb25nKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1B
c3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3Rh
dGU6OnJhbmdlVW5kZXJmbG93KTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVu
dCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnJhbmdlT3ZlcmZs
b3cpOiBDaGFuZ2VkIHRvIGNhbGwgRm9ybUFzc29jaWF0ZWRFbGVtZW50J3MgbWV0aG9kLgorICAg
ICAgICAoV2ViQ29yZTo6VmFsaWRpdHlTdGF0ZTo6c3RlcE1pc21hdGNoKTogQ2hhbmdlZCB0byBj
YWxsIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZh
bGlkaXR5U3RhdGU6OmN1c3RvbUVycm9yKTogQ2hhbmdlZCB0byBjYWxsIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCdzIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlZhbGlkaXR5U3RhdGU6OnZhbGlk
KToKKyAgICAgICAgKiBodG1sL1ZhbGlkaXR5U3RhdGUuaDoKKyAgICAgICAgKFZhbGlkaXR5U3Rh
dGUpOiBSZW1vdmUgY3VzdG9tIHZhbGlkYXRpb24gbWVzc2FnZSByZWxhdGVkIHRoaW5ncy4KKwog
MjAxMi0wNS0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUm9s
bCBvdXQgbG9jYWwgY2hhbmdlcyBhY2NpZGVudGFsbHkgbGFuZGVkIGluIHIxMTY5MDUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVkRWxlbWVudC5jcHAKaW5kZXggNjY1ZWZh
NzZhOTIyZmUzMjUyYjBkNDU3ZjNkY2RhODZlNzM4MTIwMS4uNzZkZDBkMTU5ZjA3NWQ5ZGI2NmZk
N2ExZmRlYmUyZGE5NTk0OWFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3Jt
QXNzb2NpYXRlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29j
aWF0ZWRFbGVtZW50LmNwcApAQCAtMTU3LDYgKzE1Nyw2OSBAQCB2b2lkIEZvcm1Bc3NvY2lhdGVk
RWxlbWVudDo6Zm9ybUF0dHJpYnV0ZUNoYW5nZWQoKQogICAgICAgICByZXNldEZvcm1Pd25lcigp
OwogfQogCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6Y3VzdG9tRXJyb3IoKSBjb25zdAor
eworICAgIGNvbnN0IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudCh0aGlzKTsK
KyAgICByZXR1cm4gZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkgJiYgIW1fY3VzdG9tVmFsaWRhdGlv
bk1lc3NhZ2UuaXNFbXB0eSgpOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6cGF0
dGVybk1pc21hdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRm9y
bUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZU92ZXJmbG93KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50OjpyYW5nZVVuZGVyZmxvdygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEZvcm1Bc3NvY2lhdGVkRWxl
bWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jv
b2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgRm9ybUFzc29jaWF0ZWRFbGVtZW50Ojp0eXBlTWlzbWF0Y2goKSBj
b25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBGb3JtQXNzb2NpYXRlZEVsZW1l
bnQ6OnZhbGlkKCkgY29uc3QKK3sKKyAgICBib29sIHNvbWVFcnJvciA9IHR5cGVNaXNtYXRjaCgp
IHx8IHN0ZXBNaXNtYXRjaCgpIHx8IHJhbmdlVW5kZXJmbG93KCkgfHwgcmFuZ2VPdmVyZmxvdygp
CisgICAgICAgIHx8IHRvb0xvbmcoKSB8fCBwYXR0ZXJuTWlzbWF0Y2goKSB8fCB2YWx1ZU1pc3Np
bmcoKSB8fCBjdXN0b21FcnJvcigpOworICAgIHJldHVybiAhc29tZUVycm9yOworfQorCitib29s
IEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsdWVNaXNzaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK1N0cmluZyBGb3JtQXNzb2NpYXRlZEVsZW1lbnQ6OmN1c3RvbVZhbGlk
YXRpb25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jdXN0b21WYWxpZGF0aW9uTWVz
c2FnZTsKK30KKworU3RyaW5nIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6dmFsaWRhdGlvbk1lc3Nh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBjdXN0b21FcnJvcigpID8gbV9jdXN0b21WYWxpZGF0
aW9uTWVzc2FnZSA6IFN0cmluZygpOworfQorCit2b2lkIEZvcm1Bc3NvY2lhdGVkRWxlbWVudDo6
c2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJiBlcnJvcikKK3sKKyAgICBtX2N1c3RvbVZh
bGlkYXRpb25NZXNzYWdlID0gZXJyb3I7Cit9CisKIGNvbnN0IEhUTUxFbGVtZW50KiB0b0hUTUxF
bGVtZW50KGNvbnN0IEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogYXNzb2NpYXRlZEVsZW1lbnQpCiB7
CiAgICAgaWYgKGFzc29jaWF0ZWRFbGVtZW50LT5pc0Zvcm1Db250cm9sRWxlbWVudCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNzb2NpYXRlZEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvRm9ybUFzc29jaWF0ZWRFbGVtZW50LmgKaW5kZXggMjg0ZTI5OGZk
OTdlNTQyZDFiMGIyY2Q0NmJjMzQyODUxZWQ0YTJmMS4uOTJlYjhkN2VmYmU3ODJhNTE5NTA4ZmMz
YzM1MmM5OWQ2M2IzM2FkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Gb3JtQXNz
b2NpYXRlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Zvcm1Bc3NvY2lhdGVk
RWxlbWVudC5oCkBAIC02MCw2ICs2MCwyMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGZvcm1SZW1v
dmVkRnJvbVRyZWUoY29uc3QgTm9kZSogZm9ybVJvb3QpOwogCisgICAgLy8gVmFsaWRpdHlTdGF0
ZSBhdHRyaWJ1dGUgaW1wbGVtZW50YXRpb25zCisgICAgYm9vbCBjdXN0b21FcnJvcigpIGNvbnN0
OworCisgICAgLy8gT3ZlcnJpZGUgZnVuY3Rpb25zIGZvciBwYXR0ZXJNaXNtYXRjaCwgcmFuZ2VP
dmVyZmxvdywgcmFuZ2VyVW5kZXJmbG93LAorICAgIC8vIHN0ZXBNaXNtYXRjaCwgdG9vTG9uZyBh
bmQgdmFsdWVNaXNzaW5nIG11c3QgY2FsbCB3aWxsVmFsaWRhdGUgbWV0aG9kLgorICAgIHZpcnR1
YWwgYm9vbCBwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcmFuZ2VP
dmVyZmxvdygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCByYW5nZVVuZGVyZmxvdygpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBzdGVwTWlzbWF0Y2goKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgdG9vTG9uZygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCB0eXBlTWlzbWF0Y2goKSBjb25z
dDsKKyAgICB2aXJ0dWFsIGJvb2wgdmFsdWVNaXNzaW5nKCkgY29uc3Q7CisgICAgdmlydHVhbCBT
dHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2UoKSBjb25zdDsKKyAgICBib29sIHZhbGlkKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYpOworCiBw
cm90ZWN0ZWQ6CiAgICAgRm9ybUFzc29jaWF0ZWRFbGVtZW50KCk7CiAKQEAgLTc2LDYgKzkyLDgg
QEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlRm9ybSgpOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VGb3JtKCk7CiAKKyAgICBTdHJpbmcgY3VzdG9tVmFsaWRhdGlv
bk1lc3NhZ2UoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3QgPSAwOwogCkBAIC04NCw2ICsxMDIsNyBAQCBw
cml2YXRlOgogCiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgT3duUHRyPFZhbGlk
aXR5U3RhdGU+IG1fdmFsaWRpdHlTdGF0ZTsKKyAgICBTdHJpbmcgbV9jdXN0b21WYWxpZGF0aW9u
TWVzc2FnZTsKIH07CiAKIEhUTUxFbGVtZW50KiB0b0hUTUxFbGVtZW50KEZvcm1Bc3NvY2lhdGVk
RWxlbWVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRy
b2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKaW5kZXggMmY5ZjIyNWJjYTljNTU5YjA5MjM0YWExNDQ5NTc5NGJhNDhmNzI4Zi4uY2E4
MjAzYjFhNGQzNjI1NzE5NTcyZmRkMDk4ZDk4NWRhYzQ1YTcwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0zOTcsMTEgKzM5Nyw2IEBA
IHZvaWQgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6c2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVjaygp
CiAgICAgICAgIGhpZGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKTsKIH0KIAotU3RyaW5nIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OnZhbGlkYXRpb25NZXNzYWdlKCkKLXsKLSAgICByZXR1cm4g
dmFsaWRpdHkoKS0+dmFsaWRhdGlvbk1lc3NhZ2UoKTsKLX0KLQogdm9pZCBIVE1MRm9ybUNvbnRy
b2xFbGVtZW50Ojp1cGRhdGVWaXNpYmxlVmFsaWRhdGlvbk1lc3NhZ2UoKQogewogICAgIFBhZ2Uq
IHBhZ2UgPSBkb2N1bWVudCgpLT5wYWdlKCk7CkBAIC00ODQsNyArNDc5LDggQEAgdm9pZCBIVE1M
Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXROZWVkc1ZhbGlkaXR5Q2hlY2soKQogCiB2b2lkIEhUTUxG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGNvbnN0IFN0cmluZyYgZXJyb3Ip
CiB7Ci0gICAgdmFsaWRpdHkoKS0+c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGVycm9yKTsKKyAgICBG
b3JtQXNzb2NpYXRlZEVsZW1lbnQ6OnNldEN1c3RvbVZhbGlkaXR5KGVycm9yKTsKKyAgICBzZXRO
ZWVkc1ZhbGlkaXR5Q2hlY2soKTsKIH0KIAogdm9pZCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojpk
aXNwYXRjaEJsdXJFdmVudChQYXNzUmVmUHRyPE5vZGU+IG5ld0ZvY3VzZWROb2RlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuaAppbmRleCA2MDg0MTFmMzYz
NmZmZjhmN2NhNDZhNzU1MTc2MGVkMzU4YTcyMzVhLi5iYjEwNDQ3NDcwNmY2M2I4NDMyNzA3ZWZj
NDRlMWZiNzAyOTk5N2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuaApAQCAtOTUsMTMgKzk1LDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpIHsgfQogCiAgICAgdmlydHVhbCBib29sIHdpbGxWYWxp
ZGF0ZSgpIGNvbnN0OwotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpOwogICAgIHZvaWQg
dXBkYXRlVmlzaWJsZVZhbGlkYXRpb25NZXNzYWdlKCk7CiAgICAgdm9pZCBoaWRlVmlzaWJsZVZh
bGlkYXRpb25NZXNzYWdlKCk7CiAgICAgYm9vbCBjaGVja1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8
Rm9ybUFzc29jaWF0ZWRFbGVtZW50PiA+KiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgPSAwKTsK
ICAgICAvLyBUaGlzIG11c3QgYmUgY2FsbGVkIHdoZW4gYSB2YWxpZGF0aW9uIGNvbnN0cmFpbnQg
b3IgY29udHJvbCB2YWx1ZSBpcyBjaGFuZ2VkLgogICAgIHZvaWQgc2V0TmVlZHNWYWxpZGl0eUNo
ZWNrKCk7Ci0gICAgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q3VzdG9tVmFsaWRpdHkoY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAK
ICAgICBib29sIHJlYWRPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9yZWFkT25seTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAppbmRleCAxYjY3YmIyNDMxZTk1YTk3
NTA1YWYyYjRjZTM2NDRlOTQ2MDgwMDk0Li40ZjNhNGRlMTc4MzYzNzhlOWQzNzVhNzlhMWNkNDJi
OWMxODI5YWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAg
LTE5MSwyNyArMTkxLDMyIEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNWYWxpZFZhbHVlKGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgcmV0dXJuICFtX2lucHV0VHlwZS0+dHlwZU1pc21hdGNoRm9yKHZhbHVlKQotICAgICAgICAm
JiAhc3RlcE1pc21hdGNoKHZhbHVlKQotICAgICAgICAmJiAhcmFuZ2VVbmRlcmZsb3codmFsdWUp
Ci0gICAgICAgICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKQorICAgICAgICAmJiAhbV9pbnB1dFR5
cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5yYW5nZVVu
ZGVyZmxvdyh2YWx1ZSkKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5yYW5nZU92ZXJmbG93KHZh
bHVlKQogICAgICAgICAmJiAhdG9vTG9uZyh2YWx1ZSwgSWdub3JlRGlydHlGbGFnKQotICAgICAg
ICAmJiAhcGF0dGVybk1pc21hdGNoKHZhbHVlKQotICAgICAgICAmJiAhdmFsdWVNaXNzaW5nKHZh
bHVlKTsKKyAgICAgICAgJiYgIW1faW5wdXRUeXBlLT5wYXR0ZXJuTWlzbWF0Y2godmFsdWUpCisg
ICAgICAgICYmICFtX2lucHV0VHlwZS0+dmFsdWVNaXNzaW5nKHZhbHVlKTsKK30KKworYm9vbCBI
VE1MSW5wdXRFbGVtZW50Ojp0b29Mb25nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gd2lsbFZhbGlk
YXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVja0RpcnR5RmxhZyk7CiB9CiAKIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1
dFR5cGUtPnR5cGVNaXNtYXRjaCgpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lu
cHV0VHlwZS0+dHlwZU1pc21hdGNoKCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6dmFs
dWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnZhbHVlTWlzc2luZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT52YWx1
ZU1pc3NpbmcodmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlw
ZS0+dmFsdWVNaXNzaW5nKHZhbHVlKCkpOwogfQogCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnBh
dHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpwYXR0ZXJuTWlzbWF0Y2goKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+cGF0dGVybk1pc21hdGNoKHZhbHVlKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYg
bV9pbnB1dFR5cGUtPnBhdHRlcm5NaXNtYXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5w
dXRFbGVtZW50Ojp0b29Mb25nKGNvbnN0IFN0cmluZyYgdmFsdWUsIE5lZWRzVG9DaGVja0RpcnR5
RmxhZyBjaGVjaykgY29uc3QKQEAgLTIzMiw2OCArMjM3LDQwIEBAIGJvb2wgSFRNTElucHV0RWxl
bWVudDo6dG9vTG9uZyhjb25zdCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcg
Y2hlY2spCiAgICAgcmV0dXJuIG51bUdyYXBoZW1lQ2x1c3RlcnModmFsdWUpID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1heCk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6cmFuZ2VVbmRl
cmZsb3coY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgSFRNTElucHV0RWxlbWVudDo6
cmFuZ2VVbmRlcmZsb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+cmFuZ2VV
bmRlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lucHV0VHlw
ZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSk7CiB9CiAKLWJvb2wgSFRNTElucHV0RWxlbWVudDo6
cmFuZ2VPdmVyZmxvdyhjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBIVE1MSW5wdXRF
bGVtZW50OjpyYW5nZU92ZXJmbG93KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUt
PnJhbmdlT3ZlcmZsb3codmFsdWUpOworICAgIHJldHVybiB3aWxsVmFsaWRhdGUoKSAmJiBtX2lu
cHV0VHlwZS0+cmFuZ2VPdmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAotZG91YmxlIEhUTUxJbnB1dEVs
ZW1lbnQ6Om1pbmltdW0oKSBjb25zdAorU3RyaW5nIEhUTUxJbnB1dEVsZW1lbnQ6OnZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPm1pbmltdW0oKTsK
LX0KLQotZG91YmxlIEhUTUxJbnB1dEVsZW1lbnQ6Om1heGltdW0oKSBjb25zdAotewotICAgIHJl
dHVybiBtX2lucHV0VHlwZS0+bWF4aW11bSgpOwotfQotCi1ib29sIEhUTUxJbnB1dEVsZW1lbnQ6
OnN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAotewotICAgIGRvdWJsZSBz
dGVwOwotICAgIGlmICghZ2V0QWxsb3dlZFZhbHVlU3RlcCgmc3RlcCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSwgc3Rl
cCk7Ci19CisgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCi1TdHJpbmcgSFRNTElucHV0RWxlbWVudDo6bWluaW11bVN0cmluZygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zZXJpYWxpemUobWluaW11bSgpKTsKLX0KKyAgICBpZiAo
Y3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJuIGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7
CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50OjptYXhpbXVtU3RyaW5nKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9pbnB1dFR5cGUtPnNlcmlhbGl6ZShtYXhpbXVtKCkpOwotfQotCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6c3RlcEJhc2VTdHJpbmcoKSBjb25zdAotewotICAgIHJldHVybiBt
X2lucHV0VHlwZS0+c2VyaWFsaXplKG1faW5wdXRUeXBlLT5zdGVwQmFzZSgpKTsKKyAgICByZXR1
cm4gbV9pbnB1dFR5cGUtPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKLVN0cmluZyBIVE1MSW5w
dXRFbGVtZW50OjpzdGVwU3RyaW5nKCkgY29uc3QKK2RvdWJsZSBIVE1MSW5wdXRFbGVtZW50Ojpt
aW5pbXVtKCkgY29uc3QKIHsKLSAgICBkb3VibGUgc3RlcDsKLSAgICBpZiAoIWdldEFsbG93ZWRW
YWx1ZVN0ZXAoJnN0ZXApKSB7Ci0gICAgICAgIC8vIHN0ZXBTdHJpbmcoKSBzaG91bGQgYmUgY2Fs
bGVkIG9ubHkgaWYgc3RlcE1pc21hdGNoKCkgY2FuIGJlIHRydWUuCi0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVy
biBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHN0ZXAgLyBtX2lucHV0VHlwZS0+c3RlcFNjYWxlRmFj
dG9yKCkpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+bWluaW11bSgpOwogfQogCi1TdHJpbmcg
SFRNTElucHV0RWxlbWVudDo6dHlwZU1pc21hdGNoVGV4dCgpIGNvbnN0Citkb3VibGUgSFRNTElu
cHV0RWxlbWVudDo6bWF4aW11bSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT50
eXBlTWlzbWF0Y2hUZXh0KCk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5tYXhpbXVtKCk7CiB9
CiAKLVN0cmluZyBIVE1MSW5wdXRFbGVtZW50Ojp2YWx1ZU1pc3NpbmdUZXh0KCkgY29uc3QKK2Jv
b2wgSFRNTElucHV0RWxlbWVudDo6c3RlcE1pc21hdGNoKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
bV9pbnB1dFR5cGUtPnZhbHVlTWlzc2luZ1RleHQoKTsKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRl
KCkgJiYgbV9pbnB1dFR5cGUtPnN0ZXBNaXNtYXRjaCh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1M
SW5wdXRFbGVtZW50OjpnZXRBbGxvd2VkVmFsdWVTdGVwKGRvdWJsZSogc3RlcCkgY29uc3QKQEAg
LTEyNzUsMTIgKzEyNTIsMTIgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpoYXNVbmFjY2VwdGFi
bGVWYWx1ZSgpIGNvbnN0CiAKIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNJblJhbmdlKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnN1cHBvcnRzUmFuZ2VMaW1pdGF0aW9uKCkg
JiYgIXJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFyYW5nZU92ZXJmbG93KHZhbHVlKCkpOwor
ICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0YXRpb24oKSAmJiAhbV9p
bnB1dFR5cGUtPnJhbmdlVW5kZXJmbG93KHZhbHVlKCkpICYmICFtX2lucHV0VHlwZS0+cmFuZ2VP
dmVyZmxvdyh2YWx1ZSgpKTsKIH0KIAogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc091dE9mUmFu
Z2UoKSBjb25zdAogewotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c3VwcG9ydHNSYW5nZUxpbWl0
YXRpb24oKSAmJiAocmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwgcmFuZ2VPdmVyZmxvdyh2YWx1
ZSgpKSk7CisgICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zdXBwb3J0c1JhbmdlTGltaXRhdGlvbigp
ICYmIChtX2lucHV0VHlwZS0+cmFuZ2VVbmRlcmZsb3codmFsdWUoKSkgfHwgbV9pbnB1dFR5cGUt
PnJhbmdlT3ZlcmZsb3codmFsdWUoKSkpOwogfQogCiBib29sIEhUTUxJbnB1dEVsZW1lbnQ6Om5l
ZWRzU3VzcGVuc2lvbkNhbGxiYWNrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmgKaW5kZXggZTM0YTAzZTYzNWU5ZGZjMzQwYjA1MGRkZTFiZGFjYTk4Mzg3NTg5ZC4uNWMyZTgx
MjJmYTIxOTdhMDk5MDNmZTE4MmI2YzFkYjM1NWViMjE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgKQEAgLTQ4LDEzICs0OCwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIHNob3VsZEF1dG9jb21wbGV0ZSgpIGNvbnN0OwogCiAgICAgLy8gRm9yIFZhbGlkaXR5
U3RhdGUKLSAgICBib29sIHR5cGVNaXNtYXRjaCgpIGNvbnN0OwotICAgIC8vIHZhbHVlTWlzc2lu
ZygpIGlnbm9yZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgdmFsdWUgZm9yIENIRUNLQk9YIGFuZCBS
QURJTy4KLSAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBi
b29sIHBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmKSBjb25zdDsKLSAgICBib29sIHRvb0xv
bmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKLSAgICBib29s
IHJhbmdlVW5kZXJmbG93KGNvbnN0IFN0cmluZyYpIGNvbnN0OwotICAgIGJvb2wgcmFuZ2VPdmVy
Zmxvdyhjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgcGF0dGVybk1pc21h
dGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJhbmdlVW5kZXJmbG93KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHJhbmdlT3ZlcmZsb3coKSBjb25zdDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3RlcE1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHRvb0xvbmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdHlw
ZU1pc21hdGNoKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2lu
ZygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdl
KCkgY29uc3QgT1ZFUlJJREU7CisKICAgICAvLyBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIGZv
ciB0eXBlPWRhdGUsIG51bWJlciwgb3IgcmFuZ2UuICBEb24ndCBjYWxsIHRoaXMgZm9yIG90aGVy
IHR5cGVzLgogICAgIGRvdWJsZSBtaW5pbXVtKCkgY29uc3Q7CiAgICAgLy8gUmV0dXJucyB0aGUg
bWF4aW11bSB2YWx1ZSBmb3IgdHlwZT1kYXRlLCBudW1iZXIsIG9yIHJhbmdlLiAgRG9uJ3QgY2Fs
bCB0aGlzIGZvciBvdGhlciB0eXBlcy4KQEAgLTY0LDE1ICs2Niw2IEBAIHB1YmxpYzoKICAgICAv
LyBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIGlzIG5vICJhbGxvd2VkIHZhbHVlIHN0ZXAuIgogICAg
IGJvb2wgZ2V0QWxsb3dlZFZhbHVlU3RlcChkb3VibGUqKSBjb25zdDsKIAotICAgIC8vIEZvciBW
YWxpZGl0eVN0YXRlLgotICAgIGJvb2wgc3RlcE1pc21hdGNoKGNvbnN0IFN0cmluZyYpIGNvbnN0
OwotICAgIFN0cmluZyBtaW5pbXVtU3RyaW5nKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG1heGltdW1T
dHJpbmcoKSBjb25zdDsKLSAgICBTdHJpbmcgc3RlcEJhc2VTdHJpbmcoKSBjb25zdDsKLSAgICBT
dHJpbmcgc3RlcFN0cmluZygpIGNvbnN0OwotICAgIFN0cmluZyB0eXBlTWlzbWF0Y2hUZXh0KCkg
Y29uc3Q7Ci0gICAgU3RyaW5nIHZhbHVlTWlzc2luZ1RleHQoKSBjb25zdDsKLQogICAgIC8vIElt
cGxlbWVudGF0aW9ucyBvZiBIVE1MSW5wdXRFbGVtZW50OjpzdGVwVXAoKSBhbmQgc3RlcERvd24o
KS4KICAgICB2b2lkIHN0ZXBVcChpbnQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHN0ZXBE
b3duKGludCwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtMzI1LDYgKzMxOCw3IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIHN1cHBvcnRzTWF4TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gaXNUZXh0VHlwZSgp
OyB9CiAgICAgYm9vbCBpc1RleHRUeXBlKCkgY29uc3Q7CisgICAgYm9vbCB0b29Mb25nKGNvbnN0
IFN0cmluZyYsIE5lZWRzVG9DaGVja0RpcnR5RmxhZykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGJv
b2wgc3VwcG9ydHNQbGFjZWhvbGRlcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1BsYWNl
aG9sZGVyRW1wdHkoKSBjb25zdCBPVkVSUklERTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVj
dEVsZW1lbnQuaAppbmRleCBhMGU2NjM3N2E2NDE4NTMwYWQ4NTgyODgwNzg3YWM1MzRlMGM0ZTZi
Li44ZGI2MjA4MTVkMTQxODI4NzBmMzFiY2VjYzgyOGM4NTljMmI3NDQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVudC5oCkBAIC01NCw5ICs1NCw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEltcGxlbWVudGF0aW9ucyBvZiBjb25zdHJhaW50IHZhbGlkYXRpb24gQVBJLgogICAg
IC8vIE5vdGUgdGhhdCB0aGUgb2JqZWN0IGVsZW1lbnRzIGFyZSBhbHdheXMgYmFycmVkIGZyb20g
Y29uc3RyYWludCB2YWxpZGF0aW9uLgotICAgIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIHsg
cmV0dXJuIFN0cmluZygpOyB9CisgICAgdmlydHVhbCBTdHJpbmcgdmFsaWRhdGlvbk1lc3NhZ2Uo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIGJvb2wgY2hlY2tWYWxp
ZGl0eSgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2b2lkIHNldEN1c3RvbVZhbGlkaXR5KGNvbnN0
IFN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDdXN0b21WYWxpZGl0eShjb25zdCBT
dHJpbmcmKSBPVkVSUklERSB7IH0KIAogICAgIHVzaW5nIFRyZWVTaGFyZWQ8Q29udGFpbmVyTm9k
ZT46OnJlZjsKICAgICB1c2luZyBUcmVlU2hhcmVkPENvbnRhaW5lck5vZGU+OjpkZXJlZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5kZXggNzkyMDFjNjJiYzA5
ZTAzYmVkOGZmNDYxN2JiNThhMmZkOTViYWM1ZC4uZGVhMjFhNzUyNzdlYTQyNTg2NzA4YThlZmE1
ODE4ZTNlYmU2OWY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5j
cHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MT3B0aW9uRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQu
aCIKKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5o
IgogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpA
QCAtMTQ1LDggKzE0NiwyMiBAQCBib29sIEhUTUxTZWxlY3RFbGVtZW50OjpoYXNQbGFjZWhvbGRl
ckxhYmVsT3B0aW9uKCkgY29uc3QKICAgICByZXR1cm4gIWxpc3RJbmRleCAmJiBvcHRpb24tPnZh
bHVlKCkuaXNFbXB0eSgpOwogfQogCitTdHJpbmcgSFRNTFNlbGVjdEVsZW1lbnQ6OnZhbGlkYXRp
b25NZXNzYWdlKCkgY29uc3QKK3sKKyAgICBpZiAoIXdpbGxWYWxpZGF0ZSgpKQorICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CisKKyAgICBpZiAoY3VzdG9tRXJyb3IoKSkKKyAgICAgICAgcmV0dXJu
IGN1c3RvbVZhbGlkYXRpb25NZXNzYWdlKCk7CisKKyAgICByZXR1cm4gdmFsdWVNaXNzaW5nKCkg
PyB2YWxpZGF0aW9uTWVzc2FnZVZhbHVlTWlzc2luZ0ZvclNlbGVjdFRleHQoKSA6IFN0cmluZygp
OworfQorCiBib29sIEhUTUxTZWxlY3RFbGVtZW50Ojp2YWx1ZU1pc3NpbmcoKSBjb25zdAogewor
ICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlm
ICghaXNSZXF1aXJlZEZvcm1Db250cm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCmluZGV4IDUyNjY1ZTE5NWI0OTFiZTNi
MDQ1YzViMmRiZDI2NTZlMTg2ZGUwOTYuLjgyYjcyNzMzODg2MmMyMzI3NzQ0ZWEyNWUzMTU5NDE5
ZTgzNWEzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1l
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKQEAgLTQ2
LDcgKzQ2LDggQEAgcHVibGljOgogICAgIHZvaWQgb3B0aW9uU2VsZWN0ZWRCeVVzZXIoaW50IGlu
ZGV4LCBib29sIGRpc3BhdGNoQ2hhbmdlRXZlbnQsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlv
biA9IGZhbHNlKTsKIAogICAgIC8vIEZvciBWYWxpZGl0eVN0YXRlCi0gICAgYm9vbCB2YWx1ZU1p
c3NpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB2YWx1ZU1pc3NpbmcoKSBjb25zdCBPVkVS
UklERTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA4MjU3ZDBmOTNjM2QxMzU1MmMwNDI0
MGY4MmIwZmQ1YTZkYmE3MjgzLi4zZmM4MTUxMDBmNjMzZWIyODA3ODk2Yzg5MWIyZjFkMTRmNDk5
YmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGb3JtRGF0YUxpc3QuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oIgogI2luY2x1ZGUgIlNo
YWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC00MjMsNiArNDI0LDMzIEBAIHZvaWQg
SFRNTFRleHRBcmVhRWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCBuZXdWYWx1ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAgICAgICAgIHNldEF0dHJpYnV0ZShtYXhsZW5ndGhBdHRyLCBTdHJpbmc6Om51
bWJlcihuZXdWYWx1ZSkpOwogfQogCitTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVudDo6dmFsaWRh
dGlvbk1lc3NhZ2UoKSBjb25zdAoreworICAgIGlmICghd2lsbFZhbGlkYXRlKCkpCisgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKKworICAgIGlmIChjdXN0b21FcnJvcigpKQorICAgICAgICByZXR1
cm4gY3VzdG9tVmFsaWRhdGlvbk1lc3NhZ2UoKTsKKworICAgIGlmICh2YWx1ZU1pc3NpbmcoKSkK
KyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOworCisg
ICAgaWYgKHRvb0xvbmcoKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9u
Z1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh2YWx1ZSgpKSwgbWF4TGVuZ3RoKCkpOworCisgICAg
cmV0dXJuIFN0cmluZygpOworfQorCitib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnZhbHVlTWlz
c2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIHdpbGxWYWxpZGF0ZSgpICYmIHZhbHVlTWlzc2lu
Zyh2YWx1ZSgpKTsKK30KKworYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp0b29Mb25nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gd2lsbFZhbGlkYXRlKCkgJiYgdG9vTG9uZyh2YWx1ZSgpLCBDaGVj
a0RpcnR5RmxhZyk7Cit9CisKIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6dG9vTG9uZyhjb25z
dCBTdHJpbmcmIHZhbHVlLCBOZWVkc1RvQ2hlY2tEaXJ0eUZsYWcgY2hlY2spIGNvbnN0CiB7CiAg
ICAgLy8gUmV0dXJuIGZhbHNlIGZvciB0aGUgZGVmYXVsdCB2YWx1ZSBvciB2YWx1ZSBzZXQgYnkg
c2NyaXB0IGV2ZW4gaWYgaXQgaXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmgKaW5kZXggYTE5YTQ3MWE5NjRiYTkwZDMwYWQ3NDg5NDMwMTM2ZjI0OTU3M2MxYy4uZDc1
NWQ4ODI3Zjc2ZjZlZTg1ZjRjNGRjMjg5NTdkZGJkZjc1ZGJkNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKQEAgLTQ3LDggKzQ3LDEwIEBAIHB1YmxpYzoKICAg
ICBpbnQgdGV4dExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHZhbHVlKCkubGVuZ3RoKCk7IH0KICAg
ICB2aXJ0dWFsIGludCBtYXhMZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIHNldE1heExlbmd0aChp
bnQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBib29sIHZhbHVlTWlzc2luZyhjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdCB7IHJldHVybiBpc1JlcXVpcmVkRm9ybUNvbnRyb2woKSAmJiAhZGlzYWJs
ZWQoKSAmJiAhcmVhZE9ubHkoKSAmJiB2YWx1ZS5pc0VtcHR5KCk7IH0KLSAgICBib29sIHRvb0xv
bmcoY29uc3QgU3RyaW5nJiwgTmVlZHNUb0NoZWNrRGlydHlGbGFnKSBjb25zdDsKKyAgICAvLyBG
b3IgVmFsaWRpdHlTdGF0ZQorICAgIHZpcnR1YWwgU3RyaW5nIHZhbGlkYXRpb25NZXNzYWdlKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHZhbHVlTWlzc2luZygpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB0b29Mb25nKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
Ym9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgCiAgICAgdmlydHVh
bCBIVE1MRWxlbWVudCogaW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0OwpAQCAtMTA4LDYgKzExMCw5
IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkVXNlSW5wdXRNZXRob2QoKTsK
IAorICAgIGJvb2wgdmFsdWVNaXNzaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0IHsgcmV0
dXJuIGlzUmVxdWlyZWRGb3JtQ29udHJvbCgpICYmICFkaXNhYmxlZCgpICYmICFyZWFkT25seSgp
ICYmIHZhbHVlLmlzRW1wdHkoKTsgfQorICAgIGJvb2wgdG9vTG9uZyhjb25zdCBTdHJpbmcmLCBO
ZWVkc1RvQ2hlY2tEaXJ0eUZsYWcpIGNvbnN0OworCiAgICAgaW50IG1fcm93czsKICAgICBpbnQg
bV9jb2xzOwogICAgIFdyYXBNZXRob2QgbV93cmFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9JbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3Bw
CmluZGV4IGNmMTI1YzllMDE4NmQ2NDlkZDc1ZWI4NWQ4NWRhNmE4NmUxNzdkYTguLjE0NmQ5MTg5
YzdjMzgzMzllMWU5MDAyY2UzMmVlYjU3Mjk3MTk2YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlw
ZS5jcHAKQEAgLTI4Myw2ICsyODMsMTQgQEAgYm9vbCBJbnB1dFR5cGU6OnNpemVTaG91bGRJbmNs
dWRlRGVjb3JhdGlvbihpbnQsIGludCYgcHJlZmVycmVkU2l6ZSkgY29uc3QKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKK3sKKyAgICBkb3VibGUgc3RlcDsKKyAgICBpZiAoIWdldEFsbG93ZWRWYWx1
ZVN0ZXAoJnN0ZXApKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN0ZXBNaXNt
YXRjaCh2YWx1ZSwgc3RlcCk7Cit9CisKIGJvb2wgSW5wdXRUeXBlOjpzdGVwTWlzbWF0Y2goY29u
c3QgU3RyaW5nJiwgZG91YmxlKSBjb25zdAogewogICAgIC8vIE5vbi1zdXBwb3J0ZWQgdHlwZXMg
c2hvdWxkIGJlIHJlamVjdGVkIGJ5IEhUTUxJbnB1dEVsZW1lbnQ6OmdldEFsbG93ZWRWYWx1ZVN0
ZXAoKS4KQEAgLTMzOCw2ICszNDYsNDEgQEAgU3RyaW5nIElucHV0VHlwZTo6dmFsdWVNaXNzaW5n
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVmFsdWVNaXNzaW5nVGV4
dCgpOwogfQogCitTdHJpbmcgSW5wdXRUeXBlOjp2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0Cit7
CisgICAgY29uc3QgU3RyaW5nIHZhbHVlID0gZWxlbWVudCgpLT52YWx1ZSgpOworCisgICAgLy8g
VGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hlY2tzIGlzIG1lYW5pbmdmdWwuIGUuZy4gV2Un
ZCBsaWtlIHRvIHNob3cgdGhlCisgICAgLy8gdmFsdWVNaXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0
aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlvbiBlcnJvcnMuCisgICAgaWYgKHZhbHVlTWlz
c2luZyh2YWx1ZSkpCisgICAgICAgIHJldHVybiB2YWx1ZU1pc3NpbmdUZXh0KCk7CisKKyAgICBp
ZiAodHlwZU1pc21hdGNoKCkpCisgICAgICAgIHJldHVybiB0eXBlTWlzbWF0Y2hUZXh0KCk7CisK
KyAgICBpZiAocGF0dGVybk1pc21hdGNoKHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRp
b25NZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOworCisgICAgaWYgKGVsZW1lbnQoKS0+dG9v
TG9uZygpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUb29Mb25nVGV4dChudW1H
cmFwaGVtZUNsdXN0ZXJzKHZhbHVlKSwgZWxlbWVudCgpLT5tYXhMZW5ndGgoKSk7CisKKyAgICBp
ZiAocmFuZ2VVbmRlcmZsb3codmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3Nh
Z2VSYW5nZVVuZGVyZmxvd1RleHQoc2VyaWFsaXplKG1pbmltdW0oKSkpOworCisgICAgaWYgKHJh
bmdlT3ZlcmZsb3codmFsdWUpKQorICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5n
ZU92ZXJmbG93VGV4dChzZXJpYWxpemUobWF4aW11bSgpKSk7CisKKyAgICBpZiAoc3RlcE1pc21h
dGNoKHZhbHVlKSkgeworICAgICAgICBTdHJpbmcgc3RlcFN0cmluZzsKKyAgICAgICAgZG91Ymxl
IHN0ZXA7CisgICAgICAgIGlmIChnZXRBbGxvd2VkVmFsdWVTdGVwKCZzdGVwKSkKKyAgICAgICAg
ICAgIHN0ZXBTdHJpbmcgPSBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKHN0ZXAgLyBzdGVwU2NhbGVG
YWN0b3IoKSk7CisgICAgICAgIHJldHVybiB2YWxpZGF0aW9uTWVzc2FnZVN0ZXBNaXNtYXRjaFRl
eHQoc2VyaWFsaXplKHN0ZXBCYXNlKCkpLCBzdGVwU3RyaW5nKTsKKyAgICB9CisKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKIHZvaWQgSW5wdXRUeXBlOjpoYW5kbGVDbGlja0V2ZW50KE1vdXNl
RXZlbnQqKQogewogfQpAQCAtODcwLDcgKzkxMyw3IEBAIGRvdWJsZSBJbnB1dFR5cGU6OmFsaWdu
VmFsdWVGb3JTdGVwKGRvdWJsZSBuZXdWYWx1ZSwgZG91YmxlIHN0ZXAsIHVuc2lnbmVkIGN1cnJl
CiAgICAgdW5zaWduZWQgYmFzZURlY2ltYWxQbGFjZXM7CiAgICAgZG91YmxlIGJhc2UgPSBzdGVw
QmFzZVdpdGhEZWNpbWFsUGxhY2VzKCZiYXNlRGVjaW1hbFBsYWNlcyk7CiAgICAgYmFzZURlY2lt
YWxQbGFjZXMgPSBtaW4oYmFzZURlY2ltYWxQbGFjZXMsIDE2dSk7Ci0gICAgaWYgKGVsZW1lbnQo
KS0+c3RlcE1pc21hdGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKKyAgICBpZiAoc3RlcE1pc21h
dGNoKGVsZW1lbnQoKS0+dmFsdWUoKSkpIHsKICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEw
LjAsIHN0YXRpY19jYXN0PGRvdWJsZT4obWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBjdXJyZW50RGVj
aW1hbFBsYWNlcykpKTsKICAgICAgICAgbmV3VmFsdWUgPSByb3VuZChuZXdWYWx1ZSAqIHNjYWxl
KSAvIHNjYWxlOwogICAgIH0gZWxzZSB7CkBAIC0xMDIzLDcgKzEwNjYsNyBAQCB2b2lkIElucHV0
VHlwZTo6c3RlcFVwRnJvbVJlbmRlcmVyKGludCBuKQogICAgICAgICBlbGVtZW50KCktPnNldFZh
bHVlKHNlcmlhbGl6ZShzaWduID4gMCA/IG1pbmltdW0oKSA6IG1heGltdW0oKSksIERpc3BhdGNo
SW5wdXRBbmRDaGFuZ2VFdmVudCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7Ci0gICAgICAgIGlmIChlbGVtZW50KCktPnN0ZXBNaXNtYXRjaChlbGVtZW50KCktPnZhbHVl
KCkpKSB7CisgICAgICAgIGlmIChzdGVwTWlzbWF0Y2goZWxlbWVudCgpLT52YWx1ZSgpKSkgewog
ICAgICAgICAgICAgQVNTRVJUKHN0ZXApOwogICAgICAgICAgICAgZG91YmxlIG5ld1ZhbHVlOwog
ICAgICAgICAgICAgZG91YmxlIHNjYWxlID0gcG93KDEwLjAsIHN0YXRpY19jYXN0PGRvdWJsZT4o
bWF4KHN0ZXBEZWNpbWFsUGxhY2VzLCBiYXNlRGVjaW1hbFBsYWNlcykpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCmluZGV4IDFjODZjYjBmY2NhOTNhN2IzMjEyODhkOTgyZTk4YzRkOWM4YzgwZDYu
LmIwMDgyNmIwODc3YzM2MTg1Y2E3YjlmNTk1YzAzZWYyMDE2MzZlNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtMTQwLDcgKzE0MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmFsdWVBc051bWJlcihkb3VibGUsIFRleHRGaWVsZEV2ZW50QmVoYXZpb3IsIEV4Y2VwdGlv
bkNvZGUmKSBjb25zdDsKIAogICAgIC8vIFZhbGlkYXRpb24gZnVuY3Rpb25zCi0KKyAgICB2aXJ0
dWFsIFN0cmluZyB2YWxpZGF0aW9uTWVzc2FnZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c1ZhbGlkYXRpb24oKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgdHlwZU1pc21hdGNo
Rm9yKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIC8vIFR5cGUgY2hlY2sgZm9yIHRoZSBjdXJy
ZW50IGlucHV0IHZhbHVlLiBXZSBkbyBub3RoaW5nIGZvciBzb21lIHR5cGVzCkBAIC0xNTcsNiAr
MTU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIG1pbmltdW0oKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGRvdWJsZSBtYXhpbXVtKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHNpemVT
aG91bGRJbmNsdWRlRGVjb3JhdGlvbihpbnQgZGVmYXVsdFNpemUsIGludCYgcHJlZmVycmVkU2l6
ZSkgY29uc3Q7CisgICAgYm9vbCBzdGVwTWlzbWF0Y2goY29uc3QgU3RyaW5nJikgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIHN0ZXBNaXNtYXRjaChjb25zdCBTdHJpbmcmLCBkb3VibGUgc3RlcCkg
Y29uc3Q7CiAgICAgdmlydHVhbCBkb3VibGUgc3RlcEJhc2UoKSBjb25zdDsKICAgICB2aXJ0dWFs
IGRvdWJsZSBzdGVwQmFzZVdpdGhEZWNpbWFsUGxhY2VzKHVuc2lnbmVkKikgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmNwcAppbmRleCBmZTczMTJjMmEzMDJkMzU1N2MwY2Vj
ZjhmNjM0M2QzZWJjYmFjMDYzLi42NDk3NjVkZjkxNDY4N2Q1NDhmOTBiZjUzMWQ0NDU3ZGY2NjRj
NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRpdHlTdGF0ZS5jcHAKQEAgLTM4LDE3NyArMzgs
NTIgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogU3RyaW5nIFZhbGlkaXR5U3RhdGU6
OnZhbGlkYXRpb25NZXNzYWdlKCkgY29uc3QKIHsKLSAgICBpZiAoIXRvSFRNTEVsZW1lbnQobV9j
b250cm9sKS0+d2lsbFZhbGlkYXRlKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAg
IGlmIChjdXN0b21FcnJvcigpKQotICAgICAgICByZXR1cm4gbV9jdXN0b21FcnJvck1lc3NhZ2U7
Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0g
ICAgYm9vbCBpc0lucHV0RWxlbWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkg
JiYgZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZyk7Ci0gICAgYm9vbCBpc1RleHRBcmVhRWxl
bWVudCA9IGVsZW1lbnQtPmlzRm9ybUNvbnRyb2xFbGVtZW50KCkgJiYgZWxlbWVudC0+aGFzVGFn
TmFtZSh0ZXh0YXJlYVRhZyk7Ci0gICAgLy8gVGhlIG9yZGVyIG9mIHRoZSBmb2xsb3dpbmcgY2hl
Y2tzIGlzIG1lYW5pbmdmdWwuIGUuZy4gV2UnZCBsaWtlIHRvIHNob3cgdGhlCi0gICAgLy8gdmFs
dWVNaXNzaW5nIG1lc3NhZ2UgZXZlbiBpZiB0aGUgY29udHJvbCBoYXMgb3RoZXIgdmFsaWRhdGlv
biBlcnJvcnMuCi0gICAgaWYgKHZhbHVlTWlzc2luZygpKSB7Ci0gICAgICAgIGlmIChlbGVtZW50
LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1l
c3NhZ2VWYWx1ZU1pc3NpbmdGb3JTZWxlY3RUZXh0KCk7Ci0gICAgICAgIGlmIChpc0lucHV0RWxl
bWVudCkKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4o
ZWxlbWVudCktPnZhbHVlTWlzc2luZ1RleHQoKTsKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlVmFsdWVNaXNzaW5nVGV4dCgpOwotICAgIH0KLSAgICBpZiAodHlwZU1pc21hdGNoKCkp
IHsKLSAgICAgICAgaWYgKGlzSW5wdXRFbGVtZW50KQotICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoVGV4dCgpOwot
ICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VUeXBlTWlzbWF0Y2hUZXh0KCk7Ci0gICAg
fQotICAgIGlmIChwYXR0ZXJuTWlzbWF0Y2goKSkKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25N
ZXNzYWdlUGF0dGVybk1pc21hdGNoVGV4dCgpOwotICAgIGlmICh0b29Mb25nKCkpIHsKLSAgICAg
ICAgaWYgKCFpc0lucHV0RWxlbWVudCAmJiAhaXNUZXh0QXJlYUVsZW1lbnQpIHsKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgICAgICB9Ci0gICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0ID0gc3Rh
dGljX2Nhc3Q8SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAg
cmV0dXJuIHZhbGlkYXRpb25NZXNzYWdlVG9vTG9uZ1RleHQobnVtR3JhcGhlbWVDbHVzdGVycyh0
ZXh0LT52YWx1ZSgpKSwgdGV4dC0+bWF4TGVuZ3RoKCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VV
bmRlcmZsb3coKSkgewotICAgICAgICBpZiAoIWlzSW5wdXRFbGVtZW50KSB7Ci0gICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VSYW5nZVVuZGVyZmxvd1Rl
eHQoc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpLT5taW5pbXVtU3RyaW5n
KCkpOwotICAgIH0KLSAgICBpZiAocmFuZ2VPdmVyZmxvdygpKSB7Ci0gICAgICAgIGlmICghaXNJ
bnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB2YWxpZGF0
aW9uTWVzc2FnZVJhbmdlT3ZlcmZsb3dUZXh0KHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQq
PihlbGVtZW50KS0+bWF4aW11bVN0cmluZygpKTsKLSAgICB9Ci0gICAgaWYgKHN0ZXBNaXNtYXRj
aCgpKSB7Ci0gICAgICAgIGlmICghaXNJbnB1dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICB9
Ci0gICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICByZXR1cm4gdmFsaWRhdGlvbk1lc3NhZ2VTdGVw
TWlzbWF0Y2hUZXh0KGlucHV0LT5zdGVwQmFzZVN0cmluZygpLCBpbnB1dC0+c3RlcFN0cmluZygp
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgVmFsaWRpdHlTdGF0
ZTo6c2V0Q3VzdG9tRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAgICBt
X2N1c3RvbUVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgaWYgKG1fY29udHJvbC0+aXNGb3Jt
Q29udHJvbEVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxl
bWVudCo+KG1fY29udHJvbCktPnNldE5lZWRzVmFsaWRpdHlDaGVjaygpOworICAgIHJldHVybiBt
X2NvbnRyb2wtPnZhbGlkYXRpb25NZXNzYWdlKCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6
dmFsdWVNaXNzaW5nKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHRvSFRN
TEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxWYWxpZGF0ZSgpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1
dFRhZykpIHsKLSAgICAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxI
VE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiBpbnB1dC0+dmFsdWVN
aXNzaW5nKGlucHV0LT52YWx1ZSgpKTsKLSAgICB9Ci0gICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05h
bWUodGV4dGFyZWFUYWcpKSB7Ci0gICAgICAgIEhUTUxUZXh0QXJlYUVsZW1lbnQqIHRleHRBcmVh
ID0gc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpOwotICAgICAgICBy
ZXR1cm4gdGV4dEFyZWEtPnZhbHVlTWlzc2luZyh0ZXh0QXJlYS0+dmFsdWUoKSk7Ci0gICAgfQot
ICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKHNlbGVjdFRhZykpCi0gICAgICAgIHJldHVybiB0
b0hUTUxTZWxlY3RFbGVtZW50KGVsZW1lbnQpLT52YWx1ZU1pc3NpbmcoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fY29udHJvbC0+dmFsdWVNaXNzaW5nKCk7CiB9CiAKIGJvb2wg
VmFsaWRpdHlTdGF0ZTo6dHlwZU1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCog
ZWxlbWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndp
bGxWYWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQt
Pmhhc1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KS0+dHlwZU1pc21hdGNoKCk7
CisgICAgcmV0dXJuIG1fY29udHJvbC0+dHlwZU1pc21hdGNoKCk7CiB9CiAKIGJvb2wgVmFsaWRp
dHlTdGF0ZTo6cGF0dGVybk1pc21hdGNoKCkgY29uc3QKIHsKLSAgICBIVE1MRWxlbWVudCogZWxl
bWVudCA9IHRvSFRNTEVsZW1lbnQobV9jb250cm9sKTsKLSAgICBpZiAoIWVsZW1lbnQtPndpbGxW
YWxpZGF0ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIWVsZW1lbnQtPmhh
c1RhZ05hbWUoaW5wdXRUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTElucHV0
RWxlbWVudCogaW5wdXQgPSBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCk7
Ci0gICAgcmV0dXJuIGlucHV0LT5wYXR0ZXJuTWlzbWF0Y2goaW5wdXQtPnZhbHVlKCkpOworICAg
IHJldHVybiBtX2NvbnRyb2wtPnBhdHRlcm5NaXNtYXRjaCgpOwogfQogCiBib29sIFZhbGlkaXR5
U3RhdGU6OnRvb0xvbmcoKSBjb25zdAogewotICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gdG9I
VE1MRWxlbWVudChtX2NvbnRyb2wpOwotICAgIGlmICghZWxlbWVudC0+d2lsbFZhbGlkYXRlKCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChlbGVtZW50LT5oYXNUYWdOYW1lKGlu
cHV0VGFnKSkgewotICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dCA9IHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGlucHV0LT50b29M
b25nKGlucHV0LT52YWx1ZSgpLCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Q2hlY2tEaXJ0
eUZsYWcpOwotICAgIH0KLSAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykp
IHsKLSAgICAgICAgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWEgPSBzdGF0aWNfY2FzdDxI
VE1MVGV4dEFyZWFFbGVtZW50Kj4oZWxlbWVudCk7Ci0gICAgICAgIHJldHVybiB0ZXh0QXJlYS0+
dG9vTG9uZyh0ZXh0QXJlYS0+dmFsdWUoKSwgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OkNo
ZWNrRGlydHlGbGFnKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX2Nv
bnRyb2wtPnRvb0xvbmcoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0YXRlOjpyYW5nZVVuZGVyZmxv
dygpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1f
Y29udHJvbCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFu
Z2VVbmRlcmZsb3coaW5wdXQtPnZhbHVlKCkpOworICAgIHJldHVybiBtX2NvbnRyb2wtPnJhbmdl
VW5kZXJmbG93KCk7CiB9CiAKIGJvb2wgVmFsaWRpdHlTdGF0ZTo6cmFuZ2VPdmVyZmxvdygpIGNv
bnN0CiB7Ci0gICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJv
bCk7Ci0gICAgaWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8
SFRNTElucHV0RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+cmFuZ2VPdmVy
ZmxvdyhpbnB1dC0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG1fY29udHJvbC0+cmFuZ2VPdmVyZmxv
dygpOwogfQogCiBib29sIFZhbGlkaXR5U3RhdGU6OnN0ZXBNaXNtYXRjaCgpIGNvbnN0CiB7Ci0g
ICAgSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAg
aWYgKCFlbGVtZW50LT53aWxsVmFsaWRhdGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0
RWxlbWVudCo+KGVsZW1lbnQpOwotICAgIHJldHVybiBpbnB1dC0+c3RlcE1pc21hdGNoKGlucHV0
LT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbV9jb250cm9sLT5zdGVwTWlzbWF0Y2goKTsKIH0KIAog
Ym9vbCBWYWxpZGl0eVN0YXRlOjpjdXN0b21FcnJvcigpIGNvbnN0CiB7Ci0gICAgSFRNTEVsZW1l
bnQqIGVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KG1fY29udHJvbCk7Ci0gICAgcmV0dXJuIGVsZW1l
bnQtPndpbGxWYWxpZGF0ZSgpICYmICFtX2N1c3RvbUVycm9yTWVzc2FnZS5pc0VtcHR5KCk7Cisg
ICAgcmV0dXJuIG1fY29udHJvbC0+Y3VzdG9tRXJyb3IoKTsKIH0KIAogYm9vbCBWYWxpZGl0eVN0
YXRlOjp2YWxpZCgpIGNvbnN0CiB7Ci0gICAgYm9vbCBzb21lRXJyb3IgPSB0eXBlTWlzbWF0Y2go
KSB8fCBzdGVwTWlzbWF0Y2goKSB8fCByYW5nZVVuZGVyZmxvdygpIHx8IHJhbmdlT3ZlcmZsb3co
KQotICAgICAgICB8fCB0b29Mb25nKCkgfHwgcGF0dGVybk1pc21hdGNoKCkgfHwgdmFsdWVNaXNz
aW5nKCkgfHwgY3VzdG9tRXJyb3IoKTsKLSAgICByZXR1cm4gIXNvbWVFcnJvcjsKKyAgICByZXR1
cm4gbV9jb250cm9sLT52YWxpZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGl0eVN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1ZhbGlkaXR5U3RhdGUuaAppbmRleCA0YTk2NDg4YmQ1NTY4ZjEzZTlhMDg0OWEzZTBiMjIzYzUx
ZDRmNjBlLi4xN2U5NGM5Nzg4ZGJjMDNhY2QxMDVhMzJkMTA5ZDY1YjEyNWFhMmJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1ZhbGlkaXR5U3RhdGUuaApAQCAtNTcsMTEgKzU3LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBWYWxpZGl0eVN0YXRlKEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogY29udHJvbCkg
OiBtX2NvbnRyb2woY29udHJvbCkgeyB9CiAKLSAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkQ29sb3JT
dHJpbmcoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIGJvb2wgaXNWYWxpZEVtYWlsQWRkcmVz
cyhjb25zdCBTdHJpbmcmKTsKLQogICAgIEZvcm1Bc3NvY2lhdGVkRWxlbWVudCogbV9jb250cm9s
OwotICAgIFN0cmluZyBtX2N1c3RvbUVycm9yTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>