<?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>91632</bug_id>
          
          <creation_ts>2012-07-18 09:39:46 -0700</creation_ts>
          <short_desc>Web Inspector: extracting HighlightInfo from HighlightData in DOMNodeHighlighter</short_desc>
          <delta_ts>2012-08-06 03:20:14 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Sergey Rogulenko">rogulenko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>672442</commentid>
    <comment_count>0</comment_count>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-18 09:39:46 -0700</bug_when>
    <thetext>Extracting HighlightInfo from HighlightData in DOMNodeHighlighter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672518</commentid>
    <comment_count>1</comment_count>
      <attachid>153043</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-18 10:46:19 -0700</bug_when>
    <thetext>Created attachment 153043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673359</commentid>
    <comment_count>2</comment_count>
      <attachid>153043</attachid>
    <who name="Andrey Kosyakov">caseq</who>
    <bug_when>2012-07-19 03:27:54 -0700</bug_when>
    <thetext>Comment on attachment 153043
Patch

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:538
&gt; +    if (highlightInfo) {

So we&apos;re clearing highlight when passed a null highlightInfo. Can we instead have a separate method for that?

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:551
&gt; +        m_highlightData-&gt;highlightInfo = adoptPtr(new HighlightInfo(*highlightInfo));

Does highlightInfo member have to be a pointer?

&gt; Source/WebCore/inspector/DOMNodeHighlighter.h:51
&gt; +struct HighlightInfo {

HighlightInfo is too generic -- can we find a better name? HighlightConfig sounds like a slightly better match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673523</commentid>
    <comment_count>3</comment_count>
      <attachid>153267</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-19 08:12:10 -0700</bug_when>
    <thetext>Created attachment 153267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682081</commentid>
    <comment_count>4</comment_count>
      <attachid>155302</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-30 09:31:19 -0700</bug_when>
    <thetext>Created attachment 155302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682295</commentid>
    <comment_count>5</comment_count>
      <attachid>155302</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-07-30 12:43:29 -0700</bug_when>
    <thetext>Comment on attachment 155302
Patch

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:497
&gt; +    if (m_needsUpdateBeforePainting)

Why did this appear? What issue does it solve?

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:593
&gt; +    IntRect visibleRect = IntRect(IntPoint(), frame-&gt;view()-&gt;visibleContentRect().size());

What was wrong with the old visibleContentRect()?
You can use frame-&gt;view()-&gt;visibleSize() for brevity.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1017
&gt; +        return PassOwnPtr&lt;HighlightConfig&gt; ();

Will &quot;return 0;&quot; work in this case, like it does for PassRefPtr&apos;s?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682801</commentid>
    <comment_count>6</comment_count>
      <attachid>155302</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-31 01:00:09 -0700</bug_when>
    <thetext>Comment on attachment 155302
Patch

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

&gt;&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:497
&gt;&gt; +    if (m_needsUpdateBeforePainting)
&gt; 
&gt; Why did this appear? What issue does it solve?

When we scroll the page we do not repaint the whole view. So, if we do not do full repaint, there may appear multiple elementTitles on the screen. So I added this to force repainting of the whole overlay.

&gt;&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:593
&gt;&gt; +    IntRect visibleRect = IntRect(IntPoint(), frame-&gt;view()-&gt;visibleContentRect().size());
&gt; 
&gt; What was wrong with the old visibleContentRect()?
&gt; You can use frame-&gt;view()-&gt;visibleSize() for brevity.

The problem here could appear when you open a page, scroll down and press pause button. The position of visibleContentRect is (0, y), where y &gt; 0, but the context is configured so that the upper-left corner is (0, 0). So the drawing rect would be painted below its proper place. Maybe it is better to do context.translate?

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1017
&gt;&gt; +        return PassOwnPtr&lt;HighlightConfig&gt; ();
&gt; 
&gt; Will &quot;return 0;&quot; work in this case, like it does for PassRefPtr&apos;s?

I tried return 0, but it didn&apos;t compile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682810</commentid>
    <comment_count>7</comment_count>
      <attachid>155302</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-31 01:16:44 -0700</bug_when>
    <thetext>Comment on attachment 155302
Patch

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:498
&gt; +        update();

re-validating screen from paint is a no-go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682812</commentid>
    <comment_count>8</comment_count>
      <attachid>155462</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-07-31 01:23:16 -0700</bug_when>
    <thetext>Created attachment 155462
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>682988</commentid>
    <comment_count>9</comment_count>
      <attachid>155462</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-07-31 06:43:39 -0700</bug_when>
    <thetext>Comment on attachment 155462
Patch

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

Looks mostly good, few nits inline.

&gt; Source/WebCore/inspector/DOMNodeHighlighter.h:60
&gt; +struct HighlightData {

1) I don&apos;t think you need highlight data type.
2) I think it is fine to have rect and node assigned at the same time

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1016
&gt; +    if (!highlightInspectorObject)

This should never happen, you should return ErrorString for such cases,

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1021
&gt; +    highlightInspectorObject-&gt;getBoolean(&quot;showInfo&quot;, &amp;showInfo);

I believe we are generating constants for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683931</commentid>
    <comment_count>10</comment_count>
      <attachid>155462</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-08-01 00:25:17 -0700</bug_when>
    <thetext>Comment on attachment 155462
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1021
&gt;&gt; +    highlightInspectorObject-&gt;getBoolean(&quot;showInfo&quot;, &amp;showInfo);
&gt; 
&gt; I believe we are generating constants for these.

I did not find constants for these (only setShowInfo, setContentColor and so on).
Is it OK that InspectorTypeBuilder already has class HighlightConfig?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>683991</commentid>
    <comment_count>11</comment_count>
      <attachid>155757</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-08-01 01:58:00 -0700</bug_when>
    <thetext>Created attachment 155757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685648</commentid>
    <comment_count>12</comment_count>
      <attachid>155757</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-02 12:05:42 -0700</bug_when>
    <thetext>Comment on attachment 155757
Patch

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

Looks good. A couple of nits inline.

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:565
&gt; +    if (!m_highlightNode &amp;&amp; !m_highlightRect)

I think now node and rect highlighting are independent first class citizens. You should treat them separately (as you treat drawPausedInDebugger)

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1009
&gt; +            *errorString = &quot;Null pointer for highlightInspectorObject in InspectorDOMAgent::setSearchingForNode&quot;;

&quot;Internal error: highlight configuration parameter is missing&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686803</commentid>
    <comment_count>13</comment_count>
      <attachid>156393</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-08-03 08:59:33 -0700</bug_when>
    <thetext>Created attachment 156393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686835</commentid>
    <comment_count>14</comment_count>
      <attachid>156393</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-03 09:30:46 -0700</bug_when>
    <thetext>Comment on attachment 156393
Patch

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1009
&gt; +            *errorString = &quot;Null pointer for highlightInspectorObject in InspectorDOMAgent::setSearchingForNode&quot;;

I think I was commenting on this earlier.

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1054
&gt; +            *errorString = &quot;Null pointer for highlightInspectorObject in InspectorDOMAgent::highlightNode&quot;;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687874</commentid>
    <comment_count>15</comment_count>
      <attachid>156627</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-08-06 02:00:13 -0700</bug_when>
    <thetext>Created attachment 156627
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687905</commentid>
    <comment_count>16</comment_count>
      <attachid>156627</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-06 02:29:10 -0700</bug_when>
    <thetext>Comment on attachment 156627
Patch

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

&gt; Source/WebCore/inspector/InspectorDOMAgent.cpp:1053
&gt; +        if (!highlightInspectorObject) {

I think you could move this code into highlightConfigFromInspectorObject(errorString, ...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687941</commentid>
    <comment_count>17</comment_count>
      <attachid>156641</attachid>
    <who name="Sergey Rogulenko">rogulenko</who>
    <bug_when>2012-08-06 02:56:34 -0700</bug_when>
    <thetext>Created attachment 156641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687955</commentid>
    <comment_count>18</comment_count>
      <attachid>156627</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 03:20:08 -0700</bug_when>
    <thetext>Comment on attachment 156627
Patch

Clearing flags on attachment: 156627

Committed r124749: &lt;http://trac.webkit.org/changeset/124749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687956</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 03:20:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153043</attachid>
            <date>2012-07-18 10:46:19 -0700</date>
            <delta_ts>2012-07-19 08:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120718214618.patch</filename>
            <type>text/plain</type>
            <size>19122</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JjYzczMDFmZjlkNzhk
M2RmNmY0N2UxMjJkNmU2MTJkYmNiNjZiZi4uMjA3NmM1ZDE4Yzk0Yjc4N2MyMzVmNTgxZTgyYWMw
MWRjMjBjNjI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA3LTE4ICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuaDoKKyAgICAgICAgKEhpZ2hsaWdodERhdGEpOgorICAgICAgICAo
SW5zcGVjdG9yT3ZlcmxheSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0U2Vh
cmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0SW5mb0Zyb21Db25maWcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorCiAyMDEy
LTA3LTE4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBTYXZlIGFzIGZpbGUgaXMgbWlzc2luZyBpbiBO
ZXR3b3JrIHBhbmVsIHByZXZpZXcvcmVzcG9uc2UgdGFicy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggNDZjOTljZjNkMzBlYmFmYmI2
Y2E5ZWRkNzZhMjU1NDFlYWFjY2VhOC4uOGY1MzZlMTBlZDllOWJiOGMwNDE4MzBlZjJiNjE5ZDA2
ZWE4YzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdo
bGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5jcHAKQEAgLTExMywzNSArMTEzLDM1IEBAIHZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhD
bGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjCiAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNvbnN0
IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwgY29u
c3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQor
dm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29u
c3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhp
Z2hsaWdodEluZm8qIGhpZ2hsaWdodEluZm8pCiB7Ci0gICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdo
bGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIGJvb2wgaGFzQm9y
ZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBi
b29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRhLT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3Bh
cmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHREYXRhLT5jb250ZW50ICE9IENv
bG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xv
cjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHRJbmZvLT5tYXJn
aW4gIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0
SW5mby0+Ym9yZGVyICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc1BhZGRpbmcg
PSBoaWdobGlnaHRJbmZvLT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29s
IGhhc0NvbnRlbnQgPSBoaWdobGlnaHRJbmZvLT5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVu
dCB8fCBoaWdobGlnaHRJbmZvLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7
CiAKICAgICBGbG9hdFF1YWQgY2xpcFF1YWQ7CiAgICAgQ29sb3IgY2xpcENvbG9yOwogICAgIGlm
IChoYXNNYXJnaW4gJiYgKCFoYXNCb3JkZXIgfHwgbWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKSkg
ewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVhZCwg
Ym9yZGVyUXVhZCwgaGlnaGxpZ2h0RGF0YS0+bWFyZ2luKTsKKyAgICAgICAgZHJhd091dGxpbmVk
UXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRlclF1YWQsIGhpZ2hsaWdodElu
Zm8tPm1hcmdpbik7CiAgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAg
aWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVh
ZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1
YWQsIHBhZGRpbmdRdWFkLCBoaWdobGlnaHREYXRhLT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0
bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hs
aWdodEluZm8tPmJvcmRlcik7CiAgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7CiAgICAg
fQogICAgIGlmIChoYXNQYWRkaW5nICYmICghaGFzQ29udGVudCB8fCBwYWRkaW5nUXVhZCAhPSBj
b250ZW50UXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQs
IHBhZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+cGFkZGluZyk7CisgICAg
ICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVu
dFF1YWQsIGhpZ2hsaWdodEluZm8tPnBhZGRpbmcpOwogICAgICAgICBjbGlwUXVhZCA9IGNvbnRl
bnRRdWFkOwogICAgIH0KICAgICBpZiAoaGFzQ29udGVudCkKLSAgICAgICAgZHJhd091dGxpbmVk
UXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxp
Z2h0RGF0YS0+Y29udGVudE91dGxpbmUpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRl
eHQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHRJbmZvLT5jb250ZW50LCBoaWdobGlnaHRJbmZvLT5j
b250ZW50T3V0bGluZSk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIGFic29sdXRl
UXVhZHMsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRG
b3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9h
dFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBIaWdobGlnaHRJbmZvKiBoaWdobGlnaHRJbmZvKQogewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWJzb2x1dGVRdWFkcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBhYnNvbHV0ZVF1YWRzW2ldLCBoaWdobGln
aHREYXRhLT5jb250ZW50LCBDb2xvcjo6dHJhbnNwYXJlbnQpOworICAgICAgICBkcmF3T3V0bGlu
ZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hsaWdodEluZm8tPmNvbnRlbnQs
IENvbG9yOjp0cmFuc3BhcmVudCk7CiB9CiAKIGludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRS
dW4mIGdsb2JhbFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0
ZXh0Q29sb3IsIGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29u
c3QgTGF5b3V0UmVjdCYgdGl0bGVSZWN0KQpAQCAtMzYzLDkgKzM2Myw4IEBAIHN0YXRpYyB2b2lk
IGNvbnRlbnRzUXVhZFRvUGFnZShjb25zdCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFt
ZVZpZXcqIHZpZXcsCiAgICAgcXVhZCArPSBtYWluVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiB9CiAK
LXN0YXRpYyB2b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkK
K3N0YXRpYyB2b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRJbmZvKiBoaWdobGlnaHRJbmZvLCBIaWdobGlnaHQq
IGhpZ2hsaWdodCkKIHsKLSAgICBOb2RlKiBub2RlID0gaGlnaGxpZ2h0RGF0YS0+bm9kZS5nZXQo
KTsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBG
cmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKIApAQCAt
Mzk3LDcgKzM5Niw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdoCiAgICAgICAgICAgICBjb250
ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdWaWV3LCBoaWdobGlnaHQtPnF1YWRz
W2ldKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKLSAgICAgICAgICAgIGRyYXdIaWdobGlnaHRG
b3JTVkdSZW5kZXJlcigqY29udGV4dCwgaGlnaGxpZ2h0LT5xdWFkcywgaGlnaGxpZ2h0RGF0YSk7
CisgICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hs
aWdodC0+cXVhZHMsIGhpZ2hsaWdodEluZm8pOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXItPmlz
Qm94KCkgfHwgcmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgTGF5b3V0UmVj
dCBjb250ZW50Qm94OwogICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CkBAIC00NTEsNyAr
NDUwLDcgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICAgICAgaGlnaGxpZ2h0LT5xdWFk
cy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQotICAgICAg
ICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgqY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1Bh
ZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsK
KyAgICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRRdWFk
LCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxpZ2h0
SW5mbyk7CiAgICAgfQogCiAgICAgLy8gRHJhdyBub2RlIHRpdGxlIGlmIG5lY2Vzc2FyeS4KQEAg
LTQ1OSwxNiArNDU4LDE2IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdoCiAgICAgaWYgKCFub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0ICYm
IGhpZ2hsaWdodERhdGEtPnNob3dJbmZvKQorICAgIGlmIChjb250ZXh0ICYmIGhpZ2hsaWdodElu
Zm8tPnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBub2RlLCBy
ZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25hcHBlZElu
dFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1lLT5zZXR0
aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERh
dGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hs
aWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3QqIHJlY3Qs
IEhpZ2hsaWdodEluZm8qIGhpZ2hsaWdodEluZm8sIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQogewog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGhpZ2hsaWdo
dFJlY3QoKihoaWdobGlnaHREYXRhLT5yZWN0KSk7CisgICAgRmxvYXRSZWN0IGhpZ2hsaWdodFJl
Y3QoKnJlY3QpOwogCiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwog
ICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGhpZ2hsaWdodFJlY3QpOwpAQCAtNDgwLDcgKzQ3
OSw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBQYWdlKiBwYWdlLCBIaWdobGlnCiAgICAgICAgICAgICBjb250ZXh0LT50cmFu
c2xhdGUoLXZpc2libGVSZWN0LngoKSwgLXZpc2libGVSZWN0LnkoKSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0LCBoaWdobGln
aHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWQoKmNvbnRleHQsIGhpZ2hsaWdodFJlY3QsIGhpZ2hsaWdodEluZm8t
PmNvbnRlbnQsIGhpZ2hsaWdodEluZm8tPmNvbnRlbnRPdXRsaW5lKTsKICAgICB9CiB9CiAKQEAg
LTUwOSwxNiArNTA4LDE3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhp
Z2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogICAgIGlmICghbV9oaWdobGlnaHREYXRhKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBoaWdobGlnaHQtPmNvbnRlbnRDb2xvciA9IG1faGlnaGxpZ2h0
RGF0YS0+Y29udGVudDsKLSAgICBoaWdobGlnaHQtPnBhZGRpbmdDb2xvciA9IG1faGlnaGxpZ2h0
RGF0YS0+cGFkZGluZzsKLSAgICBoaWdobGlnaHQtPmJvcmRlckNvbG9yID0gbV9oaWdobGlnaHRE
YXRhLT5ib3JkZXI7Ci0gICAgaGlnaGxpZ2h0LT5tYXJnaW5Db2xvciA9IG1faGlnaGxpZ2h0RGF0
YS0+bWFyZ2luOworICAgIEhpZ2hsaWdodEluZm8qIGhpZ2hsaWdodEluZm8gPSBtX2hpZ2hsaWdo
dERhdGEtPmhpZ2hsaWdodEluZm8uZ2V0KCk7CisgICAgaGlnaGxpZ2h0LT5jb250ZW50Q29sb3Ig
PSBoaWdobGlnaHRJbmZvLT5jb250ZW50OworICAgIGhpZ2hsaWdodC0+cGFkZGluZ0NvbG9yID0g
aGlnaGxpZ2h0SW5mby0+cGFkZGluZzsKKyAgICBoaWdobGlnaHQtPmJvcmRlckNvbG9yID0gaGln
aGxpZ2h0SW5mby0+Ym9yZGVyOworICAgIGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IgPSBoaWdobGln
aHRJbmZvLT5tYXJnaW47CiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3Rz
OwogCiAgICAgaWYgKG1faGlnaGxpZ2h0RGF0YS0+bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9k
ZUhpZ2hsaWdodCgwLCBtX2hpZ2hsaWdodERhdGEuZ2V0KCksIGhpZ2hsaWdodCk7CisgICAgICAg
IGdldE9yRHJhd05vZGVIaWdobGlnaHQoMCwgbV9oaWdobGlnaHREYXRhLT5ub2RlLmdldCgpLCBo
aWdobGlnaHRJbmZvLCBoaWdobGlnaHQpOwogICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0RGF0YS0+
cmVjdCkKLSAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgwLCBtX3BhZ2UsIG1faGlnaGxp
Z2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKKyAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdo
dCgwLCBtX3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS0+cmVjdC5nZXQoKSwgaGlnaGxpZ2h0SW5mbywg
aGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJbkRlYnVn
Z2VyTWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCkBAIC01MjksMzAgKzUyOSwyOSBAQCB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0IFN0
cmluZyogbWVzc2FnZSkKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWRlSGlnaGxpZ2h0KCkK
IHsKLSAgICBpZiAobV9oaWdobGlnaHREYXRhKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDbGVhciBl
bnRpcmUgaGlnaGxpZ2h0IGRhdGEgaGVyZSwgc3RvcmUgY29uZmlnIHVwb24gc2V0SW5zcGVjdE1v
ZGVFbmFibGVkCi0gICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cmVjdC5jbGVhcigpOwotICAgICAg
ICBtX2hpZ2hsaWdodERhdGEtPm5vZGUuY2xlYXIoKTsKLSAgICB9CisgICAgbV9oaWdobGlnaHRE
YXRhLmNsZWFyKCk7CiAgICAgdXBkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
aGlnaGxpZ2h0Tm9kZShOb2RlKiBub2RlKQordm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGln
aHROb2RlKE5vZGUqIG5vZGUsIEhpZ2hsaWdodEluZm8qIGhpZ2hsaWdodEluZm8pCiB7Ci0gICAg
aWYgKG1faGlnaGxpZ2h0RGF0YSkKKyAgICBpZiAoaGlnaGxpZ2h0SW5mbykgeworICAgICAgICBt
X2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICAgICAg
bV9oaWdobGlnaHREYXRhLT5oaWdobGlnaHRJbmZvID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodElu
Zm8oKmhpZ2hsaWdodEluZm8pKTsKICAgICAgICAgbV9oaWdobGlnaHREYXRhLT5ub2RlID0gbm9k
ZTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLmNsZWFyKCk7CiAgICAgdXBk
YXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0SGlnaGxpZ2h0RGF0YShQYXNz
T3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEpCit2b2lkIEluc3BlY3Rvck92ZXJs
YXk6OmhpZ2hsaWdodFJlY3QoUGFzc093blB0cjxJbnRSZWN0PiByZWN0LCBIaWdobGlnaHRJbmZv
KiBoaWdobGlnaHRJbmZvKQogewotICAgIG1faGlnaGxpZ2h0RGF0YSA9IGhpZ2hsaWdodERhdGE7
Ci0gICAgdXBkYXRlKCk7Ci19Ci0KLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJIaWdobGln
aHREYXRhKCkKLXsKLSAgICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKKyAgICBpZiAoaGlnaGxp
Z2h0SW5mbykgeworICAgICAgICBtX2hpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxp
Z2h0RGF0YSgpKTsKKyAgICAgICAgbV9oaWdobGlnaHREYXRhLT5oaWdobGlnaHRJbmZvID0gYWRv
cHRQdHIobmV3IEhpZ2hsaWdodEluZm8oKmhpZ2hsaWdodEluZm8pKTsKKyAgICAgICAgbV9oaWdo
bGlnaHREYXRhLT5yZWN0ID0gcmVjdDsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9oaWdobGlnaHRE
YXRhLmNsZWFyKCk7CiAgICAgdXBkYXRlKCk7CiB9CiAKQEAgLTU3Niw5ICs1NzUsOSBAQCB2b2lk
IEluc3BlY3Rvck92ZXJsYXk6OmRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
KQogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBpZiAobV9oaWdobGlnaHREYXRhLT5u
b2RlKQotICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdo
dERhdGEuZ2V0KCksICZoaWdobGlnaHQpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0
KCZjb250ZXh0LCBtX2hpZ2hsaWdodERhdGEtPm5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+
aGlnaGxpZ2h0SW5mby5nZXQoKSwgJmhpZ2hsaWdodCk7CiAgICAgZWxzZSBpZiAobV9oaWdobGln
aHREYXRhLT5yZWN0KQotICAgICAgICBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KCZjb250ZXh0LCBt
X3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS5nZXQoKSwgJmhpZ2hsaWdodCk7CisgICAgICAgIGdldE9y
RHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQsIG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLT5yZWN0
LmdldCgpLCBtX2hpZ2hsaWdodERhdGEtPmhpZ2hsaWdodEluZm8uZ2V0KCksICZoaWdobGlnaHQp
OwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdQYXVzZWRJbkRlYnVnZ2VyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2Rl
SGlnaGxpZ2h0ZXIuaAppbmRleCBhMjAwY2NjOWIzZDU0NmI2YTQyYjI3MDhiOTJlMTgzODBhZjBm
NzAxLi5jMDZjMGFlZDgzMTJlMjdiNDg2ZGU4NzI5NWFjMjJiODY5Yjc0ZDhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCkBAIC00OCwxNCArNDgs
MTcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogCi1zdHJ1Y3Qg
SGlnaGxpZ2h0RGF0YSB7CitzdHJ1Y3QgSGlnaGxpZ2h0SW5mbyB7CiAgICAgQ29sb3IgY29udGVu
dDsKICAgICBDb2xvciBjb250ZW50T3V0bGluZTsKICAgICBDb2xvciBwYWRkaW5nOwogICAgIENv
bG9yIGJvcmRlcjsKICAgICBDb2xvciBtYXJnaW47CiAgICAgYm9vbCBzaG93SW5mbzsKK307CiAK
K3N0cnVjdCBIaWdobGlnaHREYXRhIHsKKyAgICBPd25QdHI8SGlnaGxpZ2h0SW5mbz4gaGlnaGxp
Z2h0SW5mbzsKICAgICAvLyBFaXRoZXIgb2YgdGhlc2UgbXVzdCBiZSAwLgogICAgIFJlZlB0cjxO
b2RlPiBub2RlOwogICAgIE93blB0cjxJbnRSZWN0PiByZWN0OwpAQCAtOTIsOSArOTUsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcq
KTsKIAogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShO
b2RlKik7Ci0gICAgdm9pZCBzZXRIaWdobGlnaHREYXRhKFBhc3NPd25QdHI8SGlnaGxpZ2h0RGF0
YT4pOwotICAgIHZvaWQgY2xlYXJIaWdobGlnaHREYXRhKCk7CisgICAgdm9pZCBoaWdobGlnaHRO
b2RlKE5vZGUqLCBIaWdobGlnaHRJbmZvKik7CisgICAgdm9pZCBoaWdobGlnaHRSZWN0KFBhc3NP
d25QdHI8SW50UmVjdD4sIEhpZ2hsaWdodEluZm8qKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVk
Tm9kZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmNwcAppbmRleCBhNWEyNmJjMTcyMzhmYzlmM2E5Y2E2YjE0N2I5OTVjMjdjNjMxNzIx
Li5jMDFmMDA3NmZkY2UwMGI2NmEwYjQxY2Y4M2VjOWMwMGMzNjA0NDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk4Miw3ICs5ODIs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25z
dCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVucwogICAgIHdoaWxlIChub2RlICYmIG5vZGUtPm5v
ZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50
Tm9kZSgpOwogICAgIGlmIChub2RlKQotICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUo
bm9kZSk7CisgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCBtX2luc3BlY3RN
b2RlSGlnaGxpZ2h0SW5mby5nZXQoKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dENvbmZpZykKQEAgLTk5MSwzMiArOTkxLDI4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsCiAg
ICAgICAgIHJldHVybjsKICAgICBtX3NlYXJjaGluZ0Zvck5vZGUgPSBlbmFibGVkOwogICAgIGlm
IChlbmFibGVkKQotICAgICAgICBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdobGlnaHRD
b25maWcpOworICAgICAgICBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0SW5mbyA9IGhpZ2hsaWdodElu
Zm9Gcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CiAgICAgZWxzZSB7CiAgICAgICAgIEVycm9y
U3RyaW5nIGVycm9yOwogICAgICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7Ci0gICAgICAgIG1f
b3ZlcmxheS0+Y2xlYXJIaWdobGlnaHREYXRhKCk7CiAgICAgfQogfQogCi1ib29sIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodENvbmZpZykKK1Bhc3NPd25QdHI8SGlnaGxpZ2h0SW5mbz4gSW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodEluZm9Gcm9tQ29uZmlnKEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29u
ZmlnKQogewotICAgIGlmICghaGlnaGxpZ2h0Q29uZmlnKSB7Ci0gICAgICAgIG1fb3ZlcmxheS0+
Y2xlYXJIaWdobGlnaHREYXRhKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisgICAg
aWYgKCFoaWdobGlnaHRDb25maWcpCisgICAgICAgIHJldHVybiBQYXNzT3duUHRyPEhpZ2hsaWdo
dEluZm8+ICgpOwogCi0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBh
ZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0SW5mbz4g
aGlnaGxpZ2h0SW5mbyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRJbmZvKCkpOwogICAgIGJvb2wg
c2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRp
cCkuCiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5m
byk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8gPSBzaG93SW5mbzsKLSAgICBoaWdobGln
aHREYXRhLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxp
Z2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29u
ZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhp
Z2hsaWdodERhdGEtPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKCJwYWRkaW5nQ29sb3IiLCBo
aWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPmJvcmRlciA9IHBhcnNlQ29uZmln
Q29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRh
LT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodENvbmZp
Zyk7Ci0gICAgbV9vdmVybGF5LT5zZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFz
ZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBoaWdobGlnaHRJbmZvLT5zaG93SW5mbyA9IHNo
b3dJbmZvOworICAgIGhpZ2hsaWdodEluZm8tPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKCJj
b250ZW50Q29sb3IiLCBoaWdobGlnaHRDb25maWcpOworICAgIGhpZ2hsaWdodEluZm8tPmNvbnRl
bnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhpZ2hs
aWdodENvbmZpZyk7CisgICAgaGlnaGxpZ2h0SW5mby0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29s
b3IoInBhZGRpbmdDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgaGlnaGxpZ2h0SW5mby0+
Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcigiYm9yZGVyQ29sb3IiLCBoaWdobGlnaHRDb25maWcp
OworICAgIGhpZ2hsaWdodEluZm8tPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNv
bG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICByZXR1cm4gaGlnaGxpZ2h0SW5mby5yZWxlYXNl
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChF
cnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IGhpZ2hsaWdodENvbmZpZykKQEAgLTEwMjYsMTEgKzEwMjIsMTAgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVk
LCBjb25zdAogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3Ry
aW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91
dGxpbmVDb2xvcikKIHsKLSAgICBPd25QdHI8SGlnaGxpZ2h0RGF0YT4gaGlnaGxpZ2h0RGF0YSA9
IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOwotICAgIGhpZ2hsaWdodERhdGEtPnJlY3Qg
PSBhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgaGlnaGxp
Z2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwotICAgIGhpZ2hsaWdodERhdGEt
PmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwotICAgIG1fb3Zlcmxh
eS0+c2V0SGlnaGxpZ2h0RGF0YShoaWdobGlnaHREYXRhLnJlbGVhc2UoKSk7CisgICAgT3duUHRy
PEhpZ2hsaWdodEluZm8+IGhpZ2hsaWdodEluZm8gPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0SW5m
bygpKTsKKyAgICBoaWdobGlnaHRJbmZvLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7Cisg
ICAgaGlnaGxpZ2h0SW5mby0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CisgICAgbV9vdmVybGF5LT5oaWdobGlnaHRSZWN0KGFkb3B0UHRyKG5ldyBJbnRSZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpKSwgaGlnaGxpZ2h0SW5mby5nZXQoKSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCkBAIC0xMDM4LDkgKzEwMzMsMTAgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKICAgICBpbnQgbm9kZUlkLAogICAg
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcpCiB7Ci0gICAg
aWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAgICAgICAgaWYgKHNldEhpZ2hs
aWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZy5nZXQoKSkpCi0gICAgICAgICAgICBt
X292ZXJsYXktPmhpZ2hsaWdodE5vZGUobm9kZSk7CisgICAgaWYgKE5vZGUqIG5vZGUgPSBub2Rl
Rm9ySWQobm9kZUlkKSkgeworICAgICAgICBPd25QdHI8SGlnaGxpZ2h0SW5mbz4gaGlnaGxpZ2h0
SW5mbyA9IGhpZ2hsaWdodEluZm9Gcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZy5nZXQoKSk7Cisg
ICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCBoaWdobGlnaHRJbmZvLmdldCgp
KTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKApA
QCAtMTA1MSwxMiArMTA0NywxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRG
cmFtZSgKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFt
ZUlkKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAg
IE93blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hs
aWdodERhdGEoKSk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPm5vZGUgPSBmcmFtZS0+b3duZXJF
bGVtZW50KCk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3
YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+Y29u
dGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5jb250ZW50
T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICAgICAgbV9vdmVybGF5LT5z
ZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgT3duUHRy
PEhpZ2hsaWdodEluZm8+IGhpZ2hsaWdodEluZm8gPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0SW5m
bygpKTsKKyAgICAgICAgaGlnaGxpZ2h0SW5mby0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMg
c2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgorICAgICAgICBoaWdobGlnaHRJbmZvLT5jb250ZW50
ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgICAgIGhpZ2hsaWdodEluZm8tPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgICAgICBtX292ZXJsYXktPmhpZ2hs
aWdodE5vZGUoZnJhbWUtPm93bmVyRWxlbWVudCgpLCBoaWdobGlnaHRJbmZvLmdldCgpKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggOTEwNjIzMDMxY2U4NzhlMTQ4NjhhNTQzMTk4Yjg0ZTBjZDk2MmRmYy4uNzkyN2U3NWI5
MzQyZDEyMGZjN2VmOTY5YjMxZGVjNTQ4ODJlODY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgSW5z
cGVjdG9yRE9NQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01BZ2VudF9oCiAKKyNpbmNsdWRl
ICJET01Ob2RlSGlnaGxpZ2h0ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgi
CkBAIC02OSw2ICs3MCw4IEBAIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7CiBj
bGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKK3N0cnVjdCBIaWdobGlnaHRJ
bmZvOworCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCkBAIC0xOTgsNyArMjAxLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAKICAgICB2b2lk
IHNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZyk7Ci0gICAgYm9vbCBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0
b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7CisgICAgUGFzc093blB0cjxIaWdobGlnaHRJbmZv
PiBoaWdobGlnaHRJbmZvRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZp
Zyk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8
UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjQ3LDYgKzI1MCw3IEBAIHByaXZh
dGU6CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0
ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRvRm9jdXM7CiAgICAgYm9v
bCBtX3NlYXJjaGluZ0Zvck5vZGU7CisgICAgT3duUHRyPEhpZ2hsaWdodEluZm8+IG1faW5zcGVj
dE1vZGVIaWdobGlnaHRJbmZvOwogICAgIE93blB0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rv
cnk7CiAgICAgT3duUHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAgICAgYm9vbCBtX3N1cHBy
ZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153267</attachid>
            <date>2012-07-19 08:12:10 -0700</date>
            <delta_ts>2012-07-30 09:31:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120719191209.patch</filename>
            <type>text/plain</type>
            <size>18940</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyOTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JjYzczMDFmZjlkNzhk
M2RmNmY0N2UxMjJkNmU2MTJkYmNiNjZiZi4uYjViNWUyNzE1ZGZkOWMxMjFjMzA2ZTUxNzJkZDZh
OTdjY2QxMzExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA3LTE5ICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuaDoKKyAgICAgICAgKEhpZ2hsaWdodERhdGEpOgorICAgICAgICAo
SW5zcGVjdG9yT3ZlcmxheSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVP
dmVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0U2Vh
cmNoaW5nRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0SW5mb0Zyb21Db25maWcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRE9NQWdlbnQpOgorCiAyMDEy
LTA3LTE4ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNzaW9uXSBTYXZlIGFzIGZpbGUgaXMgbWlzc2luZyBpbiBO
ZXR3b3JrIHBhbmVsIHByZXZpZXcvcmVzcG9uc2UgdGFicy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAKaW5kZXggNDZjOTljZjNkMzBlYmFmYmI2
Y2E5ZWRkNzZhMjU1NDFlYWFjY2VhOC4uOTNkZDIzOTVlMjMxMzlmYWFiYjBkYmFjZDk3ZGE4OTY0
YzI2YzQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdo
bGlnaHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5jcHAKQEAgLTExMywzNSArMTEzLDM1IEBAIHZvaWQgZHJhd091dGxpbmVkUXVhZFdpdGhD
bGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBxdWFkLCBjCiAg
ICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvckJveChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1YWQsIGNvbnN0
IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVyUXVhZCwgY29u
c3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBIaWdobGlnaHREYXRhKiBoaWdobGlnaHREYXRhKQor
dm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
RmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29u
c3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIGNv
bnN0IEhpZ2hsaWdodEluZm8mIGhpZ2hsaWdodEluZm8pCiB7Ci0gICAgYm9vbCBoYXNNYXJnaW4g
PSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIGJvb2wg
aGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9IENvbG9yOjp0cmFuc3BhcmVudDsK
LSAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRhLT5wYWRkaW5nICE9IENvbG9yOjp0
cmFuc3BhcmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHREYXRhLT5jb250ZW50
ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSAh
PSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHRJbmZv
Lm1hcmdpbiAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNCb3JkZXIgPSBoaWdo
bGlnaHRJbmZvLmJvcmRlciAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNQYWRk
aW5nID0gaGlnaGxpZ2h0SW5mby5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBi
b29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHRJbmZvLmNvbnRlbnQgIT0gQ29sb3I6OnRyYW5zcGFy
ZW50IHx8IGhpZ2hsaWdodEluZm8uY29udGVudE91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50
OwogCiAgICAgRmxvYXRRdWFkIGNsaXBRdWFkOwogICAgIENvbG9yIGNsaXBDb2xvcjsKICAgICBp
ZiAoaGFzTWFyZ2luICYmICghaGFzQm9yZGVyIHx8IG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkp
IHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQs
IGJvcmRlclF1YWQsIGhpZ2hsaWdodERhdGEtPm1hcmdpbik7CisgICAgICAgIGRyYXdPdXRsaW5l
ZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHRJ
bmZvLm1hcmdpbik7CiAgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAg
aWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVh
ZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1
YWQsIHBhZGRpbmdRdWFkLCBoaWdobGlnaHREYXRhLT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0
bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hs
aWdodEluZm8uYm9yZGVyKTsKICAgICAgICAgY2xpcFF1YWQgPSBwYWRkaW5nUXVhZDsKICAgICB9
CiAgICAgaWYgKGhhc1BhZGRpbmcgJiYgKCFoYXNDb250ZW50IHx8IHBhZGRpbmdRdWFkICE9IGNv
bnRlbnRRdWFkKSkgewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwg
cGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHREYXRhLT5wYWRkaW5nKTsKKyAgICAg
ICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIHBhZGRpbmdRdWFkLCBjb250ZW50
UXVhZCwgaGlnaGxpZ2h0SW5mby5wYWRkaW5nKTsKICAgICAgICAgY2xpcFF1YWQgPSBjb250ZW50
UXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0NvbnRlbnQpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdo
dERhdGEtPmNvbnRlbnRPdXRsaW5lKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0
LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0SW5mby5jb250ZW50LCBoaWdobGlnaHRJbmZvLmNvbnRl
bnRPdXRsaW5lKTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgYWJzb2x1dGVRdWFk
cywgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKK3ZvaWQgZHJhd0hpZ2hsaWdodEZvclNW
R1JlbmRlcmVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVh
ZD4mIGFic29sdXRlUXVhZHMsIGNvbnN0IEhpZ2hsaWdodEluZm8mIGhpZ2hsaWdodEluZm8pCiB7
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhYnNvbHV0ZVF1YWRzLnNpemUoKTsgKytpKQot
ICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hs
aWdodERhdGEtPmNvbnRlbnQsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGRyYXdPdXRs
aW5lZFF1YWQoY29udGV4dCwgYWJzb2x1dGVRdWFkc1tpXSwgaGlnaGxpZ2h0SW5mby5jb250ZW50
LCBDb2xvcjo6dHJhbnNwYXJlbnQpOwogfQogCiBpbnQgZHJhd1N1YnN0cmluZyhjb25zdCBUZXh0
UnVuJiBnbG9iYWxUZXh0UnVuLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLCBjb25zdCBDb2xvciYg
dGV4dENvbG9yLCBjb25zdCBGb250JiBmb250LCBHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHRpdGxlUmVjdCkKQEAgLTM2Myw5ICszNjMsOCBAQCBzdGF0aWMgdm9p
ZCBjb250ZW50c1F1YWRUb1BhZ2UoY29uc3QgRnJhbWVWaWV3KiBtYWluVmlldywgY29uc3QgRnJh
bWVWaWV3KiB2aWV3LAogICAgIHF1YWQgKz0gbWFpblZpZXctPnNjcm9sbE9mZnNldCgpOwogfQog
Ci1zdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSwgSGlnaGxpZ2h0KiBoaWdobGlnaHQp
CitzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgTm9kZSogbm9kZSwgY29uc3QgSGlnaGxpZ2h0SW5mbyYgaGlnaGxpZ2h0SW5mbywgSGln
aGxpZ2h0KiBoaWdobGlnaHQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IGhpZ2hsaWdodERhdGEtPm5v
ZGUuZ2V0KCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7
CiAKQEAgLTM5Nyw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgICAgICAg
ICAgY29udGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0
LT5xdWFkc1tpXSk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGln
aGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdo
dERhdGEpOworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKCpjb250ZXh0
LCBoaWdobGlnaHQtPnF1YWRzLCBoaWdobGlnaHRJbmZvKTsKICAgICB9IGVsc2UgaWYgKHJlbmRl
cmVyLT5pc0JveCgpIHx8IHJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpKSB7CiAgICAgICAgIExh
eW91dFJlY3QgY29udGVudEJveDsKICAgICAgICAgTGF5b3V0UmVjdCBwYWRkaW5nQm94OwpAQCAt
NDUxLDcgKzQ1MCw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBoaWdoCiAgICAgICAgIGhpZ2hsaWdo
dC0+cXVhZHMuYXBwZW5kKGFic0NvbnRlbnRRdWFkKTsKIAogICAgICAgICBpZiAoY29udGV4dCkK
LSAgICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRRdWFk
LCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxpZ2h0
RGF0YSk7CisgICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KCpjb250ZXh0LCBhYnNDb250
ZW50UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdpblF1YWQsIGhp
Z2hsaWdodEluZm8pOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9kZSB0aXRsZSBpZiBuZWNlc3Nh
cnkuCkBAIC00NTksMTYgKzQ1OCwxNiBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxp
Z2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgIGlm
ICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29u
dGV4dCAmJiBoaWdobGlnaHREYXRhLT5zaG93SW5mbykKKyAgICBpZiAoY29udGV4dCAmJiBoaWdo
bGlnaHRJbmZvLnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBu
b2RlLCByZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25h
cHBlZEludFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1l
LT5zZXR0aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hs
aWdodERhdGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVj
dEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3Qq
IHJlY3QsIGNvbnN0IEhpZ2hsaWdodEluZm8mIGhpZ2hsaWdodEluZm8sIEhpZ2hsaWdodCAqaGln
aGxpZ2h0KQogewogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRmxvYXRS
ZWN0IGhpZ2hsaWdodFJlY3QoKihoaWdobGlnaHREYXRhLT5yZWN0KSk7CisgICAgRmxvYXRSZWN0
IGhpZ2hsaWdodFJlY3QoKnJlY3QpOwogCiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0
VHlwZVJlY3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMuYXBwZW5kKGhpZ2hsaWdodFJlY3QpOwpA
QCAtNDgwLDcgKzQ3OSw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYWdlKiBwYWdlLCBIaWdobGlnCiAgICAgICAgICAgICBj
b250ZXh0LT50cmFuc2xhdGUoLXZpc2libGVSZWN0LngoKSwgLXZpc2libGVSZWN0LnkoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRS
ZWN0LCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoKmNvbnRleHQsIGhpZ2hsaWdodFJlY3QsIGhp
Z2hsaWdodEluZm8uY29udGVudCwgaGlnaGxpZ2h0SW5mby5jb250ZW50T3V0bGluZSk7CiAgICAg
fQogfQogCkBAIC01MDksMTYgKzUwOCwxNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmdldEhp
Z2hsaWdodChIaWdobGlnaHQqIGhpZ2hsaWdodCkgY29uc3QKICAgICBpZiAoIW1faGlnaGxpZ2h0
RGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IgPSBt
X2hpZ2hsaWdodERhdGEtPmNvbnRlbnQ7Ci0gICAgaGlnaGxpZ2h0LT5wYWRkaW5nQ29sb3IgPSBt
X2hpZ2hsaWdodERhdGEtPnBhZGRpbmc7Ci0gICAgaGlnaGxpZ2h0LT5ib3JkZXJDb2xvciA9IG1f
aGlnaGxpZ2h0RGF0YS0+Ym9yZGVyOwotICAgIGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IgPSBtX2hp
Z2hsaWdodERhdGEtPm1hcmdpbjsKKyAgICBIaWdobGlnaHRJbmZvJiBoaWdobGlnaHRJbmZvID0g
bV9oaWdobGlnaHREYXRhLT5oaWdobGlnaHRJbmZvOworICAgIGhpZ2hsaWdodC0+Y29udGVudENv
bG9yID0gaGlnaGxpZ2h0SW5mby5jb250ZW50OworICAgIGhpZ2hsaWdodC0+cGFkZGluZ0NvbG9y
ID0gaGlnaGxpZ2h0SW5mby5wYWRkaW5nOworICAgIGhpZ2hsaWdodC0+Ym9yZGVyQ29sb3IgPSBo
aWdobGlnaHRJbmZvLmJvcmRlcjsKKyAgICBoaWdobGlnaHQtPm1hcmdpbkNvbG9yID0gaGlnaGxp
Z2h0SW5mby5tYXJnaW47CiAgICAgaGlnaGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3Rz
OwogCiAgICAgaWYgKG1faGlnaGxpZ2h0RGF0YS0+bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9k
ZUhpZ2hsaWdodCgwLCBtX2hpZ2hsaWdodERhdGEuZ2V0KCksIGhpZ2hsaWdodCk7CisgICAgICAg
IGdldE9yRHJhd05vZGVIaWdobGlnaHQoMCwgbV9oaWdobGlnaHREYXRhLT5ub2RlLmdldCgpLCBo
aWdobGlnaHRJbmZvLCBoaWdobGlnaHQpOwogICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0RGF0YS0+
cmVjdCkKLSAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgwLCBtX3BhZ2UsIG1faGlnaGxp
Z2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKKyAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdo
dCgwLCBtX3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS0+cmVjdC5nZXQoKSwgaGlnaGxpZ2h0SW5mbywg
aGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJbkRlYnVn
Z2VyTWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCkBAIC01MjksMzAgKzUyOSwyMyBAQCB2
b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0IFN0
cmluZyogbWVzc2FnZSkKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWRlSGlnaGxpZ2h0KCkK
IHsKLSAgICBpZiAobV9oaWdobGlnaHREYXRhKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBDbGVhciBl
bnRpcmUgaGlnaGxpZ2h0IGRhdGEgaGVyZSwgc3RvcmUgY29uZmlnIHVwb24gc2V0SW5zcGVjdE1v
ZGVFbmFibGVkCi0gICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+cmVjdC5jbGVhcigpOwotICAgICAg
ICBtX2hpZ2hsaWdodERhdGEtPm5vZGUuY2xlYXIoKTsKLSAgICB9Ci0gICAgdXBkYXRlKCk7Ci19
Ci0KLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZShOb2RlKiBub2RlKQotewot
ICAgIGlmIChtX2hpZ2hsaWdodERhdGEpCi0gICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZSA9
IG5vZGU7CisgICAgbV9oaWdobGlnaHREYXRhLmNsZWFyKCk7CiAgICAgdXBkYXRlKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0SGlnaGxpZ2h0RGF0YShQYXNzT3duUHRyPEhpZ2hs
aWdodERhdGE+IGhpZ2hsaWdodERhdGEpCit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdo
dE5vZGUoTm9kZSogbm9kZSwgY29uc3QgSGlnaGxpZ2h0SW5mbyYgaGlnaGxpZ2h0SW5mbykKIHsK
LSAgICBtX2hpZ2hsaWdodERhdGEgPSBoaWdobGlnaHREYXRhOworICAgIG1faGlnaGxpZ2h0RGF0
YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgIG1faGlnaGxpZ2h0RGF0YS0+
aGlnaGxpZ2h0SW5mbyA9IGhpZ2hsaWdodEluZm87CisgICAgbV9oaWdobGlnaHREYXRhLT5ub2Rl
ID0gbm9kZTsKICAgICB1cGRhdGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpjbGVh
ckhpZ2hsaWdodERhdGEoKQordm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KFBh
c3NPd25QdHI8SW50UmVjdD4gcmVjdCwgY29uc3QgSGlnaGxpZ2h0SW5mbyYgaGlnaGxpZ2h0SW5m
bykKIHsKLSAgICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKKyAgICBtX2hpZ2hsaWdodERhdGEg
PSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBtX2hpZ2hsaWdodERhdGEtPmhp
Z2hsaWdodEluZm8gPSBoaWdobGlnaHRJbmZvOworICAgIG1faGlnaGxpZ2h0RGF0YS0+cmVjdCA9
IHJlY3Q7CiAgICAgdXBkYXRlKCk7CiB9CiAKQEAgLTU3Niw5ICs1NjksOSBAQCB2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OmRyYXdIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogCiAg
ICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBpZiAobV9oaWdobGlnaHREYXRhLT5ub2RlKQot
ICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdodERhdGEu
Z2V0KCksICZoaWdobGlnaHQpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250
ZXh0LCBtX2hpZ2hsaWdodERhdGEtPm5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxp
Z2h0SW5mbywgJmhpZ2hsaWdodCk7CiAgICAgZWxzZSBpZiAobV9oaWdobGlnaHREYXRhLT5yZWN0
KQotICAgICAgICBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KCZjb250ZXh0LCBtX3BhZ2UsIG1faGln
aGxpZ2h0RGF0YS5nZXQoKSwgJmhpZ2hsaWdodCk7CisgICAgICAgIGdldE9yRHJhd1JlY3RIaWdo
bGlnaHQoJmNvbnRleHQsIG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLT5yZWN0LmdldCgpLCBtX2hp
Z2hsaWdodERhdGEtPmhpZ2hsaWdodEluZm8sICZoaWdobGlnaHQpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OmRyYXdQYXVzZWRJbkRlYnVnZ2VyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRl
eCBhMjAwY2NjOWIzZDU0NmI2YTQyYjI3MDhiOTJlMTgzODBhZjBmNzAxLi4yZTg2NjM3ZjEzYjRh
NWZiZjJlNWQ3OGNmYzZiMDgwMGE3MDRiOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCkBAIC00OCwxNCArNDgsMTcgQEAgY2xhc3MgSW50UmVj
dDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogCi1zdHJ1Y3QgSGlnaGxpZ2h0RGF0YSB7Citz
dHJ1Y3QgSGlnaGxpZ2h0SW5mbyB7CiAgICAgQ29sb3IgY29udGVudDsKICAgICBDb2xvciBjb250
ZW50T3V0bGluZTsKICAgICBDb2xvciBwYWRkaW5nOwogICAgIENvbG9yIGJvcmRlcjsKICAgICBD
b2xvciBtYXJnaW47CiAgICAgYm9vbCBzaG93SW5mbzsKK307CiAKK3N0cnVjdCBIaWdobGlnaHRE
YXRhIHsKKyAgICBIaWdobGlnaHRJbmZvIGhpZ2hsaWdodEluZm87CiAgICAgLy8gRWl0aGVyIG9m
IHRoZXNlIG11c3QgYmUgMC4KICAgICBSZWZQdHI8Tm9kZT4gbm9kZTsKICAgICBPd25QdHI8SW50
UmVjdD4gcmVjdDsKQEAgLTkyLDkgKzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2Vk
SW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKICAgICB2b2lkIGhpZGVIaWdobGln
aHQoKTsKLSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSopOwotICAgIHZvaWQgc2V0SGlnaGxp
Z2h0RGF0YShQYXNzT3duUHRyPEhpZ2hsaWdodERhdGE+KTsKLSAgICB2b2lkIGNsZWFySGlnaGxp
Z2h0RGF0YSgpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShOb2RlKiwgY29uc3QgSGlnaGxpZ2h0
SW5mbyYpOworICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChQYXNzT3duUHRyPEludFJlY3Q+LCBjb25z
dCBIaWdobGlnaHRJbmZvJik7CiAKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggYTVhMjZiYzE3MjM4ZmM5ZjNhOWNhNmIxNDdiOTk1YzI3YzYzMTcyMS4uOWYxNjg1ZWFkZDM1
MGM2MGYzNGFjZjQyYzRkYTg4MzYyNTg4YzhhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05ODEsOCArOTgxLDggQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3Vs
dCYgcmVzdWx0LCB1bnMKICAgICBOb2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAg
IHdoaWxlIChub2RlICYmIG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAg
ICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIGlmIChub2RlKQotICAgICAgICBt
X292ZXJsYXktPmhpZ2hsaWdodE5vZGUobm9kZSk7CisgICAgaWYgKG5vZGUgJiYgbV9pbnNwZWN0
TW9kZUhpZ2hsaWdodEluZm8pCisgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2Rl
LCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodEluZm8pOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBo
aWdobGlnaHRDb25maWcpCkBAIC05OTEsMzIgKzk5MSwyOCBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBo
aWdobAogICAgICAgICByZXR1cm47CiAgICAgbV9zZWFyY2hpbmdGb3JOb2RlID0gZW5hYmxlZDsK
ICAgICBpZiAoZW5hYmxlZCkKLSAgICAgICAgc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoaGln
aGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgbV9pbnNwZWN0TW9kZUhpZ2hsaWdodEluZm8gPSBoaWdo
bGlnaHRJbmZvRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcpOwogICAgIGVsc2UgewogICAgICAg
ICBFcnJvclN0cmluZyBlcnJvcjsKICAgICAgICAgaGlkZUhpZ2hsaWdodCgmZXJyb3IpOwotICAg
ICAgICBtX292ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwogICAgIH0KIH0KIAotYm9vbCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoSW5zcGVjdG9yT2Jq
ZWN0KiBoaWdobGlnaHRDb25maWcpCitQYXNzT3duUHRyPEhpZ2hsaWdodEluZm8+IEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRJbmZvRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZykKIHsKLSAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykgewotICAgICAgICBtX292
ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIGlmICghaGlnaGxpZ2h0Q29uZmlnKQorICAgICAgICByZXR1cm4gUGFzc093blB0cjxI
aWdobGlnaHRJbmZvPiAoKTsKIAotICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHRE
YXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERhdGEoKSk7CisgICAgT3duUHRyPEhpZ2hsaWdo
dEluZm8+IGhpZ2hsaWdodEluZm8gPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0SW5mbygpKTsKICAg
ICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBh
IHRvb2x0aXApLgogICAgIGhpZ2hsaWdodENvbmZpZy0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCAm
c2hvd0luZm8pOwotICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hvd0luZm87Ci0gICAg
aGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoImNvbnRlbnRDb2xvciIs
IGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBw
YXJzZUNvbmZpZ0NvbG9yKCJjb250ZW50T3V0bGluZUNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsK
LSAgICBoaWdobGlnaHREYXRhLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ0Nv
bG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5ib3JkZXIgPSBwYXJz
ZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgaGlnaGxp
Z2h0RGF0YS0+bWFyZ2luID0gcGFyc2VDb25maWdDb2xvcigibWFyZ2luQ29sb3IiLCBoaWdobGln
aHRDb25maWcpOwotICAgIG1fb3ZlcmxheS0+c2V0SGlnaGxpZ2h0RGF0YShoaWdobGlnaHREYXRh
LnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaGlnaGxpZ2h0SW5mby0+c2hvd0lu
Zm8gPSBzaG93SW5mbzsKKyAgICBoaWdobGlnaHRJbmZvLT5jb250ZW50ID0gcGFyc2VDb25maWdD
b2xvcigiY29udGVudENvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBoaWdobGlnaHRJbmZv
LT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29uZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3Ii
LCBoaWdobGlnaHRDb25maWcpOworICAgIGhpZ2hsaWdodEluZm8tPnBhZGRpbmcgPSBwYXJzZUNv
bmZpZ0NvbG9yKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOworICAgIGhpZ2hsaWdo
dEluZm8tPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICBoaWdobGlnaHRJbmZvLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKCJt
YXJnaW5Db2xvciIsIGhpZ2hsaWdodENvbmZpZyk7CisgICAgcmV0dXJuIGhpZ2hsaWdodEluZm8u
cmVsZWFzZSgpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVu
YWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBoaWdobGlnaHRDb25maWcpCkBAIC0xMDI2LDExICsxMDIyLDEwIEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlZCwgY29uc3QKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChF
cnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBvdXRsaW5lQ29sb3IpCiB7Ci0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdo
dERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICBoaWdobGlnaHREYXRh
LT5yZWN0ID0gYWRvcHRQdHIobmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAg
IGhpZ2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKLSAgICBoaWdobGln
aHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICBt
X292ZXJsYXktPnNldEhpZ2hsaWdodERhdGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOworICAg
IE93blB0cjxIaWdobGlnaHRJbmZvPiBoaWdobGlnaHRJbmZvID0gYWRvcHRQdHIobmV3IEhpZ2hs
aWdodEluZm8oKSk7CisgICAgaGlnaGxpZ2h0SW5mby0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29s
b3IpOworICAgIGhpZ2hsaWdodEluZm8tPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRs
aW5lQ29sb3IpOworICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UmVjdChhZG9wdFB0cihuZXcgSW50
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSksICpoaWdobGlnaHRJbmZvKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKQEAgLTEwMzksOCArMTAzNCw4IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCiAgICAgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZykKIHsKICAgICBpZiAoTm9kZSogbm9kZSA9
IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBpZiAoc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25m
aWcoaGlnaGxpZ2h0Q29uZmlnLmdldCgpKSkKLSAgICAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxp
Z2h0Tm9kZShub2RlKTsKKyAgICAgICAgaWYgKE93blB0cjxIaWdobGlnaHRJbmZvPiBoaWdobGln
aHRJbmZvID0gaGlnaGxpZ2h0SW5mb0Zyb21Db25maWcoaGlnaGxpZ2h0Q29uZmlnLmdldCgpKSkK
KyAgICAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqaGlnaGxpZ2h0SW5m
byk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKApAQCAtMTA1
MSwxMiArMTA0NiwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsK
ICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIE93blB0
cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERh
dGEoKSk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPm5vZGUgPSBmcmFtZS0+b3duZXJFbGVtZW50
KCk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNo
b3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9
IHBhcnNlQ29sb3IoY29sb3IpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICAgICAgbV9vdmVybGF5LT5zZXRIaWdo
bGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgT3duUHRyPEhpZ2hs
aWdodEluZm8+IGhpZ2hsaWdodEluZm8gPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0SW5mbygpKTsK
KyAgICAgICAgaGlnaGxpZ2h0SW5mby0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0
b29sdGlwcyBmb3IgZnJhbWVzLgorICAgICAgICBoaWdobGlnaHRJbmZvLT5jb250ZW50ID0gcGFy
c2VDb2xvcihjb2xvcik7CisgICAgICAgIGhpZ2hsaWdodEluZm8tPmNvbnRlbnRPdXRsaW5lID0g
cGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5v
ZGUoZnJhbWUtPm93bmVyRWxlbWVudCgpLCAqaGlnaGxpZ2h0SW5mbyk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDkxMDYy
MzAzMWNlODc4ZTE0ODY4YTU0MzE5OGI4NGUwY2Q5NjJkZmMuLjc5MjdlNzViOTM0MmQxMjBmYzdl
Zjk2OWIzMWRlYzU0ODgyZTg2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIEluc3BlY3RvckRPTUFn
ZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NQWdlbnRfaAogCisjaW5jbHVkZSAiRE9NTm9kZUhp
Z2hsaWdodGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgpAQCAtNjksNiAr
NzAsOCBAQCBjbGFzcyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwogY2xhc3MgU2NyaXB0
VmFsdWU7CiBjbGFzcyBTaGFkb3dSb290OwogCitzdHJ1Y3QgSGlnaGxpZ2h0SW5mbzsKKwogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTk4
LDcgKzIwMSw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOwogCiAgICAgdm9pZCBzZXRTZWFyY2hp
bmdGb3JOb2RlKGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcp
OwotICAgIGJvb2wgc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoSW5zcGVjdG9yT2JqZWN0KiBo
aWdobGlnaHRDb25maWcpOworICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0SW5mbz4gaGlnaGxpZ2h0
SW5mb0Zyb21Db25maWcoSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOwogCiAgICAg
Ly8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2Rl
PiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTI0Nyw2ICsyNTAsNyBAQCBwcml2YXRlOgogICAgIE93
blB0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJU
YXNrOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFyY2hp
bmdGb3JOb2RlOworICAgIE93blB0cjxIaWdobGlnaHRJbmZvPiBtX2luc3BlY3RNb2RlSGlnaGxp
Z2h0SW5mbzsKICAgICBPd25QdHI8SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OwogICAgIE93
blB0cjxET01FZGl0b3I+IG1fZG9tRWRpdG9yOwogICAgIGJvb2wgbV9zdXBwcmVzc0F0dHJpYnV0
ZU1vZGlmaWVkRXZlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155302</attachid>
            <date>2012-07-30 09:31:19 -0700</date>
            <delta_ts>2012-07-31 01:23:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120730203102.patch</filename>
            <type>text/plain</type>
            <size>21491</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU1NjZmNjVmOWMzYzA5
NTZkNWYwMTRkMTc2YTZlOTJjYjkwZTE5ZS4uOTljODE2ODI2MWM1ZWJhYjZiNjk5NGIxOGIyZjE5
OWRkYzA4ZTRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTMwICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zl
cmxheTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdI
aWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhdXNl
ZEluRGVidWdnZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaDoK
KyAgICAgICAgKEhpZ2hsaWdodERhdGEpOgorICAgICAgICAoSW5zcGVjdG9yT3ZlcmxheSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3Bl
Y3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJh
bWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisKIDIwMTItMDctMjYgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbW92ZSBTdHJpbmdJbXBsIHNpemUgY2FsY3VsYXRpb24gdG8gU3RyaW5nSW1wbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAx
MGM3ODViMmFlNjAyNmM4ZGE2ZmY0MjhmNTk0MmFiOGUxYWVhMTFjLi5kOTUzZjIxNDI0MmI1OTNl
OTBiZDk0MTk5NjFlOWQxZjFhMDYxZGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMTEzLDM1ICsxMTMsMzUgQEAgdm9pZCBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFF1YWQmIHF1YWQsIGMKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3SGln
aGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBj
b250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFk
JiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERhdGEq
IGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQm
IHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVh
ZCYgbWFyZ2luUXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7
Ci0gICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRy
YW5zcGFyZW50OwotICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRh
LT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBo
aWdobGlnaHREYXRhLT5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHRE
YXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNN
YXJnaW4gPSBoaWdobGlnaHRDb25maWcubWFyZ2luICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAg
ICBib29sIGhhc0JvcmRlciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXIgIT0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGJvb2wgaGFzUGFkZGluZyA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHRDb25m
aWcuY29udGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRl
bnRPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVh
ZDsKICAgICBDb2xvciBjbGlwQ29sb3I7CiAgICAgaWYgKGhhc01hcmdpbiAmJiAoIWhhc0JvcmRl
ciB8fCBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHREYXRh
LT5tYXJnaW4pOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFy
Z2luUXVhZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbik7CiAgICAgICAgIGNs
aXBRdWFkID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1Bh
ZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGln
aHREYXRhLT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4
dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodENvbmZpZy5ib3JkZXIpOwogICAg
ICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwogICAgIH0KICAgICBpZiAoaGFzUGFkZGluZyAm
JiAoIWhhc0NvbnRlbnQgfHwgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0
aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHRDb25maWcu
cGFkZGluZyk7CiAgICAgICAgIGNsaXBRdWFkID0gY29udGVudFF1YWQ7CiAgICAgfQogICAgIGlm
IChoYXNDb250ZW50KQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRR
dWFkLCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hs
aWdodENvbmZpZy5jb250ZW50LCBoaWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUpOwogfQog
Ci12b2lkIGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBIaWdobGlnaHREYXRh
KiBoaWdobGlnaHREYXRhKQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgYWJzb2x1dGVRdWFk
cywgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhYnNvbHV0ZVF1YWRzLnNpemUoKTsgKytpKQotICAgICAgICBkcmF3
T3V0bGluZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNv
bnRlbnQsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29u
dGV4dCwgYWJzb2x1dGVRdWFkc1tpXSwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIENvbG9yOjp0
cmFuc3BhcmVudCk7CiB9CiAKIGludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGdsb2Jh
bFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3Is
IGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgdGl0bGVSZWN0KQpAQCAtMzYzLDkgKzM2Myw4IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRz
UXVhZFRvUGFnZShjb25zdCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFtZVZpZXcqIHZp
ZXcsCiAgICAgcXVhZCArPSBtYWluVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdo
bGlnaHREYXRhKiBoaWdobGlnaHREYXRhLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKK3N0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2Rl
KiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0
KiBoaWdobGlnaHQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IGhpZ2hsaWdodERhdGEtPm5vZGUuZ2V0
KCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAg
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKQEAg
LTM5Nyw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgICAgICAgICAgY29u
dGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0LT5xdWFk
c1tpXSk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0
Rm9yU1ZHUmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodERhdGEp
OworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKCpjb250ZXh0LCBoaWdo
bGlnaHQtPnF1YWRzLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIt
PmlzQm94KCkgfHwgcmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgTGF5b3V0
UmVjdCBjb250ZW50Qm94OwogICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CkBAIC00NTEs
NyArNDUwLDcgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICAgICAgaGlnaGxpZ2h0LT5x
dWFkcy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQotICAg
ICAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgqY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFi
c1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRh
KTsKKyAgICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRR
dWFkLCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxp
Z2h0Q29uZmlnKTsKICAgICB9CiAKICAgICAvLyBEcmF3IG5vZGUgdGl0bGUgaWYgbmVjZXNzYXJ5
LgpAQCAtNDU5LDE2ICs0NTgsMTYgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICBpZiAo
IW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRl
eHQgJiYgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8pCisgICAgaWYgKGNvbnRleHQgJiYgaGlnaGxp
Z2h0Q29uZmlnLnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBu
b2RlLCByZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25h
cHBlZEludFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1l
LT5zZXR0aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hs
aWdodERhdGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVj
dEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3Qq
IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQg
KmhpZ2hsaWdodCkKIHsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0UmVjdCBoaWdobGlnaHRSZWN0KCooaGlnaGxpZ2h0RGF0YS0+cmVjdCkpOworICAgIEZsb2F0
UmVjdCBoaWdobGlnaHRSZWN0KCpyZWN0KTsKIAogICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hs
aWdodFR5cGVSZWN0czsKICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChoaWdobGlnaHRSZWN0
KTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwgSGlnaGxpZwogICAgICAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxlUmVjdC55KCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZCgqY29udGV4dCwgaGlnaGxp
Z2h0UmVjdCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91
dGxpbmUpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0
LCBoaWdobGlnaHRDb25maWcuY29udGVudCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnRPdXRsaW5l
KTsKICAgICB9CiB9CiAKQEAgLTQ4OSwxMyArNDg4LDE3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJh
d1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYWdlKiBwYWdlLCBIaWdo
bGlnCiBJbnNwZWN0b3JPdmVybGF5OjpJbnNwZWN0b3JPdmVybGF5KFBhZ2UqIHBhZ2UsIEluc3Bl
Y3RvckNsaWVudCogY2xpZW50KQogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChj
bGllbnQpCisgICAgLCBtX25lZWRzVXBkYXRlQmVmb3JlUGFpbnRpbmcoZmFsc2UpCiB7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQog
eworICAgIGlmIChtX25lZWRzVXBkYXRlQmVmb3JlUGFpbnRpbmcpCisgICAgICAgIHVwZGF0ZSgp
OwogICAgIGRyYXdQYXVzZWRJbkRlYnVnZ2VyKGNvbnRleHQpOwogICAgIGRyYXdIaWdobGlnaHQo
Y29udGV4dCk7CisgICAgbV9uZWVkc1VwZGF0ZUJlZm9yZVBhaW50aW5nID0gdHJ1ZTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3T3V0bGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTUwOSwx
NiArNTEyLDE3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdo
dCogaGlnaGxpZ2h0KSBjb25zdAogICAgIGlmICghbV9oaWdobGlnaHREYXRhKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBoaWdobGlnaHQtPmNvbnRlbnRDb2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+
Y29udGVudDsKLSAgICBoaWdobGlnaHQtPnBhZGRpbmdDb2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+
cGFkZGluZzsKLSAgICBoaWdobGlnaHQtPmJvcmRlckNvbG9yID0gbV9oaWdobGlnaHREYXRhLT5i
b3JkZXI7Ci0gICAgaGlnaGxpZ2h0LT5tYXJnaW5Db2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+bWFy
Z2luOworICAgIEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnID0gbV9oaWdobGlnaHRE
YXRhLT5oaWdobGlnaHRDb25maWc7CisgICAgaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IgPSBoaWdo
bGlnaHRDb25maWcuY29udGVudDsKKyAgICBoaWdobGlnaHQtPnBhZGRpbmdDb2xvciA9IGhpZ2hs
aWdodENvbmZpZy5wYWRkaW5nOworICAgIGhpZ2hsaWdodC0+Ym9yZGVyQ29sb3IgPSBoaWdobGln
aHRDb25maWcuYm9yZGVyOworICAgIGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IgPSBoaWdobGlnaHRD
b25maWcubWFyZ2luOwogICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdodFR5cGVSZWN0czsK
IAogICAgIGlmIChtX2hpZ2hsaWdodERhdGEtPm5vZGUpCi0gICAgICAgIGdldE9yRHJhd05vZGVI
aWdobGlnaHQoMCwgbV9oaWdobGlnaHREYXRhLmdldCgpLCBoaWdobGlnaHQpOworICAgICAgICBn
ZXRPckRyYXdOb2RlSGlnaGxpZ2h0KDAsIG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5nZXQoKSwgaGln
aGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOwogICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0RGF0YS0+
cmVjdCkKLSAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgwLCBtX3BhZ2UsIG1faGlnaGxp
Z2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKKyAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdo
dCgwLCBtX3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS0+cmVjdC5nZXQoKSwgaGlnaGxpZ2h0Q29uZmln
LCBoaWdobGlnaHQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVi
dWdnZXJNZXNzYWdlKGNvbnN0IFN0cmluZyogbWVzc2FnZSkKQEAgLTUyOSwzMCArNTMzLDIzIEBA
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3Qg
U3RyaW5nKiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQo
KQogewotICAgIGlmIChtX2hpZ2hsaWdodERhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IENsZWFy
IGVudGlyZSBoaWdobGlnaHQgZGF0YSBoZXJlLCBzdG9yZSBjb25maWcgdXBvbiBzZXRJbnNwZWN0
TW9kZUVuYWJsZWQKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5yZWN0LmNsZWFyKCk7Ci0gICAg
ICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5jbGVhcigpOwotICAgIH0KLSAgICB1cGRhdGUoKTsK
LX0KLQotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUpCi17
Ci0gICAgaWYgKG1faGlnaGxpZ2h0RGF0YSkKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5ub2Rl
ID0gbm9kZTsKKyAgICBtX2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKICAgICB1cGRhdGUoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRIaWdobGlnaHREYXRhKFBhc3NPd25QdHI8SGln
aGxpZ2h0RGF0YT4gaGlnaGxpZ2h0RGF0YSkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxp
Z2h0Tm9kZShOb2RlKiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZp
ZykKIHsKLSAgICBtX2hpZ2hsaWdodERhdGEgPSBoaWdobGlnaHREYXRhOworICAgIG1faGlnaGxp
Z2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgIG1faGlnaGxpZ2h0
RGF0YS0+aGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOworICAgIG1faGlnaGxpZ2h0
RGF0YS0+bm9kZSA9IG5vZGU7CiAgICAgdXBkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3Zl
cmxheTo6Y2xlYXJIaWdobGlnaHREYXRhKCkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxp
Z2h0UmVjdChQYXNzT3duUHRyPEludFJlY3Q+IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYg
aGlnaGxpZ2h0Q29uZmlnKQogewotICAgIG1faGlnaGxpZ2h0RGF0YS5jbGVhcigpOworICAgIG1f
aGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgIG1faGln
aGxpZ2h0RGF0YS0+aGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOworICAgIG1faGln
aGxpZ2h0RGF0YS0+cmVjdCA9IHJlY3Q7CiAgICAgdXBkYXRlKCk7CiB9CiAKQEAgLTU2Myw4ICs1
NjAsOCBAQCBOb2RlKiBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRlZE5vZGUoKSBjb25zdAog
CiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiB7Ci0gICAgLy8gRklYTUUoOTE5MjYp
IFJlZmFjdG9yIGhpZ2hsaWdodE5vZGUgdG8gcGFzcyBoaWdobGlnaHQgZGF0YSBhbG9uZyB3aXRo
IHRoZSBjYWxsLgotICAgIGlmICgobV9oaWdobGlnaHREYXRhICYmIChtX2hpZ2hsaWdodERhdGEt
PnJlY3QgfHwgbV9oaWdobGlnaHREYXRhLT5ub2RlKSkgfHwgIW1fcGF1c2VkSW5EZWJ1Z2dlck1l
c3NhZ2UuaXNOdWxsKCkpCisgICAgbV9uZWVkc1VwZGF0ZUJlZm9yZVBhaW50aW5nID0gZmFsc2U7
CisgICAgaWYgKG1faGlnaGxpZ2h0RGF0YSB8fCAhbV9wYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZS5p
c051bGwoKSkKICAgICAgICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogICAgIGVsc2UKICAgICAg
ICAgbV9jbGllbnQtPmhpZGVIaWdobGlnaHQoKTsKQEAgLTU3MiwxNCArNTY5LDE0IEBAIHZvaWQg
SW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIW1faGlnaGxp
Z2h0RGF0YSB8fCAoIW1faGlnaGxpZ2h0RGF0YS0+cmVjdCAmJiAhbV9oaWdobGlnaHREYXRhLT5u
b2RlKSkKKyAgICBpZiAoIW1faGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SGlnaGxpZ2h0IGhpZ2hsaWdodDsKICAgICBpZiAobV9oaWdobGlnaHREYXRhLT5ub2RlKQotICAg
ICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdodERhdGEuZ2V0
KCksICZoaWdobGlnaHQpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0
LCBtX2hpZ2hsaWdodERhdGEtPm5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxpZ2h0
Q29uZmlnLCAmaGlnaGxpZ2h0KTsKICAgICBlbHNlIGlmIChtX2hpZ2hsaWdodERhdGEtPnJlY3Qp
Ci0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQsIG1fcGFnZSwgbV9oaWdo
bGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKKyAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hs
aWdodCgmY29udGV4dCwgbV9wYWdlLCBtX2hpZ2hsaWdodERhdGEtPnJlY3QuZ2V0KCksIG1faGln
aGxpZ2h0RGF0YS0+aGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQpCkBAIC01OTMsNyArNTkwLDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGF1c2Vk
SW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKICAgICBGcmFtZSogZnJhbWUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpOwogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5z
ZXR0aW5ncygpOwotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBmcmFtZS0+dmlldygpLT52aXNp
YmxlQ29udGVudFJlY3QoKTsKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgpLCBmcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKS5zaXplKCkpOwogCiAg
ICAgY29udGV4dC5zZXRGaWxsQ29sb3IoYmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKICAgICBjb250ZXh0LmZpbGxSZWN0KHZpc2libGVSZWN0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAppbmRleCBhMjAwY2NjOWIzZDU0NmI2
YTQyYjI3MDhiOTJlMTgzODBhZjBmNzAxLi5jOTI2NjRlOTZhNTMxYTNlOTQ4NjM3NWY0YzhkYTE1
ODA3YzhkY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5oCkBAIC00OCwxNCArNDgsMTcgQEAgY2xhc3MgSW50UmVjdDsKIGNsYXNzIE5vZGU7CiBj
bGFzcyBQYWdlOwogCi1zdHJ1Y3QgSGlnaGxpZ2h0RGF0YSB7CitzdHJ1Y3QgSGlnaGxpZ2h0Q29u
ZmlnIHsKICAgICBDb2xvciBjb250ZW50OwogICAgIENvbG9yIGNvbnRlbnRPdXRsaW5lOwogICAg
IENvbG9yIHBhZGRpbmc7CiAgICAgQ29sb3IgYm9yZGVyOwogICAgIENvbG9yIG1hcmdpbjsKICAg
ICBib29sIHNob3dJbmZvOworfTsKIAorc3RydWN0IEhpZ2hsaWdodERhdGEgeworICAgIEhpZ2hs
aWdodENvbmZpZyBoaWdobGlnaHRDb25maWc7CiAgICAgLy8gRWl0aGVyIG9mIHRoZXNlIG11c3Qg
YmUgMC4KICAgICBSZWZQdHI8Tm9kZT4gbm9kZTsKICAgICBPd25QdHI8SW50UmVjdD4gcmVjdDsK
QEAgLTkyLDkgKzk1LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VkSW5EZWJ1Z2dlck1l
c3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKLSAgICB2
b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSopOwotICAgIHZvaWQgc2V0SGlnaGxpZ2h0RGF0YShQYXNz
T3duUHRyPEhpZ2hsaWdodERhdGE+KTsKLSAgICB2b2lkIGNsZWFySGlnaGxpZ2h0RGF0YSgpOwor
ICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShOb2RlKiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJik7Cisg
ICAgdm9pZCBoaWdobGlnaHRSZWN0KFBhc3NPd25QdHI8SW50UmVjdD4sIGNvbnN0IEhpZ2hsaWdo
dENvbmZpZyYpOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTEw
OSw2ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAg
ICAgU3RyaW5nIG1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2U7CiAgICAgT3duUHRyPEhpZ2hsaWdo
dERhdGE+IG1faGlnaGxpZ2h0RGF0YTsKKyAgICBib29sIG1fbmVlZHNVcGRhdGVCZWZvcmVQYWlu
dGluZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDkxYTM4MzEwZjhhOGNmNzRlZGJk
ODAxNjQ4MzczZTEyYmVmMDE2ODkuLjc2NTRiMzI2NDk2ZjI2YzZmYWJiN2UxMzkyZmIzNDRmNGI4
NWViYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcApAQCAtOTk0LDQyICs5OTQsMzggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKICAgICBO
b2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmIG5vZGUt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOwotICAgIGlmIChub2RlKQotICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5v
ZGUobm9kZSk7CisgICAgaWYgKG5vZGUgJiYgbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykK
KyAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGln
aGxpZ2h0Q29uZmlnKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5n
Rm9yTm9kZShib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQs
IEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewogICAgIGlmICht
X3NlYXJjaGluZ0Zvck5vZGUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fc2Vh
cmNoaW5nRm9yTm9kZSA9IGVuYWJsZWQ7CiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAgIHNldEhp
Z2hsaWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIG1faW5zcGVj
dE1vZGVIaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEVycm9yU3Ry
aW5nIGVycm9yOwogICAgICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7Ci0gICAgICAgIG1fb3Zl
cmxheS0+Y2xlYXJIaWdobGlnaHREYXRhKCk7CiAgICAgfQogfQogCi1ib29sIEluc3BlY3RvckRP
TUFnZW50OjpzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZykKK1Bhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKLSAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykgewot
ICAgICAgICBtX292ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQorICAgIGlmICghaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQorICAgICAg
ICByZXR1cm4gUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+ICgpOwogCi0gICAgT3duUHRyPEhp
Z2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgp
KTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0
cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8g
RGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCi0gICAgaGlnaGxpZ2h0Q29u
ZmlnLT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5mbyk7Ci0gICAgaGlnaGxpZ2h0RGF0
YS0+c2hvd0luZm8gPSBzaG93SW5mbzsKLSAgICBoaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFy
c2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdo
bGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29uZmlnQ29sb3IoImNvbnRlbnRPdXRs
aW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcg
PSBwYXJzZUNvbmZpZ0NvbG9yKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAg
IGhpZ2hsaWdodERhdGEtPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwg
aGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbmZp
Z0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgbV9vdmVybGF5LT5z
ZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwg
JnNob3dJbmZvKTsKKyAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gc2hvd0luZm87Cisg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENv
bG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0g
cGFyc2VDb25maWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
KTsKKyAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRl
ckNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWct
Pm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKKyAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnLnJlbGVhc2UoKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5n
KiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0
Q29uZmlnKQpAQCAtMTAzOSwyMSArMTAzNSwyMCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIGNvbnN0CiAK
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQg
eCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9y
KQogewotICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhID0gYWRvcHRQdHIo
bmV3IEhpZ2hsaWdodERhdGEoKSk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+cmVjdCA9IGFkb3B0UHRy
KG5ldyBJbnRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAgICBoaWdobGlnaHREYXRhLT5j
b250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91
dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7Ci0gICAgbV9vdmVybGF5LT5zZXRIaWdo
bGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0
Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkp
OworICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOworICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CisgICAgbV9vdmVybGF5LT5oaWdobGlnaHRSZWN0KGFkb3B0UHRyKG5ldyBJbnRSZWN0KHgs
IHksIHdpZHRoLCBoZWlnaHQpKSwgKmhpZ2hsaWdodENvbmZpZyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoCiAgICAgRXJyb3JTdHJpbmcqLAogICAgIGludCBu
b2RlSWQsCi0gICAgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZp
ZykKKyAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0KQogewogICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCi0gICAg
ICAgIGlmIChzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcuZ2V0KCkp
KQotICAgICAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgICAgICBp
ZiAoT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29u
ZmlnRnJvbUluc3BlY3Rvck9iamVjdChoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QuZ2V0KCkpKQor
ICAgICAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICpoaWdobGlnaHRDb25m
aWcpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgKQEAgLTEw
NjQsMTIgKzEwNTksMTEgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUo
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7
CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBPd25Q
dHI8SGlnaGxpZ2h0RGF0YT4gaGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRE
YXRhKCkpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5ub2RlID0gZnJhbWUtPm93bmVyRWxlbWVu
dCgpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBz
aG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCi0gICAgICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQg
PSBwYXJzZUNvbG9yKGNvbG9yKTsKLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxp
bmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7Ci0gICAgICAgIG1fb3ZlcmxheS0+c2V0SGln
aGxpZ2h0RGF0YShoaWdobGlnaHREYXRhLnJlbGVhc2UoKSk7CisgICAgICAgIE93blB0cjxIaWdo
bGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25m
aWcoKSk7CisgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdh
eXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgorICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKKyAgICAgICAgbV9vdmVybGF5
LT5oaWdobGlnaHROb2RlKGZyYW1lLT5vd25lckVsZW1lbnQoKSwgKmhpZ2hsaWdodENvbmZpZyk7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5oCmluZGV4IGFjNDc4Y2NlMDU1MDFhM2Q1NDRlZWZjMzM0MDJlMzI2Zjg2MzFhYTkuLjgwNGQ1
MWYzZjQ1ZTM1MzViMDI3NjhiMmRjNzRjNzQ3NjNjMmMzMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVm
IEluc3BlY3RvckRPTUFnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NQWdlbnRfaAogCisjaW5j
bHVkZSAiRE9NTm9kZUhpZ2hsaWdodGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdl
ci5oIgpAQCAtNjksNiArNzAsOCBAQCBjbGFzcyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNr
OwogY2xhc3MgU2NyaXB0VmFsdWU7CiBjbGFzcyBTaGFkb3dSb290OwogCitzdHJ1Y3QgSGlnaGxp
Z2h0Q29uZmlnOworCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCkBAIC0xOTksNyArMjAyLDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01B
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9y
U3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAKICAg
ICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3Qq
IGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgYm9vbCBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJ
bnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7CisgICAgUGFzc093blB0cjxIaWdobGln
aHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2Jq
ZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1l
dGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1h
cDsKQEAgLTI0OCw2ICsyNTEsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxSZXZhbGlkYXRlU3R5
bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrOwogICAgIFJlZlB0cjxO
b2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOworICAgIE93
blB0cjxIaWdobGlnaHRDb25maWc+IG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWc7CiAgICAg
T3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKICAgICBPd25QdHI8RE9NRWRpdG9y
PiBtX2RvbUVkaXRvcjsKICAgICBib29sIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155462</attachid>
            <date>2012-07-31 01:23:16 -0700</date>
            <delta_ts>2012-08-01 01:57:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120731122259.patch</filename>
            <type>text/plain</type>
            <size>20619</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU1NjZmNjVmOWMzYzA5
NTZkNWYwMTRkMTc2YTZlOTJjYjkwZTE5ZS4uOTljODE2ODI2MWM1ZWJhYjZiNjk5NGIxOGIyZjE5
OWRkYzA4ZTRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTMwICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6SW5zcGVjdG9yT3ZlcmxheSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5OjpwYWludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zl
cmxheTo6dXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmRyYXdI
aWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhdXNl
ZEluRGVidWdnZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaDoK
KyAgICAgICAgKEhpZ2hsaWdodERhdGEpOgorICAgICAgICAoSW5zcGVjdG9yT3ZlcmxheSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3Bl
Y3Rvck9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJh
bWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisKIDIwMTItMDctMjYgIFl1
cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogbW92ZSBTdHJpbmdJbXBsIHNpemUgY2FsY3VsYXRpb24gdG8gU3RyaW5nSW1wbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAx
MGM3ODViMmFlNjAyNmM4ZGE2ZmY0MjhmNTk0MmFiOGUxYWVhMTFjLi4xNGNjZTkzMjE5M2JhMjRk
YzQ4NTNjYWRmODNiZjhhNTcxZGQxMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMTEzLDM1ICsxMTMsMzUgQEAgdm9pZCBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFF1YWQmIHF1YWQsIGMKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3SGln
aGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBj
b250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFk
JiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERhdGEq
IGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQm
IHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVh
ZCYgbWFyZ2luUXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7
Ci0gICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRy
YW5zcGFyZW50OwotICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRh
LT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBo
aWdobGlnaHREYXRhLT5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHRE
YXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNN
YXJnaW4gPSBoaWdobGlnaHRDb25maWcubWFyZ2luICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAg
ICBib29sIGhhc0JvcmRlciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXIgIT0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGJvb2wgaGFzUGFkZGluZyA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHRDb25m
aWcuY29udGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRl
bnRPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVh
ZDsKICAgICBDb2xvciBjbGlwQ29sb3I7CiAgICAgaWYgKGhhc01hcmdpbiAmJiAoIWhhc0JvcmRl
ciB8fCBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHREYXRh
LT5tYXJnaW4pOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFy
Z2luUXVhZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbik7CiAgICAgICAgIGNs
aXBRdWFkID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1Bh
ZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGln
aHREYXRhLT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4
dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodENvbmZpZy5ib3JkZXIpOwogICAg
ICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwogICAgIH0KICAgICBpZiAoaGFzUGFkZGluZyAm
JiAoIWhhc0NvbnRlbnQgfHwgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0
aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHRDb25maWcu
cGFkZGluZyk7CiAgICAgICAgIGNsaXBRdWFkID0gY29udGVudFF1YWQ7CiAgICAgfQogICAgIGlm
IChoYXNDb250ZW50KQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRR
dWFkLCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hs
aWdodENvbmZpZy5jb250ZW50LCBoaWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUpOwogfQog
Ci12b2lkIGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBIaWdobGlnaHREYXRh
KiBoaWdobGlnaHREYXRhKQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgYWJzb2x1dGVRdWFk
cywgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhYnNvbHV0ZVF1YWRzLnNpemUoKTsgKytpKQotICAgICAgICBkcmF3
T3V0bGluZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNv
bnRlbnQsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29u
dGV4dCwgYWJzb2x1dGVRdWFkc1tpXSwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIENvbG9yOjp0
cmFuc3BhcmVudCk7CiB9CiAKIGludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGdsb2Jh
bFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3Is
IGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgdGl0bGVSZWN0KQpAQCAtMzYzLDkgKzM2Myw4IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRz
UXVhZFRvUGFnZShjb25zdCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFtZVZpZXcqIHZp
ZXcsCiAgICAgcXVhZCArPSBtYWluVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdo
bGlnaHREYXRhKiBoaWdobGlnaHREYXRhLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKK3N0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2Rl
KiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0
KiBoaWdobGlnaHQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IGhpZ2hsaWdodERhdGEtPm5vZGUuZ2V0
KCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAg
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKQEAg
LTM5Nyw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgICAgICAgICAgY29u
dGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0LT5xdWFk
c1tpXSk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0
Rm9yU1ZHUmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodERhdGEp
OworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKCpjb250ZXh0LCBoaWdo
bGlnaHQtPnF1YWRzLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIt
PmlzQm94KCkgfHwgcmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgTGF5b3V0
UmVjdCBjb250ZW50Qm94OwogICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CkBAIC00NTEs
NyArNDUwLDcgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICAgICAgaGlnaGxpZ2h0LT5x
dWFkcy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQotICAg
ICAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgqY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFi
c1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRh
KTsKKyAgICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRR
dWFkLCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxp
Z2h0Q29uZmlnKTsKICAgICB9CiAKICAgICAvLyBEcmF3IG5vZGUgdGl0bGUgaWYgbmVjZXNzYXJ5
LgpAQCAtNDU5LDE2ICs0NTgsMTYgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICBpZiAo
IW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRl
eHQgJiYgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8pCisgICAgaWYgKGNvbnRleHQgJiYgaGlnaGxp
Z2h0Q29uZmlnLnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBu
b2RlLCByZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25h
cHBlZEludFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1l
LT5zZXR0aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hs
aWdodERhdGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVj
dEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3Qq
IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQg
KmhpZ2hsaWdodCkKIHsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0UmVjdCBoaWdobGlnaHRSZWN0KCooaGlnaGxpZ2h0RGF0YS0+cmVjdCkpOworICAgIEZsb2F0
UmVjdCBoaWdobGlnaHRSZWN0KCpyZWN0KTsKIAogICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hs
aWdodFR5cGVSZWN0czsKICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChoaWdobGlnaHRSZWN0
KTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwgSGlnaGxpZwogICAgICAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxlUmVjdC55KCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZCgqY29udGV4dCwgaGlnaGxp
Z2h0UmVjdCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91
dGxpbmUpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0
LCBoaWdobGlnaHRDb25maWcuY29udGVudCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnRPdXRsaW5l
KTsKICAgICB9CiB9CiAKQEAgLTUwOSwxNiArNTA4LDE3IEBAIHZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0KSBjb25zdAogICAgIGlmICghbV9o
aWdobGlnaHREYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBoaWdobGlnaHQtPmNvbnRlbnRD
b2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+Y29udGVudDsKLSAgICBoaWdobGlnaHQtPnBhZGRpbmdD
b2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+cGFkZGluZzsKLSAgICBoaWdobGlnaHQtPmJvcmRlckNv
bG9yID0gbV9oaWdobGlnaHREYXRhLT5ib3JkZXI7Ci0gICAgaGlnaGxpZ2h0LT5tYXJnaW5Db2xv
ciA9IG1faGlnaGxpZ2h0RGF0YS0+bWFyZ2luOworICAgIEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnID0gbV9oaWdobGlnaHREYXRhLT5oaWdobGlnaHRDb25maWc7CisgICAgaGlnaGxp
Z2h0LT5jb250ZW50Q29sb3IgPSBoaWdobGlnaHRDb25maWcuY29udGVudDsKKyAgICBoaWdobGln
aHQtPnBhZGRpbmdDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nOworICAgIGhpZ2hsaWdo
dC0+Ym9yZGVyQ29sb3IgPSBoaWdobGlnaHRDb25maWcuYm9yZGVyOworICAgIGhpZ2hsaWdodC0+
bWFyZ2luQ29sb3IgPSBoaWdobGlnaHRDb25maWcubWFyZ2luOwogICAgIGhpZ2hsaWdodC0+dHlw
ZSA9IEhpZ2hsaWdodFR5cGVSZWN0czsKIAogICAgIGlmIChtX2hpZ2hsaWdodERhdGEtPm5vZGUp
Ci0gICAgICAgIGdldE9yRHJhd05vZGVIaWdobGlnaHQoMCwgbV9oaWdobGlnaHREYXRhLmdldCgp
LCBoaWdobGlnaHQpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KDAsIG1faGlnaGxp
Z2h0RGF0YS0+bm9kZS5nZXQoKSwgaGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOwogICAgIGVs
c2UgaWYgKG1faGlnaGxpZ2h0RGF0YS0+cmVjdCkKLSAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hs
aWdodCgwLCBtX3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKKyAgICAg
ICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgwLCBtX3BhZ2UsIG1faGlnaGxpZ2h0RGF0YS0+cmVj
dC5nZXQoKSwgaGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOwogfQogCiB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0IFN0cmluZyogbWVzc2Fn
ZSkKQEAgLTUyOSwzMCArNTI5LDIzIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2Vk
SW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3RyaW5nKiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3Rv
ck92ZXJsYXk6OmhpZGVIaWdobGlnaHQoKQogewotICAgIGlmIChtX2hpZ2hsaWdodERhdGEpIHsK
LSAgICAgICAgLy8gRklYTUU6IENsZWFyIGVudGlyZSBoaWdobGlnaHQgZGF0YSBoZXJlLCBzdG9y
ZSBjb25maWcgdXBvbiBzZXRJbnNwZWN0TW9kZUVuYWJsZWQKLSAgICAgICAgbV9oaWdobGlnaHRE
YXRhLT5yZWN0LmNsZWFyKCk7Ci0gICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5jbGVhcigp
OwotICAgIH0KLSAgICB1cGRhdGUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdo
bGlnaHROb2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1faGlnaGxpZ2h0RGF0YSkKLSAgICAg
ICAgbV9oaWdobGlnaHREYXRhLT5ub2RlID0gbm9kZTsKKyAgICBtX2hpZ2hsaWdodERhdGEuY2xl
YXIoKTsKICAgICB1cGRhdGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRIaWdo
bGlnaHREYXRhKFBhc3NPd25QdHI8SGlnaGxpZ2h0RGF0YT4gaGlnaGxpZ2h0RGF0YSkKK3ZvaWQg
SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZShOb2RlKiBub2RlLCBjb25zdCBIaWdobGln
aHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBtX2hpZ2hsaWdodERhdGEgPSBoaWdo
bGlnaHREYXRhOworICAgIG1faGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRE
YXRhKCkpOworICAgIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0
Q29uZmlnOworICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZSA9IG5vZGU7CiAgICAgdXBkYXRlKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Y2xlYXJIaWdobGlnaHREYXRhKCkKK3ZvaWQg
SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UmVjdChQYXNzT3duUHRyPEludFJlY3Q+IHJlY3Qs
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnKQogewotICAgIG1faGlnaGxp
Z2h0RGF0YS5jbGVhcigpOworICAgIG1faGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdo
bGlnaHREYXRhKCkpOworICAgIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxpZ2h0Q29uZmlnID0gaGln
aGxpZ2h0Q29uZmlnOworICAgIG1faGlnaGxpZ2h0RGF0YS0+cmVjdCA9IHJlY3Q7CiAgICAgdXBk
YXRlKCk7CiB9CiAKQEAgLTU2Myw4ICs1NTYsNyBAQCBOb2RlKiBJbnNwZWN0b3JPdmVybGF5Ojpo
aWdobGlnaHRlZE5vZGUoKSBjb25zdAogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgp
CiB7Ci0gICAgLy8gRklYTUUoOTE5MjYpIFJlZmFjdG9yIGhpZ2hsaWdodE5vZGUgdG8gcGFzcyBo
aWdobGlnaHQgZGF0YSBhbG9uZyB3aXRoIHRoZSBjYWxsLgotICAgIGlmICgobV9oaWdobGlnaHRE
YXRhICYmIChtX2hpZ2hsaWdodERhdGEtPnJlY3QgfHwgbV9oaWdobGlnaHREYXRhLT5ub2RlKSkg
fHwgIW1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCkpCisgICAgaWYgKG1faGlnaGxp
Z2h0RGF0YSB8fCAhbV9wYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZS5pc051bGwoKSkKICAgICAgICAg
bV9jbGllbnQtPmhpZ2hsaWdodCgpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQtPmhpZGVI
aWdobGlnaHQoKTsKQEAgLTU3MiwxNCArNTY0LDE0IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
dXBkYXRlKCkKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3SGlnaGxpZ2h0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpZiAoIW1faGlnaGxpZ2h0RGF0YSB8fCAoIW1faGln
aGxpZ2h0RGF0YS0+cmVjdCAmJiAhbV9oaWdobGlnaHREYXRhLT5ub2RlKSkKKyAgICBpZiAoIW1f
aGlnaGxpZ2h0RGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSGlnaGxpZ2h0IGhpZ2hsaWdo
dDsKICAgICBpZiAobV9oaWdobGlnaHREYXRhLT5ub2RlKQotICAgICAgICBnZXRPckRyYXdOb2Rl
SGlnaGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdodERhdGEuZ2V0KCksICZoaWdobGlnaHQpOwor
ICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdodERhdGEt
Pm5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0
KTsKICAgICBlbHNlIGlmIChtX2hpZ2hsaWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJh
d1JlY3RIaWdobGlnaHQoJmNvbnRleHQsIG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLmdldCgpLCAm
aGlnaGxpZ2h0KTsKKyAgICAgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgmY29udGV4dCwgbV9w
YWdlLCBtX2hpZ2hsaWdodERhdGEtPnJlY3QuZ2V0KCksIG1faGlnaGxpZ2h0RGF0YS0+aGlnaGxp
Z2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3
UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCkBAIC01OTMsNyArNTg1
LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFt
ZSgpOwogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOwotICAgIElu
dFJlY3QgdmlzaWJsZVJlY3QgPSBmcmFtZS0+dmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsK
KyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBmcmFtZS0+dmll
dygpLT52aXNpYmxlU2l6ZSgpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGJhY2tncm91
bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5maWxsUmVjdCh2aXNp
YmxlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVy
LmgKaW5kZXggYTIwMGNjYzliM2Q1NDZiNmE0MmIyNzA4YjkyZTE4MzgwYWYwZjcwMS4uOGMxMGU1
ZWFjNDdiNzc1MTI2ODFlNmU2ZjM3YmFiZGI5YmNjM2EwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaApAQCAtNDgsMTQgKzQ4LDE3IEBAIGNsYXNz
IEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIAotc3RydWN0IEhpZ2hsaWdodERh
dGEgeworc3RydWN0IEhpZ2hsaWdodENvbmZpZyB7CiAgICAgQ29sb3IgY29udGVudDsKICAgICBD
b2xvciBjb250ZW50T3V0bGluZTsKICAgICBDb2xvciBwYWRkaW5nOwogICAgIENvbG9yIGJvcmRl
cjsKICAgICBDb2xvciBtYXJnaW47CiAgICAgYm9vbCBzaG93SW5mbzsKK307CiAKK3N0cnVjdCBI
aWdobGlnaHREYXRhIHsKKyAgICBIaWdobGlnaHRDb25maWcgaGlnaGxpZ2h0Q29uZmlnOwogICAg
IC8vIEVpdGhlciBvZiB0aGVzZSBtdXN0IGJlIDAuCiAgICAgUmVmUHRyPE5vZGU+IG5vZGU7CiAg
ICAgT3duUHRyPEludFJlY3Q+IHJlY3Q7CkBAIC05Miw5ICs5NSw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0IFN0cmluZyopOwogCiAgICAgdm9p
ZCBoaWRlSGlnaGxpZ2h0KCk7Ci0gICAgdm9pZCBoaWdobGlnaHROb2RlKE5vZGUqKTsKLSAgICB2
b2lkIHNldEhpZ2hsaWdodERhdGEoUGFzc093blB0cjxIaWdobGlnaHREYXRhPik7Ci0gICAgdm9p
ZCBjbGVhckhpZ2hsaWdodERhdGEoKTsKKyAgICB2b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSosIGNv
bnN0IEhpZ2hsaWdodENvbmZpZyYpOworICAgIHZvaWQgaGlnaGxpZ2h0UmVjdChQYXNzT3duUHRy
PEludFJlY3Q+LCBjb25zdCBIaWdobGlnaHRDb25maWcmKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdo
dGVkTm9kZSgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCA5MWEzODMxMGY4YThjZjc0ZWRiZDgwMTY0ODM3M2UxMmJlZjAx
Njg5Li43NjU0YjMyNjQ5NmYyNmM2ZmFiYjdlMTM5MmZiMzQ0ZjRiODVlYmJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk5NCw0MiAr
OTk0LDM4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50
KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiAgICAgTm9kZSogbm9kZSA9IHJlc3Vs
dC5pbm5lck5vZGUoKTsKICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5v
ZGU6OlRFWFRfTk9ERSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBp
ZiAobm9kZSkKLSAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgIGlm
IChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCisgICAgICAgIG1fb3Zlcmxh
eS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZyk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFi
bGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykKK3ZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3Qq
IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBpZiAobV9zZWFyY2hpbmdGb3JOb2Rl
ID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX3NlYXJjaGluZ0Zvck5vZGUgPSBl
bmFibGVkOwogICAgIGlmIChlbmFibGVkKQotICAgICAgICBzZXRIaWdobGlnaHREYXRhRnJvbUNv
bmZpZyhoaWdobGlnaHRDb25maWcpOworICAgICAgICBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29u
ZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChoaWdobGlnaHRJbnNwZWN0
b3JPYmplY3QpOwogICAgIGVsc2UgewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICAg
ICAgaGlkZUhpZ2hsaWdodCgmZXJyb3IpOwotICAgICAgICBtX292ZXJsYXktPmNsZWFySGlnaGxp
Z2h0RGF0YSgpOwogICAgIH0KIH0KIAotYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SGlnaGxp
Z2h0RGF0YUZyb21Db25maWcoSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpCitQYXNz
T3duUHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZp
Z0Zyb21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QpCiB7Ci0gICAgaWYgKCFoaWdobGlnaHRDb25maWcpIHsKLSAgICAgICAgbV9vdmVybGF5
LT5jbGVhckhpZ2hsaWdodERhdGEoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAg
ICBpZiAoIWhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKKyAgICAgICAgcmV0dXJuIFBhc3NPd25Q
dHI8SGlnaGxpZ2h0Q29uZmlnPiAoKTsKIAotICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBoaWdo
bGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERhdGEoKSk7CisgICAgT3duUHRyPEhp
Z2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENv
bmZpZygpKTsKICAgICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChk
byBub3Qgc2hvdyBhIHRvb2x0aXApLgotICAgIGhpZ2hsaWdodENvbmZpZy0+Z2V0Qm9vbGVhbigi
c2hvd0luZm8iLCAmc2hvd0luZm8pOwotICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gc2hv
d0luZm87Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoImNv
bnRlbnRDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVu
dE91dGxpbmUgPSBwYXJzZUNvbmZpZ0NvbG9yKCJjb250ZW50T3V0bGluZUNvbG9yIiwgaGlnaGxp
Z2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xv
cigicGFkZGluZ0NvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5i
b3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7
Ci0gICAgaGlnaGxpZ2h0RGF0YS0+bWFyZ2luID0gcGFyc2VDb25maWdDb2xvcigibWFyZ2luQ29s
b3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIG1fb3ZlcmxheS0+c2V0SGlnaGxpZ2h0RGF0YSho
aWdobGlnaHREYXRhLnJlbGVhc2UoKSk7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgaGlnaGxpZ2h0
SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5mbyk7CisgICAg
aGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHNob3dJbmZvOworICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoImNvbnRlbnRDb2xvciIsIGhpZ2hsaWdodElu
c3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBh
cnNlQ29uZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3Io
InBhZGRpbmdDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0
Q29uZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNv
bmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAg
cmV0dXJuIGhpZ2hsaWdodENvbmZpZy5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZykKQEAgLTEwMzks
MjEgKzEwMzUsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFi
bGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdAogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKLSAgICBPd25QdHI8
SGlnaGxpZ2h0RGF0YT4gaGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRh
KCkpOwotICAgIGhpZ2hsaWdodERhdGEtPnJlY3QgPSBhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5
LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29s
b3IoY29sb3IpOwotICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xv
cihvdXRsaW5lQ29sb3IpOwotICAgIG1fb3ZlcmxheS0+c2V0SGlnaGxpZ2h0RGF0YShoaWdobGln
aHREYXRhLnJlbGVhc2UoKSk7CisgICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0
Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbmZpZygpKTsKKyAgICBoaWdobGlnaHRD
b25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBoaWdobGlnaHRDb25maWct
PmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgIG1fb3Zlcmxh
eS0+aGlnaGxpZ2h0UmVjdChhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0
KSksICpoaWdobGlnaHRDb25maWcpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHROb2RlKAogICAgIEVycm9yU3RyaW5nKiwKICAgICBpbnQgbm9kZUlkLAotICAgIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRDb25maWcpCisgICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBp
ZiAoTm9kZSogbm9kZSA9IG5vZGVGb3JJZChub2RlSWQpKQotICAgICAgICBpZiAoc2V0SGlnaGxp
Z2h0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0Q29uZmlnLmdldCgpKSkKLSAgICAgICAgICAgIG1f
b3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlKTsKKyAgICAgICAgaWYgKE93blB0cjxIaWdobGln
aHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QoaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKSkKKyAgICAgICAgICAgIG1fb3Zl
cmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoCkBAIC0xMDY0LDEyICsxMDU5LDExIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKAogewogICAgIEZyYW1lKiBm
cmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlmIChmcmFtZSAm
JiBmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgT3duUHRyPEhpZ2hsaWdodERhdGE+
IGhpZ2hsaWdodERhdGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICAgICAg
aGlnaGxpZ2h0RGF0YS0+bm9kZSA9IGZyYW1lLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgaGln
aGxpZ2h0RGF0YS0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3Ig
ZnJhbWVzLgotICAgICAgICBoaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xv
cik7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihv
dXRsaW5lQ29sb3IpOwotICAgICAgICBtX292ZXJsYXktPnNldEhpZ2hsaWdodERhdGEoaGlnaGxp
Z2h0RGF0YS5yZWxlYXNlKCkpOworICAgICAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdo
bGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAgICAgICBo
aWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMg
Zm9yIGZyYW1lcy4KKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CisgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJz
ZUNvbG9yKG91dGxpbmVDb2xvcik7CisgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShm
cmFtZS0+b3duZXJFbGVtZW50KCksICpoaWdobGlnaHRDb25maWcpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhYzQ3OGNj
ZTA1NTAxYTNkNTQ0ZWVmYzMzNDAyZTMyNmY4NjMxYWE5Li44MDRkNTFmM2Y0NWUzNTM1YjAyNzY4
YjJkYzc0Yzc0NzYzYzJjMzM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JET01BZ2Vu
dF9oCiAjZGVmaW5lIEluc3BlY3RvckRPTUFnZW50X2gKIAorI2luY2x1ZGUgIkRPTU5vZGVIaWdo
bGlnaHRlci5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKQEAgLTY5LDYgKzcw
LDggQEAgY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzazsKIGNsYXNzIFNjcmlwdFZh
bHVlOwogY2xhc3MgU2hhZG93Um9vdDsKIAorc3RydWN0IEhpZ2hsaWdodENvbmZpZzsKKwogdHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTk5
LDcgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOwogCiAgICAgdm9pZCBzZXRTZWFyY2hp
bmdGb3JOb2RlKGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcp
OwotICAgIGJvb2wgc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoSW5zcGVjdG9yT2JqZWN0KiBo
aWdobGlnaHRDb25maWcpOworICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGln
aHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5z
cGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVk
ZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGludD4gTm9kZVRvSWRNYXA7CkBAIC0yNDgsNiArMjUx
LDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4g
bV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1
czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29u
ZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnOwogICAgIE93blB0cjxJbnNwZWN0b3JI
aXN0b3J5PiBtX2hpc3Rvcnk7CiAgICAgT3duUHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAg
ICAgYm9vbCBtX3N1cHByZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155757</attachid>
            <date>2012-08-01 01:58:00 -0700</date>
            <delta_ts>2012-08-03 08:59:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120801125742.patch</filename>
            <type>text/plain</type>
            <size>22490</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGE3YzBhZGZlM2FjZjE2
MDJlMGUxYmY2NzczZGYyMWI4YTMwYTVjMi4uYmY1YmViZTZmNmNiMzNmZTZkZjI0MTIzOTQ4NGU0
YjY0ZTc2OGI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTAxICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3Zl
cmxheTo6ZHJhd0hpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5
OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcik6CisgICAgICAgICogaW5zcGVjdG9yL0RPTU5vZGVIaWdo
bGlnaHRlci5oOgorICAgICAgICAoSGlnaGxpZ2h0Q29uZmlnKToKKyAgICAgICAgKEluc3BlY3Rv
ck92ZXJsYXkpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6Y2xlYXJGcm9udGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldElu
c3BlY3RNb2RlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6
aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0RnJhbWUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JET01BZ2VudCk6CisKIDIwMTItMDct
MzEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE9s
ZGVyIFNoYWRvd0RPTSBpcyBzdGlsbCByZW5kZXJlZCB3aGVuIGEgbmV3IFNoYWRvd0RPTSBpcyBh
ZGRlZCB3aGVuIHRoZXkgZG9uJ3QgaGF2ZSBhbnkgSW5zZXJ0aW9uUG9pbnRzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAxMGM3ODVi
MmFlNjAyNmM4ZGE2ZmY0MjhmNTk0MmFiOGUxYWVhMTFjLi45YWFjNzI5YWMyOGNmM2Q4YjNlYTJk
ZTg1MGIyNDQyMzRlOGI1NjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMTEzLDM1ICsxMTMsMzUgQEAgdm9pZCBkcmF3T3V0bGlu
ZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQm
IHF1YWQsIGMKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0
Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBjb250ZW50
UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBib3Jk
ZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERhdGEqIGhpZ2hs
aWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRp
bmdRdWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFy
Z2luUXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7Ci0gICAg
Ym9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRyYW5zcGFy
ZW50OwotICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9IENvbG9y
Ojp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRhLT5wYWRk
aW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGln
aHREYXRhLT5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHREYXRhLT5j
b250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNNYXJnaW4g
PSBoaWdobGlnaHRDb25maWcubWFyZ2luICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29s
IGhhc0JvcmRlciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXIgIT0gQ29sb3I6OnRyYW5zcGFyZW50
OworICAgIGJvb2wgaGFzUGFkZGluZyA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nICE9IENvbG9y
Ojp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHRDb25maWcuY29u
dGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnRPdXRs
aW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVhZDsKICAg
ICBDb2xvciBjbGlwQ29sb3I7CiAgICAgaWYgKGhhc01hcmdpbiAmJiAoIWhhc0JvcmRlciB8fCBt
YXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRo
Q2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHREYXRhLT5tYXJn
aW4pOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFyZ2luUXVh
ZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbik7CiAgICAgICAgIGNsaXBRdWFk
ID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1BhZGRpbmcg
fHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGlnaHREYXRh
LT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9y
ZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodENvbmZpZy5ib3JkZXIpOwogICAgICAgICBj
bGlwUXVhZCA9IHBhZGRpbmdRdWFkOwogICAgIH0KICAgICBpZiAoaGFzUGFkZGluZyAmJiAoIWhh
c0NvbnRlbnQgfHwgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAgIGRyYXdP
dXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQsIGhp
Z2hsaWdodERhdGEtPnBhZGRpbmcpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAo
Y29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHRDb25maWcucGFkZGlu
Zyk7CiAgICAgICAgIGNsaXBRdWFkID0gY29udGVudFF1YWQ7CiAgICAgfQogICAgIGlmIChoYXND
b250ZW50KQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRRdWFkLCBo
aWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7Cisg
ICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodENv
bmZpZy5jb250ZW50LCBoaWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUpOwogfQogCi12b2lk
IGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBIaWdobGlnaHREYXRhKiBoaWdo
bGlnaHREYXRhKQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgYWJzb2x1dGVRdWFkcywgY29u
c3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhYnNvbHV0ZVF1YWRzLnNpemUoKTsgKytpKQotICAgICAgICBkcmF3T3V0bGlu
ZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQs
IENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwg
YWJzb2x1dGVRdWFkc1tpXSwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIENvbG9yOjp0cmFuc3Bh
cmVudCk7CiB9CiAKIGludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGdsb2JhbFRleHRS
dW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3IsIGNvbnN0
IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYg
dGl0bGVSZWN0KQpAQCAtMzYzLDkgKzM2Myw4IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRzUXVhZFRv
UGFnZShjb25zdCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFtZVZpZXcqIHZpZXcsCiAg
ICAgcXVhZCArPSBtYWluVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdl
dE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHRE
YXRhKiBoaWdobGlnaHREYXRhLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKK3N0YXRpYyB2b2lkIGdl
dE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2RlKiBub2Rl
LCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0KiBoaWdo
bGlnaHQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IGhpZ2hsaWdodERhdGEtPm5vZGUuZ2V0KCk7CiAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgRnJhbWUq
IGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKQEAgLTM5Nyw3
ICszOTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgICAgICAgICAgY29udGVudHNR
dWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0LT5xdWFkc1tpXSk7
CiAKICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yU1ZH
UmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodERhdGEpOworICAg
ICAgICAgICAgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKCpjb250ZXh0LCBoaWdobGlnaHQt
PnF1YWRzLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXItPmlzQm94
KCkgfHwgcmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgTGF5b3V0UmVjdCBj
b250ZW50Qm94OwogICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CkBAIC00NTEsNyArNDUw
LDcgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICAgICAgaGlnaGxpZ2h0LT5xdWFkcy5h
cHBlbmQoYWJzQ29udGVudFF1YWQpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQotICAgICAgICAg
ICAgZHJhd0hpZ2hsaWdodEZvckJveCgqY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRp
bmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRhKTsKKyAg
ICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBh
YnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxpZ2h0Q29u
ZmlnKTsKICAgICB9CiAKICAgICAvLyBEcmF3IG5vZGUgdGl0bGUgaWYgbmVjZXNzYXJ5LgpAQCAt
NDU5LDE2ICs0NTgsMTYgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICBpZiAoIW5vZGUt
PmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRleHQgJiYg
aGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8pCisgICAgaWYgKGNvbnRleHQgJiYgaGlnaGxpZ2h0Q29u
ZmlnLnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBub2RlLCBy
ZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25hcHBlZElu
dFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1lLT5zZXR0
aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERh
dGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hs
aWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3QqIHJlY3Qs
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQgKmhpZ2hs
aWdodCkKIHsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVj
dCBoaWdobGlnaHRSZWN0KCooaGlnaGxpZ2h0RGF0YS0+cmVjdCkpOworICAgIEZsb2F0UmVjdCBo
aWdobGlnaHRSZWN0KCpyZWN0KTsKIAogICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hsaWdodFR5
cGVSZWN0czsKICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChoaWdobGlnaHRSZWN0KTsKQEAg
LTQ4MCw3ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwgSGlnaGxpZwogICAgICAgICAgICAgY29u
dGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxlUmVjdC55KCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZCgqY29udGV4dCwgaGlnaGxpZ2h0UmVj
dCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUp
OworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0LCBoaWdo
bGlnaHRDb25maWcuY29udGVudCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnRPdXRsaW5lKTsKICAg
ICB9CiB9CiAKQEAgLTUwNiwxOSArNTA1LDE5IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d091dGxpbmUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByCiAK
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0
KSBjb25zdAogewotICAgIGlmICghbV9oaWdobGlnaHREYXRhKQorICAgIGlmICghbV9oaWdobGln
aHROb2RlICYmICFtX2hpZ2hsaWdodFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhpZ2hs
aWdodC0+Y29udGVudENvbG9yID0gbV9oaWdobGlnaHREYXRhLT5jb250ZW50OwotICAgIGhpZ2hs
aWdodC0+cGFkZGluZ0NvbG9yID0gbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nOwotICAgIGhpZ2hs
aWdodC0+Ym9yZGVyQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEtPmJvcmRlcjsKLSAgICBoaWdobGln
aHQtPm1hcmdpbkNvbG9yID0gbV9oaWdobGlnaHREYXRhLT5tYXJnaW47CisgICAgaGlnaGxpZ2h0
LT5jb250ZW50Q29sb3IgPSBtX2hpZ2hsaWdodENvbmZpZy5jb250ZW50OworICAgIGhpZ2hsaWdo
dC0+cGFkZGluZ0NvbG9yID0gbV9oaWdobGlnaHRDb25maWcucGFkZGluZzsKKyAgICBoaWdobGln
aHQtPmJvcmRlckNvbG9yID0gbV9oaWdobGlnaHRDb25maWcuYm9yZGVyOworICAgIGhpZ2hsaWdo
dC0+bWFyZ2luQ29sb3IgPSBtX2hpZ2hsaWdodENvbmZpZy5tYXJnaW47CiAgICAgaGlnaGxpZ2h0
LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwogCi0gICAgaWYgKG1faGlnaGxpZ2h0RGF0YS0+
bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodCgwLCBtX2hpZ2hsaWdodERhdGEu
Z2V0KCksIGhpZ2hsaWdodCk7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHREYXRhLT5yZWN0KQot
ICAgICAgICBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KDAsIG1fcGFnZSwgbV9oaWdobGlnaHREYXRh
LmdldCgpLCBoaWdobGlnaHQpOworICAgIGlmIChtX2hpZ2hsaWdodE5vZGUpCisgICAgICAgIGdl
dE9yRHJhd05vZGVIaWdobGlnaHQoMCwgbV9oaWdobGlnaHROb2RlLmdldCgpLCBtX2hpZ2hsaWdo
dENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICBlbHNlCisgICAgICAgIGdldE9yRHJhd1JlY3RIaWdo
bGlnaHQoMCwgbV9wYWdlLCBtX2hpZ2hsaWdodFJlY3QuZ2V0KCksIG1faGlnaGxpZ2h0Q29uZmln
LCBoaWdobGlnaHQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVi
dWdnZXJNZXNzYWdlKGNvbnN0IFN0cmluZyogbWVzc2FnZSkKQEAgLTUyOSw0MiArNTI4LDMzIEBA
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3Qg
U3RyaW5nKiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQo
KQogewotICAgIGlmIChtX2hpZ2hsaWdodERhdGEpIHsKLSAgICAgICAgLy8gRklYTUU6IENsZWFy
IGVudGlyZSBoaWdobGlnaHQgZGF0YSBoZXJlLCBzdG9yZSBjb25maWcgdXBvbiBzZXRJbnNwZWN0
TW9kZUVuYWJsZWQKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5yZWN0LmNsZWFyKCk7Ci0gICAg
ICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5jbGVhcigpOwotICAgIH0KKyAgICBtX2hpZ2hsaWdo
dE5vZGUuY2xlYXIoKTsKKyAgICBtX2hpZ2hsaWdodFJlY3QuY2xlYXIoKTsKICAgICB1cGRhdGUo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUp
Cit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodE5vZGUoTm9kZSogbm9kZSwgY29uc3Qg
SGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7Ci0gICAgaWYgKG1faGlnaGxpZ2h0
RGF0YSkKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5ub2RlID0gbm9kZTsKKyAgICBtX2hpZ2hs
aWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZzsKKyAgICBtX2hpZ2hsaWdodE5vZGUgPSBub2Rl
OwogICAgIHVwZGF0ZSgpOwogfQogCi12b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldEhpZ2hsaWdo
dERhdGEoUGFzc093blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhKQordm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KFBhc3NPd25QdHI8SW50UmVjdD4gcmVjdCwgY29u
c3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7Ci0gICAgbV9oaWdobGlnaHRE
YXRhID0gaGlnaGxpZ2h0RGF0YTsKLSAgICB1cGRhdGUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JP
dmVybGF5OjpjbGVhckhpZ2hsaWdodERhdGEoKQotewotICAgIG1faGlnaGxpZ2h0RGF0YS5jbGVh
cigpOworICAgIG1faGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOworICAgIG1faGln
aGxpZ2h0UmVjdCA9IHJlY3Q7CiAgICAgdXBkYXRlKCk7CiB9CiAKIE5vZGUqIEluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodGVkTm9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faGlnaGxpZ2h0
RGF0YSA/IG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5nZXQoKSA6IDA7CisgICAgcmV0dXJuIG1faGln
aGxpZ2h0Tm9kZS5nZXQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUoKQog
ewotICAgIC8vIEZJWE1FKDkxOTI2KSBSZWZhY3RvciBoaWdobGlnaHROb2RlIHRvIHBhc3MgaGln
aGxpZ2h0IGRhdGEgYWxvbmcgd2l0aCB0aGUgY2FsbC4KLSAgICBpZiAoKG1faGlnaGxpZ2h0RGF0
YSAmJiAobV9oaWdobGlnaHREYXRhLT5yZWN0IHx8IG1faGlnaGxpZ2h0RGF0YS0+bm9kZSkpIHx8
ICFtX3BhdXNlZEluRGVidWdnZXJNZXNzYWdlLmlzTnVsbCgpKQorICAgIGlmIChtX2hpZ2hsaWdo
dE5vZGUgfHwgbV9oaWdobGlnaHRSZWN0IHx8ICFtX3BhdXNlZEluRGVidWdnZXJNZXNzYWdlLmlz
TnVsbCgpKQogICAgICAgICBtX2NsaWVudC0+aGlnaGxpZ2h0KCk7CiAgICAgZWxzZQogICAgICAg
ICBtX2NsaWVudC0+aGlkZUhpZ2hsaWdodCgpOwpAQCAtNTcyLDE0ICs1NjIsMTQgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUoKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghbV9oaWdobGln
aHREYXRhIHx8ICghbV9oaWdobGlnaHREYXRhLT5yZWN0ICYmICFtX2hpZ2hsaWdodERhdGEtPm5v
ZGUpKQorICAgIGlmICghbV9oaWdobGlnaHROb2RlICYmICFtX2hpZ2hsaWdodFJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgaWYgKG1faGlnaGxp
Z2h0RGF0YS0+bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodCgmY29udGV4dCwg
bV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKLSAgICBlbHNlIGlmIChtX2hpZ2hs
aWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQs
IG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKKyAgICBpZiAobV9o
aWdobGlnaHROb2RlKQorICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KCZjb250ZXh0LCBt
X2hpZ2hsaWdodE5vZGUuZ2V0KCksIG1faGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKKyAg
ICBlbHNlCisgICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQsIG1fcGFnZSwg
bV9oaWdobGlnaHRSZWN0LmdldCgpLCBtX2hpZ2hsaWdodENvbmZpZywgJmhpZ2hsaWdodCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhdXNlZEluRGVidWdnZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0KQpAQCAtNTkzLDcgKzU4Myw3IEBAIHZvaWQgSW5zcGVjdG9yT3Zlcmxh
eTo6ZHJhd1BhdXNlZEluRGVidWdnZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogCiAgICAg
RnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKICAgICBTZXR0aW5ncyogc2V0dGlu
Z3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKLSAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gZnJhbWUt
PnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgSW50UmVjdCB2aXNpYmxlUmVjdCA9
IEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWUtPnZpZXcoKS0+dmlzaWJsZVNpemUoKSk7CiAKICAg
ICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogICAgIGNvbnRleHQuZmlsbFJlY3QodmlzaWJsZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCmluZGV4IGEyMDBjY2M5YjNkNTQ2YjZh
NDJiMjcwOGI5MmUxODM4MGFmMGY3MDEuLjFhNDM0M2IzMzhhMjk1M2E3NjBjYjhjNTJjZWY0ZDBl
MTJlODk4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmgKQEAgLTQ4LDE3ICs0OCwxMyBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgTm9kZTsKIGNs
YXNzIFBhZ2U7CiAKLXN0cnVjdCBIaWdobGlnaHREYXRhIHsKK3N0cnVjdCBIaWdobGlnaHRDb25m
aWcgewogICAgIENvbG9yIGNvbnRlbnQ7CiAgICAgQ29sb3IgY29udGVudE91dGxpbmU7CiAgICAg
Q29sb3IgcGFkZGluZzsKICAgICBDb2xvciBib3JkZXI7CiAgICAgQ29sb3IgbWFyZ2luOwogICAg
IGJvb2wgc2hvd0luZm87Ci0KLSAgICAvLyBFaXRoZXIgb2YgdGhlc2UgbXVzdCBiZSAwLgotICAg
IFJlZlB0cjxOb2RlPiBub2RlOwotICAgIE93blB0cjxJbnRSZWN0PiByZWN0OwogfTsKIAogZW51
bSBIaWdobGlnaHRUeXBlIHsKQEAgLTkyLDkgKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0
UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3RyaW5nKik7CiAKICAgICB2b2lkIGhpZGVI
aWdobGlnaHQoKTsKLSAgICB2b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSopOwotICAgIHZvaWQgc2V0
SGlnaGxpZ2h0RGF0YShQYXNzT3duUHRyPEhpZ2hsaWdodERhdGE+KTsKLSAgICB2b2lkIGNsZWFy
SGlnaGxpZ2h0RGF0YSgpOworICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShOb2RlKiwgY29uc3QgSGln
aGxpZ2h0Q29uZmlnJik7CisgICAgdm9pZCBoaWdobGlnaHRSZWN0KFBhc3NPd25QdHI8SW50UmVj
dD4sIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2Rl
KCkgY29uc3Q7CiAKQEAgLTEwOCw3ICsxMDMsOSBAQCBwcml2YXRlOgogICAgIFBhZ2UqIG1fcGFn
ZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3BhdXNlZElu
RGVidWdnZXJNZXNzYWdlOwotICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdodERh
dGE7CisgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0Tm9kZTsKKyAgICBPd25QdHI8SW50UmVj
dD4gbV9oaWdobGlnaHRSZWN0OworICAgIEhpZ2hsaWdodENvbmZpZyBtX2hpZ2hsaWdodENvbmZp
ZzsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDkxYTM4MzEwZjhhOGNmNzRlZGJkODAx
NjQ4MzczZTEyYmVmMDE2ODkuLjIyZmMyYjEzMTlkYTVkM2M5ZjI1ZWE0ZDUzYzU5NjgxMmVhNTM4
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtMjMyLDkgKzIzMiw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRl
bmQoKQogCiAgICAgbV9oaXN0b3J5LmNsZWFyKCk7CiAgICAgbV9kb21FZGl0b3IuY2xlYXIoKTsK
LSAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKGZhbHNlLCAwKTsKIAogICAgIEVycm9yU3RyaW5nIGVy
cm9yOworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CiAgICAgaGlk
ZUhpZ2hsaWdodCgmZXJyb3IpOwogCiAgICAgbV9mcm9udGVuZCA9IDA7CkBAIC05NTMsNyArOTUz
LDggQEAgYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlTW91c2VQcmVzcygpCiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3BlY3QoTm9kZSogbm9kZSkKIHsKLSAgICBzZXRTZWFyY2hp
bmdGb3JOb2RlKGZhbHNlLCAwKTsKKyAgICBFcnJvclN0cmluZyBlcnJvcjsKKyAgICBzZXRTZWFy
Y2hpbmdGb3JOb2RlKCZlcnJvciwgZmFsc2UsIDApOwogCiAgICAgaWYgKG5vZGUtPm5vZGVUeXBl
KCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9D
VU1FTlRfTk9ERSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKQEAgLTk5NCw2
NiArOTk1LDY4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiAgICAgTm9kZSogbm9kZSA9IHJl
c3VsdC5pbm5lck5vZGUoKTsKICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09
IE5vZGU6OlRFWFRfTk9ERSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAg
ICBpZiAobm9kZSkKLSAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAg
IGlmIChub2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCisgICAgICAgIG1fb3Zl
cmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBl
bmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykKK3ZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBi
b29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQog
ewogICAgIGlmIChtX3NlYXJjaGluZ0Zvck5vZGUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fc2VhcmNoaW5nRm9yTm9kZSA9IGVuYWJsZWQ7Ci0gICAgaWYgKGVuYWJsZWQpCi0g
ICAgICAgIHNldEhpZ2hsaWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CisgICAg
aWYgKGVuYWJsZWQpIHsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpIHsK
KyAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJOdWxsIHBvaW50ZXIgZm9yIGhpZ2hsaWdodElu
c3BlY3Rvck9iamVjdCBpbiBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZSI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNwZWN0TW9kZUhp
Z2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIEVycm9yU3Ry
aW5nIGVycm9yOwogICAgICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7Ci0gICAgICAgIG1fb3Zl
cmxheS0+Y2xlYXJIaWdobGlnaHREYXRhKCk7CiAgICAgfQogfQogCi1ib29sIEluc3BlY3RvckRP
TUFnZW50OjpzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZykKK1Bhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKLSAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykgewot
ICAgICAgICBtX292ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEg
PSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29u
ZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOwog
ICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93
IGEgdG9vbHRpcCkuCi0gICAgaGlnaGxpZ2h0Q29uZmlnLT5nZXRCb29sZWFuKCJzaG93SW5mbyIs
ICZzaG93SW5mbyk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8gPSBzaG93SW5mbzsKLSAg
ICBoaWdobGlnaHREYXRhLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9y
IiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9
IHBhcnNlQ29uZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcp
OwotICAgIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKCJwYWRkaW5n
Q29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPmJvcmRlciA9IHBh
cnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdo
bGlnaHREYXRhLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hs
aWdodENvbmZpZyk7Ci0gICAgbV9vdmVybGF5LT5zZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERh
dGEucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBoaWdobGlnaHRJbnNwZWN0b3JP
YmplY3QtPmdldEJvb2xlYW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKKyAgICBoaWdobGlnaHRD
b25maWctPnNob3dJbmZvID0gc2hvd0luZm87CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50
ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdD
b2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Cisg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ0Nv
bG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmJv
cmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3Io
Im1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICByZXR1cm4gaGln
aGxpZ2h0Q29uZmlnLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9v
bCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmln
KQogewotICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8g
aGlnaGxpZ2h0Q29uZmlnLT5nZXQoKSA6IDApOworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZXJy
b3JTdHJpbmcsIGVuYWJsZWQsIGhpZ2hsaWdodENvbmZpZyA/IGhpZ2hsaWdodENvbmZpZy0+Z2V0
KCkgOiAwKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJv
clN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBvdXRsaW5lQ29sb3IpCiB7Ci0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERh
dGEgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICBoaWdobGlnaHREYXRhLT5y
ZWN0ID0gYWRvcHRQdHIobmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgIGhp
Z2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKLSAgICBoaWdobGlnaHRE
YXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICBtX292
ZXJsYXktPnNldEhpZ2hsaWdodERhdGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOworICAgIE93
blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdo
bGlnaHRDb25maWcoKSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29s
b3Iob3V0bGluZUNvbG9yKTsKKyAgICBtX292ZXJsYXktPmhpZ2hsaWdodFJlY3QoYWRvcHRQdHIo
bmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKLSAgICBFcnJvclN0cmlu
ZyosCisgICAgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAgIGludCBub2RlSWQsCi0gICAg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZykKKyAgICBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewot
ICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCi0gICAgICAgIGlmIChzZXRI
aWdobGlnaHREYXRhRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcuZ2V0KCkpKQotICAgICAgICAg
ICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgIGlmIChOb2RlKiBub2RlID0g
bm9kZUZvcklkKG5vZGVJZCkpIHsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmpl
Y3QpIHsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJOdWxsIHBvaW50ZXIgZm9yIGhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdCBpbiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSI7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgT3duUHRyPEhpZ2hsaWdo
dENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9i
amVjdChoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QuZ2V0KCkpOworICAgICAgICBtX292ZXJsYXkt
PmhpZ2hsaWdodE5vZGUobm9kZSwgKmhpZ2hsaWdodENvbmZpZyk7CisgICAgfQogfQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgKQEAgLTEwNjQsMTIgKzEwNjcsMTEg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7CiAgICAgaWYgKGZyYW1l
ICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBPd25QdHI8SGlnaGxpZ2h0RGF0
YT4gaGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOwotICAgICAg
ICBoaWdobGlnaHREYXRhLT5ub2RlID0gZnJhbWUtPm93bmVyRWxlbWVudCgpOwotICAgICAgICBo
aWdobGlnaHREYXRhLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5cyBzaG93IHRvb2x0aXBzIGZv
ciBmcmFtZXMuCi0gICAgICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNv
bG9yKTsKLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9y
KG91dGxpbmVDb2xvcik7Ci0gICAgICAgIG1fb3ZlcmxheS0+c2V0SGlnaGxpZ2h0RGF0YShoaWdo
bGlnaHREYXRhLnJlbGVhc2UoKSk7CisgICAgICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhp
Z2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25maWcoKSk7CisgICAgICAg
IGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlw
cyBmb3IgZnJhbWVzLgorICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNv
bG9yKGNvbG9yKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBh
cnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKKyAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2Rl
KGZyYW1lLT5vd25lckVsZW1lbnQoKSwgKmhpZ2hsaWdodENvbmZpZyk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGFjNDc4
Y2NlMDU1MDFhM2Q1NDRlZWZjMzM0MDJlMzI2Zjg2MzFhYTkuLjczMzljNjNkYzgwMmNkMTFmYjZi
ZDU2MmRjYzcwZjIxMzcwZjYzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIEluc3BlY3RvckRPTUFn
ZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yRE9NQWdlbnRfaAogCisjaW5jbHVkZSAiRE9NTm9kZUhp
Z2hsaWdodGVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJJbmplY3Rl
ZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgpAQCAtNjksNiAr
NzAsOCBAQCBjbGFzcyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrOwogY2xhc3MgU2NyaXB0
VmFsdWU7CiBjbGFzcyBTaGFkb3dSb290OwogCitzdHJ1Y3QgSGlnaGxpZ2h0Q29uZmlnOworCiB0
eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCkBAIC0x
OTgsOCArMjAxLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJbnNwZWN0b3JET01BZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yU3RhdGUq
LCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNwZWN0b3JPdmVybGF5Kik7CiAKLSAgICB2b2lk
IHNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hs
aWdodENvbmZpZyk7Ci0gICAgYm9vbCBzZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0
b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2Rl
KEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENv
bmZpZyk7CisgICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zy
b21JbnNwZWN0b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmpl
Y3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTI0OCw2ICsyNTEsNyBAQCBwcml2
YXRlOgogICAgIE93blB0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJv
b2wgbV9zZWFyY2hpbmdGb3JOb2RlOworICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IG1faW5z
cGVjdE1vZGVIaWdobGlnaHRDb25maWc7CiAgICAgT3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1f
aGlzdG9yeTsKICAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKICAgICBib29sIG1f
c3VwcHJlc3NBdHRyaWJ1dGVNb2RpZmllZEV2ZW50Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156393</attachid>
            <date>2012-08-03 08:59:33 -0700</date>
            <delta_ts>2012-08-06 02:00:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120803195912.patch</filename>
            <type>text/plain</type>
            <size>23758</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ1ZDg5NmUwNWUyYzYz
ODBhZjI2NGYzMDFkNmM3ZTVlMGVjMDQ1Mi4uMDA5ZTE5YmNhYzFkYzcxZDBiNWMxMTE3ZjFhZGRl
MzlkZDk4YTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTAzICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UmVjdEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAoSGlnaGxpZ2h0Q29uZmlnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhpZ2hsaWdodDo6c2V0Q29sb3JzKToKKyAgICAgICAgKEhpZ2hsaWdodCk6
CisgICAgICAgIChJbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3Bl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFy
Y2hpbmdGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRE9N
QWdlbnQpOgorCiAyMDEyLTA4LTAzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEluaXRpYWxpemUgdGhlIEV2ZW50IE5hbWVzJyBzdHJpbmcgZnJvbSBy
ZWFkIG9ubHkgbWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwCmluZGV4IDEwYzc4NWIyYWU2MDI2YzhkYTZmZjQyOGY1OTQyYWI4ZTFhZWEx
MWMuLjgxODFkZGI5OTExMDM5NWU2YmQwNjM2NzYzM2E4MjRiZWI2ZTk3NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0xMTMsMzUg
KzExMywzNSBAQCB2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgYwogICAgIGNvbnRleHQucmVzdG9yZSgp
OwogfQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdR
dWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2lu
UXVhZCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKK3ZvaWQgZHJhd0hpZ2hsaWdodEZv
ckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1
YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVy
UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBjb25zdCBIaWdobGlnaHRDb25maWcm
IGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBib29sIGhhc01hcmdpbiA9IGhpZ2hsaWdodERhdGEt
Pm1hcmdpbiAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgYm9vbCBoYXNCb3JkZXIgPSBoaWdo
bGlnaHREYXRhLT5ib3JkZXIgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIGJvb2wgaGFzUGFk
ZGluZyA9IGhpZ2hsaWdodERhdGEtPnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAg
IGJvb2wgaGFzQ29udGVudCA9IGhpZ2hsaWdodERhdGEtPmNvbnRlbnQgIT0gQ29sb3I6OnRyYW5z
cGFyZW50IHx8IGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lICE9IENvbG9yOjp0cmFuc3Bh
cmVudDsKKyAgICBib29sIGhhc01hcmdpbiA9IGhpZ2hsaWdodENvbmZpZy5tYXJnaW4gIT0gQ29s
b3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0Q29uZmlnLmJv
cmRlciAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNQYWRkaW5nID0gaGlnaGxp
Z2h0Q29uZmlnLnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQ29u
dGVudCA9IGhpZ2hsaWdodENvbmZpZy5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBo
aWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwogCiAg
ICAgRmxvYXRRdWFkIGNsaXBRdWFkOwogICAgIENvbG9yIGNsaXBDb2xvcjsKICAgICBpZiAoaGFz
TWFyZ2luICYmICghaGFzQm9yZGVyIHx8IG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsKLSAg
ICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRl
clF1YWQsIGhpZ2hsaWdodERhdGEtPm1hcmdpbik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRX
aXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHRDb25maWcu
bWFyZ2luKTsKICAgICAgICAgY2xpcFF1YWQgPSBib3JkZXJRdWFkOwogICAgIH0KICAgICBpZiAo
aGFzQm9yZGVyICYmICghaGFzUGFkZGluZyB8fCBib3JkZXJRdWFkICE9IHBhZGRpbmdRdWFkKSkg
ewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwg
cGFkZGluZ1F1YWQsIGhpZ2hsaWdodERhdGEtPmJvcmRlcik7CisgICAgICAgIGRyYXdPdXRsaW5l
ZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgaGlnaGxpZ2h0
Q29uZmlnLmJvcmRlcik7CiAgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7CiAgICAgfQog
ICAgIGlmIChoYXNQYWRkaW5nICYmICghaGFzQ29udGVudCB8fCBwYWRkaW5nUXVhZCAhPSBjb250
ZW50UXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIHBh
ZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+cGFkZGluZyk7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQsIGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nKTsKICAgICAgICAgY2xpcFF1YWQgPSBjb250ZW50
UXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0NvbnRlbnQpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdo
dERhdGEtPmNvbnRlbnRPdXRsaW5lKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0
LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIGhpZ2hsaWdodENvbmZpZy5j
b250ZW50T3V0bGluZSk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIGFic29sdXRl
UXVhZHMsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRG
b3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9h
dFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENv
bmZpZykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFic29sdXRlUXVhZHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgYWJzb2x1dGVRdWFkc1tp
XSwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAg
ZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBhYnNvbHV0ZVF1YWRzW2ldLCBoaWdobGlnaHRDb25m
aWcuY29udGVudCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAogaW50IGRyYXdTdWJzdHJpbmco
Y29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwgY29u
c3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCkBAIC0zNjMsOSArMzYzLDggQEAg
c3RhdGljIHZvaWQgY29udGVudHNRdWFkVG9QYWdlKGNvbnN0IEZyYW1lVmlldyogbWFpblZpZXcs
IGNvbnN0IEZyYW1lVmlldyogdmlldywKICAgICBxdWFkICs9IG1haW5WaWV3LT5zY3JvbGxPZmZz
ZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEsIEhpZ2hsaWdodCog
aGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKIHsKLSAgICBOb2RlKiBub2RlID0gaGln
aGxpZ2h0RGF0YS0+bm9kZS5nZXQoKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKIApAQCAtMzk3LDcgKzM5Niw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJh
d05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBo
aWdoCiAgICAgICAgICAgICBjb250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdW
aWV3LCBoaWdobGlnaHQtPnF1YWRzW2ldKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKLSAgICAg
ICAgICAgIGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcigqY29udGV4dCwgaGlnaGxpZ2h0LT5x
dWFkcywgaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVu
ZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodENvbmZpZyk7CiAgICAg
fSBlbHNlIGlmIChyZW5kZXJlci0+aXNCb3goKSB8fCByZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUo
KSkgewogICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CiAgICAgICAgIExheW91dFJlY3Qg
cGFkZGluZ0JveDsKQEAgLTQ1MSw3ICs0NTAsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2Rl
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAog
ICAgICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChhYnNDb250ZW50UXVhZCk7CiAKICAgICAg
ICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KCpjb250ZXh0
LCBhYnNDb250ZW50UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdp
blF1YWQsIGhpZ2hsaWdodERhdGEpOworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgq
Y29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBh
YnNNYXJnaW5RdWFkLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9k
ZSB0aXRsZSBpZiBuZWNlc3NhcnkuCkBAIC00NTksMTYgKzQ1OCwxNiBAQCBzdGF0aWMgdm9pZCBn
ZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0
RGF0YSogaGlnaAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoY29udGV4dCAmJiBoaWdobGlnaHREYXRhLT5zaG93SW5mbykKKyAgICBp
ZiAoY29udGV4dCAmJiBoaWdobGlnaHRDb25maWcuc2hvd0luZm8pCiAgICAgICAgIGRyYXdFbGVt
ZW50VGl0bGUoKmNvbnRleHQsIG5vZGUsIHJlbmRlcmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJv
dW5kaW5nQm94KSwgcGl4ZWxTbmFwcGVkSW50UmVjdCh0aXRsZUFuY2hvckJveCksIHZpc2libGVS
ZWN0LCBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRP
ckRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwg
SGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSwgSGlnaGxpZ2h0ICpoaWdobGlnaHQpCitzdGF0
aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGFnZSogcGFnZSwgSW50UmVjdCogcmVjdCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGln
aHRDb25maWcsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQogewogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGhpZ2hsaWdodFJlY3QoKihoaWdobGlnaHREYXRh
LT5yZWN0KSk7CisgICAgRmxvYXRSZWN0IGhpZ2hsaWdodFJlY3QoKnJlY3QpOwogCiAgICAgaGln
aGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMu
YXBwZW5kKGhpZ2hsaWdodFJlY3QpOwpAQCAtNDgwLDcgKzQ3OSw3IEBAIHN0YXRpYyB2b2lkIGdl
dE9yRHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYWdlKiBwYWdl
LCBIaWdobGlnCiAgICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXZpc2libGVSZWN0Lngo
KSwgLXZpc2libGVSZWN0LnkoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3T3V0bGluZWRR
dWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0LCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdo
bGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoKmNv
bnRleHQsIGhpZ2hsaWdodFJlY3QsIGhpZ2hsaWdodENvbmZpZy5jb250ZW50LCBoaWdobGlnaHRD
b25maWcuY29udGVudE91dGxpbmUpOwogICAgIH0KIH0KIApAQCAtNDk1LDcgKzQ5NCw4IEBAIElu
c3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rvck92ZXJsYXkoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xp
ZW50KiBjbGllbnQpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF1c2VkSW5EZWJ1Z2dlcihjb250ZXh0KTsKLSAgICBk
cmF3SGlnaGxpZ2h0KGNvbnRleHQpOworICAgIGRyYXdOb2RlSGlnaGxpZ2h0KGNvbnRleHQpOwor
ICAgIGRyYXdSZWN0SGlnaGxpZ2h0KGNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJs
YXk6OmRyYXdPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTA2LDE5ICs1MDYsMTcgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3T3V0bGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHIKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQo
SGlnaGxpZ2h0KiBoaWdobGlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2hpZ2hsaWdodERhdGEp
CisgICAgaWYgKCFtX2hpZ2hsaWdodE5vZGUgJiYgIW1faGlnaGxpZ2h0UmVjdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IgPSBtX2hpZ2hsaWdodERhdGEt
PmNvbnRlbnQ7Ci0gICAgaGlnaGxpZ2h0LT5wYWRkaW5nQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEt
PnBhZGRpbmc7Ci0gICAgaGlnaGxpZ2h0LT5ib3JkZXJDb2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+
Ym9yZGVyOwotICAgIGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEtPm1h
cmdpbjsKICAgICBoaWdobGlnaHQtPnR5cGUgPSBIaWdobGlnaHRUeXBlUmVjdHM7Ci0KLSAgICBp
ZiAobV9oaWdobGlnaHREYXRhLT5ub2RlKQotICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0
KDAsIG1faGlnaGxpZ2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKLSAgICBlbHNlIGlmIChtX2hp
Z2hsaWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoMCwgbV9w
YWdlLCBtX2hpZ2hsaWdodERhdGEuZ2V0KCksIGhpZ2hsaWdodCk7CisgICAgaWYgKG1faGlnaGxp
Z2h0Tm9kZSkgeworICAgICAgICBoaWdobGlnaHQtPnNldENvbG9ycyhtX25vZGVIaWdobGlnaHRD
b25maWcpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KDAsIG1faGlnaGxpZ2h0Tm9k
ZS5nZXQoKSwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGhpZ2hsaWdodC0+c2V0Q29sb3JzKG1fcmVjdEhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoMCwgbV9wYWdlLCBtX2hpZ2hsaWdodFJlY3Qu
Z2V0KCksIG1fcmVjdEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICB9CiB9CiAKIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3Ry
aW5nKiBtZXNzYWdlKQpAQCAtNTI5LDU3ICs1MjcsNTQgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5
OjpzZXRQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCiAKIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdodCgpCiB7Ci0gICAgaWYgKG1faGlnaGxp
Z2h0RGF0YSkgewotICAgICAgICAvLyBGSVhNRTogQ2xlYXIgZW50aXJlIGhpZ2hsaWdodCBkYXRh
IGhlcmUsIHN0b3JlIGNvbmZpZyB1cG9uIHNldEluc3BlY3RNb2RlRW5hYmxlZAotICAgICAgICBt
X2hpZ2hsaWdodERhdGEtPnJlY3QuY2xlYXIoKTsKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5u
b2RlLmNsZWFyKCk7Ci0gICAgfQotICAgIHVwZGF0ZSgpOwotfQotCi12b2lkIEluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodE5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9oaWdobGlnaHRE
YXRhKQotICAgICAgICBtX2hpZ2hsaWdodERhdGEtPm5vZGUgPSBub2RlOworICAgIG1faGlnaGxp
Z2h0Tm9kZS5jbGVhcigpOworICAgIG1faGlnaGxpZ2h0UmVjdC5jbGVhcigpOwogICAgIHVwZGF0
ZSgpOwogfQogCi12b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldEhpZ2hsaWdodERhdGEoUGFzc093
blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhKQordm9pZCBJbnNwZWN0b3JPdmVybGF5
OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQogewotICAgIG1faGlnaGxpZ2h0RGF0YSA9IGhpZ2hsaWdodERhdGE7CisgICAg
bV9ub2RlSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOworICAgIG1faGlnaGxpZ2h0
Tm9kZSA9IG5vZGU7CiAgICAgdXBkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
Y2xlYXJIaWdobGlnaHREYXRhKCkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UmVj
dChQYXNzT3duUHRyPEludFJlY3Q+IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQogewotICAgIG1faGlnaGxpZ2h0RGF0YS5jbGVhcigpOworICAgIG1fcmVjdEhp
Z2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZzsKKyAgICBtX2hpZ2hsaWdodFJlY3QgPSBy
ZWN0OwogICAgIHVwZGF0ZSgpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGln
aHRlZE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2hpZ2hsaWdodERhdGEgPyBtX2hpZ2hs
aWdodERhdGEtPm5vZGUuZ2V0KCkgOiAwOworICAgIHJldHVybiBtX2hpZ2hsaWdodE5vZGUuZ2V0
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKIHsKLSAgICAvLyBGSVhN
RSg5MTkyNikgUmVmYWN0b3IgaGlnaGxpZ2h0Tm9kZSB0byBwYXNzIGhpZ2hsaWdodCBkYXRhIGFs
b25nIHdpdGggdGhlIGNhbGwuCi0gICAgaWYgKChtX2hpZ2hsaWdodERhdGEgJiYgKG1faGlnaGxp
Z2h0RGF0YS0+cmVjdCB8fCBtX2hpZ2hsaWdodERhdGEtPm5vZGUpKSB8fCAhbV9wYXVzZWRJbkRl
YnVnZ2VyTWVzc2FnZS5pc051bGwoKSkKKyAgICBpZiAobV9oaWdobGlnaHROb2RlIHx8IG1faGln
aGxpZ2h0UmVjdCB8fCAhbV9wYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZS5pc051bGwoKSkKICAgICAg
ICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQtPmhp
ZGVIaWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmICghbV9oaWdo
bGlnaHROb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBIaWdobGlnaHQgaGlnaGxpZ2h0Owor
ICAgIGdldE9yRHJhd05vZGVIaWdobGlnaHQoJmNvbnRleHQsIG1faGlnaGxpZ2h0Tm9kZS5nZXQo
KSwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKK30KKwordm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgaWYgKCFtX2hpZ2hsaWdodERhdGEgfHwgKCFtX2hpZ2hsaWdodERhdGEtPnJlY3QgJiYg
IW1faGlnaGxpZ2h0RGF0YS0+bm9kZSkpCisgICAgaWYgKCFtX2hpZ2hsaWdodFJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgaWYgKG1faGlnaGxp
Z2h0RGF0YS0+bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodCgmY29udGV4dCwg
bV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKLSAgICBlbHNlIGlmIChtX2hpZ2hs
aWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQs
IG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKKyAgICBnZXRPckRy
YXdSZWN0SGlnaGxpZ2h0KCZjb250ZXh0LCBtX3BhZ2UsIG1faGlnaGxpZ2h0UmVjdC5nZXQoKSwg
bV9yZWN0SGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JP
dmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCkBA
IC01OTMsNyArNTg4LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1
Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpOwogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5n
cygpOwotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBmcmFtZS0+dmlldygpLT52aXNpYmxlQ29u
dGVudFJlY3QoKTsKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgp
LCBmcmFtZS0+dmlldygpLT52aXNpYmxlU2l6ZSgpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5m
aWxsUmVjdCh2aXNpYmxlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9k
ZUhpZ2hsaWdodGVyLmgKaW5kZXggYTIwMGNjYzliM2Q1NDZiNmE0MmIyNzA4YjkyZTE4MzgwYWYw
ZjcwMS4uNWM3ZDAwYzE1NDI0OTYwNzgwZTE2MjkzZDhiMjMwZWZjZTZiYTVlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaApAQCAtNDgsMTcgKzQ4
LDEzIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIAotc3RydWN0
IEhpZ2hsaWdodERhdGEgeworc3RydWN0IEhpZ2hsaWdodENvbmZpZyB7CiAgICAgQ29sb3IgY29u
dGVudDsKICAgICBDb2xvciBjb250ZW50T3V0bGluZTsKICAgICBDb2xvciBwYWRkaW5nOwogICAg
IENvbG9yIGJvcmRlcjsKICAgICBDb2xvciBtYXJnaW47CiAgICAgYm9vbCBzaG93SW5mbzsKLQot
ICAgIC8vIEVpdGhlciBvZiB0aGVzZSBtdXN0IGJlIDAuCi0gICAgUmVmUHRyPE5vZGU+IG5vZGU7
Ci0gICAgT3duUHRyPEludFJlY3Q+IHJlY3Q7CiB9OwogCiBlbnVtIEhpZ2hsaWdodFR5cGUgewpA
QCAtNjcsNiArNjMsMTQgQEAgZW51bSBIaWdobGlnaHRUeXBlIHsKIH07CiAKIHN0cnVjdCBIaWdo
bGlnaHQgeworICAgIHZvaWQgc2V0Q29sb3JzKGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQorICAgIHsKKyAgICAgICAgY29udGVudENvbG9yID0gaGlnaGxpZ2h0Q29uZmln
LmNvbnRlbnQ7CisgICAgICAgIHBhZGRpbmdDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5n
OworICAgICAgICBib3JkZXJDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXI7CisgICAgICAg
IG1hcmdpbkNvbG9yID0gaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbjsKKyAgICB9CisKICAgICBDb2xv
ciBjb250ZW50Q29sb3I7CiAgICAgQ29sb3IgcGFkZGluZ0NvbG9yOwogICAgIENvbG9yIGJvcmRl
ckNvbG9yOwpAQCAtOTIsOSArOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZWRJbkRl
YnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcqKTsKIAogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgp
OwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShOb2RlKik7Ci0gICAgdm9pZCBzZXRIaWdobGlnaHRE
YXRhKFBhc3NPd25QdHI8SGlnaGxpZ2h0RGF0YT4pOwotICAgIHZvaWQgY2xlYXJIaWdobGlnaHRE
YXRhKCk7CisgICAgdm9pZCBoaWdobGlnaHROb2RlKE5vZGUqLCBjb25zdCBIaWdobGlnaHRDb25m
aWcmKTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoUGFzc093blB0cjxJbnRSZWN0PiwgY29uc3Qg
SGlnaGxpZ2h0Q29uZmlnJik7CiAKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsK
IApAQCAtMTAyLDEzICsxMDUsMTcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JPdmVybGF5KFBh
Z2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlKCk7Ci0gICAgdm9pZCBk
cmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgZHJhd05vZGVIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyKEdyYXBoaWNzQ29udGV4
dCYpOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7
CiAgICAgU3RyaW5nIG1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2U7Ci0gICAgT3duUHRyPEhpZ2hs
aWdodERhdGE+IG1faGlnaGxpZ2h0RGF0YTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRO
b2RlOworICAgIEhpZ2hsaWdodENvbmZpZyBtX25vZGVIaWdobGlnaHRDb25maWc7CisgICAgT3du
UHRyPEludFJlY3Q+IG1faGlnaGxpZ2h0UmVjdDsKKyAgICBIaWdobGlnaHRDb25maWcgbV9yZWN0
SGlnaGxpZ2h0Q29uZmlnOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOTFhMzgzMTBm
OGE4Y2Y3NGVkYmQ4MDE2NDgzNzNlMTJiZWYwMTY4OS4uMjJmYzJiMTMxOWRhNWQzYzlmMjVlYTRk
NTNjNTk2ODEyZWE1Mzg4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC0yMzIsOSArMjMyLDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6Y2xlYXJGcm9udGVuZCgpCiAKICAgICBtX2hpc3RvcnkuY2xlYXIoKTsKICAgICBtX2RvbUVk
aXRvci5jbGVhcigpOwotICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZmFsc2UsIDApOwogCiAgICAg
RXJyb3JTdHJpbmcgZXJyb3I7CisgICAgc2V0U2VhcmNoaW5nRm9yTm9kZSgmZXJyb3IsIGZhbHNl
LCAwKTsKICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7CiAKICAgICBtX2Zyb250ZW5kID0gMDsK
QEAgLTk1Myw3ICs5NTMsOCBAQCBib29sIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVNb3VzZVBy
ZXNzKCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChOb2RlKiBub2RlKQogewot
ICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZmFsc2UsIDApOworICAgIEVycm9yU3RyaW5nIGVycm9y
OworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CiAKICAgICBpZiAo
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUo
KSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOwpAQCAtOTk0LDY2ICs5OTUsNjggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKICAgICBO
b2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmIG5vZGUt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOwotICAgIGlmIChub2RlKQotICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5v
ZGUobm9kZSk7CisgICAgaWYgKG5vZGUgJiYgbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykK
KyAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGln
aGxpZ2h0Q29uZmlnKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5n
Rm9yTm9kZShib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QpCiB7CiAgICAgaWYgKG1fc2VhcmNoaW5nRm9yTm9kZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9zZWFyY2hpbmdGb3JOb2RlID0gZW5hYmxlZDsKLSAgICBp
ZiAoZW5hYmxlZCkKLSAgICAgICAgc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICBpZiAoIWhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIk51bGwgcG9pbnRlciBm
b3IgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0IGluIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFy
Y2hpbmdGb3JOb2RlIjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBt
X2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rv
ck9iamVjdChoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIH0KICAgICBlbHNlIHsKICAg
ICAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgICAgIGhpZGVIaWdobGlnaHQoJmVycm9yKTsK
LSAgICAgICAgbV9vdmVybGF5LT5jbGVhckhpZ2hsaWdodERhdGEoKTsKICAgICB9CiB9CiAKLWJv
b2wgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEhpZ2hsaWdodERhdGFGcm9tQ29uZmlnKEluc3BlY3Rv
ck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKQorUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3Bl
Y3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewotICAgIGlmICghaGlnaGxp
Z2h0Q29uZmlnKSB7Ci0gICAgICAgIG1fb3ZlcmxheS0+Y2xlYXJIaWdobGlnaHREYXRhKCk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBPd25QdHI8SGlnaGxpZ2h0RGF0YT4g
aGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOworICAgIE93blB0
cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGln
aHRDb25maWcoKSk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxz
ZSAoZG8gbm90IHNob3cgYSB0b29sdGlwKS4KLSAgICBoaWdobGlnaHRDb25maWctPmdldEJvb2xl
YW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKLSAgICBoaWdobGlnaHREYXRhLT5zaG93SW5mbyA9
IHNob3dJbmZvOwotICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9y
KCJjb250ZW50Q29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudE91dGxpbmVDb2xvciIsIGhp
Z2hsaWdodENvbmZpZyk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+cGFkZGluZyA9IHBhcnNlQ29uZmln
Q29sb3IoInBhZGRpbmdDb2xvciIsIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgaGlnaGxpZ2h0RGF0
YS0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcigiYm9yZGVyQ29sb3IiLCBoaWdobGlnaHRDb25m
aWcpOwotICAgIGhpZ2hsaWdodERhdGEtPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdp
bkNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBtX292ZXJsYXktPnNldEhpZ2hsaWdodERh
dGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOwotICAgIHJldHVybiB0cnVlOworICAgIGhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCAmc2hvd0luZm8pOwor
ICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKKyAgICBoaWdobGlnaHRD
b25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKCJjb250ZW50Q29sb3IiLCBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUg
PSBwYXJzZUNvbmZpZ0NvbG9yKCJjb250ZW50T3V0bGluZUNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0Nv
bG9yKCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hs
aWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcigiYm9yZGVyQ29sb3IiLCBoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+bWFyZ2luID0gcGFy
c2VDb25maWdDb2xvcigibWFyZ2luQ29sb3IiLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwor
ICAgIHJldHVybiBoaWdobGlnaHRDb25maWcucmVsZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJs
ZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBo
aWdobGlnaHRDb25maWcpCiB7Ci0gICAgc2V0U2VhcmNoaW5nRm9yTm9kZShlbmFibGVkLCBoaWdo
bGlnaHRDb25maWcgPyBoaWdobGlnaHRDb25maWctPmdldCgpIDogMCk7CisgICAgc2V0U2VhcmNo
aW5nRm9yTm9kZShlcnJvclN0cmluZywgZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxp
Z2h0Q29uZmlnLT5nZXQoKSA6IDApOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvcikKIHsKLSAgICBPd25QdHI8SGlnaGxpZ2h0RGF0
YT4gaGlnaGxpZ2h0RGF0YSA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHREYXRhKCkpOwotICAgIGhp
Z2hsaWdodERhdGEtPnJlY3QgPSBhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVp
Z2h0KSk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwot
ICAgIGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29s
b3IpOwotICAgIG1fb3ZlcmxheS0+c2V0SGlnaGxpZ2h0RGF0YShoaWdobGlnaHREYXRhLnJlbGVh
c2UoKSk7CisgICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRv
cHRQdHIobmV3IEhpZ2hsaWdodENvbmZpZygpKTsKKyAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKKyAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRs
aW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0
UmVjdChhZG9wdFB0cihuZXcgSW50UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSksICpoaWdobGln
aHRDb25maWcpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKAot
ICAgIEVycm9yU3RyaW5nKiwKKyAgICBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsCiAgICAgaW50
IG5vZGVJZCwKLSAgICBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29u
ZmlnKQorICAgIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRJbnNwZWN0
b3JPYmplY3QpCiB7Ci0gICAgaWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAg
ICAgICAgaWYgKHNldEhpZ2hsaWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZy5nZXQo
KSkpCi0gICAgICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUobm9kZSk7CisgICAgaWYg
KE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkgeworICAgICAgICBpZiAoIWhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIk51bGwgcG9p
bnRlciBmb3IgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0IGluIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHROb2RlIjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBP
d25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdG
cm9tSW5zcGVjdG9yT2JqZWN0KGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC5nZXQoKSk7CisgICAg
ICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKApAQCAtMTA2
NCwxMiArMTA2NywxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgK
IHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsK
ICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIE93blB0
cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodERh
dGEoKSk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPm5vZGUgPSBmcmFtZS0+b3duZXJFbGVtZW50
KCk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNo
b3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCA9
IHBhcnNlQ29sb3IoY29sb3IpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICAgICAgbV9vdmVybGF5LT5zZXRIaWdo
bGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgT3duUHRyPEhpZ2hs
aWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbmZp
ZygpKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8vIEFsd2F5
cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCisgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29u
dGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOworICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgICAgICBtX292ZXJsYXkt
PmhpZ2hsaWdodE5vZGUoZnJhbWUtPm93bmVyRWxlbWVudCgpLCAqaGlnaGxpZ2h0Q29uZmlnKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmgKaW5kZXggYWM0NzhjY2UwNTUwMWEzZDU0NGVlZmMzMzQwMmUzMjZmODYzMWFhOS4uNzMzOWM2
M2RjODAyY2QxMWZiNmJkNTYyZGNjNzBmMjEzNzBmNjNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYg
SW5zcGVjdG9yRE9NQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01BZ2VudF9oCiAKKyNpbmNs
dWRlICJET01Ob2RlSGlnaGxpZ2h0ZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2lu
Y2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmgiCkBAIC02OSw2ICs3MCw4IEBAIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s7
CiBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKK3N0cnVjdCBIaWdobGln
aHRDb25maWc7CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAjaWYgRU5BQkxFKElO
U1BFQ1RPUikKQEAgLTE5OCw4ICsyMDEsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEluc3Bl
Y3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQYWdlQWdlbnQqLCBJ
bnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3BlY3Rvck92ZXJsYXkq
KTsKIAotICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQsIEluc3BlY3Rv
ck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBib29sIHNldEhpZ2hsaWdodERhdGFGcm9t
Q29uZmlnKEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICB2b2lkIHNldFNl
YXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVj
dCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGln
aGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjQ4LDYg
KzI1MSw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRh
c2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRv
Rm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CisgICAgT3duUHRyPEhpZ2hsaWdo
dENvbmZpZz4gbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZzsKICAgICBPd25QdHI8SW5zcGVj
dG9ySGlzdG9yeT4gbV9oaXN0b3J5OwogICAgIE93blB0cjxET01FZGl0b3I+IG1fZG9tRWRpdG9y
OwogICAgIGJvb2wgbV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlmaWVkRXZlbnQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156627</attachid>
            <date>2012-08-06 02:00:13 -0700</date>
            <delta_ts>2012-08-06 03:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120806125949.patch</filename>
            <type>text/plain</type>
            <size>23718</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzQ1ZDg5NmUwNWUyYzYz
ODBhZjI2NGYzMDFkNmM3ZTVlMGVjMDQ1Mi4uMDA5ZTE5YmNhYzFkYzcxZDBiNWMxMTE3ZjFhZGRl
MzlkZDk4YTAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTAzICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UmVjdEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAoSGlnaGxpZ2h0Q29uZmlnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhpZ2hsaWdodDo6c2V0Q29sb3JzKToKKyAgICAgICAgKEhpZ2hsaWdodCk6
CisgICAgICAgIChJbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3Bl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFy
Y2hpbmdGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRE9N
QWdlbnQpOgorCiAyMDEyLTA4LTAzICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIEluaXRpYWxpemUgdGhlIEV2ZW50IE5hbWVzJyBzdHJpbmcgZnJvbSBy
ZWFkIG9ubHkgbWVtb3J5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGln
aGxpZ2h0ZXIuY3BwCmluZGV4IDEwYzc4NWIyYWU2MDI2YzhkYTZmZjQyOGY1OTQyYWI4ZTFhZWEx
MWMuLjgxODFkZGI5OTExMDM5NWU2YmQwNjM2NzYzM2E4MjRiZWI2ZTk3NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCkBAIC0xMTMsMzUg
KzExMywzNSBAQCB2b2lkIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgYwogICAgIGNvbnRleHQucmVzdG9yZSgp
OwogfQogCi12b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQmIHBhZGRpbmdR
dWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVhZCYgbWFyZ2lu
UXVhZCwgSGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSkKK3ZvaWQgZHJhd0hpZ2hsaWdodEZv
ckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1
YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVy
UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkLCBjb25zdCBIaWdobGlnaHRDb25maWcm
IGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBib29sIGhhc01hcmdpbiA9IGhpZ2hsaWdodERhdGEt
Pm1hcmdpbiAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgYm9vbCBoYXNCb3JkZXIgPSBoaWdo
bGlnaHREYXRhLT5ib3JkZXIgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIGJvb2wgaGFzUGFk
ZGluZyA9IGhpZ2hsaWdodERhdGEtPnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwotICAg
IGJvb2wgaGFzQ29udGVudCA9IGhpZ2hsaWdodERhdGEtPmNvbnRlbnQgIT0gQ29sb3I6OnRyYW5z
cGFyZW50IHx8IGhpZ2hsaWdodERhdGEtPmNvbnRlbnRPdXRsaW5lICE9IENvbG9yOjp0cmFuc3Bh
cmVudDsKKyAgICBib29sIGhhc01hcmdpbiA9IGhpZ2hsaWdodENvbmZpZy5tYXJnaW4gIT0gQ29s
b3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0Q29uZmlnLmJv
cmRlciAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNQYWRkaW5nID0gaGlnaGxp
Z2h0Q29uZmlnLnBhZGRpbmcgIT0gQ29sb3I6OnRyYW5zcGFyZW50OworICAgIGJvb2wgaGFzQ29u
dGVudCA9IGhpZ2hsaWdodENvbmZpZy5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBo
aWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUgIT0gQ29sb3I6OnRyYW5zcGFyZW50OwogCiAg
ICAgRmxvYXRRdWFkIGNsaXBRdWFkOwogICAgIENvbG9yIGNsaXBDb2xvcjsKICAgICBpZiAoaGFz
TWFyZ2luICYmICghaGFzQm9yZGVyIHx8IG1hcmdpblF1YWQgIT0gYm9yZGVyUXVhZCkpIHsKLSAg
ICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIG1hcmdpblF1YWQsIGJvcmRl
clF1YWQsIGhpZ2hsaWdodERhdGEtPm1hcmdpbik7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRX
aXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHRDb25maWcu
bWFyZ2luKTsKICAgICAgICAgY2xpcFF1YWQgPSBib3JkZXJRdWFkOwogICAgIH0KICAgICBpZiAo
aGFzQm9yZGVyICYmICghaGFzUGFkZGluZyB8fCBib3JkZXJRdWFkICE9IHBhZGRpbmdRdWFkKSkg
ewotICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgYm9yZGVyUXVhZCwg
cGFkZGluZ1F1YWQsIGhpZ2hsaWdodERhdGEtPmJvcmRlcik7CisgICAgICAgIGRyYXdPdXRsaW5l
ZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBib3JkZXJRdWFkLCBwYWRkaW5nUXVhZCwgaGlnaGxpZ2h0
Q29uZmlnLmJvcmRlcik7CiAgICAgICAgIGNsaXBRdWFkID0gcGFkZGluZ1F1YWQ7CiAgICAgfQog
ICAgIGlmIChoYXNQYWRkaW5nICYmICghaGFzQ29udGVudCB8fCBwYWRkaW5nUXVhZCAhPSBjb250
ZW50UXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIHBh
ZGRpbmdRdWFkLCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0RGF0YS0+cGFkZGluZyk7CisgICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQsIGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nKTsKICAgICAgICAgY2xpcFF1YWQgPSBjb250ZW50
UXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0NvbnRlbnQpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hsaWdodERhdGEtPmNvbnRlbnQsIGhpZ2hsaWdo
dERhdGEtPmNvbnRlbnRPdXRsaW5lKTsKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0
LCBjb250ZW50UXVhZCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIGhpZ2hsaWdodENvbmZpZy5j
b250ZW50T3V0bGluZSk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPEZsb2F0UXVhZD4mIGFic29sdXRl
UXVhZHMsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRG
b3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFZlY3RvcjxGbG9h
dFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENv
bmZpZykKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFic29sdXRlUXVhZHMuc2l6ZSgp
OyArK2kpCi0gICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgYWJzb2x1dGVRdWFkc1tp
XSwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKKyAgICAgICAg
ZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBhYnNvbHV0ZVF1YWRzW2ldLCBoaWdobGlnaHRDb25m
aWcuY29udGVudCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAogaW50IGRyYXdTdWJzdHJpbmco
Y29uc3QgVGV4dFJ1biYgZ2xvYmFsVGV4dFJ1biwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwgY29u
c3QgQ29sb3ImIHRleHRDb2xvciwgY29uc3QgRm9udCYgZm9udCwgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiB0aXRsZVJlY3QpCkBAIC0zNjMsOSArMzYzLDggQEAg
c3RhdGljIHZvaWQgY29udGVudHNRdWFkVG9QYWdlKGNvbnN0IEZyYW1lVmlldyogbWFpblZpZXcs
IGNvbnN0IEZyYW1lVmlldyogdmlldywKICAgICBxdWFkICs9IG1haW5WaWV3LT5zY3JvbGxPZmZz
ZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2hsaWdodERhdGEsIEhpZ2hsaWdodCog
aGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKIHsKLSAgICBOb2RlKiBub2RlID0gaGln
aGxpZ2h0RGF0YS0+bm9kZS5nZXQoKTsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9k
ZS0+cmVuZGVyZXIoKTsKICAgICBGcmFtZSogY29udGFpbmluZ0ZyYW1lID0gbm9kZS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKIApAQCAtMzk3LDcgKzM5Niw3IEBAIHN0YXRpYyB2b2lkIGdldE9yRHJh
d05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdobGlnaHREYXRhKiBo
aWdoCiAgICAgICAgICAgICBjb250ZW50c1F1YWRUb1BhZ2UobWFpblZpZXcsIGNvbnRhaW5pbmdW
aWV3LCBoaWdobGlnaHQtPnF1YWRzW2ldKTsKIAogICAgICAgICBpZiAoY29udGV4dCkKLSAgICAg
ICAgICAgIGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcigqY29udGV4dCwgaGlnaGxpZ2h0LT5x
dWFkcywgaGlnaGxpZ2h0RGF0YSk7CisgICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVu
ZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodENvbmZpZyk7CiAgICAg
fSBlbHNlIGlmIChyZW5kZXJlci0+aXNCb3goKSB8fCByZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUo
KSkgewogICAgICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3g7CiAgICAgICAgIExheW91dFJlY3Qg
cGFkZGluZ0JveDsKQEAgLTQ1MSw3ICs0NTAsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2Rl
SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAog
ICAgICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChhYnNDb250ZW50UXVhZCk7CiAKICAgICAg
ICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KCpjb250ZXh0
LCBhYnNDb250ZW50UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdp
blF1YWQsIGhpZ2hsaWdodERhdGEpOworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgq
Y29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBh
YnNNYXJnaW5RdWFkLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0KIAogICAgIC8vIERyYXcgbm9k
ZSB0aXRsZSBpZiBuZWNlc3NhcnkuCkBAIC00NTksMTYgKzQ1OCwxNiBAQCBzdGF0aWMgdm9pZCBn
ZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0
RGF0YSogaGlnaAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoY29udGV4dCAmJiBoaWdobGlnaHREYXRhLT5zaG93SW5mbykKKyAgICBp
ZiAoY29udGV4dCAmJiBoaWdobGlnaHRDb25maWcuc2hvd0luZm8pCiAgICAgICAgIGRyYXdFbGVt
ZW50VGl0bGUoKmNvbnRleHQsIG5vZGUsIHJlbmRlcmVyLCBwaXhlbFNuYXBwZWRJbnRSZWN0KGJv
dW5kaW5nQm94KSwgcGl4ZWxTbmFwcGVkSW50UmVjdCh0aXRsZUFuY2hvckJveCksIHZpc2libGVS
ZWN0LCBjb250YWluaW5nRnJhbWUtPnNldHRpbmdzKCkpOwogfQogCi1zdGF0aWMgdm9pZCBnZXRP
ckRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwg
SGlnaGxpZ2h0RGF0YSogaGlnaGxpZ2h0RGF0YSwgSGlnaGxpZ2h0ICpoaWdobGlnaHQpCitzdGF0
aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
UGFnZSogcGFnZSwgSW50UmVjdCogcmVjdCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGln
aHRDb25maWcsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQogewogICAgIGlmICghcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRmxvYXRSZWN0IGhpZ2hsaWdodFJlY3QoKihoaWdobGlnaHREYXRh
LT5yZWN0KSk7CisgICAgRmxvYXRSZWN0IGhpZ2hsaWdodFJlY3QoKnJlY3QpOwogCiAgICAgaGln
aGxpZ2h0LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwogICAgIGhpZ2hsaWdodC0+cXVhZHMu
YXBwZW5kKGhpZ2hsaWdodFJlY3QpOwpAQCAtNDgwLDcgKzQ3OSw3IEBAIHN0YXRpYyB2b2lkIGdl
dE9yRHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBQYWdlKiBwYWdl
LCBIaWdobGlnCiAgICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoLXZpc2libGVSZWN0Lngo
KSwgLXZpc2libGVSZWN0LnkoKSk7CiAgICAgICAgIH0KIAotICAgICAgICBkcmF3T3V0bGluZWRR
dWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0LCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdo
bGlnaHREYXRhLT5jb250ZW50T3V0bGluZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoKmNv
bnRleHQsIGhpZ2hsaWdodFJlY3QsIGhpZ2hsaWdodENvbmZpZy5jb250ZW50LCBoaWdobGlnaHRD
b25maWcuY29udGVudE91dGxpbmUpOwogICAgIH0KIH0KIApAQCAtNDk1LDcgKzQ5NCw4IEBAIElu
c3BlY3Rvck92ZXJsYXk6Okluc3BlY3Rvck92ZXJsYXkoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xp
ZW50KiBjbGllbnQpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnBhaW50KEdyYXBoaWNzQ29udGV4
dCYgY29udGV4dCkKIHsKICAgICBkcmF3UGF1c2VkSW5EZWJ1Z2dlcihjb250ZXh0KTsKLSAgICBk
cmF3SGlnaGxpZ2h0KGNvbnRleHQpOworICAgIGRyYXdOb2RlSGlnaGxpZ2h0KGNvbnRleHQpOwor
ICAgIGRyYXdSZWN0SGlnaGxpZ2h0KGNvbnRleHQpOwogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJs
YXk6OmRyYXdPdXRsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNTA2LDE5ICs1MDYsMTcgQEAgdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpkcmF3T3V0bGluZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IExheW91dFJlY3QmIHIKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpnZXRIaWdobGlnaHQo
SGlnaGxpZ2h0KiBoaWdobGlnaHQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2hpZ2hsaWdodERhdGEp
CisgICAgaWYgKCFtX2hpZ2hsaWdodE5vZGUgJiYgIW1faGlnaGxpZ2h0UmVjdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaGlnaGxpZ2h0LT5jb250ZW50Q29sb3IgPSBtX2hpZ2hsaWdodERhdGEt
PmNvbnRlbnQ7Ci0gICAgaGlnaGxpZ2h0LT5wYWRkaW5nQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEt
PnBhZGRpbmc7Ci0gICAgaGlnaGxpZ2h0LT5ib3JkZXJDb2xvciA9IG1faGlnaGxpZ2h0RGF0YS0+
Ym9yZGVyOwotICAgIGhpZ2hsaWdodC0+bWFyZ2luQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEtPm1h
cmdpbjsKICAgICBoaWdobGlnaHQtPnR5cGUgPSBIaWdobGlnaHRUeXBlUmVjdHM7Ci0KLSAgICBp
ZiAobV9oaWdobGlnaHREYXRhLT5ub2RlKQotICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0
KDAsIG1faGlnaGxpZ2h0RGF0YS5nZXQoKSwgaGlnaGxpZ2h0KTsKLSAgICBlbHNlIGlmIChtX2hp
Z2hsaWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoMCwgbV9w
YWdlLCBtX2hpZ2hsaWdodERhdGEuZ2V0KCksIGhpZ2hsaWdodCk7CisgICAgaWYgKG1faGlnaGxp
Z2h0Tm9kZSkgeworICAgICAgICBoaWdobGlnaHQtPnNldENvbG9ycyhtX25vZGVIaWdobGlnaHRD
b25maWcpOworICAgICAgICBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KDAsIG1faGlnaGxpZ2h0Tm9k
ZS5nZXQoKSwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCBoaWdobGlnaHQpOworICAgIH0gZWxzZSB7
CisgICAgICAgIGhpZ2hsaWdodC0+c2V0Q29sb3JzKG1fcmVjdEhpZ2hsaWdodENvbmZpZyk7Cisg
ICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoMCwgbV9wYWdlLCBtX2hpZ2hsaWdodFJlY3Qu
Z2V0KCksIG1fcmVjdEhpZ2hsaWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICB9CiB9CiAKIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3Ry
aW5nKiBtZXNzYWdlKQpAQCAtNTI5LDU3ICs1MjcsNTQgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5
OjpzZXRQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCiAKIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdodCgpCiB7Ci0gICAgaWYgKG1faGlnaGxp
Z2h0RGF0YSkgewotICAgICAgICAvLyBGSVhNRTogQ2xlYXIgZW50aXJlIGhpZ2hsaWdodCBkYXRh
IGhlcmUsIHN0b3JlIGNvbmZpZyB1cG9uIHNldEluc3BlY3RNb2RlRW5hYmxlZAotICAgICAgICBt
X2hpZ2hsaWdodERhdGEtPnJlY3QuY2xlYXIoKTsKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5u
b2RlLmNsZWFyKCk7Ci0gICAgfQotICAgIHVwZGF0ZSgpOwotfQotCi12b2lkIEluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodE5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAobV9oaWdobGlnaHRE
YXRhKQotICAgICAgICBtX2hpZ2hsaWdodERhdGEtPm5vZGUgPSBub2RlOworICAgIG1faGlnaGxp
Z2h0Tm9kZS5jbGVhcigpOworICAgIG1faGlnaGxpZ2h0UmVjdC5jbGVhcigpOwogICAgIHVwZGF0
ZSgpOwogfQogCi12b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldEhpZ2hsaWdodERhdGEoUGFzc093
blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhKQordm9pZCBJbnNwZWN0b3JPdmVybGF5
OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQogewotICAgIG1faGlnaGxpZ2h0RGF0YSA9IGhpZ2hsaWdodERhdGE7CisgICAg
bV9ub2RlSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOworICAgIG1faGlnaGxpZ2h0
Tm9kZSA9IG5vZGU7CiAgICAgdXBkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6
Y2xlYXJIaWdobGlnaHREYXRhKCkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UmVj
dChQYXNzT3duUHRyPEludFJlY3Q+IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQogewotICAgIG1faGlnaGxpZ2h0RGF0YS5jbGVhcigpOworICAgIG1fcmVjdEhp
Z2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZzsKKyAgICBtX2hpZ2hsaWdodFJlY3QgPSBy
ZWN0OwogICAgIHVwZGF0ZSgpOwogfQogCiBOb2RlKiBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGln
aHRlZE5vZGUoKSBjb25zdAogewotICAgIHJldHVybiBtX2hpZ2hsaWdodERhdGEgPyBtX2hpZ2hs
aWdodERhdGEtPm5vZGUuZ2V0KCkgOiAwOworICAgIHJldHVybiBtX2hpZ2hsaWdodE5vZGUuZ2V0
KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6dXBkYXRlKCkKIHsKLSAgICAvLyBGSVhN
RSg5MTkyNikgUmVmYWN0b3IgaGlnaGxpZ2h0Tm9kZSB0byBwYXNzIGhpZ2hsaWdodCBkYXRhIGFs
b25nIHdpdGggdGhlIGNhbGwuCi0gICAgaWYgKChtX2hpZ2hsaWdodERhdGEgJiYgKG1faGlnaGxp
Z2h0RGF0YS0+cmVjdCB8fCBtX2hpZ2hsaWdodERhdGEtPm5vZGUpKSB8fCAhbV9wYXVzZWRJbkRl
YnVnZ2VyTWVzc2FnZS5pc051bGwoKSkKKyAgICBpZiAobV9oaWdobGlnaHROb2RlIHx8IG1faGln
aGxpZ2h0UmVjdCB8fCAhbV9wYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZS5pc051bGwoKSkKICAgICAg
ICAgbV9jbGllbnQtPmhpZ2hsaWdodCgpOwogICAgIGVsc2UKICAgICAgICAgbV9jbGllbnQtPmhp
ZGVIaWdobGlnaHQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQoreworICAgIGlmICghbV9oaWdo
bGlnaHROb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBIaWdobGlnaHQgaGlnaGxpZ2h0Owor
ICAgIGdldE9yRHJhd05vZGVIaWdobGlnaHQoJmNvbnRleHQsIG1faGlnaGxpZ2h0Tm9kZS5nZXQo
KSwgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKK30KKwordm9pZCBJbnNwZWN0
b3JPdmVybGF5OjpkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7
Ci0gICAgaWYgKCFtX2hpZ2hsaWdodERhdGEgfHwgKCFtX2hpZ2hsaWdodERhdGEtPnJlY3QgJiYg
IW1faGlnaGxpZ2h0RGF0YS0+bm9kZSkpCisgICAgaWYgKCFtX2hpZ2hsaWdodFJlY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEhpZ2hsaWdodCBoaWdobGlnaHQ7Ci0gICAgaWYgKG1faGlnaGxp
Z2h0RGF0YS0+bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodCgmY29udGV4dCwg
bV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKLSAgICBlbHNlIGlmIChtX2hpZ2hs
aWdodERhdGEtPnJlY3QpCi0gICAgICAgIGdldE9yRHJhd1JlY3RIaWdobGlnaHQoJmNvbnRleHQs
IG1fcGFnZSwgbV9oaWdobGlnaHREYXRhLmdldCgpLCAmaGlnaGxpZ2h0KTsKKyAgICBnZXRPckRy
YXdSZWN0SGlnaGxpZ2h0KCZjb250ZXh0LCBtX3BhZ2UsIG1faGlnaGxpZ2h0UmVjdC5nZXQoKSwg
bV9yZWN0SGlnaGxpZ2h0Q29uZmlnLCAmaGlnaGxpZ2h0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JP
dmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCkBA
IC01OTMsNyArNTg4LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1
Z2dlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAKICAgICBGcmFtZSogZnJhbWUgPSBtX3Bh
Z2UtPm1haW5GcmFtZSgpOwogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5n
cygpOwotICAgIEludFJlY3QgdmlzaWJsZVJlY3QgPSBmcmFtZS0+dmlldygpLT52aXNpYmxlQ29u
dGVudFJlY3QoKTsKKyAgICBJbnRSZWN0IHZpc2libGVSZWN0ID0gSW50UmVjdChJbnRQb2ludCgp
LCBmcmFtZS0+dmlldygpLT52aXNpYmxlU2l6ZSgpKTsKIAogICAgIGNvbnRleHQuc2V0RmlsbENv
bG9yKGJhY2tncm91bmRDb2xvciwgQ29sb3JTcGFjZURldmljZVJHQik7CiAgICAgY29udGV4dC5m
aWxsUmVjdCh2aXNpYmxlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9k
ZUhpZ2hsaWdodGVyLmgKaW5kZXggYTIwMGNjYzliM2Q1NDZiNmE0MmIyNzA4YjkyZTE4MzgwYWYw
ZjcwMS4uNWM3ZDAwYzE1NDI0OTYwNzgwZTE2MjkzZDhiMjMwZWZjZTZiYTVlMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaApAQCAtNDgsMTcgKzQ4
LDEzIEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIAotc3RydWN0
IEhpZ2hsaWdodERhdGEgeworc3RydWN0IEhpZ2hsaWdodENvbmZpZyB7CiAgICAgQ29sb3IgY29u
dGVudDsKICAgICBDb2xvciBjb250ZW50T3V0bGluZTsKICAgICBDb2xvciBwYWRkaW5nOwogICAg
IENvbG9yIGJvcmRlcjsKICAgICBDb2xvciBtYXJnaW47CiAgICAgYm9vbCBzaG93SW5mbzsKLQot
ICAgIC8vIEVpdGhlciBvZiB0aGVzZSBtdXN0IGJlIDAuCi0gICAgUmVmUHRyPE5vZGU+IG5vZGU7
Ci0gICAgT3duUHRyPEludFJlY3Q+IHJlY3Q7CiB9OwogCiBlbnVtIEhpZ2hsaWdodFR5cGUgewpA
QCAtNjcsNiArNjMsMTQgQEAgZW51bSBIaWdobGlnaHRUeXBlIHsKIH07CiAKIHN0cnVjdCBIaWdo
bGlnaHQgeworICAgIHZvaWQgc2V0Q29sb3JzKGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2h0Q29uZmlnKQorICAgIHsKKyAgICAgICAgY29udGVudENvbG9yID0gaGlnaGxpZ2h0Q29uZmln
LmNvbnRlbnQ7CisgICAgICAgIHBhZGRpbmdDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5n
OworICAgICAgICBib3JkZXJDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXI7CisgICAgICAg
IG1hcmdpbkNvbG9yID0gaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbjsKKyAgICB9CisKICAgICBDb2xv
ciBjb250ZW50Q29sb3I7CiAgICAgQ29sb3IgcGFkZGluZ0NvbG9yOwogICAgIENvbG9yIGJvcmRl
ckNvbG9yOwpAQCAtOTIsOSArOTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXVzZWRJbkRl
YnVnZ2VyTWVzc2FnZShjb25zdCBTdHJpbmcqKTsKIAogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgp
OwotICAgIHZvaWQgaGlnaGxpZ2h0Tm9kZShOb2RlKik7Ci0gICAgdm9pZCBzZXRIaWdobGlnaHRE
YXRhKFBhc3NPd25QdHI8SGlnaGxpZ2h0RGF0YT4pOwotICAgIHZvaWQgY2xlYXJIaWdobGlnaHRE
YXRhKCk7CisgICAgdm9pZCBoaWdobGlnaHROb2RlKE5vZGUqLCBjb25zdCBIaWdobGlnaHRDb25m
aWcmKTsKKyAgICB2b2lkIGhpZ2hsaWdodFJlY3QoUGFzc093blB0cjxJbnRSZWN0PiwgY29uc3Qg
SGlnaGxpZ2h0Q29uZmlnJik7CiAKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsK
IApAQCAtMTAyLDEzICsxMDUsMTcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JPdmVybGF5KFBh
Z2UqLCBJbnNwZWN0b3JDbGllbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlKCk7Ci0gICAgdm9pZCBk
cmF3SGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYpOworICAgIHZvaWQgZHJhd05vZGVIaWdobGln
aHQoR3JhcGhpY3NDb250ZXh0Jik7CisgICAgdm9pZCBkcmF3UmVjdEhpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmKTsKICAgICB2b2lkIGRyYXdQYXVzZWRJbkRlYnVnZ2VyKEdyYXBoaWNzQ29udGV4
dCYpOwogCiAgICAgUGFnZSogbV9wYWdlOwogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7
CiAgICAgU3RyaW5nIG1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2U7Ci0gICAgT3duUHRyPEhpZ2hs
aWdodERhdGE+IG1faGlnaGxpZ2h0RGF0YTsKKyAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRO
b2RlOworICAgIEhpZ2hsaWdodENvbmZpZyBtX25vZGVIaWdobGlnaHRDb25maWc7CisgICAgT3du
UHRyPEludFJlY3Q+IG1faGlnaGxpZ2h0UmVjdDsKKyAgICBIaWdobGlnaHRDb25maWcgbV9yZWN0
SGlnaGxpZ2h0Q29uZmlnOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOTFhMzgzMTBm
OGE4Y2Y3NGVkYmQ4MDE2NDgzNzNlMTJiZWYwMTY4OS4uMjEwMGE5MjcxOTNhNTA0MjE4ZGMzMTg4
OTM2YTEyYWY4ZWZmNmU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwCkBAIC0yMzIsOSArMjMyLDkgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6Y2xlYXJGcm9udGVuZCgpCiAKICAgICBtX2hpc3RvcnkuY2xlYXIoKTsKICAgICBtX2RvbUVk
aXRvci5jbGVhcigpOwotICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZmFsc2UsIDApOwogCiAgICAg
RXJyb3JTdHJpbmcgZXJyb3I7CisgICAgc2V0U2VhcmNoaW5nRm9yTm9kZSgmZXJyb3IsIGZhbHNl
LCAwKTsKICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7CiAKICAgICBtX2Zyb250ZW5kID0gMDsK
QEAgLTk1Myw3ICs5NTMsOCBAQCBib29sIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVNb3VzZVBy
ZXNzKCkKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5zcGVjdChOb2RlKiBub2RlKQogewot
ICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZmFsc2UsIDApOworICAgIEVycm9yU3RyaW5nIGVycm9y
OworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CiAKICAgICBpZiAo
bm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUo
KSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9k
ZSgpOwpAQCAtOTk0LDY2ICs5OTUsNjggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnMKICAgICBO
b2RlKiBub2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIHdoaWxlIChub2RlICYmIG5vZGUt
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6VEVYVF9OT0RFKQogICAgICAgICBub2RlID0gbm9kZS0+cGFy
ZW50Tm9kZSgpOwotICAgIGlmIChub2RlKQotICAgICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5v
ZGUobm9kZSk7CisgICAgaWYgKG5vZGUgJiYgbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykK
KyAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGln
aGxpZ2h0Q29uZmlnKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5n
Rm9yTm9kZShib29sIGVuYWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QpCiB7CiAgICAgaWYgKG1fc2VhcmNoaW5nRm9yTm9kZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9zZWFyY2hpbmdGb3JOb2RlID0gZW5hYmxlZDsKLSAgICBp
ZiAoZW5hYmxlZCkKLSAgICAgICAgc2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICBpZiAoIWhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiBoaWdobGlnaHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMgbWlzc2luZyI7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENv
bmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9y
OwogICAgICAgICBoaWRlSGlnaGxpZ2h0KCZlcnJvcik7Ci0gICAgICAgIG1fb3ZlcmxheS0+Y2xl
YXJIaWdobGlnaHREYXRhKCk7CiAgICAgfQogfQogCi1ib29sIEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRIaWdobGlnaHREYXRhRnJvbUNvbmZpZyhJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZp
ZykKK1Bhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodElu
c3BlY3Rvck9iamVjdCkKIHsKLSAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykgewotICAgICAgICBt
X292ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9wdFB0
cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdo
bGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOwogICAgIGJvb2wg
c2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRp
cCkuCi0gICAgaGlnaGxpZ2h0Q29uZmlnLT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5m
byk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8gPSBzaG93SW5mbzsKLSAgICBoaWdobGln
aHREYXRhLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxp
Z2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29u
ZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhp
Z2hsaWdodERhdGEtPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKCJwYWRkaW5nQ29sb3IiLCBo
aWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPmJvcmRlciA9IHBhcnNlQ29uZmln
Q29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRh
LT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodENvbmZp
Zyk7Ci0gICAgbV9vdmVybGF5LT5zZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFz
ZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdl
dEJvb2xlYW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKKyAgICBoaWdobGlnaHRDb25maWctPnNo
b3dJbmZvID0gc2hvd0luZm87CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VD
b25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29u
dGVudE91dGxpbmVDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxp
Z2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGln
aGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBh
cnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsK
KyAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNv
bG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICByZXR1cm4gaGlnaGxpZ2h0Q29u
ZmlnLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1v
ZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBlbmFibGVk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQogewotICAg
IHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0
Q29uZmlnLT5nZXQoKSA6IDApOworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZXJyb3JTdHJpbmcs
IGVuYWJsZWQsIGhpZ2hsaWdodENvbmZpZyA/IGhpZ2hsaWdodENvbmZpZy0+Z2V0KCkgOiAwKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyos
IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5l
Q29sb3IpCiB7Ci0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9w
dFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICBoaWdobGlnaHREYXRhLT5yZWN0ID0gYWRv
cHRQdHIobmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgIGhpZ2hsaWdodERh
dGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICBtX292ZXJsYXktPnNl
dEhpZ2hsaWdodERhdGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOworICAgIE93blB0cjxIaWdo
bGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25m
aWcoKSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7
CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGlu
ZUNvbG9yKTsKKyAgICBtX292ZXJsYXktPmhpZ2hsaWdodFJlY3QoYWRvcHRQdHIobmV3IEludFJl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKLSAgICBFcnJvclN0cmluZyosCisgICAg
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAgIGludCBub2RlSWQsCi0gICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZykKKyAgICBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewotICAgIGlmIChO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCi0gICAgICAgIGlmIChzZXRIaWdobGlnaHRE
YXRhRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcuZ2V0KCkpKQotICAgICAgICAgICAgbV9vdmVy
bGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklk
KG5vZGVJZCkpIHsKKyAgICAgICAgaWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpIHsKKyAg
ICAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogaGlnaGxpZ2h0IGNvbmZp
Z3VyYXRpb24gcGFyYW1ldGVyIGlzIG1pc3NpbmciOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9
IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0LmdldCgpKTsKKyAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICpoaWdo
bGlnaHRDb25maWcpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0RnJhbWUoCkBAIC0xMDY0LDEyICsxMDY3LDExIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodEZyYW1lKAogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFt
ZUZvcklkKGZyYW1lSWQpOwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkp
IHsKLSAgICAgICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9wdFB0
cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+bm9kZSA9IGZy
YW1lLT5vd25lckVsZW1lbnQoKTsKLSAgICAgICAgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8gPSB0
cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgotICAgICAgICBoaWdobGln
aHREYXRhLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7Ci0gICAgICAgIGhpZ2hsaWdodERh
dGEtPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwotICAgICAgICBt
X292ZXJsYXktPnNldEhpZ2hsaWdodERhdGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOworICAg
ICAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihu
ZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZv
ID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KKyAgICAgICAgaGln
aGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgICAgIGhpZ2hs
aWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7Cisg
ICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShmcmFtZS0+b3duZXJFbGVtZW50KCksICpo
aWdobGlnaHRDb25maWcpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCBhYzQ3OGNjZTA1NTAxYTNkNTQ0ZWVmYzMzNDAyZTMy
NmY4NjMxYWE5Li43MzM5YzYzZGM4MDJjZDExZmI2YmQ1NjJkY2M3MGYyMTM3MGY2M2EwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmbmRlZiBJbnNwZWN0b3JET01BZ2VudF9oCiAjZGVmaW5lIEluc3BlY3RvckRP
TUFnZW50X2gKIAorI2luY2x1ZGUgIkRPTU5vZGVIaWdobGlnaHRlci5oIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaCIKQEAgLTY5LDYgKzcwLDggQEAgY2xhc3MgUmV2YWxpZGF0ZVN0
eWxlQXR0cmlidXRlVGFzazsKIGNsYXNzIFNjcmlwdFZhbHVlOwogY2xhc3MgU2hhZG93Um9vdDsK
IAorc3RydWN0IEhpZ2hsaWdodENvbmZpZzsKKwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpAQCAtMTk4LDggKzIwMSw4IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSW5zcGVjdG9yRE9NQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvclBhZ2VBZ2VudCosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwg
SW5zcGVjdG9yT3ZlcmxheSopOwogCi0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wg
ZW5hYmxlZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOwotICAgIGJvb2wgc2V0
SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcp
OworICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyosIGJvb2wgZW5hYmxl
ZCwgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpOworICAgIFBhc3NPd25QdHI8SGln
aGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEluc3BlY3Rv
ck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRl
ZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGludD4gTm9kZVRv
SWRNYXA7CkBAIC0yNDgsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8UmV2YWxpZGF0
ZVN0eWxlQXR0cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAgICBSZWZQ
dHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKKyAg
ICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnOwog
ICAgIE93blB0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CiAgICAgT3duUHRyPERPTUVk
aXRvcj4gbV9kb21FZGl0b3I7CiAgICAgYm9vbCBtX3N1cHByZXNzQXR0cmlidXRlTW9kaWZpZWRF
dmVudDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156641</attachid>
            <date>2012-08-06 02:56:34 -0700</date>
            <delta_ts>2012-08-06 03:01:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91632-20120806135610.patch</filename>
            <type>text/plain</type>
            <size>23613</size>
            <attacher name="Sergey Rogulenko">rogulenko</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI4ZWI5YTU4ODdiYjRj
ZTIxMDM0ZWQxY2MxOGJlOTMwNzRlMWM4YS4uOWE5ZWVlYTBlMDhmNzBhNjRkN2FmNTY4YzRjNzBk
MDRiMmY2Mzk4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTA2ICBTZXJn
ZXkgUm9ndWxlbmtvICA8cm9ndWxlbmtvQGdvb2dsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogZXh0cmFjdGluZyBIaWdobGlnaHRJbmZvIGZyb20gSGlnaGxpZ2h0RGF0YSBpbiBET01O
b2RlSGlnaGxpZ2h0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxNjMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgRXh0cmFjdGVkIHN0cnVjdCBIaWdobGlnaHRJbmZvIGZyb20gc3RydWN0IEhpZ2hsaWdo
dERhdGEgaW4gRE9NTm9kZUhpZ2hsaWdodGVyLgorICAgICAgICBOb3cgSW5zcGVjdG9yT3Zlcmxh
eSByZWNlaXZlcyBub2RlIG9yIHJlY3QgdG8gaGlnaGxpZ2h0IHRvZ2V0aGVyIHdpdGggaGlnaGxp
Z2h0SW5mby4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JPdmVybGF5OjpoaWdobGlnaHRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92
ZXJsYXk6OmhpZ2hsaWdodGVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVy
bGF5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yT3ZlcmxheTo6ZHJhd05v
ZGVIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UmVjdEhpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPdmVybGF5OjpkcmF3UGF1c2VkSW5EZWJ1Z2dlcik6CisgICAgICAgICogaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5oOgorICAgICAgICAoSGlnaGxpZ2h0Q29uZmlnKToKKyAgICAg
ICAgKFdlYkNvcmU6OkhpZ2hsaWdodDo6c2V0Q29sb3JzKToKKyAgICAgICAgKEhpZ2hsaWdodCk6
CisgICAgICAgIChJbnNwZWN0b3JPdmVybGF5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmNs
ZWFyRnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Omluc3Bl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFy
Y2hpbmdGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoSW5zcGVjdG9yRE9N
QWdlbnQpOgorCiAyMDEyLTA4LTA2ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdt
YWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTI0NzM5LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRleCAx
MGM3ODViMmFlNjAyNmM4ZGE2ZmY0MjhmNTk0MmFiOGUxYWVhMTFjLi44MTgxZGRiOTkxMTAzOTVl
NmJkMDYzNjc2MzNhODI0YmViNmU5NzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtMTEzLDM1ICsxMTMsMzUgQEAgdm9pZCBkcmF3
T3V0bGluZWRRdWFkV2l0aENsaXAoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9h
dFF1YWQmIHF1YWQsIGMKICAgICBjb250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3SGln
aGxpZ2h0Rm9yQm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBj
b250ZW50UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFk
JiBib3JkZXJRdWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIEhpZ2hsaWdodERhdGEq
IGhpZ2hsaWdodERhdGEpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9hdFF1YWQm
IHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZsb2F0UXVh
ZCYgbWFyZ2luUXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7
Ci0gICAgYm9vbCBoYXNNYXJnaW4gPSBoaWdobGlnaHREYXRhLT5tYXJnaW4gIT0gQ29sb3I6OnRy
YW5zcGFyZW50OwotICAgIGJvb2wgaGFzQm9yZGVyID0gaGlnaGxpZ2h0RGF0YS0+Ym9yZGVyICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc1BhZGRpbmcgPSBoaWdobGlnaHREYXRh
LT5wYWRkaW5nICE9IENvbG9yOjp0cmFuc3BhcmVudDsKLSAgICBib29sIGhhc0NvbnRlbnQgPSBo
aWdobGlnaHREYXRhLT5jb250ZW50ICE9IENvbG9yOjp0cmFuc3BhcmVudCB8fCBoaWdobGlnaHRE
YXRhLT5jb250ZW50T3V0bGluZSAhPSBDb2xvcjo6dHJhbnNwYXJlbnQ7CisgICAgYm9vbCBoYXNN
YXJnaW4gPSBoaWdobGlnaHRDb25maWcubWFyZ2luICE9IENvbG9yOjp0cmFuc3BhcmVudDsKKyAg
ICBib29sIGhhc0JvcmRlciA9IGhpZ2hsaWdodENvbmZpZy5ib3JkZXIgIT0gQ29sb3I6OnRyYW5z
cGFyZW50OworICAgIGJvb2wgaGFzUGFkZGluZyA9IGhpZ2hsaWdodENvbmZpZy5wYWRkaW5nICE9
IENvbG9yOjp0cmFuc3BhcmVudDsKKyAgICBib29sIGhhc0NvbnRlbnQgPSBoaWdobGlnaHRDb25m
aWcuY29udGVudCAhPSBDb2xvcjo6dHJhbnNwYXJlbnQgfHwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRl
bnRPdXRsaW5lICE9IENvbG9yOjp0cmFuc3BhcmVudDsKIAogICAgIEZsb2F0UXVhZCBjbGlwUXVh
ZDsKICAgICBDb2xvciBjbGlwQ29sb3I7CiAgICAgaWYgKGhhc01hcmdpbiAmJiAoIWhhc0JvcmRl
ciB8fCBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7Ci0gICAgICAgIGRyYXdPdXRsaW5lZFF1
YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBoaWdobGlnaHREYXRh
LT5tYXJnaW4pOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4dCwgbWFy
Z2luUXVhZCwgYm9yZGVyUXVhZCwgaGlnaGxpZ2h0Q29uZmlnLm1hcmdpbik7CiAgICAgICAgIGNs
aXBRdWFkID0gYm9yZGVyUXVhZDsKICAgICB9CiAgICAgaWYgKGhhc0JvcmRlciAmJiAoIWhhc1Bh
ZGRpbmcgfHwgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKLSAgICAgICAgZHJhd091dGxp
bmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBoaWdobGln
aHREYXRhLT5ib3JkZXIpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAoY29udGV4
dCwgYm9yZGVyUXVhZCwgcGFkZGluZ1F1YWQsIGhpZ2hsaWdodENvbmZpZy5ib3JkZXIpOwogICAg
ICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOwogICAgIH0KICAgICBpZiAoaGFzUGFkZGluZyAm
JiAoIWhhc0NvbnRlbnQgfHwgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7Ci0gICAgICAg
IGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1
YWQsIGhpZ2hsaWdodERhdGEtPnBhZGRpbmcpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkV2l0
aENsaXAoY29udGV4dCwgcGFkZGluZ1F1YWQsIGNvbnRlbnRRdWFkLCBoaWdobGlnaHRDb25maWcu
cGFkZGluZyk7CiAgICAgICAgIGNsaXBRdWFkID0gY29udGVudFF1YWQ7CiAgICAgfQogICAgIGlm
IChoYXNDb250ZW50KQotICAgICAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRR
dWFkLCBoaWdobGlnaHREYXRhLT5jb250ZW50LCBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGlu
ZSk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29udGV4dCwgY29udGVudFF1YWQsIGhpZ2hs
aWdodENvbmZpZy5jb250ZW50LCBoaWdobGlnaHRDb25maWcuY29udGVudE91dGxpbmUpOwogfQog
Ci12b2lkIGRyYXdIaWdobGlnaHRGb3JTVkdSZW5kZXJlcihHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IFZlY3RvcjxGbG9hdFF1YWQ+JiBhYnNvbHV0ZVF1YWRzLCBIaWdobGlnaHREYXRh
KiBoaWdobGlnaHREYXRhKQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9yU1ZHUmVuZGVyZXIoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgYWJzb2x1dGVRdWFk
cywgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhYnNvbHV0ZVF1YWRzLnNpemUoKTsgKytpKQotICAgICAgICBkcmF3
T3V0bGluZWRRdWFkKGNvbnRleHQsIGFic29sdXRlUXVhZHNbaV0sIGhpZ2hsaWdodERhdGEtPmNv
bnRlbnQsIENvbG9yOjp0cmFuc3BhcmVudCk7CisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWQoY29u
dGV4dCwgYWJzb2x1dGVRdWFkc1tpXSwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnQsIENvbG9yOjp0
cmFuc3BhcmVudCk7CiB9CiAKIGludCBkcmF3U3Vic3RyaW5nKGNvbnN0IFRleHRSdW4mIGdsb2Jh
bFRleHRSdW4sIGludCBvZmZzZXQsIGludCBsZW5ndGgsIGNvbnN0IENvbG9yJiB0ZXh0Q29sb3Is
IGNvbnN0IEZvbnQmIGZvbnQsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTGF5b3V0
UmVjdCYgdGl0bGVSZWN0KQpAQCAtMzYzLDkgKzM2Myw4IEBAIHN0YXRpYyB2b2lkIGNvbnRlbnRz
UXVhZFRvUGFnZShjb25zdCBGcmFtZVZpZXcqIG1haW5WaWV3LCBjb25zdCBGcmFtZVZpZXcqIHZp
ZXcsCiAgICAgcXVhZCArPSBtYWluVmlldy0+c2Nyb2xsT2Zmc2V0KCk7CiB9CiAKLXN0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBIaWdo
bGlnaHREYXRhKiBoaWdobGlnaHREYXRhLCBIaWdobGlnaHQqIGhpZ2hsaWdodCkKK3N0YXRpYyB2
b2lkIGdldE9yRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBOb2Rl
KiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZywgSGlnaGxpZ2h0
KiBoaWdobGlnaHQpCiB7Ci0gICAgTm9kZSogbm9kZSA9IGhpZ2hsaWdodERhdGEtPm5vZGUuZ2V0
KCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAg
RnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAKQEAg
LTM5Nyw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgSGlnaGxpZ2h0RGF0YSogaGlnaAogICAgICAgICAgICAgY29u
dGVudHNRdWFkVG9QYWdlKG1haW5WaWV3LCBjb250YWluaW5nVmlldywgaGlnaGxpZ2h0LT5xdWFk
c1tpXSk7CiAKICAgICAgICAgaWYgKGNvbnRleHQpCi0gICAgICAgICAgICBkcmF3SGlnaGxpZ2h0
Rm9yU1ZHUmVuZGVyZXIoKmNvbnRleHQsIGhpZ2hsaWdodC0+cXVhZHMsIGhpZ2hsaWdodERhdGEp
OworICAgICAgICAgICAgZHJhd0hpZ2hsaWdodEZvclNWR1JlbmRlcmVyKCpjb250ZXh0LCBoaWdo
bGlnaHQtPnF1YWRzLCBoaWdobGlnaHRDb25maWcpOwogICAgIH0gZWxzZSBpZiAocmVuZGVyZXIt
PmlzQm94KCkgfHwgcmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkpIHsKICAgICAgICAgTGF5b3V0
UmVjdCBjb250ZW50Qm94OwogICAgICAgICBMYXlvdXRSZWN0IHBhZGRpbmdCb3g7CkBAIC00NTEs
NyArNDUwLDcgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICAgICAgaGlnaGxpZ2h0LT5x
dWFkcy5hcHBlbmQoYWJzQ29udGVudFF1YWQpOwogCiAgICAgICAgIGlmIChjb250ZXh0KQotICAg
ICAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveCgqY29udGV4dCwgYWJzQ29udGVudFF1YWQsIGFi
c1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNNYXJnaW5RdWFkLCBoaWdobGlnaHREYXRh
KTsKKyAgICAgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goKmNvbnRleHQsIGFic0NvbnRlbnRR
dWFkLCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgaGlnaGxp
Z2h0Q29uZmlnKTsKICAgICB9CiAKICAgICAvLyBEcmF3IG5vZGUgdGl0bGUgaWYgbmVjZXNzYXJ5
LgpAQCAtNDU5LDE2ICs0NTgsMTYgQEAgc3RhdGljIHZvaWQgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdo
dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIEhpZ2hsaWdodERhdGEqIGhpZ2gKICAgICBpZiAo
IW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNvbnRl
eHQgJiYgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8pCisgICAgaWYgKGNvbnRleHQgJiYgaGlnaGxp
Z2h0Q29uZmlnLnNob3dJbmZvKQogICAgICAgICBkcmF3RWxlbWVudFRpdGxlKCpjb250ZXh0LCBu
b2RlLCByZW5kZXJlciwgcGl4ZWxTbmFwcGVkSW50UmVjdChib3VuZGluZ0JveCksIHBpeGVsU25h
cHBlZEludFJlY3QodGl0bGVBbmNob3JCb3gpLCB2aXNpYmxlUmVjdCwgY29udGFpbmluZ0ZyYW1l
LT5zZXR0aW5ncygpKTsKIH0KIAotc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEhpZ2hsaWdodERhdGEqIGhpZ2hs
aWdodERhdGEsIEhpZ2hsaWdodCAqaGlnaGxpZ2h0KQorc3RhdGljIHZvaWQgZ2V0T3JEcmF3UmVj
dEhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFBhZ2UqIHBhZ2UsIEludFJlY3Qq
IHJlY3QsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29uZmlnLCBIaWdobGlnaHQg
KmhpZ2hsaWdodCkKIHsKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZs
b2F0UmVjdCBoaWdobGlnaHRSZWN0KCooaGlnaGxpZ2h0RGF0YS0+cmVjdCkpOworICAgIEZsb2F0
UmVjdCBoaWdobGlnaHRSZWN0KCpyZWN0KTsKIAogICAgIGhpZ2hsaWdodC0+dHlwZSA9IEhpZ2hs
aWdodFR5cGVSZWN0czsKICAgICBoaWdobGlnaHQtPnF1YWRzLmFwcGVuZChoaWdobGlnaHRSZWN0
KTsKQEAgLTQ4MCw3ICs0NzksNyBAQCBzdGF0aWMgdm9pZCBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUGFnZSogcGFnZSwgSGlnaGxpZwogICAgICAgICAg
ICAgY29udGV4dC0+dHJhbnNsYXRlKC12aXNpYmxlUmVjdC54KCksIC12aXNpYmxlUmVjdC55KCkp
OwogICAgICAgICB9CiAKLSAgICAgICAgZHJhd091dGxpbmVkUXVhZCgqY29udGV4dCwgaGlnaGxp
Z2h0UmVjdCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudCwgaGlnaGxpZ2h0RGF0YS0+Y29udGVudE91
dGxpbmUpOworICAgICAgICBkcmF3T3V0bGluZWRRdWFkKCpjb250ZXh0LCBoaWdobGlnaHRSZWN0
LCBoaWdobGlnaHRDb25maWcuY29udGVudCwgaGlnaGxpZ2h0Q29uZmlnLmNvbnRlbnRPdXRsaW5l
KTsKICAgICB9CiB9CiAKQEAgLTQ5NSw3ICs0OTQsOCBAQCBJbnNwZWN0b3JPdmVybGF5OjpJbnNw
ZWN0b3JPdmVybGF5KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50KQogdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiB7CiAgICAg
ZHJhd1BhdXNlZEluRGVidWdnZXIoY29udGV4dCk7Ci0gICAgZHJhd0hpZ2hsaWdodChjb250ZXh0
KTsKKyAgICBkcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0KTsKKyAgICBkcmF3UmVjdEhpZ2hsaWdo
dChjb250ZXh0KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpkcmF3T3V0bGluZShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvcikKQEAgLTUwNiwxOSArNTA2LDE3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJh
d091dGxpbmUoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByCiAK
IHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6Z2V0SGlnaGxpZ2h0KEhpZ2hsaWdodCogaGlnaGxpZ2h0
KSBjb25zdAogewotICAgIGlmICghbV9oaWdobGlnaHREYXRhKQorICAgIGlmICghbV9oaWdobGln
aHROb2RlICYmICFtX2hpZ2hsaWdodFJlY3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGhpZ2hs
aWdodC0+Y29udGVudENvbG9yID0gbV9oaWdobGlnaHREYXRhLT5jb250ZW50OwotICAgIGhpZ2hs
aWdodC0+cGFkZGluZ0NvbG9yID0gbV9oaWdobGlnaHREYXRhLT5wYWRkaW5nOwotICAgIGhpZ2hs
aWdodC0+Ym9yZGVyQ29sb3IgPSBtX2hpZ2hsaWdodERhdGEtPmJvcmRlcjsKLSAgICBoaWdobGln
aHQtPm1hcmdpbkNvbG9yID0gbV9oaWdobGlnaHREYXRhLT5tYXJnaW47CiAgICAgaGlnaGxpZ2h0
LT50eXBlID0gSGlnaGxpZ2h0VHlwZVJlY3RzOwotCi0gICAgaWYgKG1faGlnaGxpZ2h0RGF0YS0+
bm9kZSkKLSAgICAgICAgZ2V0T3JEcmF3Tm9kZUhpZ2hsaWdodCgwLCBtX2hpZ2hsaWdodERhdGEu
Z2V0KCksIGhpZ2hsaWdodCk7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHREYXRhLT5yZWN0KQot
ICAgICAgICBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KDAsIG1fcGFnZSwgbV9oaWdobGlnaHREYXRh
LmdldCgpLCBoaWdobGlnaHQpOworICAgIGlmIChtX2hpZ2hsaWdodE5vZGUpIHsKKyAgICAgICAg
aGlnaGxpZ2h0LT5zZXRDb2xvcnMobV9ub2RlSGlnaGxpZ2h0Q29uZmlnKTsKKyAgICAgICAgZ2V0
T3JEcmF3Tm9kZUhpZ2hsaWdodCgwLCBtX2hpZ2hsaWdodE5vZGUuZ2V0KCksIG1fbm9kZUhpZ2hs
aWdodENvbmZpZywgaGlnaGxpZ2h0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBoaWdobGlnaHQt
PnNldENvbG9ycyhtX3JlY3RIaWdobGlnaHRDb25maWcpOworICAgICAgICBnZXRPckRyYXdSZWN0
SGlnaGxpZ2h0KDAsIG1fcGFnZSwgbV9oaWdobGlnaHRSZWN0LmdldCgpLCBtX3JlY3RIaWdobGln
aHRDb25maWcsIGhpZ2hsaWdodCk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6
OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0IFN0cmluZyogbWVzc2FnZSkKQEAgLTUy
OSw1NyArNTI3LDU0IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dl
ck1lc3NhZ2UoY29uc3QgU3RyaW5nKiBtZXNzYWdlKQogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6
OmhpZGVIaWdobGlnaHQoKQogewotICAgIGlmIChtX2hpZ2hsaWdodERhdGEpIHsKLSAgICAgICAg
Ly8gRklYTUU6IENsZWFyIGVudGlyZSBoaWdobGlnaHQgZGF0YSBoZXJlLCBzdG9yZSBjb25maWcg
dXBvbiBzZXRJbnNwZWN0TW9kZUVuYWJsZWQKLSAgICAgICAgbV9oaWdobGlnaHREYXRhLT5yZWN0
LmNsZWFyKCk7Ci0gICAgICAgIG1faGlnaGxpZ2h0RGF0YS0+bm9kZS5jbGVhcigpOwotICAgIH0K
LSAgICB1cGRhdGUoKTsKLX0KLQotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2Rl
KE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKG1faGlnaGxpZ2h0RGF0YSkKLSAgICAgICAgbV9oaWdo
bGlnaHREYXRhLT5ub2RlID0gbm9kZTsKKyAgICBtX2hpZ2hsaWdodE5vZGUuY2xlYXIoKTsKKyAg
ICBtX2hpZ2hsaWdodFJlY3QuY2xlYXIoKTsKICAgICB1cGRhdGUoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JPdmVybGF5OjpzZXRIaWdobGlnaHREYXRhKFBhc3NPd25QdHI8SGlnaGxpZ2h0RGF0YT4g
aGlnaGxpZ2h0RGF0YSkKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9kZShOb2Rl
KiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBt
X2hpZ2hsaWdodERhdGEgPSBoaWdobGlnaHREYXRhOworICAgIG1fbm9kZUhpZ2hsaWdodENvbmZp
ZyA9IGhpZ2hsaWdodENvbmZpZzsKKyAgICBtX2hpZ2hsaWdodE5vZGUgPSBub2RlOwogICAgIHVw
ZGF0ZSgpOwogfQogCi12b2lkIEluc3BlY3Rvck92ZXJsYXk6OmNsZWFySGlnaGxpZ2h0RGF0YSgp
Cit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodFJlY3QoUGFzc093blB0cjxJbnRSZWN0
PiByZWN0LCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKIHsKLSAgICBt
X2hpZ2hsaWdodERhdGEuY2xlYXIoKTsKKyAgICBtX3JlY3RIaWdobGlnaHRDb25maWcgPSBoaWdo
bGlnaHRDb25maWc7CisgICAgbV9oaWdobGlnaHRSZWN0ID0gcmVjdDsKICAgICB1cGRhdGUoKTsK
IH0KIAogTm9kZSogSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0ZWROb2RlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9oaWdobGlnaHREYXRhID8gbV9oaWdobGlnaHREYXRhLT5ub2RlLmdldCgp
IDogMDsKKyAgICByZXR1cm4gbV9oaWdobGlnaHROb2RlLmdldCgpOwogfQogCiB2b2lkIEluc3Bl
Y3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiB7Ci0gICAgLy8gRklYTUUoOTE5MjYpIFJlZmFjdG9yIGhp
Z2hsaWdodE5vZGUgdG8gcGFzcyBoaWdobGlnaHQgZGF0YSBhbG9uZyB3aXRoIHRoZSBjYWxsLgot
ICAgIGlmICgobV9oaWdobGlnaHREYXRhICYmIChtX2hpZ2hsaWdodERhdGEtPnJlY3QgfHwgbV9o
aWdobGlnaHREYXRhLT5ub2RlKSkgfHwgIW1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxs
KCkpCisgICAgaWYgKG1faGlnaGxpZ2h0Tm9kZSB8fCBtX2hpZ2hsaWdodFJlY3QgfHwgIW1fcGF1
c2VkSW5EZWJ1Z2dlck1lc3NhZ2UuaXNOdWxsKCkpCiAgICAgICAgIG1fY2xpZW50LT5oaWdobGln
aHQoKTsKICAgICBlbHNlCiAgICAgICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd0hpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQpCit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoIW1faGlnaGxpZ2h0Tm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgSGlnaGxpZ2h0IGhpZ2hsaWdodDsKKyAgICBnZXRPckRyYXdOb2RlSGln
aGxpZ2h0KCZjb250ZXh0LCBtX2hpZ2hsaWdodE5vZGUuZ2V0KCksIG1fbm9kZUhpZ2hsaWdodENv
bmZpZywgJmhpZ2hsaWdodCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1JlY3RI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewotICAgIGlmICghbV9oaWdobGln
aHREYXRhIHx8ICghbV9oaWdobGlnaHREYXRhLT5yZWN0ICYmICFtX2hpZ2hsaWdodERhdGEtPm5v
ZGUpKQorICAgIGlmICghbV9oaWdobGlnaHRSZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBI
aWdobGlnaHQgaGlnaGxpZ2h0OwotICAgIGlmIChtX2hpZ2hsaWdodERhdGEtPm5vZGUpCi0gICAg
ICAgIGdldE9yRHJhd05vZGVIaWdobGlnaHQoJmNvbnRleHQsIG1faGlnaGxpZ2h0RGF0YS5nZXQo
KSwgJmhpZ2hsaWdodCk7Ci0gICAgZWxzZSBpZiAobV9oaWdobGlnaHREYXRhLT5yZWN0KQotICAg
ICAgICBnZXRPckRyYXdSZWN0SGlnaGxpZ2h0KCZjb250ZXh0LCBtX3BhZ2UsIG1faGlnaGxpZ2h0
RGF0YS5nZXQoKSwgJmhpZ2hsaWdodCk7CisgICAgZ2V0T3JEcmF3UmVjdEhpZ2hsaWdodCgmY29u
dGV4dCwgbV9wYWdlLCBtX2hpZ2hsaWdodFJlY3QuZ2V0KCksIG1fcmVjdEhpZ2hsaWdodENvbmZp
ZywgJmhpZ2hsaWdodCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhdXNlZElu
RGVidWdnZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQpAQCAtNTkzLDcgKzU4OCw3IEBAIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6ZHJhd1BhdXNlZEluRGVidWdnZXIoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQogCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKLSAgICBJbnRSZWN0IHZp
c2libGVSZWN0ID0gZnJhbWUtPnZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KCk7CisgICAgSW50
UmVjdCB2aXNpYmxlUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWUtPnZpZXcoKS0+dmlz
aWJsZVNpemUoKSk7CiAKICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihiYWNrZ3JvdW5kQ29sb3Is
IENvbG9yU3BhY2VEZXZpY2VSR0IpOwogICAgIGNvbnRleHQuZmlsbFJlY3QodmlzaWJsZVJlY3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCmluZGV4
IGEyMDBjY2M5YjNkNTQ2YjZhNDJiMjcwOGI5MmUxODM4MGFmMGY3MDEuLjVjN2QwMGMxNTQyNDk2
MDc4MGUxNjI5M2Q4YjIzMGVmY2U2YmE1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKQEAgLTQ4LDE3ICs0OCwxMyBAQCBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgTm9kZTsKIGNsYXNzIFBhZ2U7CiAKLXN0cnVjdCBIaWdobGlnaHREYXRhIHsKK3N0
cnVjdCBIaWdobGlnaHRDb25maWcgewogICAgIENvbG9yIGNvbnRlbnQ7CiAgICAgQ29sb3IgY29u
dGVudE91dGxpbmU7CiAgICAgQ29sb3IgcGFkZGluZzsKICAgICBDb2xvciBib3JkZXI7CiAgICAg
Q29sb3IgbWFyZ2luOwogICAgIGJvb2wgc2hvd0luZm87Ci0KLSAgICAvLyBFaXRoZXIgb2YgdGhl
c2UgbXVzdCBiZSAwLgotICAgIFJlZlB0cjxOb2RlPiBub2RlOwotICAgIE93blB0cjxJbnRSZWN0
PiByZWN0OwogfTsKIAogZW51bSBIaWdobGlnaHRUeXBlIHsKQEAgLTY3LDYgKzYzLDE0IEBAIGVu
dW0gSGlnaGxpZ2h0VHlwZSB7CiB9OwogCiBzdHJ1Y3QgSGlnaGxpZ2h0IHsKKyAgICB2b2lkIHNl
dENvbG9ycyhjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKKyAgICB7Cisg
ICAgICAgIGNvbnRlbnRDb2xvciA9IGhpZ2hsaWdodENvbmZpZy5jb250ZW50OworICAgICAgICBw
YWRkaW5nQ29sb3IgPSBoaWdobGlnaHRDb25maWcucGFkZGluZzsKKyAgICAgICAgYm9yZGVyQ29s
b3IgPSBoaWdobGlnaHRDb25maWcuYm9yZGVyOworICAgICAgICBtYXJnaW5Db2xvciA9IGhpZ2hs
aWdodENvbmZpZy5tYXJnaW47CisgICAgfQorCiAgICAgQ29sb3IgY29udGVudENvbG9yOwogICAg
IENvbG9yIHBhZGRpbmdDb2xvcjsKICAgICBDb2xvciBib3JkZXJDb2xvcjsKQEAgLTkyLDkgKzk2
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3Qg
U3RyaW5nKik7CiAKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKLSAgICB2b2lkIGhpZ2hsaWdo
dE5vZGUoTm9kZSopOwotICAgIHZvaWQgc2V0SGlnaGxpZ2h0RGF0YShQYXNzT3duUHRyPEhpZ2hs
aWdodERhdGE+KTsKLSAgICB2b2lkIGNsZWFySGlnaGxpZ2h0RGF0YSgpOworICAgIHZvaWQgaGln
aGxpZ2h0Tm9kZShOb2RlKiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJik7CisgICAgdm9pZCBoaWdo
bGlnaHRSZWN0KFBhc3NPd25QdHI8SW50UmVjdD4sIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOwog
CiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7CiAKQEAgLTEwMiwxMyArMTA1LDE3
IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yT3ZlcmxheShQYWdlKiwgSW5zcGVjdG9yQ2xpZW50
Kik7CiAKICAgICB2b2lkIHVwZGF0ZSgpOwotICAgIHZvaWQgZHJhd0hpZ2hsaWdodChHcmFwaGlj
c0NvbnRleHQmKTsKKyAgICB2b2lkIGRyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYp
OworICAgIHZvaWQgZHJhd1JlY3RIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0Jik7CiAgICAgdm9p
ZCBkcmF3UGF1c2VkSW5EZWJ1Z2dlcihHcmFwaGljc0NvbnRleHQmKTsKIAogICAgIFBhZ2UqIG1f
cGFnZTsKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIFN0cmluZyBtX3BhdXNl
ZEluRGVidWdnZXJNZXNzYWdlOwotICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBtX2hpZ2hsaWdo
dERhdGE7CisgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0Tm9kZTsKKyAgICBIaWdobGlnaHRD
b25maWcgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnOworICAgIE93blB0cjxJbnRSZWN0PiBtX2hpZ2hs
aWdodFJlY3Q7CisgICAgSGlnaGxpZ2h0Q29uZmlnIG1fcmVjdEhpZ2hsaWdodENvbmZpZzsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDkxYTM4MzEwZjhhOGNmNzRlZGJkODAxNjQ4Mzcz
ZTEyYmVmMDE2ODkuLjU1OTg4OGJkM2RmZDI4MDA2ZWE2N2I4M2M1MzRhMWIxYzg0NWJkZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAt
MjMyLDkgKzIzMiw5IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQog
CiAgICAgbV9oaXN0b3J5LmNsZWFyKCk7CiAgICAgbV9kb21FZGl0b3IuY2xlYXIoKTsKLSAgICBz
ZXRTZWFyY2hpbmdGb3JOb2RlKGZhbHNlLCAwKTsKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwor
ICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CiAgICAgaGlkZUhpZ2hs
aWdodCgmZXJyb3IpOwogCiAgICAgbV9mcm9udGVuZCA9IDA7CkBAIC05NTMsNyArOTUzLDggQEAg
Ym9vbCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlTW91c2VQcmVzcygpCiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6Omluc3BlY3QoTm9kZSogbm9kZSkKIHsKLSAgICBzZXRTZWFyY2hpbmdGb3JO
b2RlKGZhbHNlLCAwKTsKKyAgICBFcnJvclN0cmluZyBlcnJvcjsKKyAgICBzZXRTZWFyY2hpbmdG
b3JOb2RlKCZlcnJvciwgZmFsc2UsIDApOwogCiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgIT0g
Tm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRf
Tk9ERSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKQEAgLTk5NCw2NiArOTk1
LDY1IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5p
bm5lck5vZGUoKTsKICAgICB3aGlsZSAobm9kZSAmJiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OlRFWFRfTk9ERSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBpZiAo
bm9kZSkKLSAgICAgICAgbV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgIGlmIChu
b2RlICYmIG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpCisgICAgICAgIG1fb3ZlcmxheS0+
aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZyk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVk
LCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBib29sIGVu
YWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewogICAg
IGlmIChtX3NlYXJjaGluZ0Zvck5vZGUgPT0gZW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fc2VhcmNoaW5nRm9yTm9kZSA9IGVuYWJsZWQ7CiAgICAgaWYgKGVuYWJsZWQpCi0gICAgICAg
IHNldEhpZ2hsaWdodERhdGFGcm9tQ29uZmlnKGhpZ2hsaWdodENvbmZpZyk7CisgICAgICAgIG1f
aW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KGVycm9yU3RyaW5nLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIGVsc2Ug
ewogICAgICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICAgICAgaGlkZUhpZ2hsaWdodCgmZXJy
b3IpOwotICAgICAgICBtX292ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwogICAgIH0KIH0K
IAotYm9vbCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SGlnaGxpZ2h0RGF0YUZyb21Db25maWcoSW5z
cGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpCitQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZp
Zz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3Qo
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCkKIHsKLSAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykgewotICAgICAgICBtX292
ZXJsYXktPmNsZWFySGlnaGxpZ2h0RGF0YSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0g
IkludGVybmFsIGVycm9yOiBoaWdobGlnaHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMgbWlz
c2luZyI7CisgICAgICAgIHJldHVybiBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gKCk7CiAg
ICAgfQogCi0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9wdFB0
cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdo
bGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOwogICAgIGJvb2wg
c2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2UgKGRvIG5vdCBzaG93IGEgdG9vbHRp
cCkuCi0gICAgaGlnaGxpZ2h0Q29uZmlnLT5nZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5m
byk7Ci0gICAgaGlnaGxpZ2h0RGF0YS0+c2hvd0luZm8gPSBzaG93SW5mbzsKLSAgICBoaWdobGln
aHREYXRhLT5jb250ZW50ID0gcGFyc2VDb25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxp
Z2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29u
ZmlnQ29sb3IoImNvbnRlbnRPdXRsaW5lQ29sb3IiLCBoaWdobGlnaHRDb25maWcpOwotICAgIGhp
Z2hsaWdodERhdGEtPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKCJwYWRkaW5nQ29sb3IiLCBo
aWdobGlnaHRDb25maWcpOwotICAgIGhpZ2hsaWdodERhdGEtPmJvcmRlciA9IHBhcnNlQ29uZmln
Q29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBoaWdobGlnaHREYXRh
LT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodENvbmZp
Zyk7Ci0gICAgbV9vdmVybGF5LT5zZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFz
ZSgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdl
dEJvb2xlYW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKKyAgICBoaWdobGlnaHRDb25maWctPnNo
b3dJbmZvID0gc2hvd0luZm87CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VD
b25maWdDb2xvcigiY29udGVudENvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb25maWdDb2xvcigiY29u
dGVudE91dGxpbmVDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxp
Z2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGln
aGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBh
cnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsK
KyAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNv
bG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICByZXR1cm4gaGlnaGxpZ2h0Q29u
ZmlnLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1v
ZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBlbmFibGVk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQogewotICAg
IHNldFNlYXJjaGluZ0Zvck5vZGUoZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0
Q29uZmlnLT5nZXQoKSA6IDApOworICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoZXJyb3JTdHJpbmcs
IGVuYWJsZWQsIGhpZ2hsaWdodENvbmZpZyA/IGhpZ2hsaWdodENvbmZpZy0+Z2V0KCkgOiAwKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyos
IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5l
Q29sb3IpCiB7Ci0gICAgT3duUHRyPEhpZ2hsaWdodERhdGE+IGhpZ2hsaWdodERhdGEgPSBhZG9w
dFB0cihuZXcgSGlnaGxpZ2h0RGF0YSgpKTsKLSAgICBoaWdobGlnaHREYXRhLT5yZWN0ID0gYWRv
cHRQdHIobmV3IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwotICAgIGhpZ2hsaWdodERh
dGEtPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKLSAgICBoaWdobGlnaHREYXRhLT5jb250
ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICBtX292ZXJsYXktPnNl
dEhpZ2hsaWdodERhdGEoaGlnaGxpZ2h0RGF0YS5yZWxlYXNlKCkpOworICAgIE93blB0cjxIaWdo
bGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25m
aWcoKSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7
CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGlu
ZUNvbG9yKTsKKyAgICBtX292ZXJsYXktPmhpZ2hsaWdodFJlY3QoYWRvcHRQdHIobmV3IEludFJl
Y3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZSgKLSAgICBFcnJvclN0cmluZyosCisgICAg
RXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLAogICAgIGludCBub2RlSWQsCi0gICAgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENvbmZpZykKKyAgICBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewotICAgIGlmIChO
b2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCi0gICAgICAgIGlmIChzZXRIaWdobGlnaHRE
YXRhRnJvbUNvbmZpZyhoaWdobGlnaHRDb25maWcuZ2V0KCkpKQotICAgICAgICAgICAgbV9vdmVy
bGF5LT5oaWdobGlnaHROb2RlKG5vZGUpOworICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklk
KG5vZGVJZCkpIHsKKyAgICAgICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29u
ZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgaGln
aGxpZ2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsKKyAgICAgICAgaWYgKGhpZ2hsaWdodENvbmZp
ZykKKyAgICAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqaGlnaGxpZ2h0
Q29uZmlnKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZy
YW1lKApAQCAtMTA2NCwxMiArMTA2NCwxMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRGcmFtZSgKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJ
ZChmcmFtZUlkKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0g
ICAgICAgIE93blB0cjxIaWdobGlnaHREYXRhPiBoaWdobGlnaHREYXRhID0gYWRvcHRQdHIobmV3
IEhpZ2hsaWdodERhdGEoKSk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPm5vZGUgPSBmcmFtZS0+
b3duZXJFbGVtZW50KCk7Ci0gICAgICAgIGhpZ2hsaWdodERhdGEtPnNob3dJbmZvID0gdHJ1ZTsg
Ly8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0RGF0
YS0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwotICAgICAgICBoaWdobGlnaHREYXRhLT5j
b250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKLSAgICAgICAgbV9vdmVy
bGF5LT5zZXRIaWdobGlnaHREYXRhKGhpZ2hsaWdodERhdGEucmVsZWFzZSgpKTsKKyAgICAgICAg
T3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhp
Z2hsaWdodENvbmZpZygpKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRy
dWU7IC8vIEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCisgICAgICAgIGhpZ2hsaWdo
dENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOworICAgICAgICBoaWdobGlnaHRD
b25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOworICAgICAg
ICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUoZnJhbWUtPm93bmVyRWxlbWVudCgpLCAqaGlnaGxp
Z2h0Q29uZmlnKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmgKaW5kZXggYWM0NzhjY2UwNTUwMWEzZDU0NGVlZmMzMzQwMmUzMjZmODYz
MWFhOS4uODQ4MGNjOTI1NzMzZTUxNjljNjZmNDllNjZlM2Q5NDEwZWJjZTM1MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMwLDYgKzMwLDcg
QEAKICNpZm5kZWYgSW5zcGVjdG9yRE9NQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JET01BZ2Vu
dF9oCiAKKyNpbmNsdWRlICJET01Ob2RlSGlnaGxpZ2h0ZXIuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmgiCkBAIC02OSw2ICs3MCw4IEBAIGNsYXNzIFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s7CiBjbGFzcyBTY3JpcHRWYWx1ZTsKIGNsYXNzIFNoYWRvd1Jvb3Q7CiAKK3N0
cnVjdCBIaWdobGlnaHRDb25maWc7CisKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKQEAgLTE5OCw4ICsyMDEsOCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEluc3BlY3RvckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JQ
YWdlQWdlbnQqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3Bl
Y3Rvck92ZXJsYXkqKTsKIAotICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJs
ZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBib29sIHNldEhpZ2hs
aWdodERhdGFGcm9tQ29uZmlnKEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAg
ICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIElu
c3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBQYXNzT3duUHRyPEhpZ2hsaWdo
dENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyos
IEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5v
ZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGlu
dD4gTm9kZVRvSWRNYXA7CkBAIC0yNDgsNiArMjUxLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8
UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsK
ICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9y
Tm9kZTsKKyAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0
Q29uZmlnOwogICAgIE93blB0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CiAgICAgT3du
UHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAgICAgYm9vbCBtX3N1cHByZXNzQXR0cmlidXRl
TW9kaWZpZWRFdmVudDsK
</data>
<flag name="review"
          id="166373"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>