<?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>109820</bug_id>
          
          <creation_ts>2013-02-14 05:50:54 -0800</creation_ts>
          <short_desc>TextTrack Extension for WebVTT Regions</short_desc>
          <delta_ts>2013-03-25 16:33:34 -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>Media</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>
          
          <blocked>109570</blocked>
    
    <blocked>109818</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Victor Carbune">vcarbune</reporter>
          <assigned_to name="Victor Carbune">vcarbune</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rego+ews</cc>
    
    <cc>silviapf</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833003</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-02-14 05:50:54 -0800</bug_when>
    <thetext>Objects: TextTrackRegion, TextTrackRegionList
TextTrack extension: addRegion method and regions attribute</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833009</commentid>
    <comment_count>1</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-02-14 05:59:03 -0800</bug_when>
    <thetext>I think JS API support could be submitted before parsing, as it will provide a method of properly testing the functionality of the parser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833039</commentid>
    <comment_count>2</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-14 06:59:27 -0800</bug_when>
    <thetext>please propose to the W3C for standardization, then you may reopen this bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833040</commentid>
    <comment_count>3</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-14 07:00:23 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; please propose to the W3C for standardization, then you may reopen this bug

i mean, that you may reopen after the W3C has proposed a solution (if they choose to do so) in at least a draft specification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833070</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 07:45:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; please propose to the W3C for standardization, then you may reopen this bug
&gt; 
As noted in the master bug, there is a proposed solution [1] [2] which has had a great deal of discussion in the text community group mailing list (eg. [3]).

&gt; i mean, that you may reopen after the W3C has proposed a solution (if they choose to do so) in at least a draft specification

Please don&apos;t close bugs without discussion. 

[1] https://dvcs.w3.org/hg/text-tracks/raw-file/default/608toVTT/region.html
[2] http://www.w3.org/community/texttracks/wiki/MultiCueBox
[3] http://lists.w3.org/Archives/Public/public-texttracks/2012Dec/0000.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833076</commentid>
    <comment_count>5</comment_count>
    <who name="Glenn Adams">glenn</who>
    <bug_when>2013-02-14 07:53:42 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; please propose to the W3C for standardization, then you may reopen this bug
&gt; &gt; 
&gt; As noted in the master bug, there is a proposed solution [1] [2] which has had a great deal of discussion in the text community group mailing list (eg. [3]).

Thanks for pointing this out. If this information had been referenced in the bug, I would have been less likely to close it. In any case, he bug should make clear the specification status and the relative maturity of the specification. Since it appears to me that the specification for any JS API extensions is very early in the process, and not yet in any W3C spec, care should be taken to qualify this early implementation work, e.g., by noting that prefixes will be used for any experimental interface extensions.

&gt; 
&gt; &gt; i mean, that you may reopen after the W3C has proposed a solution (if they choose to do so) in at least a draft specification
&gt; 
&gt; Please don&apos;t close bugs without discussion.

It&apos;s easy enough to reopen, so I don&apos;t view this as a problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833116</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-02-14 08:53:26 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; (In reply to comment #3)
&gt; &gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; &gt; please propose to the W3C for standardization, then you may reopen this bug
&gt; &gt; &gt; 
&gt; &gt; As noted in the master bug, there is a proposed solution [1] [2] which has had a great deal of discussion in the text community group mailing list (eg. [3]).
&gt; 
&gt; Thanks for pointing this out. If this information had been referenced in the bug, I would have been less likely to close it. In any case, he bug should make clear the specification status and the relative maturity of the specification. 

The specs are noted in https://bugs.webkit.org/show_bug.cgi?id=109570, which is marked as blocked by this. That is what I meant by &quot;master bug&quot; in my comment.

&gt; Since it appears to me that the specification for any JS API extensions is very early in the process, and not yet in any W3C spec, care should be taken to qualify this early implementation work, e.g., by noting that prefixes will be used for any experimental interface extensions.
&gt; 

Agreed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852271</commentid>
    <comment_count>7</comment_count>
      <attachid>192461</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-11 07:15:20 -0700</bug_when>
    <thetext>Created attachment 192461
Patch

Extension of TextTrack to support list of regions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>858019</commentid>
    <comment_count>8</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2013-03-19 01:02:56 -0700</bug_when>
    <thetext>Nit: You might want to test all fields for updatedRegion, not just viewportAnchorX .
Other than that, FWIW: LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862648</commentid>
    <comment_count>9</comment_count>
      <attachid>194826</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-25 04:49:08 -0700</bug_when>
    <thetext>Created attachment 194826
Updated test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862798</commentid>
    <comment_count>10</comment_count>
      <attachid>194826</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-25 08:36:17 -0700</bug_when>
    <thetext>Comment on attachment 194826
Updated test

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

&gt; Source/WebCore/html/track/TextTrack.cpp:303
&gt; +void TextTrack::addRegion(PassRefPtr&lt;TextTrackRegion&gt; region)
&gt; +{

Nit: it is probably worth adding ASSERT(region) here.

The coding guidelines say the following about using a PassRefPtr&lt;&gt; as a function argument [1] &quot;Unless the use of the argument is very simple, the argument should be transferred to a RefPtr at the start of the function; the argument can be named with a “prp” prefix in such cases.&quot;&apos;

[1] http://www.webkit.org/coding/RefPtr.html

&gt; Source/WebCore/html/track/TextTrack.cpp:309
&gt; +    // 1. If the given region is in a text track list of regions, then remove
&gt; +    // region from that text track list of regions.
&gt; +    if (regionList-&gt;remove(region.get()))
&gt; +        return;

Isn&apos;t the spec saying that the region can only be assigned to one track at a time, and therefore this should test &quot;region-&gt;track() != this&quot;?

&gt; Source/WebCore/html/track/TextTrack.cpp:315
&gt; +    TextTrackRegion* existingRegion = ensureTextTrackRegionList()-&gt;getRegionById(region-&gt;id());

Nit: you call ensureTextTrackRegionList above.

&gt; Source/WebCore/html/track/TextTrackRegion.h:108
&gt; +    TextTrack* m_track;

A comment about why it is safe for this to be a raw pointer would be useful.

&gt; LayoutTests/media/track/regions-webvtt/text-track-region-list.html:20
&gt; +            consoleWrite(&quot;&lt;br&gt;** Implicit mode disabled and the regions attribute is null **&quot;);
&gt; +            testExpected(&quot;testTrack.track.mode&quot;, &quot;disabled&quot;);
&gt; +            testExpected(&quot;testTrack.track.regions&quot;, null);

It might be worth starting the test some time after the body&apos;s &apos;load&apos; event fires because the automatic track selection logic may not run before &apos;load&apos; fires, so this test may miss the track begin automatically enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863031</commentid>
    <comment_count>11</comment_count>
      <attachid>194916</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-25 13:46:23 -0700</bug_when>
    <thetext>Created attachment 194916
Refined patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863047</commentid>
    <comment_count>12</comment_count>
      <attachid>194916</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 14:00:51 -0700</bug_when>
    <thetext>Comment on attachment 194916
Refined patch

Attachment 194916 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17132908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863048</commentid>
    <comment_count>13</comment_count>
      <attachid>194916</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 14:02:24 -0700</bug_when>
    <thetext>Comment on attachment 194916
Refined patch

Attachment 194916 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/17290667</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863050</commentid>
    <comment_count>14</comment_count>
      <attachid>194916</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-25 14:03:29 -0700</bug_when>
    <thetext>Comment on attachment 194916
Refined patch

Attachment 194916 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17237480</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863054</commentid>
    <comment_count>15</comment_count>
      <attachid>194916</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-03-25 14:12:07 -0700</bug_when>
    <thetext>Comment on attachment 194916
Refined patch

Attachment 194916 did not pass cr-android-ews (chromium-android):
Output: http://webkit-commit-queue.appspot.com/results/17144810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863064</commentid>
    <comment_count>16</comment_count>
      <attachid>194925</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-25 14:22:14 -0700</bug_when>
    <thetext>Created attachment 194925
Proper guard</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863076</commentid>
    <comment_count>17</comment_count>
      <attachid>194925</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-03-25 14:46:19 -0700</bug_when>
    <thetext>Comment on attachment 194925
Proper guard

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

&gt; Source/WebCore/html/track/TextTrackRegion.cpp:195
&gt; +    ExceptionCode ec = 0;
&gt; +    setScroll(region-&gt;scroll(), ec);
&gt; +
&gt; +    ASSERT(!ec);

Why not use ASSERT_NO_EXCEPTION?

&gt; LayoutTests/media/track/regions-webvtt/text-track-region-list.html:88
&gt; +            setTimeout(startTest, 500);

Nit: I think 500ms is much longer than it needs to be,and it guarantees that the test takes .5 seconds. I would guess that 100ms would be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863106</commentid>
    <comment_count>18</comment_count>
      <attachid>194934</attachid>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-25 15:33:46 -0700</bug_when>
    <thetext>Created attachment 194934
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863110</commentid>
    <comment_count>19</comment_count>
    <who name="Victor Carbune">vcarbune</who>
    <bug_when>2013-03-25 15:36:02 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 194925 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=194925&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/track/TextTrackRegion.cpp:195
&gt; &gt; +    ExceptionCode ec = 0;
&gt; &gt; +    setScroll(region-&gt;scroll(), ec);
&gt; &gt; +
&gt; &gt; +    ASSERT(!ec);
&gt; 
&gt; Why not use ASSERT_NO_EXCEPTION?

Done.

&gt; &gt; LayoutTests/media/track/regions-webvtt/text-track-region-list.html:88
&gt; &gt; +            setTimeout(startTest, 500);
&gt; 
&gt; Nit: I think 500ms is much longer than it needs to be,and it guarantees that the test takes .5 seconds. I would guess that 100ms would be sufficient.

Done.

Thanks a lot for the review, Eric!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863152</commentid>
    <comment_count>20</comment_count>
      <attachid>194934</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 16:33:28 -0700</bug_when>
    <thetext>Comment on attachment 194934
Patch for landing

Clearing flags on attachment: 194934

Committed r146825: &lt;http://trac.webkit.org/changeset/146825&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863153</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-25 16:33:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192461</attachid>
            <date>2013-03-11 07:15:20 -0700</date>
            <delta_ts>2013-03-25 04:49:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109820-20130311161119.patch</filename>
            <type>text/plain</type>
            <size>26231</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWI5NjJiNzNjZmVjZjcz
YzFkYTE5YzJkODRkMWJlZTg3NjBmN2RmYy4uYzczZmExODA3MjE1YjkwMmQ4MjU3MDBjODg5MTA5
YTNhNmVkNzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTExICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0VHJhY2sg
RXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qg
YW5kIGV4dGVuZGVkIFRleHRUcmFjayB3aXRoCisgICAgICAgIG1ldGhvZHMgcmVxdWlyZWQgZm9y
IHByb3BlciBpbnRlcmFjdGlvbiB3aXRoIFRleHRUcmFja1JlZ2lvbiBvYmplY3RzLgorCisgICAg
ICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxp
c3QuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBmaWxlcyBmb3IgcHJvcGVy
IGJ1aWxkaW5nIG9mIFRleHRUcmFja1JlZ2lvbkxpc3QuCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZVRl
eHRUcmFja1JlZ2lvbkxpc3QpOiBNZXRob2QgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhY2ssIGlmIGl0IGRv
ZXMgZXhpc3QKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVnaW9ucyk6IEdldHRlciBmb3IgdGhlIHJlZ2lvbnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOiBNZXRob2QgZm9yIGFkZGluZyBhIHJlZ2lvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6cmVtb3ZlUmVnaW9uKTogTWV0aG9kIGZvciByZW1v
dmluZyBhIHJlZ2lvbi4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbDogQWRkZWQgbWV0aG9kcyBzcGVjaWZpYyBmb3IgcmVnaW9uIGhhbmRsaW5n
LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKTogSW5pdGlhbGl6ZWQgdGhl
IHRyYWNrIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6c2V0VHJhY2spOiBBZGRlZCBpbnRlcm5hbCBzZXR0ZXIgZm9yIHRoZSB0cmFjayBhdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24pOiBNZXRob2QgdG8gY29weSB0aGUgcGFyYW1l
dGVycworICAgICAgICBmcm9tIGEgZGlmZmVyZW50IHJlZ2lvbiBvYmplY3QuCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaDogQWRkZWQgdHJhY2sgbWVtYmVyIHZhcmlhYmxl
IGFuZCBjb3B5IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6dHJh
Y2spOiBHZXR0ZXIgcmV0cmlldmVzIG5vdyB0aGUgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAo
VGV4dFRyYWNrUmVnaW9uKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxp
c3QuY3BwOiBJbXBsZW1lbnRlZCBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBJREwuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OlRleHRU
cmFja1JlZ2lvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbkxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dFRyYWNrUmVn
aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6flRleHRUcmFja1JlZ2lv
bkxpc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6IElE
TCBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEzLTAzLTExICBUaW0gSG9ydG9u
ICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlclNuYXBzaG90dGVk
UGx1Z0luIHBhaW50cyBpbiBQYWludFBoYXNlQmxvY2tCYWNrZ3JvdW5kIGluc3RlYWQgb2YgUGFp
bnRQaGFzZUZvcmVncm91bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA5OGQzYWVmZjE4OGZmYzEzMmEy
MzI4OGE3ZjZmMWQwZWYxNmFmODQ3Li45YjE3NDE3NTIzNTRhYmVmNzgwZDJmNTgzNjcyZDEwOGVj
OGViNzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00OTgsNiArNDk4LDcgQEAKICAgICAgICAgICAg
ICdodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdodG1sL3RyYWNr
L1RyYWNrRXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lv
bi5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGwn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmlkbCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsJywKQEAgLTM2MDksNiArMzYxMCw4
IEBACiAgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tMaXN0LmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwJywKICAgICAgICAgICAgICdodG1s
L3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbkxpc3QuY3BwJywKKyAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1Jl
Z2lvbkxpc3QuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UcmFja0Jhc2UuY3BwJywKICAg
ICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3BwJywKICAgICAgICAgICAgICdodG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrLmNwcAppbmRleCAxNTU0MTBkZTNiMTdkMmQwYWVjMjc1N2VjZDE2YjI2MmFjMDhlYzMyLi4x
NzU4ZDA5MDliMDUwYTMwZTJiYzRhNDhiY2MwMDNiOGY1YWJkZjlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKICNpbmNsdWRl
ICJUZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uTGlzdC5oIgogI2lu
Y2x1ZGUgIlRyYWNrQmFzZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC05Nyw2ICs5OCw5
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpzaG93aW5nS2V5d29yZCgpCiBUZXh0
VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUZXh0VHJh
Y2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5kLCBjb25zdCBBdG9taWNT
dHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2tUeXBl
IHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJhY2tCYXNlOjpUZXh0VHJhY2spCiAg
ICAgLCBtX2N1ZXMoMCkKKyNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisgICAgLCBtX3JlZ2lv
bnMoMCkKKyNlbmRpZgogICAgICwgbV9tZWRpYUVsZW1lbnQoMCkKICAgICAsIG1fbGFiZWwobGFi
ZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAtMjcyLDYgKzI3Niw3NSBAQCB2b2lk
IFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZSh0aGlzLCBjdWUpOwogfQog
CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCitUZXh0
VHJhY2tSZWdpb25MaXN0KiBUZXh0VHJhY2s6OmVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKQor
eworICAgIGlmICghbV9yZWdpb25zKQorICAgICAgICBtX3JlZ2lvbnMgPSBUZXh0VHJhY2tSZWdp
b25MaXN0OjpjcmVhdGUoKTsKKworICAgIHJldHVybiBtX3JlZ2lvbnMuZ2V0KCk7Cit9CisKK1Rl
eHRUcmFja1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6cmVnaW9ucygpCit7CisgICAgLy8gSWYgdGhl
IHRleHQgdHJhY2sgbW9kZSBvZiB0aGUgdGV4dCB0cmFjayB0aGF0IHRoZSBUZXh0VHJhY2sgb2Jq
ZWN0CisgICAgLy8gcmVwcmVzZW50cyBpcyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJsZWQgbW9k
ZSwgdGhlbiB0aGUgcmVnaW9ucworICAgIC8vIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGxpdmUg
VGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgLy8gdGhlIHRl
eHQgdHJhY2sgbGlzdCBvZiByZWdpb25zIG9mIHRoZSB0ZXh0IHRyYWNrLiBPdGhlcndpc2UsIGl0
IG11c3QKKyAgICAvLyByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRo
ZSBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkCisgICAgLy8gZWFjaCB0aW1lLgorICAgIGlm
IChtX21vZGUgIT0gZGlzYWJsZWRLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiBlbnN1cmVUZXh0
VHJhY2tSZWdpb25MaXN0KCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2s6
OmFkZFJlZ2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gcmVnaW9uKQoreworICAgIFRl
eHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbkxpc3QgPSBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0
KCk7CisKKyAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4gcmVnaW9uIGlzIGluIGEgdGV4dCB0cmFjayBs
aXN0IG9mIHJlZ2lvbnMsIHRoZW4gcmVtb3ZlCisgICAgLy8gcmVnaW9uIGZyb20gdGhhdCB0ZXh0
IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucy4KKyAgICBpZiAocmVnaW9uTGlzdC0+cmVtb3ZlKHJlZ2lv
bi5nZXQoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIDIuIElmIHRoZSBtZXRob2QncyBU
ZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMgY29udGFpbnMKKyAg
ICAvLyBhIHJlZ2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgYXMgcmVnaW9uIHJlcGxhY2Ug
dGhlIHZhbHVlcyBvZiB0aGF0CisgICAgLy8gcmVnaW9uJ3Mgd2lkdGgsIGhlaWdodCwgYW5jaG9y
IHBvaW50LCB2aWV3cG9ydCBhbmNob3IgcG9pbnQgYW5kIHNjcm9sbAorICAgIC8vIGF0dHJpYnV0
ZXMgd2l0aCB0aG9zZSBvZiByZWdpb24uCisgICAgVGV4dFRyYWNrUmVnaW9uKiBleGlzdGluZ1Jl
Z2lvbiA9IGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKS0+Z2V0UmVnaW9uQnlJZChyZWdpb24t
PmlkKCkpOworICAgIGlmIChleGlzdGluZ1JlZ2lvbikgeworICAgICAgICBleGlzdGluZ1JlZ2lv
bi0+dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24ocmVnaW9uLmdldCgpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZTogYWRkIHJlZ2lvbiB0byB0aGUgbWV0aG9k
J3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sKKyAgICAvLyBsaXN0IG9mIHJlZ2lvbnMu
CisgICAgcmVnaW9uLT5zZXRUcmFjayh0aGlzKTsKKyAgICByZWdpb25MaXN0LT5hZGQocmVnaW9u
KTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnJlbW92ZVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qIHJl
Z2lvbiwgRXhjZXB0aW9uQ29kZSAmZWMpCit7CisgICAgaWYgKCFyZWdpb24pCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIDEuIElmIHRoZSBnaXZlbiByZWdpb24gaXMgbm90IGN1cnJlbnRseSBs
aXN0ZWQgaW4gdGhlIG1ldGhvZCdzIFRleHRUcmFjaworICAgIC8vIG9iamVjdCdzIHRleHQgdHJh
Y2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHRocm93IGEgTm90Rm91bmRFcnJvciBleGNlcHRpb24u
CisgICAgaWYgKHJlZ2lvbi0+dHJhY2soKSAhPSB0aGlzKSB7CisgICAgICAgIGVjID0gTk9UX0ZP
VU5EX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9yZWdpb25zIHx8
ICFtX3JlZ2lvbnMtPnJlbW92ZShyZWdpb24pKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZWdpb24tPnNldFRyYWNrKDAp
OworfQorI2VuZGlmCisKIHZvaWQgVGV4dFRyYWNrOjpjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1
ZSogY3VlKQogewogICAgIGlmICghbV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2suaAppbmRleCBjODJhOTc5Mjk1ZTVmZTI5MTVkODA2Nzk4ZGRlYzM2MmU0MDllZWUzLi4y
ODA2NTI4ZGUxNWNjOWI1MDQwYzUzZTNhNjgzYmRmOWEyMTkzZDYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIGNsYXNzIEhUTUxNZWRpYUVs
ZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBUZXh0
VHJhY2tDdWVMaXN0OworI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKK2NsYXNzIFRleHRUcmFj
a1JlZ2lvbjsKK2NsYXNzIFRleHRUcmFja1JlZ2lvbkxpc3Q7CisjZW5kaWYKIAogY2xhc3MgVGV4
dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTEwOSw2ICsxMTMsMTIgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29s
IGhhc0N1ZShUZXh0VHJhY2tDdWUqKTsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKFdFQlZUVF9SRUdJT05TKQorICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbnMoKTsK
KyAgICB2b2lkIGFkZFJlZ2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4pOworICAgIHZv
aWQgcmVtb3ZlUmVnaW9uKFRleHRUcmFja1JlZ2lvbiosIEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRp
ZgorCiAgICAgdm9pZCBjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1ZSopOwogICAgIHZvaWQgY3Vl
RGlkQ2hhbmdlKFRleHRUcmFja0N1ZSopOwogCkBAIC0xNDMsNyArMTUzLDEwIEBAIHByb3RlY3Rl
ZDoKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgotICAg
IFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKKyAgICBUZXh0VHJhY2tSZWdp
b25MaXN0KiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7CisgICAgUmVmUHRyPFRleHRUcmFj
a1JlZ2lvbkxpc3Q+IG1fcmVnaW9uczsKKyNlbmRpZgogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRf
VFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIFRleHRUcmFjayogcHVibGljVHJhY2soKSBPVkVSUklE
RSB7IHJldHVybiB0aGlzOyB9CkBAIC0xNTEsNiArMTY0LDggQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8UGxhdGZvcm1UZXh0VHJhY2s+IG1fcGxhdGZvcm1UZXh0VHJhY2s7CiAjZW5kaWYKIAorICAg
IFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKKwogICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7CiAg
ICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
ay5pZGwKaW5kZXggNzVkYTZiMzA2NDkzNTUxODQ3MTI0Njc3NzlkNWE4NDkwMjFlNGEyZi4uZGEz
NTVlMmZjZjg0ODM5YmFkOGNlMDI3NTdiOGZmOWJiNmExNWYwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtNDUsNiArNDUsMTMgQEAKICAgICB2b2lkIHJlbW92
ZUN1ZShpbiBUZXh0VHJhY2tDdWUgY3VlKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlvbik7
CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJiYgRU5BQkxFX1dFQlZUVF9S
RUdJT05TCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja1JlZ2lvbkxpc3QgcmVnaW9u
czsKKyAgICB2b2lkIGFkZFJlZ2lvbihpbiBUZXh0VHJhY2tSZWdpb24gcmVnaW9uKTsKKyAgICB2
b2lkIHJlbW92ZVJlZ2lvbihpbiBUZXh0VHJhY2tSZWdpb24gcmVnaW9uKQorICAgICAgICByYWlz
ZXMgKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFj
ZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwCmluZGV4IDY2NTg4OTgxMDA4
YWVjYzYwZjlkZWJjY2JhNjMzNDUzYzc1MzE2YWUuLjVjYTcyZDM4ODQ3MTEyODUxMjdiNDU0OWFh
YjUwMGExMzRmMGEwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbi5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6CiAg
KgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBlYyBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgpAQCAtNTYsNiArNTYsNyBAQCBUZXh0VHJhY2tSZWdpb246OlRleHRUcmFja1Jl
Z2lvbigpCiAgICAgLCBtX3JlZ2lvbkFuY2hvcihGbG9hdFBvaW50KGRlZmF1bHRBbmNob3JQb2lu
dFgsIGRlZmF1bHRBbmNob3JQb2ludFkpKQogICAgICwgbV92aWV3cG9ydEFuY2hvcihGbG9hdFBv
aW50KGRlZmF1bHRBbmNob3JQb2ludFgsIGRlZmF1bHRBbmNob3JQb2ludFkpKQogICAgICwgbV9z
Y3JvbGwoZGVmYXVsdFNjcm9sbCkKKyAgICAsIG1fdHJhY2soMCkKIHsKIH0KIApAQCAtNjMsNiAr
NjQsMTEgQEAgVGV4dFRyYWNrUmVnaW9uOjp+VGV4dFRyYWNrUmVnaW9uKCkKIHsKIH0KIAordm9p
ZCBUZXh0VHJhY2tSZWdpb246OnNldFRyYWNrKFRleHRUcmFjayogdHJhY2spCit7CisgICAgbV90
cmFjayA9IHRyYWNrOworfQorCiB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0SWQoY29uc3QgU3Ry
aW5nJiBpZCkKIHsKICAgICBtX2lkID0gaWQ7CkBAIC0xNzUsNiArMTgxLDIwIEBAIHZvaWQgVGV4
dFRyYWNrUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgbV9zY3JvbGwgPSB2YWx1ZSA9PSB1cFNjcm9sbFZhbHVlS2V5d29y
ZDsKIH0KIAordm9pZCBUZXh0VHJhY2tSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9u
KFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQoreworICAgIG1faGVpZ2h0SW5MaW5lcyA9IHJlZ2lv
bi0+aGVpZ2h0KCk7CisgICAgbV93aWR0aCA9IHJlZ2lvbi0+d2lkdGgoKTsKKworICAgIG1fcmVn
aW9uQW5jaG9yID0gRmxvYXRQb2ludChyZWdpb24tPnJlZ2lvbkFuY2hvclgoKSwgcmVnaW9uLT5y
ZWdpb25BbmNob3JZKCkpOworICAgIG1fdmlld3BvcnRBbmNob3IgPSBGbG9hdFBvaW50KHJlZ2lv
bi0+dmlld3BvcnRBbmNob3JYKCksIHJlZ2lvbi0+dmlld3BvcnRBbmNob3JZKCkpOworCisgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc2V0U2Nyb2xsKHJlZ2lvbi0+c2Nyb2xsKCksIGVj
KTsKKworICAgIEFTU0VSVCghZWMpOworfQorCiB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0UmVn
aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICAvLyBGSVhNRSgxMDk4MTgp
OiBQYXJzZSByZWdpb24gaGVhZGVyIG1ldGFkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrUmVnaW9uLmgKaW5kZXggOWViM2NiNTkwY2U3ZDI3ZmEzOTI2MmIwNzNiYTIy
NTE4MmI5ZGYwMC4uZDg1NjA1ZjdkZWRjZWY2ZjU5YjMyY2IwNzI0MDQzOThhNzlkOWM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oCkBAIC00OSw3ICs0
OSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRleHRUcmFja1JlZ2lvbigpOwogCi0gICAg
VGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBUZXh0VHJhY2sqIHRy
YWNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFjazsgfQorICAgIHZvaWQgc2V0VHJhY2soVGV4dFRy
YWNrKik7CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQog
ICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJik7CkBAIC03NSw2ICs3Niw4IEBAIHB1YmxpYzoK
ICAgICBjb25zdCBBdG9taWNTdHJpbmcgc2Nyb2xsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRTY3Jv
bGwoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCB1cGRh
dGVQYXJhbWV0ZXJzRnJvbVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qKTsKKwogICAgIGNvbnN0IFN0
cmluZyYgcmVnaW9uU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAgICAg
dm9pZCBzZXRSZWdpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKIApAQCAtMTAxLDYgKzEwNCw4
IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3ZpZXdwb3J0QW5jaG9yOwogCiAgICAgYm9v
bCBtX3Njcm9sbDsKKworICAgIFRleHRUcmFjayogbV90cmFjazsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrUmVnaW9uTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1Jl
Z2lvbkxpc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYzYzYyZGFjMzQ2MDVlODgzYzA1ZTQwOWE1MzA5NzNk
OTY5Y2UyZGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja1JlZ2lvbkxpc3QuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRf
UkVHSU9OUykKKworI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbkxpc3QuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitUZXh0VHJhY2tSZWdpb25MaXN0OjpUZXh0VHJhY2tSZWdpb25MaXN0KCkK
K3sKK30KKwordW5zaWduZWQgbG9uZyBUZXh0VHJhY2tSZWdpb25MaXN0OjpsZW5ndGgoKSBjb25z
dAoreworICAgIHJldHVybiBtX2xpc3Quc2l6ZSgpOworfQorCitUZXh0VHJhY2tSZWdpb24qIFRl
eHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYg
KGluZGV4IDwgbV9saXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0
KCk7CisKKyAgICByZXR1cm4gMDsKK30KKworVGV4dFRyYWNrUmVnaW9uKiBUZXh0VHJhY2tSZWdp
b25MaXN0OjpnZXRSZWdpb25CeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
bGlzdFtpXS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBtX2xpc3RbaV0uZ2V0KCk7
CisgICAgfQorICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmFk
ZChQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gcmVnaW9uKQoreworICAgIG1fbGlzdC5hcHBl
bmQocmVnaW9uKTsKK30KKworYm9vbCBUZXh0VHJhY2tSZWdpb25MaXN0OjpyZW1vdmUoVGV4dFRy
YWNrUmVnaW9uKiByZWdpb24pCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9saXN0LmZpbmQocmVn
aW9uKTsKKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIG1fbGlzdC5yZW1vdmUoaW5kZXgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IFRleHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBtX2xpc3QuY2xlYXIoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwZTNlNTZlYzcz
NWI3ZDljMzYwNTcwNjAyOWM3MzA5NmFhMGMxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIFRleHRUcmFja1JlZ2lvbkxpc3RfaAorI2RlZmluZSBUZXh0VHJh
Y2tSZWdpb25MaXN0X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZU
VF9SRUdJT05TKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tSZWdp
b25MaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrUmVnaW9uTGlzdD4geworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbkxpc3Q+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja1JlZ2lvbkxpc3QoKSk7
CisgICAgfQorCisgICAgflRleHRUcmFja1JlZ2lvbkxpc3QoKSB7IH0KKworICAgIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoKCkgY29uc3Q7CisKKyAgICBUZXh0VHJhY2tSZWdpb24qIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OworICAgIFRleHRUcmFja1JlZ2lvbiogZ2V0UmVnaW9uQnlJZChjb25z
dCBTdHJpbmcmKSBjb25zdDsKKworICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVn
aW9uPik7CisgICAgYm9vbCByZW1vdmUoVGV4dFRyYWNrUmVnaW9uKik7CisKK3ByaXZhdGU6Cisg
ICAgVGV4dFRyYWNrUmVnaW9uTGlzdCgpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIFZlY3Rv
cjxSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiA+IG1fbGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkY2E2Mjk4Njk0Mjg4ZmFh
YWQ4ODQxMDk3MzRiM2FjMWQ3YmZkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKK1sKKyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSyAmIFdFQlZUVF9SRUdJT05T
LAorICAgIFY4RW5hYmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgIEluZGV4ZWRH
ZXR0ZXIsCisgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgVGV4dFRy
YWNrUmVnaW9uTGlzdCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVu
Z3RoOworICAgIFRleHRUcmFja1JlZ2lvbiBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOwor
ICAgIFRleHRUcmFja1JlZ2lvbiBnZXRSZWdpb25CeUlkKGluIERPTVN0cmluZyBpZCk7Cit9Owor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzM0ZmJlMTU1YzcyODUxODYyYzNlNjAzZWViZTczYWRkZjY4OTEyNy4uZTE5YjE5
YjJhYjZhMWM3NjE1MDQ4YTI3YjdjMDJiMWI4ZWY0YjQyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEzLTAzLTExICBWaWN0b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBUZXh0VHJhY2sgRXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdp
b25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlz
dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0xMSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGln
YWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBHVEsgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdp
b24tbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdl
YnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTQ0
NWJmNWFhOWQ2M2VlOTc4ZTQxODk3NWNhNTQ4OTkzNzEzYzlhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24t
bGlzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorVGVzdHMgVGV4dFRyYWNrUmVnaW9u
TGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFuZCBnZXRSZWdpb25CeUlk
KCkKKworCisqKiBJbXBsaWNpdCBtb2RlIGRpc2FibGVkIGFuZCB0aGUgcmVnaW9ucyBhdHRyaWJ1
dGUgaXMgbnVsbCAqKgorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5tb2RlID09ICdkaXNhYmxl
ZCcpIE9LCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLnJlZ2lvbnMgPT0gJ251bGwnKSBPSwor
CisqKiBUaGUgcmVnaW9ucyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5IFRleHRUcmFja1Jl
Z2lvbkxpc3QgKioKK0VYUEVDVEVEIChyZWdpb25zICE9IG51bGwgPT0gJ3RydWUnKSBPSworRVhQ
RUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKKworKiogVGhlIGRlZmF1bHQgdmFsdWUg
b2YgdGhlIHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKgorRVhQRUNURUQg
KHJlZ2lvbi50cmFjayA9PSAnbnVsbCcpIE9LCisKKyoqIFRoZSBhZGRSZWdpb24oKSBtZXRob2Qg
cHJvcGVybHkgdXBkYXRlcyB0aGUgVGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgKioKK0VYUEVD
VEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXSA9PSBy
ZWdpb24gPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0udHJhY2sgPT0gdGVzdFRy
YWNrLnRyYWNrID09ICd0cnVlJykgT0sKKworKiogVGhlIHRyYWNrIGF0dHJpYnV0ZSBzaG91bGQg
Y29ycmVjdGx5IHJlZmxlY3QgdGhlIHRyYWNrIHRvIHdoaWNoIHRoZSByZWdpb24gd2FzIGFkZGVk
IHRvKioKK0VYUEVDVEVEIChyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrID09ICd0cnVl
JykgT0sKKworKiogQWRkaW5nIGEgcmVnaW9uIHdpdGggYW4gZXhpc3RpbmcgaWQgc2hvdWxkIHVw
ZGF0ZSB0aGUgZXhpc3RpbmcgcmVnaW9uICoqCitFWFBFQ1RFRCAocmVnaW9uc1swXS52aWV3cG9y
dEFuY2hvclggPT0gJzU5JykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdp
b24gPT0gJ3RydWUnKSBPSworCisqKiBBZGRpbmcgYW4gZXhpc3RpbmcgcmVnaW9uIHNob3VsZCBy
ZXN1bHQgaW4gdGhlIHJlbW92YWwgb2YgdGhlIHJlc3BlY3RpdmUgcmVnaW9uICoqCitFWFBFQ1RF
RCAocmVnaW9ucy5sZW5ndGggPT0gJzAnKSBPSworCisqKiBBZGQgdGhlIHJlZ2lvbiBiYWNrIGFu
ZCBjaGVjayBpZiByZW1vdmVSZWdpb24oKSByZW1vdmVzIGl0IHByb3Blcmx5ICoqCitFWFBFQ1RF
RCAocmVnaW9ucy5sZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09
ICcwJykgT0sKKworKiogSW4gY2FzZSB0aGUgcmVnaW9uIGlzIG5vdCBmb3VuZCwgTm90Rm91bmRF
cnJvciBzaG91bGQgYmUgdGhyb3duICoqCitFcnJvcjogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2Vw
dGlvbiA4CisKK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbCBiL0xheW91dFRl
c3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42YWY5NDFjNjYwYjhmZDQ5YmIyMjJjYzJjYmI4Y2EzODVlODA3MzljCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQv
dGV4dC10cmFjay1yZWdpb24tbGlzdC5odG1sCkBAIC0wLDAgKzEsODQgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRl
bnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAg
IDxzY3JpcHQgc3JjPS4uLy4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPS4uLy4uL3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+Cisg
ICAgICAgIHZhciB0ZXN0VHJhY2s7CisgICAgICAgIHZhciByZWdpb247CisgICAgICAgIHZhciBy
ZWdpb25zOworICAgICAgICB2YXIgdXBkYXRlZFJlZ2lvbjsKKworICAgICAgICBmdW5jdGlvbiBz
dGFydFRlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXN0VHJhY2sgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgndHJhY2snKVswXTsKKworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCI8YnI+KiogSW1wbGljaXQgbW9kZSBkaXNhYmxlZCBhbmQgdGhlIHJlZ2lvbnMgYXR0cmli
dXRlIGlzIG51bGwgKioiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRy
YWNrLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRy
YWNrLnRyYWNrLnJlZ2lvbnMiLCBudWxsKTsKKworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNr
Lm1vZGUgPSAiaGlkZGVuIjsKKyAgICAgICAgICAgIHJlZ2lvbnMgPSB0ZXN0VHJhY2sudHJhY2su
cmVnaW9uczsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIHJlZ2lvbnMg
YXR0cmlidXRlIHNob3VsZCBiZSBhbiBlbXB0eSBUZXh0VHJhY2tSZWdpb25MaXN0ICoqIik7Cisg
ICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMgIT0gbnVsbCIsIHRydWUpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIsIDApOworCisgICAgICAgICAgICBy
ZWdpb24gPSBuZXcgVGV4dFRyYWNrUmVnaW9uKCk7CisgICAgICAgICAgICByZWdpb24uaWQgPSAi
VGVzdElkIjsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIGRlZmF1bHQg
dmFsdWUgb2YgdGhlIHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKiIpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2siLCBudWxsKTsKKworICAgICAg
ICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOworCisgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIjxicj4qKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0
ZXMgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qgb2JqZWN0ICoqIik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwgMSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlZ2lvbnNbMF0gPT0gcmVnaW9uIiwgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
InJlZ2lvbnNbMF0udHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrIiwgdHJ1ZSk7CisKKyAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSB0cmFjayBhdHRyaWJ1dGUgc2hvdWxkIGNvcnJl
Y3RseSByZWZsZWN0IHRoZSB0cmFjayB0byB3aGljaCB0aGUgcmVnaW9uIHdhcyBhZGRlZCB0byoq
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi50cmFjayA9PSB0ZXN0VHJhY2su
dHJhY2siLCB0cnVlKTsKKworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbiA9IG5ldyBUZXh0VHJh
Y2tSZWdpb24oKTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24uaWQgPSByZWdpb24uaWQ7Cisg
ICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IDU5OworCisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGRpbmcgYSByZWdpb24gd2l0aCBhbiBleGlzdGlu
ZyBpZCBzaG91bGQgdXBkYXRlIHRoZSBleGlzdGluZyByZWdpb24gKioiKTsKKyAgICAgICAgICAg
IHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24odXBkYXRlZFJlZ2lvbik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JYIiwgdXBkYXRlZFJlZ2lvbi52
aWV3cG9ydEFuY2hvclgpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdICE9
IHVwZGF0ZWRSZWdpb24iLCB0cnVlKTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+
KiogQWRkaW5nIGFuIGV4aXN0aW5nIHJlZ2lvbiBzaG91bGQgcmVzdWx0IGluIHRoZSByZW1vdmFs
IG9mIHRoZSByZXNwZWN0aXZlIHJlZ2lvbiAqKiIpOworICAgICAgICAgICAgdGVzdFRyYWNrLnRy
YWNrLmFkZFJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25z
Lmxlbmd0aCIsIDApOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGQgdGhl
IHJlZ2lvbiBiYWNrIGFuZCBjaGVjayBpZiByZW1vdmVSZWdpb24oKSByZW1vdmVzIGl0IHByb3Bl
cmx5ICoqIik7CisgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2suYWRkUmVnaW9uKHJlZ2lvbik7
CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwgMSk7CisgICAgICAg
ICAgICB0ZXN0VHJhY2sudHJhY2sucmVtb3ZlUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwgMCk7CisKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiPGJyPioqIEluIGNhc2UgdGhlIHJlZ2lvbiBpcyBub3QgZm91bmQsIE5vdEZvdW5kRXJy
b3Igc2hvdWxkIGJlIHRocm93biAqKiIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgdGVzdFRyYWNrLnRyYWNrLnJlbW92ZVJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgfSBj
YXRjaChlKSB7CisgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShlKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gRklYTUUoMTA5ODE4KTogVXBkYXRlIHRlc3QgZm9yIG11bHRpcGxl
IGluaXRpYWwgcmVnaW9ucyAoYWZ0ZXIgcGFyc2luZyBpcyBzdXBwb3J0ZWQpLgorCisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9
CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0
VGVzdCgpIj4KKyAgICAgICAgPHA+VGVzdHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFs
aXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFuZCBnZXRSZWdpb25CeUlkKCk8L3A+CisgICAgICAg
IDx2aWRlbz4KKyAgICAgICAgICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNhcHRpb25z
LXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5
PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194826</attachid>
            <date>2013-03-25 04:49:08 -0700</date>
            <delta_ts>2013-03-25 13:46:16 -0700</delta_ts>
            <desc>Updated test</desc>
            <filename>bug-109820-20130325134451.patch</filename>
            <type>text/plain</type>
            <size>27233</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uZDhiMGU2ODU4OWVjZWRhYzgyMjQyODQ5ZDM0N2Rj
ZTM3NjAyOGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTI1ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0VHJhY2sg
RXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qg
YW5kIGV4dGVuZGVkIFRleHRUcmFjayB3aXRoCisgICAgICAgIG1ldGhvZHMgcmVxdWlyZWQgZm9y
IHByb3BlciBpbnRlcmFjdGlvbiB3aXRoIFRleHRUcmFja1JlZ2lvbiBvYmplY3RzLgorCisgICAg
ICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxp
c3QuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBmaWxlcyBmb3IgcHJvcGVy
IGJ1aWxkaW5nIG9mIFRleHRUcmFja1JlZ2lvbkxpc3QuCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZVRl
eHRUcmFja1JlZ2lvbkxpc3QpOiBNZXRob2QgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhY2ssIGlmIGl0IGRv
ZXMgZXhpc3QKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVnaW9ucyk6IEdldHRlciBmb3IgdGhlIHJlZ2lvbnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOiBNZXRob2QgZm9yIGFkZGluZyBhIHJlZ2lvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6cmVtb3ZlUmVnaW9uKTogTWV0aG9kIGZvciByZW1v
dmluZyBhIHJlZ2lvbi4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbDogQWRkZWQgbWV0aG9kcyBzcGVjaWZpYyBmb3IgcmVnaW9uIGhhbmRsaW5n
LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKTogSW5pdGlhbGl6ZWQgdGhl
IHRyYWNrIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6c2V0VHJhY2spOiBBZGRlZCBpbnRlcm5hbCBzZXR0ZXIgZm9yIHRoZSB0cmFjayBhdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24pOiBNZXRob2QgdG8gY29weSB0aGUgcGFyYW1l
dGVycworICAgICAgICBmcm9tIGEgZGlmZmVyZW50IHJlZ2lvbiBvYmplY3QuCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaDogQWRkZWQgdHJhY2sgbWVtYmVyIHZhcmlhYmxl
IGFuZCBjb3B5IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6dHJh
Y2spOiBHZXR0ZXIgcmV0cmlldmVzIG5vdyB0aGUgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAo
VGV4dFRyYWNrUmVnaW9uKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxp
c3QuY3BwOiBJbXBsZW1lbnRlZCBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBJREwuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OlRleHRU
cmFja1JlZ2lvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbkxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dFRyYWNrUmVn
aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6flRleHRUcmFja1JlZ2lv
bkxpc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6IElE
TCBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEzLTAzLTI0ICBLb25kYXBhbGx5
S2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEFk
ZCBzdXBwb3J0IHRvIGNoZWNrIGZvciBjdXJyZW50IERyYXdhYmxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDhiYjY0ZDM0MWM3ZDQ4MzhhNDU5ZTgxN2NlZmMyN2YyYzM0YWUzNzIuLjJhZjhkYzgzNjAx
Mjc2N2I1ZWVjZDgyNzViYWE0NTViM2ZhYWJhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUwMyw2
ICs1MDMsNyBAQAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb25MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwnLApAQCAtMzYzMiw2ICszNjMzLDggQEAKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmgnLAorICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL1RyYWNrQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGJiNTY5OGNhZTcwMWIwOTlkNjgw
YTUzZDVmMjhiYjM1ZTRjZWIxOWQuLjU3YWJhMGI2Y2U2MmYyNzAzMGI1YzM3NDUzYmQ5MGIyZDll
NDUyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dFRy
YWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tSZWdpb25MaXN0LmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTk3LDYgKzk4LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKCkKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYg
bGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBU
cmFja0Jhc2U6OlRleHRUcmFjaykKICAgICAsIG1fY3VlcygwKQorI2lmIEVOQUJMRShXRUJWVFRf
UkVHSU9OUykKKyAgICAsIG1fcmVnaW9ucygwKQorI2VuZGlmCiAgICAgLCBtX21lZGlhRWxlbWVu
dCgwKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCkBA
IC0yNzIsNiArMjc2LDc1IEBAIHZvaWQgVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3Vl
KiBjdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVt
b3ZlQ3VlKHRoaXMsIGN1ZSk7CiB9CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJM
RShXRUJWVFRfUkVHSU9OUykKK1RleHRUcmFja1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6ZW5zdXJl
VGV4dFRyYWNrUmVnaW9uTGlzdCgpCit7CisgICAgaWYgKCFtX3JlZ2lvbnMpCisgICAgICAgIG1f
cmVnaW9ucyA9IFRleHRUcmFja1JlZ2lvbkxpc3Q6OmNyZWF0ZSgpOworCisgICAgcmV0dXJuIG1f
cmVnaW9ucy5nZXQoKTsKK30KKworVGV4dFRyYWNrUmVnaW9uTGlzdCogVGV4dFRyYWNrOjpyZWdp
b25zKCkKK3sKKyAgICAvLyBJZiB0aGUgdGV4dCB0cmFjayBtb2RlIG9mIHRoZSB0ZXh0IHRyYWNr
IHRoYXQgdGhlIFRleHRUcmFjayBvYmplY3QKKyAgICAvLyByZXByZXNlbnRzIGlzIG5vdCB0aGUg
dGV4dCB0cmFjayBkaXNhYmxlZCBtb2RlLCB0aGVuIHRoZSByZWdpb25zCisgICAgLy8gYXR0cmli
dXRlIG11c3QgcmV0dXJuIGEgbGl2ZSBUZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCB0aGF0IHJl
cHJlc2VudHMKKyAgICAvLyB0aGUgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMgb2YgdGhlIHRl
eHQgdHJhY2suIE90aGVyd2lzZSwgaXQgbXVzdAorICAgIC8vIHJldHVybiBudWxsLiBXaGVuIGFu
IG9iamVjdCBpcyByZXR1cm5lZCwgdGhlIHNhbWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQKKyAg
ICAvLyBlYWNoIHRpbWUuCisgICAgaWYgKG1fbW9kZSAhPSBkaXNhYmxlZEtleXdvcmQoKSkKKyAg
ICAgICAgcmV0dXJuIGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsKKworICAgIHJldHVybiAw
OworfQorCit2b2lkIFRleHRUcmFjazo6YWRkUmVnaW9uKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVn
aW9uPiByZWdpb24pCit7CisgICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogcmVnaW9uTGlzdCA9IGVu
c3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsKKworICAgIC8vIDEuIElmIHRoZSBnaXZlbiByZWdp
b24gaXMgaW4gYSB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucywgdGhlbiByZW1vdmUKKyAgICAv
LyByZWdpb24gZnJvbSB0aGF0IHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLgorICAgIGlmIChy
ZWdpb25MaXN0LT5yZW1vdmUocmVnaW9uLmdldCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gMi4gSWYgdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNrIGxpc3Qg
b2YgcmVnaW9ucyBjb250YWlucworICAgIC8vIGEgcmVnaW9uIHdpdGggdGhlIHNhbWUgaWRlbnRp
ZmllciBhcyByZWdpb24gcmVwbGFjZSB0aGUgdmFsdWVzIG9mIHRoYXQKKyAgICAvLyByZWdpb24n
cyB3aWR0aCwgaGVpZ2h0LCBhbmNob3IgcG9pbnQsIHZpZXdwb3J0IGFuY2hvciBwb2ludCBhbmQg
c2Nyb2xsCisgICAgLy8gYXR0cmlidXRlcyB3aXRoIHRob3NlIG9mIHJlZ2lvbi4KKyAgICBUZXh0
VHJhY2tSZWdpb24qIGV4aXN0aW5nUmVnaW9uID0gZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgp
LT5nZXRSZWdpb25CeUlkKHJlZ2lvbi0+aWQoKSk7CisgICAgaWYgKGV4aXN0aW5nUmVnaW9uKSB7
CisgICAgICAgIGV4aXN0aW5nUmVnaW9uLT51cGRhdGVQYXJhbWV0ZXJzRnJvbVJlZ2lvbihyZWdp
b24uZ2V0KCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gT3RoZXJ3aXNlOiBh
ZGQgcmVnaW9uIHRvIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjawor
ICAgIC8vIGxpc3Qgb2YgcmVnaW9ucy4KKyAgICByZWdpb24tPnNldFRyYWNrKHRoaXMpOworICAg
IHJlZ2lvbkxpc3QtPmFkZChyZWdpb24pOworfQorCit2b2lkIFRleHRUcmFjazo6cmVtb3ZlUmVn
aW9uKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uLCBFeGNlcHRpb25Db2RlICZlYykKK3sKKyAgICBp
ZiAoIXJlZ2lvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gMS4gSWYgdGhlIGdpdmVuIHJl
Z2lvbiBpcyBub3QgY3VycmVudGx5IGxpc3RlZCBpbiB0aGUgbWV0aG9kJ3MgVGV4dFRyYWNrCisg
ICAgLy8gb2JqZWN0J3MgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMsIHRoZW4gdGhyb3cgYSBO
b3RGb3VuZEVycm9yIGV4Y2VwdGlvbi4KKyAgICBpZiAocmVnaW9uLT50cmFjaygpICE9IHRoaXMp
IHsKKyAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFtX3JlZ2lvbnMgfHwgIW1fcmVnaW9ucy0+cmVtb3ZlKHJlZ2lvbikpIHsKKyAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHJlZ2lvbi0+c2V0VHJhY2soMCk7Cit9CisjZW5kaWYKKwogdm9pZCBUZXh0VHJhY2s6OmN1
ZVdpbGxDaGFuZ2UoVGV4dFRyYWNrQ3VlKiBjdWUpCiB7CiAgICAgaWYgKCFtX2NsaWVudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCmluZGV4IDkyOTA0ZTBhNGM2MDU0MWQ3NDE3
NGEwNGU2MzQwNDc0MDllNzdiNGEuLmMxYzExMTljOTcyODdmYzNjMWVmMTc0OTBiM2ZkODJiZmFj
NThkNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaApAQCAtNDUsNiArNDUs
MTAgQEAgY2xhc3MgSFRNTE1lZGlhRWxlbWVudDsKIGNsYXNzIFRleHRUcmFjazsKIGNsYXNzIFRl
eHRUcmFja0N1ZTsKIGNsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CisjaWYgRU5BQkxFKFdFQlZUVF9S
RUdJT05TKQorY2xhc3MgVGV4dFRyYWNrUmVnaW9uOworY2xhc3MgVGV4dFRyYWNrUmVnaW9uTGlz
dDsKKyNlbmRpZgogCiBjbGFzcyBUZXh0VHJhY2tDbGllbnQgewogcHVibGljOgpAQCAtMTA5LDYg
KzExMywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgaGFzQ3VlKFRleHRUcmFja0N1ZSopOwogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisgICAgVGV4dFRyYWNr
UmVnaW9uTGlzdCogcmVnaW9ucygpOworICAgIHZvaWQgYWRkUmVnaW9uKFBhc3NSZWZQdHI8VGV4
dFRyYWNrUmVnaW9uPik7CisgICAgdm9pZCByZW1vdmVSZWdpb24oVGV4dFRyYWNrUmVnaW9uKiwg
RXhjZXB0aW9uQ29kZSYpOworI2VuZGlmCisKICAgICB2b2lkIGN1ZVdpbGxDaGFuZ2UoVGV4dFRy
YWNrQ3VlKik7CiAgICAgdm9pZCBjdWVEaWRDaGFuZ2UoVGV4dFRyYWNrQ3VlKik7CiAKQEAgLTE0
Nyw3ICsxNTcsMTAgQEAgcHJvdGVjdGVkOgogICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBt
X2N1ZXM7CiAKIHByaXZhdGU6Ci0gICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNr
Q3VlTGlzdCgpOworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJ
T05TKQorICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3Qo
KTsKKyAgICBSZWZQdHI8VGV4dFRyYWNrUmVnaW9uTGlzdD4gbV9yZWdpb25zOworI2VuZGlmCiAK
ICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQogICAgIHZpcnR1YWwgVGV4dFRyYWNr
KiBwdWJsaWNUcmFjaygpIE9WRVJSSURFIHsgcmV0dXJuIHRoaXM7IH0KQEAgLTE1NSw2ICsxNjgs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxQbGF0Zm9ybVRleHRUcmFjaz4gbV9wbGF0Zm9ybVRl
eHRUcmFjazsKICNlbmRpZgogCisgICAgVGV4dFRyYWNrQ3VlTGlzdCogZW5zdXJlVGV4dFRyYWNr
Q3VlTGlzdCgpOworCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbV9tZWRpYUVsZW1lbnQ7CiAgICAg
QXRvbWljU3RyaW5nIG1fa2luZDsKICAgICBBdG9taWNTdHJpbmcgbV9sYWJlbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAppbmRleCA3NWRhNmIzMDY0OTM1NTE4NDcxMjQ2
Nzc3OWQ1YTg0OTAyMWU0YTJmLi5kYTM1NWUyZmNmODQ4MzliYWQ4Y2UwMjc1N2I4ZmY5YmI2YTE1
ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCkBAIC00NSw2ICs0
NSwxMyBAQAogICAgIHZvaWQgcmVtb3ZlQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUpCiAgICAgICAg
IHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAorI2lmIGRlZmluZWQoRU5BQkxFX1dFQlZUVF9SRUdJ
T05TKSAmJiBFTkFCTEVfV0VCVlRUX1JFR0lPTlMKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4
dFRyYWNrUmVnaW9uTGlzdCByZWdpb25zOworICAgIHZvaWQgYWRkUmVnaW9uKGluIFRleHRUcmFj
a1JlZ2lvbiByZWdpb24pOworICAgIHZvaWQgcmVtb3ZlUmVnaW9uKGluIFRleHRUcmFja1JlZ2lv
biByZWdpb24pCisgICAgICAgIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyNlbmRpZgorCiAgICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5l
ciBsaXN0ZW5lciwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lv
bi5jcHAKaW5kZXggNjY1ODg5ODEwMDhhZWNjNjBmOWRlYmNjYmE2MzM0NTNjNzUzMTZhZS4uNWNh
NzJkMzg4NDcxMTI4NTEyN2I0NTQ5YWFiNTAwYTEzNGYwYTAyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcApAQCAtNSw3ICs1LDcgQEAKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKICAqIG1ldDoKICAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGVjIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CiAg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCiAgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCkBAIC01Niw2ICs1Niw3IEBAIFRleHRU
cmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKCkKICAgICAsIG1fcmVnaW9uQW5jaG9yKEZsb2F0
UG9pbnQoZGVmYXVsdEFuY2hvclBvaW50WCwgZGVmYXVsdEFuY2hvclBvaW50WSkpCiAgICAgLCBt
X3ZpZXdwb3J0QW5jaG9yKEZsb2F0UG9pbnQoZGVmYXVsdEFuY2hvclBvaW50WCwgZGVmYXVsdEFu
Y2hvclBvaW50WSkpCiAgICAgLCBtX3Njcm9sbChkZWZhdWx0U2Nyb2xsKQorICAgICwgbV90cmFj
aygwKQogewogfQogCkBAIC02Myw2ICs2NCwxMSBAQCBUZXh0VHJhY2tSZWdpb246On5UZXh0VHJh
Y2tSZWdpb24oKQogewogfQogCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0VHJhY2soVGV4dFRy
YWNrKiB0cmFjaykKK3sKKyAgICBtX3RyYWNrID0gdHJhY2s7Cit9CisKIHZvaWQgVGV4dFRyYWNr
UmVnaW9uOjpzZXRJZChjb25zdCBTdHJpbmcmIGlkKQogewogICAgIG1faWQgPSBpZDsKQEAgLTE3
NSw2ICsxODEsMjAgQEAgdm9pZCBUZXh0VHJhY2tSZWdpb246OnNldFNjcm9sbChjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX3Njcm9sbCA9IHZhbHVl
ID09IHVwU2Nyb2xsVmFsdWVLZXl3b3JkOwogfQogCit2b2lkIFRleHRUcmFja1JlZ2lvbjo6dXBk
YXRlUGFyYW1ldGVyc0Zyb21SZWdpb24oVGV4dFRyYWNrUmVnaW9uKiByZWdpb24pCit7CisgICAg
bV9oZWlnaHRJbkxpbmVzID0gcmVnaW9uLT5oZWlnaHQoKTsKKyAgICBtX3dpZHRoID0gcmVnaW9u
LT53aWR0aCgpOworCisgICAgbV9yZWdpb25BbmNob3IgPSBGbG9hdFBvaW50KHJlZ2lvbi0+cmVn
aW9uQW5jaG9yWCgpLCByZWdpb24tPnJlZ2lvbkFuY2hvclkoKSk7CisgICAgbV92aWV3cG9ydEFu
Y2hvciA9IEZsb2F0UG9pbnQocmVnaW9uLT52aWV3cG9ydEFuY2hvclgoKSwgcmVnaW9uLT52aWV3
cG9ydEFuY2hvclkoKSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzZXRTY3Jv
bGwocmVnaW9uLT5zY3JvbGwoKSwgZWMpOworCisgICAgQVNTRVJUKCFlYyk7Cit9CisKIHZvaWQg
VGV4dFRyYWNrUmVnaW9uOjpzZXRSZWdpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIGlucHV0KQog
ewogICAgIC8vIEZJWE1FKDEwOTgxOCk6IFBhcnNlIHJlZ2lvbiBoZWFkZXIgbWV0YWRhdGEuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaAppbmRleCA5ZWIzY2I1
OTBjZTdkMjdmYTM5MjYyYjA3M2JhMjI1MTgyYjlkZjAwLi5kODU2MDVmN2RlZGNlZjZmNTliMzJj
YjA3MjQwNDM5OGE3OWQ5YzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja1JlZ2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrUmVnaW9uLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGV4
dFRyYWNrUmVnaW9uKCk7CiAKLSAgICBUZXh0VHJhY2sqIHRyYWNrKCkgY29uc3QgeyByZXR1cm4g
MDsgfQorICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdCB7IHJldHVybiBtX3RyYWNrOyB9Cisg
ICAgdm9pZCBzZXRUcmFjayhUZXh0VHJhY2sqKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBj
b25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCBzZXRJZChjb25zdCBTdHJpbmcmKTsKQEAg
LTc1LDYgKzc2LDggQEAgcHVibGljOgogICAgIGNvbnN0IEF0b21pY1N0cmluZyBzY3JvbGwoKSBj
b25zdDsKICAgICB2b2lkIHNldFNjcm9sbChjb25zdCBBdG9taWNTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAKKyAgICB2b2lkIHVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKFRleHRUcmFja1Jl
Z2lvbiopOworCiAgICAgY29uc3QgU3RyaW5nJiByZWdpb25TZXR0aW5ncygpIGNvbnN0IHsgcmV0
dXJuIG1fc2V0dGluZ3M7IH0KICAgICB2b2lkIHNldFJlZ2lvblNldHRpbmdzKGNvbnN0IFN0cmlu
ZyYpOwogCkBAIC0xMDEsNiArMTA0LDggQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fdmll
d3BvcnRBbmNob3I7CiAKICAgICBib29sIG1fc2Nyb2xsOworCisgICAgVGV4dFRyYWNrKiBtX3Ry
YWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNjNjJkYWMz
NDYwNWU4ODNjMDVlNDA5YTUzMDk3M2Q5NjljZTJkYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAKQEAgLTAsMCArMSw4
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19U
UkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQorCisjaW5jbHVkZSAiVGV4dFRyYWNrUmVn
aW9uTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRUcmFja1JlZ2lvbkxpc3Q6
OlRleHRUcmFja1JlZ2lvbkxpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIFRleHRUcmFja1Jl
Z2lvbkxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC5zaXplKCk7Cit9
CisKK1RleHRUcmFja1JlZ2lvbiogVGV4dFRyYWNrUmVnaW9uTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX2xpc3Quc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gbV9saXN0W2luZGV4XS5nZXQoKTsKKworICAgIHJldHVybiAwOworfQorCitUZXh0VHJh
Y2tSZWdpb24qIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmdldFJlZ2lvbkJ5SWQoY29uc3QgU3RyaW5n
JiBpZCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGlzdC5zaXplKCk7
ICsraSkgeworICAgICAgICBpZiAobV9saXN0W2ldLT5pZCgpID09IGlkKQorICAgICAgICAgICAg
cmV0dXJuIG1fbGlzdFtpXS5nZXQoKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQg
VGV4dFRyYWNrUmVnaW9uTGlzdDo6YWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiByZWdp
b24pCit7CisgICAgbV9saXN0LmFwcGVuZChyZWdpb24pOworfQorCitib29sIFRleHRUcmFja1Jl
Z2lvbkxpc3Q6OnJlbW92ZShUZXh0VHJhY2tSZWdpb24qIHJlZ2lvbikKK3sKKyAgICBzaXplX3Qg
aW5kZXggPSBtX2xpc3QuZmluZChyZWdpb24pOworICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9saXN0LnJlbW92ZShpbmRleCk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uTGlzdDo6Y2xlYXIoKQorewor
ICAgIG1fbGlzdC5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25M
aXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzBlM2U1NmVjNzM1YjdkOWMzNjA1NzA2MDI5YzczMDk2YWEwYzFiCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25M
aXN0LmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrUmVnaW9u
TGlzdF9oCisjZGVmaW5lIFRleHRUcmFja1JlZ2lvbkxpc3RfaAorCisjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisKKyNpbmNsdWRlICJUZXh0VHJhY2tS
ZWdpb24uaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFRleHRUcmFja1JlZ2lvbkxpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJh
Y2tSZWdpb25MaXN0PiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNr
UmVnaW9uTGlzdD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dFRyYWNrUmVnaW9uTGlzdCgpKTsKKyAgICB9CisKKyAgICB+VGV4dFRyYWNrUmVnaW9uTGlz
dCgpIHsgfQorCisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKKworICAgIFRleHRU
cmFja1JlZ2lvbiogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgVGV4dFRyYWNrUmVn
aW9uKiBnZXRSZWdpb25CeUlkKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgdm9pZCBhZGQo
UGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb24+KTsKKyAgICBib29sIHJlbW92ZShUZXh0VHJhY2tS
ZWdpb24qKTsKKworcHJpdmF0ZToKKyAgICBUZXh0VHJhY2tSZWdpb25MaXN0KCk7CisgICAgdm9p
ZCBjbGVhcigpOworCisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tSZWdpb24+ID4gbV9saXN0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2RjYTYyOTg2OTQyODhmYWFhZDg4NDEwOTczNGIzYWMxZDdiZmQ5NAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5p
ZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworWworICAgIENvbmRpdGlvbmFsPVZJREVP
X1RSQUNLICYgV0VCVlRUX1JFR0lPTlMsCisgICAgVjhFbmFibGVkQXRSdW50aW1lPXdlYmtpdFZp
ZGVvVHJhY2ssCisgICAgSW5kZXhlZEdldHRlciwKKyAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRh
YmxlCitdIGludGVyZmFjZSBUZXh0VHJhY2tSZWdpb25MaXN0IHsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgVGV4dFRyYWNrUmVnaW9uIGl0ZW0oaW4g
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgVGV4dFRyYWNrUmVnaW9uIGdldFJlZ2lvbkJ5SWQo
aW4gRE9NU3RyaW5nIGlkKTsKK307CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjMDBlYzhjMTQ5NGNhMTJjMTgyNTQzMDU5
ZDQ4ODgwYzhjYjNlYWQ4Li5mMjUzOTJiNDU4YzFhMmZjODU2ZmEzZDBhZTkxMDY4MjZhOGEyZTEy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMjUgIFZpY3RvciBDYXJidW5lICA8dmNh
cmJ1bmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRleHRUcmFjayBFeHRlbnNpb24gZm9yIFdl
YlZUVCBSZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDk4MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0
dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAzLTI0ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IENyYXNoIGlu
IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRCdXR0b24oKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFj
ay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90cmFjay9yZWdp
b25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMDViYzFiMGI2YTFjNjkyMzEwZWJhNzU0OWQyZDBkNjhlN2M3MjU4Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1y
ZWdpb24tbGlzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0NCBAQAorVGVzdHMgVGV4dFRyYWNr
UmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFuZCBnZXRSZWdp
b25CeUlkKCkKKworCisqKiBJbXBsaWNpdCBtb2RlIGRpc2FibGVkIGFuZCB0aGUgcmVnaW9ucyBh
dHRyaWJ1dGUgaXMgbnVsbCAqKgorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5tb2RlID09ICdk
aXNhYmxlZCcpIE9LCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLnJlZ2lvbnMgPT0gJ251bGwn
KSBPSworCisqKiBUaGUgcmVnaW9ucyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5IFRleHRU
cmFja1JlZ2lvbkxpc3QgKioKK0VYUEVDVEVEIChyZWdpb25zICE9IG51bGwgPT0gJ3RydWUnKSBP
SworRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKKworKiogVGhlIGRlZmF1bHQg
dmFsdWUgb2YgdGhlIHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKgorRVhQ
RUNURUQgKHJlZ2lvbi50cmFjayA9PSAnbnVsbCcpIE9LCisKKyoqIFRoZSBhZGRSZWdpb24oKSBt
ZXRob2QgcHJvcGVybHkgdXBkYXRlcyB0aGUgVGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgKioK
K0VYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1sw
XSA9PSByZWdpb24gPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0udHJhY2sgPT0g
dGVzdFRyYWNrLnRyYWNrID09ICd0cnVlJykgT0sKKworKiogVGhlIHRyYWNrIGF0dHJpYnV0ZSBz
aG91bGQgY29ycmVjdGx5IHJlZmxlY3QgdGhlIHRyYWNrIHRvIHdoaWNoIHRoZSByZWdpb24gd2Fz
IGFkZGVkIHRvKioKK0VYUEVDVEVEIChyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrID09
ICd0cnVlJykgT0sKKworKiogQWRkaW5nIGEgcmVnaW9uIHdpdGggYW4gZXhpc3RpbmcgaWQgc2hv
dWxkIHVwZGF0ZSB0aGUgZXhpc3RpbmcgcmVnaW9uICoqCitFWFBFQ1RFRCAocmVnaW9uc1swXS52
aWV3cG9ydEFuY2hvclggPT0gJzU5JykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdLnZpZXdwb3J0
QW5jaG9yWSA9PSAnNjgnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ucmVnaW9uQW5jaG9yWCA9
PSAnMjAnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ucmVnaW9uQW5jaG9yWSA9PSAnMzAnKSBP
SworRVhQRUNURUQgKHJlZ2lvbnNbMF0uaGVpZ2h0ID09ICc1JykgT0sKK0VYUEVDVEVEIChyZWdp
b25zWzBdLndpZHRoID09ICc4NycpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS5zY3JvbGwgPT0g
J3VwJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdpb24gPT0gJ3RydWUn
KSBPSworCisqKiBBZGRpbmcgYW4gZXhpc3RpbmcgcmVnaW9uIHNob3VsZCByZXN1bHQgaW4gdGhl
IHJlbW92YWwgb2YgdGhlIHJlc3BlY3RpdmUgcmVnaW9uICoqCitFWFBFQ1RFRCAocmVnaW9ucy5s
ZW5ndGggPT0gJzAnKSBPSworCisqKiBBZGQgdGhlIHJlZ2lvbiBiYWNrIGFuZCBjaGVjayBpZiBy
ZW1vdmVSZWdpb24oKSByZW1vdmVzIGl0IHByb3Blcmx5ICoqCitFWFBFQ1RFRCAocmVnaW9ucy5s
ZW5ndGggPT0gJzEnKSBPSworRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKKwor
KiogSW4gY2FzZSB0aGUgcmVnaW9uIGlzIG5vdCBmb3VuZCwgTm90Rm91bmRFcnJvciBzaG91bGQg
YmUgdGhyb3duICoqCitFcnJvcjogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4CisKK0VO
RCBPRiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMt
d2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wM2JmNDIxMmUwNmFmZGQyYzc1MmY1MDM3N2MzZDQ4OGUwNzhmMmY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1y
ZWdpb24tbGlzdC5odG1sCkBAIC0wLDAgKzEsOTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3Jj
PS4uLy4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4u
L3ZpZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB0
ZXN0VHJhY2s7CisgICAgICAgIHZhciByZWdpb247CisgICAgICAgIHZhciByZWdpb25zOworICAg
ICAgICB2YXIgdXBkYXRlZFJlZ2lvbjsKKworICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQor
ICAgICAgICB7CisgICAgICAgICAgICB0ZXN0VHJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgndHJhY2snKVswXTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+Kiog
SW1wbGljaXQgbW9kZSBkaXNhYmxlZCBhbmQgdGhlIHJlZ2lvbnMgYXR0cmlidXRlIGlzIG51bGwg
KioiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLm1vZGUiLCAi
ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLnJl
Z2lvbnMiLCBudWxsKTsKKworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLm1vZGUgPSAiaGlk
ZGVuIjsKKyAgICAgICAgICAgIHJlZ2lvbnMgPSB0ZXN0VHJhY2sudHJhY2sucmVnaW9uczsKKwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIHJlZ2lvbnMgYXR0cmlidXRlIHNo
b3VsZCBiZSBhbiBlbXB0eSBUZXh0VHJhY2tSZWdpb25MaXN0ICoqIik7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlZ2lvbnMgIT0gbnVsbCIsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIsIDApOworCisgICAgICAgICAgICByZWdpb24gPSBuZXcg
VGV4dFRyYWNrUmVnaW9uKCk7CisgICAgICAgICAgICByZWdpb24uaWQgPSAiVGVzdElkIjsKKwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhl
IHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKiIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2siLCBudWxsKTsKKworICAgICAgICAgICAgdGVzdFRy
YWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj4qKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFRleHRU
cmFja1JlZ2lvbkxpc3Qgb2JqZWN0ICoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJl
Z2lvbnMubGVuZ3RoIiwgMSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0g
PT0gcmVnaW9uIiwgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0u
dHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrIiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiPGJyPioqIFRoZSB0cmFjayBhdHRyaWJ1dGUgc2hvdWxkIGNvcnJlY3RseSByZWZsZWN0
IHRoZSB0cmFjayB0byB3aGljaCB0aGUgcmVnaW9uIHdhcyBhZGRlZCB0byoqIik7CisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2siLCB0cnVl
KTsKKworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbiA9IG5ldyBUZXh0VHJhY2tSZWdpb24oKTsK
KyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24uaWQgPSByZWdpb24uaWQ7CisgICAgICAgICAgICB1
cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IDU5OworICAgICAgICAgICAgdXBkYXRlZFJl
Z2lvbi52aWV3cG9ydEFuY2hvclkgPSA2ODsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ucmVn
aW9uQW5jaG9yWCA9IDIwOworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JZ
ID0gMzA7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLmhlaWdodCA9IDU7CisgICAgICAgICAg
ICB1cGRhdGVkUmVnaW9uLndpZHRoID0gODc7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnNj
cm9sbCA9ICJ1cCI7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZGluZyBh
IHJlZ2lvbiB3aXRoIGFuIGV4aXN0aW5nIGlkIHNob3VsZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHJl
Z2lvbiAqKiIpOworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbih1cGRhdGVk
UmVnaW9uKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS52aWV3cG9ydEFu
Y2hvclgiLCB1cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWCk7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JZIiwgdXBkYXRlZFJlZ2lvbi52aWV3
cG9ydEFuY2hvclkpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLnJlZ2lv
bkFuY2hvclgiLCB1cGRhdGVkUmVnaW9uLnJlZ2lvbkFuY2hvclgpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb25zWzBdLnJlZ2lvbkFuY2hvclkiLCB1cGRhdGVkUmVnaW9uLnJlZ2lv
bkFuY2hvclkpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLmhlaWdodCIs
IHVwZGF0ZWRSZWdpb24uaGVpZ2h0KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9u
c1swXS53aWR0aCIsIHVwZGF0ZWRSZWdpb24ud2lkdGgpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWdpb25zWzBdLnNjcm9sbCIsIHVwZGF0ZWRSZWdpb24uc2Nyb2xsKTsKKworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdpb24iLCB0cnVlKTsK
KworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogQWRkaW5nIGFuIGV4aXN0aW5nIHJl
Z2lvbiBzaG91bGQgcmVzdWx0IGluIHRoZSByZW1vdmFsIG9mIHRoZSByZXNwZWN0aXZlIHJlZ2lv
biAqKiIpOworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIsIDApOworCisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGQgdGhlIHJlZ2lvbiBiYWNrIGFuZCBjaGVjayBp
ZiByZW1vdmVSZWdpb24oKSByZW1vdmVzIGl0IHByb3Blcmx5ICoqIik7CisgICAgICAgICAgICB0
ZXN0VHJhY2sudHJhY2suYWRkUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbnMubGVuZ3RoIiwgMSk7CisgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2sucmVt
b3ZlUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVu
Z3RoIiwgMCk7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEluIGNhc2UgdGhl
IHJlZ2lvbiBpcyBub3QgZm91bmQsIE5vdEZvdW5kRXJyb3Igc2hvdWxkIGJlIHRocm93biAqKiIp
OworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLnJlbW92
ZVJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZShlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUUo
MTA5ODE4KTogVXBkYXRlIHRlc3QgZm9yIG11bHRpcGxlIGluaXRpYWwgcmVnaW9ucyAoYWZ0ZXIg
cGFyc2luZyBpcyBzdXBwb3J0ZWQpLgorCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwor
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAg
IDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdCgpIj4KKyAgICAgICAgPHA+VGVz
dHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJhdG9yW10s
IGFuZCBnZXRSZWdpb25CeUlkKCk8L3A+CisgICAgICAgIDx2aWRlbz4KKyAgICAgICAgICAgIDx0
cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0
dCI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194916</attachid>
            <date>2013-03-25 13:46:23 -0700</date>
            <delta_ts>2013-03-25 14:22:06 -0700</delta_ts>
            <desc>Refined patch</desc>
            <filename>bug-109820-20130325224206.patch</filename>
            <type>text/plain</type>
            <size>27730</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uZDhiMGU2ODU4OWVjZWRhYzgyMjQyODQ5ZDM0N2Rj
ZTM3NjAyOGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTI1ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0VHJhY2sg
RXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qg
YW5kIGV4dGVuZGVkIFRleHRUcmFjayB3aXRoCisgICAgICAgIG1ldGhvZHMgcmVxdWlyZWQgZm9y
IHByb3BlciBpbnRlcmFjdGlvbiB3aXRoIFRleHRUcmFja1JlZ2lvbiBvYmplY3RzLgorCisgICAg
ICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxp
c3QuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBmaWxlcyBmb3IgcHJvcGVy
IGJ1aWxkaW5nIG9mIFRleHRUcmFja1JlZ2lvbkxpc3QuCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZVRl
eHRUcmFja1JlZ2lvbkxpc3QpOiBNZXRob2QgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhY2ssIGlmIGl0IGRv
ZXMgZXhpc3QKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVnaW9ucyk6IEdldHRlciBmb3IgdGhlIHJlZ2lvbnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOiBNZXRob2QgZm9yIGFkZGluZyBhIHJlZ2lvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6cmVtb3ZlUmVnaW9uKTogTWV0aG9kIGZvciByZW1v
dmluZyBhIHJlZ2lvbi4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbDogQWRkZWQgbWV0aG9kcyBzcGVjaWZpYyBmb3IgcmVnaW9uIGhhbmRsaW5n
LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKTogSW5pdGlhbGl6ZWQgdGhl
IHRyYWNrIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6c2V0VHJhY2spOiBBZGRlZCBpbnRlcm5hbCBzZXR0ZXIgZm9yIHRoZSB0cmFjayBhdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24pOiBNZXRob2QgdG8gY29weSB0aGUgcGFyYW1l
dGVycworICAgICAgICBmcm9tIGEgZGlmZmVyZW50IHJlZ2lvbiBvYmplY3QuCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaDogQWRkZWQgdHJhY2sgbWVtYmVyIHZhcmlhYmxl
IGFuZCBjb3B5IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6dHJh
Y2spOiBHZXR0ZXIgcmV0cmlldmVzIG5vdyB0aGUgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAo
VGV4dFRyYWNrUmVnaW9uKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxp
c3QuY3BwOiBJbXBsZW1lbnRlZCBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBJREwuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OlRleHRU
cmFja1JlZ2lvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbkxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dFRyYWNrUmVn
aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6flRleHRUcmFja1JlZ2lv
bkxpc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6IElE
TCBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEzLTAzLTI0ICBLb25kYXBhbGx5
S2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEFk
ZCBzdXBwb3J0IHRvIGNoZWNrIGZvciBjdXJyZW50IERyYXdhYmxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDhiYjY0ZDM0MWM3ZDQ4MzhhNDU5ZTgxN2NlZmMyN2YyYzM0YWUzNzIuLjJhZjhkYzgzNjAx
Mjc2N2I1ZWVjZDgyNzViYWE0NTViM2ZhYWJhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUwMyw2
ICs1MDMsNyBAQAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb25MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwnLApAQCAtMzYzMiw2ICszNjMzLDggQEAKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmgnLAorICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL1RyYWNrQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGJiNTY5OGNhZTcwMWIwOTlkNjgw
YTUzZDVmMjhiYjM1ZTRjZWIxOWQuLjRkZDEyNGRiYzlmOWEzNGNkMGJmOTMyNWFjMGVmMWI0Yjk5
NjdkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dFRy
YWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tSZWdpb25MaXN0LmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTk3LDYgKzk4LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKCkKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYg
bGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBU
cmFja0Jhc2U6OlRleHRUcmFjaykKICAgICAsIG1fY3VlcygwKQorI2lmIEVOQUJMRShXRUJWVFRf
UkVHSU9OUykKKyAgICAsIG1fcmVnaW9ucygwKQorI2VuZGlmCiAgICAgLCBtX21lZGlhRWxlbWVu
dCgwKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCkBA
IC0xMTksNiArMTIzLDkgQEAgVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKIAogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY3Vlcy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIG1f
Y3Vlcy0+aXRlbShpKS0+c2V0VHJhY2soMCk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX3JlZ2lvbnMtPmxlbmd0aCgpOyArK2kpCisgICAgICAgICAgICBtX3JlZ2lvbnMtPml0
ZW0oaSktPnNldFRyYWNrKDApOwogICAgIH0KICAgICBjbGVhckNsaWVudCgpOwogfQpAQCAtMjcy
LDYgKzI3OSw4MCBAQCB2b2lkIFRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3Vl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1
ZSh0aGlzLCBjdWUpOwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VC
VlRUX1JFR0lPTlMpCitUZXh0VHJhY2tSZWdpb25MaXN0KiBUZXh0VHJhY2s6OmVuc3VyZVRleHRU
cmFja1JlZ2lvbkxpc3QoKQoreworICAgIGlmICghbV9yZWdpb25zKQorICAgICAgICBtX3JlZ2lv
bnMgPSBUZXh0VHJhY2tSZWdpb25MaXN0OjpjcmVhdGUoKTsKKworICAgIHJldHVybiBtX3JlZ2lv
bnMuZ2V0KCk7Cit9CisKK1RleHRUcmFja1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6cmVnaW9ucygp
Cit7CisgICAgLy8gSWYgdGhlIHRleHQgdHJhY2sgbW9kZSBvZiB0aGUgdGV4dCB0cmFjayB0aGF0
IHRoZSBUZXh0VHJhY2sgb2JqZWN0CisgICAgLy8gcmVwcmVzZW50cyBpcyBub3QgdGhlIHRleHQg
dHJhY2sgZGlzYWJsZWQgbW9kZSwgdGhlbiB0aGUgcmVnaW9ucworICAgIC8vIGF0dHJpYnV0ZSBt
dXN0IHJldHVybiBhIGxpdmUgVGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgdGhhdCByZXByZXNl
bnRzCisgICAgLy8gdGhlIHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zIG9mIHRoZSB0ZXh0IHRy
YWNrLiBPdGhlcndpc2UsIGl0IG11c3QKKyAgICAvLyByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmpl
Y3QgaXMgcmV0dXJuZWQsIHRoZSBzYW1lIG9iamVjdCBtdXN0IGJlIHJldHVybmVkCisgICAgLy8g
ZWFjaCB0aW1lLgorICAgIGlmIChtX21vZGUgIT0gZGlzYWJsZWRLZXl3b3JkKCkpCisgICAgICAg
IHJldHVybiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7CisKKyAgICByZXR1cm4gMDsKK30K
Kwordm9pZCBUZXh0VHJhY2s6OmFkZFJlZ2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4g
cHJwUmVnaW9uKQoreworICAgIGlmICghcHJwUmVnaW9uKQorICAgICAgICByZXR1cm47CisKKyAg
ICBSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiByZWdpb24gPSBwcnBSZWdpb247CisgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCogcmVnaW9uTGlzdCA9IGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsK
KworICAgIC8vIDEuIElmIHRoZSBnaXZlbiByZWdpb24gaXMgaW4gYSB0ZXh0IHRyYWNrIGxpc3Qg
b2YgcmVnaW9ucywgdGhlbiByZW1vdmUKKyAgICAvLyByZWdpb24gZnJvbSB0aGF0IHRleHQgdHJh
Y2sgbGlzdCBvZiByZWdpb25zLgorICAgIFRleHRUcmFjayogcmVnaW9uVHJhY2sgPSByZWdpb24t
PnRyYWNrKCk7CisgICAgaWYgKHJlZ2lvblRyYWNrICYmIHJlZ2lvblRyYWNrICE9IHRoaXMpCisg
ICAgICAgIHJlZ2lvblRyYWNrLT5yZW1vdmVSZWdpb24ocmVnaW9uLmdldCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKworICAgIC8vIDIuIElmIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0
J3MgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMgY29udGFpbnMKKyAgICAvLyBhIHJlZ2lvbiB3
aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgYXMgcmVnaW9uIHJlcGxhY2UgdGhlIHZhbHVlcyBvZiB0
aGF0CisgICAgLy8gcmVnaW9uJ3Mgd2lkdGgsIGhlaWdodCwgYW5jaG9yIHBvaW50LCB2aWV3cG9y
dCBhbmNob3IgcG9pbnQgYW5kIHNjcm9sbAorICAgIC8vIGF0dHJpYnV0ZXMgd2l0aCB0aG9zZSBv
ZiByZWdpb24uCisgICAgVGV4dFRyYWNrUmVnaW9uKiBleGlzdGluZ1JlZ2lvbiA9IHJlZ2lvbkxp
c3QtPmdldFJlZ2lvbkJ5SWQocmVnaW9uLT5pZCgpKTsKKyAgICBpZiAoZXhpc3RpbmdSZWdpb24p
IHsKKyAgICAgICAgZXhpc3RpbmdSZWdpb24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJl
Z2lvbi5nZXQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2U6
IGFkZCByZWdpb24gdG8gdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNr
CisgICAgLy8gbGlzdCBvZiByZWdpb25zLgorICAgIHJlZ2lvbi0+c2V0VHJhY2sodGhpcyk7Cisg
ICAgcmVnaW9uTGlzdC0+YWRkKHJlZ2lvbik7Cit9CisKK3ZvaWQgVGV4dFRyYWNrOjpyZW1vdmVS
ZWdpb24oVGV4dFRyYWNrUmVnaW9uKiByZWdpb24sIEV4Y2VwdGlvbkNvZGUgJmVjKQoreworICAg
IGlmICghcmVnaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4g
cmVnaW9uIGlzIG5vdCBjdXJyZW50bHkgbGlzdGVkIGluIHRoZSBtZXRob2QncyBUZXh0VHJhY2sK
KyAgICAvLyBvYmplY3QncyB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucywgdGhlbiB0aHJvdyBh
IE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmIChyZWdpb24tPnRyYWNrKCkgIT0gdGhp
cykgeworICAgICAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBpZiAoIW1fcmVnaW9ucyB8fCAhbV9yZWdpb25zLT5yZW1vdmUocmVnaW9uKSkgewor
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgcmVnaW9uLT5zZXRUcmFjaygwKTsKK30KKyNlbmRpZgorCiB2b2lkIFRleHRUcmFjazo6
Y3VlV2lsbENoYW5nZShUZXh0VHJhY2tDdWUqIGN1ZSkKIHsKICAgICBpZiAoIW1fY2xpZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKaW5kZXggOTI5MDRlMGE0YzYwNTQxZDc0
MTc0YTA0ZTYzNDA0NzQwOWU3N2I0YS4uYzFjMTExOWM5NzI4N2ZjM2MxZWYxNzQ5MGIzZmQ4MmJm
YWM1OGQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC00NSw2ICs0
NSwxMCBAQCBjbGFzcyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgVGV4dFRyYWNrOwogY2xhc3Mg
VGV4dFRyYWNrQ3VlOwogY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKyNpZiBFTkFCTEUoV0VCVlRU
X1JFR0lPTlMpCitjbGFzcyBUZXh0VHJhY2tSZWdpb247CitjbGFzcyBUZXh0VHJhY2tSZWdpb25M
aXN0OworI2VuZGlmCiAKIGNsYXNzIFRleHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CkBAIC0xMDks
NiArMTEzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCBoYXNDdWUoVGV4dFRyYWNrQ3VlKik7CiAKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKKyAgICBUZXh0VHJh
Y2tSZWdpb25MaXN0KiByZWdpb25zKCk7CisgICAgdm9pZCBhZGRSZWdpb24oUGFzc1JlZlB0cjxU
ZXh0VHJhY2tSZWdpb24+KTsKKyAgICB2b2lkIHJlbW92ZVJlZ2lvbihUZXh0VHJhY2tSZWdpb24q
LCBFeGNlcHRpb25Db2RlJik7CisjZW5kaWYKKwogICAgIHZvaWQgY3VlV2lsbENoYW5nZShUZXh0
VHJhY2tDdWUqKTsKICAgICB2b2lkIGN1ZURpZENoYW5nZShUZXh0VHJhY2tDdWUqKTsKIApAQCAt
MTQ3LDcgKzE1NywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+
IG1fY3VlczsKIAogcHJpdmF0ZToKLSAgICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJh
Y2tDdWVMaXN0KCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JF
R0lPTlMpCisgICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlz
dCgpOworICAgIFJlZlB0cjxUZXh0VHJhY2tSZWdpb25MaXN0PiBtX3JlZ2lvbnM7CisjZW5kaWYK
IAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCBUZXh0VHJh
Y2sqIHB1YmxpY1RyYWNrKCkgT1ZFUlJJREUgeyByZXR1cm4gdGhpczsgfQpAQCAtMTU1LDYgKzE2
OCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBtX3BsYXRmb3Jt
VGV4dFRyYWNrOwogI2VuZGlmCiAKKyAgICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJh
Y2tDdWVMaXN0KCk7CisKICAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKICAg
ICBBdG9taWNTdHJpbmcgbV9raW5kOwogICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCmluZGV4IDc1ZGE2YjMwNjQ5MzU1MTg0NzEy
NDY3Nzc5ZDVhODQ5MDIxZTRhMmYuLmRhMzU1ZTJmY2Y4NDgzOWJhZDhjZTAyNzU3YjhmZjliYjZh
MTVmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTQ1LDYg
KzQ1LDEzIEBACiAgICAgdm9pZCByZW1vdmVDdWUoaW4gVGV4dFRyYWNrQ3VlIGN1ZSkKICAgICAg
ICAgcmFpc2VzIChET01FeGNlcHRpb24pOwogCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCVlRUX1JF
R0lPTlMpICYmIEVOQUJMRV9XRUJWVFRfUkVHSU9OUworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBU
ZXh0VHJhY2tSZWdpb25MaXN0IHJlZ2lvbnM7CisgICAgdm9pZCBhZGRSZWdpb24oaW4gVGV4dFRy
YWNrUmVnaW9uIHJlZ2lvbik7CisgICAgdm9pZCByZW1vdmVSZWdpb24oaW4gVGV4dFRyYWNrUmVn
aW9uIHJlZ2lvbikKKyAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24pOworI2VuZGlmCisKICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3Rl
bmVyIGxpc3RlbmVyLCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrUmVnaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVn
aW9uLmNwcAppbmRleCA2NjU4ODk4MTAwOGFlY2M2MGY5ZGViY2NiYTYzMzQ1M2M3NTMxNmFlLi41
Y2E3MmQzODg0NzExMjg1MTI3YjQ1NDlhYWI1MDBhMTM0ZjBhMDJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwCkBAIC01LDcgKzUsNyBAQAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQogICogbWV0OgogICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgZWMgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
ICAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KICAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKICAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKQEAgLTU2LDYgKzU2LDcgQEAgVGV4
dFRyYWNrUmVnaW9uOjpUZXh0VHJhY2tSZWdpb24oKQogICAgICwgbV9yZWdpb25BbmNob3IoRmxv
YXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0QW5jaG9yUG9pbnRZKSkKICAgICAs
IG1fdmlld3BvcnRBbmNob3IoRmxvYXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0
QW5jaG9yUG9pbnRZKSkKICAgICAsIG1fc2Nyb2xsKGRlZmF1bHRTY3JvbGwpCisgICAgLCBtX3Ry
YWNrKDApCiB7CiB9CiAKQEAgLTYzLDYgKzY0LDExIEBAIFRleHRUcmFja1JlZ2lvbjo6flRleHRU
cmFja1JlZ2lvbigpCiB7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRUcmFjayhUZXh0
VHJhY2sqIHRyYWNrKQoreworICAgIG1fdHJhY2sgPSB0cmFjazsKK30KKwogdm9pZCBUZXh0VHJh
Y2tSZWdpb246OnNldElkKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgbV9pZCA9IGlkOwpAQCAt
MTc1LDYgKzE4MSwyMCBAQCB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fc2Nyb2xsID0gdmFs
dWUgPT0gdXBTY3JvbGxWYWx1ZUtleXdvcmQ7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjp1
cGRhdGVQYXJhbWV0ZXJzRnJvbVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qIHJlZ2lvbikKK3sKKyAg
ICBtX2hlaWdodEluTGluZXMgPSByZWdpb24tPmhlaWdodCgpOworICAgIG1fd2lkdGggPSByZWdp
b24tPndpZHRoKCk7CisKKyAgICBtX3JlZ2lvbkFuY2hvciA9IEZsb2F0UG9pbnQocmVnaW9uLT5y
ZWdpb25BbmNob3JYKCksIHJlZ2lvbi0+cmVnaW9uQW5jaG9yWSgpKTsKKyAgICBtX3ZpZXdwb3J0
QW5jaG9yID0gRmxvYXRQb2ludChyZWdpb24tPnZpZXdwb3J0QW5jaG9yWCgpLCByZWdpb24tPnZp
ZXdwb3J0QW5jaG9yWSgpKTsKKworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNldFNj
cm9sbChyZWdpb24tPnNjcm9sbCgpLCBlYyk7CisKKyAgICBBU1NFUlQoIWVjKTsKK30KKwogdm9p
ZCBUZXh0VHJhY2tSZWdpb246OnNldFJlZ2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgaW5wdXQp
CiB7CiAgICAgLy8gRklYTUUoMTA5ODE4KTogUGFyc2UgcmVnaW9uIGhlYWRlciBtZXRhZGF0YS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oCmluZGV4IDllYjNj
YjU5MGNlN2QyN2ZhMzkyNjJiMDczYmEyMjUxODJiOWRmMDAuLjNmM2Q0M2VmMTljMzk3MTU3NTZj
YzhkN2Y3MzU0MTgxNDQwYjI2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrUmVnaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tSZWdpb24uaApAQCAtNDksNyArNDksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5U
ZXh0VHJhY2tSZWdpb24oKTsKIAotICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdCB7IHJldHVy
biAwOyB9CisgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0K
KyAgICB2b2lkIHNldFRyYWNrKFRleHRUcmFjayopOwogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHNldElkKGNvbnN0IFN0cmluZyYpOwpA
QCAtNzUsNiArNzYsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgQXRvbWljU3RyaW5nIHNjcm9sbCgp
IGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsKGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKIAorICAgIHZvaWQgdXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24oVGV4dFRyYWNr
UmVnaW9uKik7CisKICAgICBjb25zdCBTdHJpbmcmIHJlZ2lvblNldHRpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0UmVnaW9uU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJik7CiAKQEAgLTEwMSw2ICsxMDQsMTIgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1f
dmlld3BvcnRBbmNob3I7CiAKICAgICBib29sIG1fc2Nyb2xsOworCisgICAgLy8gVGhlIG1lbWJl
ciB2YXJpYWJsZSB0cmFjayBjYW4gYmUgYSByYXcgcG9pbnRlciBhcyBpdCB3aWxsIG5ldmVyCisg
ICAgLy8gcmVmZXJlbmNlIGEgZGVzdHJveWVkIFRleHRUcmFjaywgYXMgdGhpcyBtZW1iZXIgdmFy
aWFibGUKKyAgICAvLyBpcyBjbGVhcmVkIGluIHRoZSBUZXh0VHJhY2sgZGVzdHJ1Y3RvciBhbmQg
aXQgaXMgZ2VuZXJhbGx5CisgICAgLy8gc2V0L3Jlc2V0IHdpdGhpbiB0aGUgYWRkUmVnaW9uIGFu
ZCByZW1vdmVSZWdpb24gbWV0aG9kcy4KKyAgICBUZXh0VHJhY2sqIG1fdHJhY2s7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb25MaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42M2M2MmRhYzM0NjA1ZTg4M2MwNWU0
MDlhNTMwOTczZDk2OWNlMmRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoV0VCVlRUX1JFR0lPTlMpCisKKyNpbmNsdWRlICJUZXh0VHJhY2tSZWdpb25MaXN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRyYWNrUmVnaW9uTGlzdDo6VGV4dFRyYWNrUmVn
aW9uTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcgVGV4dFRyYWNrUmVnaW9uTGlzdDo6bGVu
Z3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0LnNpemUoKTsKK30KKworVGV4dFRyYWNr
UmVnaW9uKiBUZXh0VHJhY2tSZWdpb25MaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAor
eworICAgIGlmIChpbmRleCA8IG1fbGlzdC5zaXplKCkpCisgICAgICAgIHJldHVybiBtX2xpc3Rb
aW5kZXhdLmdldCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK1RleHRUcmFja1JlZ2lvbiogVGV4
dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZChjb25zdCBTdHJpbmcmIGlkKSBjb25zdAor
eworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9saXN0LnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmIChtX2xpc3RbaV0tPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gbV9saXN0
W2ldLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2tSZWdp
b25MaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb24+IHJlZ2lvbikKK3sKKyAgICBt
X2xpc3QuYXBwZW5kKHJlZ2lvbik7Cit9CisKK2Jvb2wgVGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVt
b3ZlKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQoreworICAgIHNpemVfdCBpbmRleCA9IG1fbGlz
dC5maW5kKHJlZ2lvbik7CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBtX2xpc3QucmVtb3ZlKGluZGV4KTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwordm9pZCBUZXh0VHJhY2tSZWdpb25MaXN0OjpjbGVhcigpCit7CisgICAgbV9saXN0LmNs
ZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3
MGUzZTU2ZWM3MzViN2Q5YzM2MDU3MDYwMjljNzMwOTZhYTBjMWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0VHJhY2tSZWdpb25MaXN0X2gKKyNkZWZp
bmUgVGV4dFRyYWNrUmVnaW9uTGlzdF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVO
QUJMRShXRUJWVFRfUkVHSU9OUykKKworI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4
dFRyYWNrUmVnaW9uTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja1JlZ2lvbkxpc3Q+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb25MaXN0PiBj
cmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0VHJhY2tSZWdp
b25MaXN0KCkpOworICAgIH0KKworICAgIH5UZXh0VHJhY2tSZWdpb25MaXN0KCkgeyB9CisKKyAg
ICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OworCisgICAgVGV4dFRyYWNrUmVnaW9uKiBp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBUZXh0VHJhY2tSZWdpb24qIGdldFJlZ2lv
bkJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAgICB2b2lkIGFkZChQYXNzUmVmUHRyPFRl
eHRUcmFja1JlZ2lvbj4pOworICAgIGJvb2wgcmVtb3ZlKFRleHRUcmFja1JlZ2lvbiopOworCitw
cml2YXRlOgorICAgIFRleHRUcmFja1JlZ2lvbkxpc3QoKTsKKyAgICB2b2lkIGNsZWFyKCk7CisK
KyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gPiBtX2xpc3Q7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGNhNjI5
ODY5NDI4OGZhYWFkODg0MTA5NzM0YjNhYzFkN2JmZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmlkbApAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0aW9uYWw9VklERU9fVFJBQ0sgJiBXRUJW
VFRfUkVHSU9OUywKKyAgICBWOEVuYWJsZWRBdFJ1bnRpbWU9d2Via2l0VmlkZW9UcmFjaywKKyAg
ICBJbmRleGVkR2V0dGVyLAorICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKK10gaW50ZXJm
YWNlIFRleHRUcmFja1JlZ2lvbkxpc3QgeworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKKyAgICBUZXh0VHJhY2tSZWdpb24gaXRlbShpbiB1bnNpZ25lZCBsb25n
IGluZGV4KTsKKyAgICBUZXh0VHJhY2tSZWdpb24gZ2V0UmVnaW9uQnlJZChpbiBET01TdHJpbmcg
aWQpOworfTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IGMwMGVjOGMxNDk0Y2ExMmMxODI1NDMwNTlkNDg4ODBjOGNiM2Vh
ZDguLmYyNTM5MmI0NThjMWEyZmM4NTZmYTNkMGFlOTEwNjgyNmE4YTJlMTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMy0wMy0yNSAgVmljdG9yIENhcmJ1bmUgIDx2Y2FyYnVuZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgVGV4dFRyYWNrIEV4dGVuc2lvbiBmb3IgV2ViVlRUIFJlZ2lvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTgyMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2st
cmVnaW9uLWxpc3QuaHRtbDogQWRkZWQuCisKIDIwMTMtMDMtMjQgIENocmlzIEZsZWl6YWNoICA8
Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQ3Jhc2ggaW4gV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVNwaW5CdXR0b246OmluY3JlbWVudEJ1dHRvbigpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Rl
eHQtdHJhY2stcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAxM2M3NDQzYzdk
N2YwZDYxMjM2MGViZGY5NjhlM2EyNjMwYjRhNmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQxIEBACitUZXN0cyBUZXh0VHJhY2tSZWdpb25MaXN0IGZ1
bmN0aW9uYWxpdHk6IGxlbmd0aCwgb3BlcmF0b3JbXSwgYW5kIGdldFJlZ2lvbkJ5SWQoKQorCisK
KyoqIEltcGxpY2l0IG1vZGUgZGlzYWJsZWQgYW5kIHRoZSByZWdpb25zIGF0dHJpYnV0ZSBpcyBu
dWxsICoqCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sK
K0VYUEVDVEVEICh0ZXN0VHJhY2sudHJhY2sucmVnaW9ucyA9PSAnbnVsbCcpIE9LCisKKyoqIFRo
ZSByZWdpb25zIGF0dHJpYnV0ZSBzaG91bGQgYmUgYW4gZW1wdHkgVGV4dFRyYWNrUmVnaW9uTGlz
dCAqKgorRVhQRUNURUQgKHJlZ2lvbnMgIT0gbnVsbCA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAo
cmVnaW9ucy5sZW5ndGggPT0gJzAnKSBPSworCisqKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUg
dHJhY2sgYXR0cmlidXRlIG9mIHRoZSByZWdpb24gaXMgbnVsbCoqCitFWFBFQ1RFRCAocmVnaW9u
LnRyYWNrID09ICdudWxsJykgT0sKKworKiogVGhlIGFkZFJlZ2lvbigpIG1ldGhvZCBwcm9wZXJs
eSB1cGRhdGVzIHRoZSBUZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCAqKgorRVhQRUNURUQgKHJl
Z2lvbnMubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdID09IHJlZ2lvbiA9
PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS50cmFjayA9PSB0ZXN0VHJhY2sudHJh
Y2sgPT0gJ3RydWUnKSBPSworCisqKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0
bHkgcmVmbGVjdCB0aGUgdHJhY2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKgor
RVhQRUNURUQgKHJlZ2lvbi50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2sgPT0gJ3RydWUnKSBPSwor
CisqKiBBZGRpbmcgYSByZWdpb24gd2l0aCBhbiBleGlzdGluZyBpZCBzaG91bGQgdXBkYXRlIHRo
ZSBleGlzdGluZyByZWdpb24gKioKK0VYUEVDVEVEIChyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9y
WCA9PSAnNTknKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JZID09ICc2
OCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS5yZWdpb25BbmNob3JYID09ICcyMCcpIE9LCitF
WFBFQ1RFRCAocmVnaW9uc1swXS5yZWdpb25BbmNob3JZID09ICczMCcpIE9LCitFWFBFQ1RFRCAo
cmVnaW9uc1swXS5oZWlnaHQgPT0gJzUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ud2lkdGgg
PT0gJzg3JykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdLnNjcm9sbCA9PSAndXAnKSBPSworRVhQ
RUNURUQgKHJlZ2lvbnNbMF0gIT0gdXBkYXRlZFJlZ2lvbiA9PSAndHJ1ZScpIE9LCisKKyoqIEFk
ZCB0aGUgcmVnaW9uIGJhY2sgYW5kIGNoZWNrIGlmIHJlbW92ZVJlZ2lvbigpIHJlbW92ZXMgaXQg
cHJvcGVybHkgKioKK0VYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RF
RCAocmVnaW9ucy5sZW5ndGggPT0gJzAnKSBPSworCisqKiBJbiBjYXNlIHRoZSByZWdpb24gaXMg
bm90IGZvdW5kLCBOb3RGb3VuZEVycm9yIHNob3VsZCBiZSB0aHJvd24gKioKK0Vycm9yOiBOb3RG
b3VuZEVycm9yOiBET00gRXhjZXB0aW9uIDgKKworRU5EIE9GIFRFU1QKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24t
bGlzdC5odG1sIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10
cmFjay1yZWdpb24tbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmZjA2YWI1OGNlNzQ4NTJkZTI1NjA3
NTM3NTBlZTU2YmQ3NTQxNWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0Lmh0bWwKQEAgLTAsMCAr
MSw5OCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vbWVkaWEtZmlsZS5qcz48L3Nj
cmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vLi4vdmlkZW8tdGVzdC5qcz48L3NjcmlwdD4K
KyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgdmFyIHRlc3RUcmFjazsKKyAgICAgICAgdmFyIHJl
Z2lvbjsKKyAgICAgICAgdmFyIHJlZ2lvbnM7CisgICAgICAgIHZhciB1cGRhdGVkUmVnaW9uOwor
CisgICAgICAgIGZ1bmN0aW9uIHN0YXJ0VGVzdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRl
c3RUcmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0cmFjaycpWzBdOworCisg
ICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBJbXBsaWNpdCBtb2RlIGRpc2FibGVkIGFu
ZCB0aGUgcmVnaW9ucyBhdHRyaWJ1dGUgaXMgbnVsbCAqKiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJ0ZXN0VHJhY2sudHJhY2subW9kZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ0ZXN0VHJhY2sudHJhY2sucmVnaW9ucyIsIG51bGwpOworCisgICAgICAg
ICAgICB0ZXN0VHJhY2sudHJhY2subW9kZSA9ICJoaWRkZW4iOworICAgICAgICAgICAgcmVnaW9u
cyA9IHRlc3RUcmFjay50cmFjay5yZWdpb25zOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj4qKiBUaGUgcmVnaW9ucyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVtcHR5IFRleHRUcmFj
a1JlZ2lvbkxpc3QgKioiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9ucyAhPSBu
dWxsIiwgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwg
MCk7CisKKyAgICAgICAgICAgIHJlZ2lvbiA9IG5ldyBUZXh0VHJhY2tSZWdpb24oKTsKKyAgICAg
ICAgICAgIHJlZ2lvbi5pZCA9ICJUZXN0SWQiOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
Ijxicj4qKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgdHJhY2sgYXR0cmlidXRlIG9mIHRoZSBy
ZWdpb24gaXMgbnVsbCoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi50cmFj
ayIsIG51bGwpOworCisgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2suYWRkUmVnaW9uKHJlZ2lv
bik7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSBhZGRSZWdpb24oKSBt
ZXRob2QgcHJvcGVybHkgdXBkYXRlcyB0aGUgVGV4dFRyYWNrUmVnaW9uTGlzdCBvYmplY3QgKioi
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAxKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXSA9PSByZWdpb24iLCB0cnVlKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2si
LCB0cnVlKTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIHRyYWNrIGF0
dHJpYnV0ZSBzaG91bGQgY29ycmVjdGx5IHJlZmxlY3QgdGhlIHRyYWNrIHRvIHdoaWNoIHRoZSBy
ZWdpb24gd2FzIGFkZGVkIHRvKioiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9u
LnRyYWNrID09IHRlc3RUcmFjay50cmFjayIsIHRydWUpOworCisgICAgICAgICAgICB1cGRhdGVk
UmVnaW9uID0gbmV3IFRleHRUcmFja1JlZ2lvbigpOworICAgICAgICAgICAgdXBkYXRlZFJlZ2lv
bi5pZCA9IHJlZ2lvbi5pZDsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24udmlld3BvcnRBbmNo
b3JYID0gNTk7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWSA9IDY4
OworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JYID0gMjA7CisgICAgICAg
ICAgICB1cGRhdGVkUmVnaW9uLnJlZ2lvbkFuY2hvclkgPSAzMDsKKyAgICAgICAgICAgIHVwZGF0
ZWRSZWdpb24uaGVpZ2h0ID0gNTsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ud2lkdGggPSA4
NzsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24uc2Nyb2xsID0gInVwIjsKKworICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+KiogQWRkaW5nIGEgcmVnaW9uIHdpdGggYW4gZXhpc3Rpbmcg
aWQgc2hvdWxkIHVwZGF0ZSB0aGUgZXhpc3RpbmcgcmVnaW9uICoqIik7CisgICAgICAgICAgICB0
ZXN0VHJhY2sudHJhY2suYWRkUmVnaW9uKHVwZGF0ZWRSZWdpb24pOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9yWCIsIHVwZGF0ZWRSZWdpb24udmll
d3BvcnRBbmNob3JYKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS52aWV3
cG9ydEFuY2hvclkiLCB1cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWSk7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0ucmVnaW9uQW5jaG9yWCIsIHVwZGF0ZWRSZWdpb24u
cmVnaW9uQW5jaG9yWCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0ucmVn
aW9uQW5jaG9yWSIsIHVwZGF0ZWRSZWdpb24ucmVnaW9uQW5jaG9yWSk7CisgICAgICAgICAgICB0
ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0uaGVpZ2h0IiwgdXBkYXRlZFJlZ2lvbi5oZWlnaHQpOwor
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLndpZHRoIiwgdXBkYXRlZFJlZ2lv
bi53aWR0aCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0uc2Nyb2xsIiwg
dXBkYXRlZFJlZ2lvbi5zY3JvbGwpOworCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lv
bnNbMF0gIT0gdXBkYXRlZFJlZ2lvbiIsIHRydWUpOworCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj4qKiBBZGQgdGhlIHJlZ2lvbiBiYWNrIGFuZCBjaGVjayBpZiByZW1vdmVSZWdpb24o
KSByZW1vdmVzIGl0IHByb3Blcmx5ICoqIik7CisgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2su
YWRkUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVu
Z3RoIiwgMSk7CisgICAgICAgICAgICB0ZXN0VHJhY2sudHJhY2sucmVtb3ZlUmVnaW9uKHJlZ2lv
bik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnMubGVuZ3RoIiwgMCk7CisKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEluIGNhc2UgdGhlIHJlZ2lvbiBpcyBub3Qg
Zm91bmQsIE5vdEZvdW5kRXJyb3Igc2hvdWxkIGJlIHRocm93biAqKiIpOworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLnJlbW92ZVJlZ2lvbihyZWdpb24p
OworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZShl
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRklYTUUoMTA5ODE4KTogVXBkYXRl
IHRlc3QgZm9yIG11bHRpcGxlIGluaXRpYWwgcmVnaW9ucyAoYWZ0ZXIgcGFyc2luZyBpcyBzdXBw
b3J0ZWQpLgorCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgZW5k
VGVzdCgpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0V2l0aERlbGF5
KCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0VGltZW91dChzdGFydFRlc3QsIDUwMCk7Cisg
ICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9h
ZD0ic3RhcnRUZXN0V2l0aERlbGF5KCkiPgorICAgICAgICA8cD5UZXN0cyBUZXh0VHJhY2tSZWdp
b25MaXN0IGZ1bmN0aW9uYWxpdHk6IGxlbmd0aCwgb3BlcmF0b3JbXSwgYW5kIGdldFJlZ2lvbkJ5
SWQoKTwvcD4KKyAgICAgICAgPHZpZGVvPgorICAgICAgICAgICAgPHRyYWNrIGlkPSJ0ZXN0VHJh
Y2siIHNyYz0iY2FwdGlvbnMtd2VidnR0L2NhcHRpb25zLWZhc3QudnR0Ij4KKyAgICAgICAgPC92
aWRlbz4KKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194925</attachid>
            <date>2013-03-25 14:22:14 -0700</date>
            <delta_ts>2013-03-25 15:33:40 -0700</delta_ts>
            <desc>Proper guard</desc>
            <filename>bug-109820-20130325231756.patch</filename>
            <type>text/plain</type>
            <size>27765</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uZDhiMGU2ODU4OWVjZWRhYzgyMjQyODQ5ZDM0N2Rj
ZTM3NjAyOGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTI1ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0VHJhY2sg
RXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50ZWQgdGhlIFRleHRUcmFja1JlZ2lvbkxpc3Qg
YW5kIGV4dGVuZGVkIFRleHRUcmFjayB3aXRoCisgICAgICAgIG1ldGhvZHMgcmVxdWlyZWQgZm9y
IHByb3BlciBpbnRlcmFjdGlvbiB3aXRoIFRleHRUcmFja1JlZ2lvbiBvYmplY3RzLgorCisgICAg
ICAgIFRlc3Q6IG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxp
c3QuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOiBBZGRlZCBmaWxlcyBmb3IgcHJvcGVy
IGJ1aWxkaW5nIG9mIFRleHRUcmFja1JlZ2lvbkxpc3QuCisgICAgICAgICogaHRtbC90cmFjay9U
ZXh0VHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmVuc3VyZVRl
eHRUcmFja1JlZ2lvbkxpc3QpOiBNZXRob2QgZm9yIGNyZWF0aW5nIGEKKyAgICAgICAgVGV4dFRy
YWNrUmVnaW9uTGlzdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdHJhY2ssIGlmIGl0IGRv
ZXMgZXhpc3QKKyAgICAgICAgYWxyZWFkeS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6
cmVnaW9ucyk6IEdldHRlciBmb3IgdGhlIHJlZ2lvbnMgb2JqZWN0LgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrOjphZGRSZWdpb24pOiBNZXRob2QgZm9yIGFkZGluZyBhIHJlZ2lvbi4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6cmVtb3ZlUmVnaW9uKTogTWV0aG9kIGZvciByZW1v
dmluZyBhIHJlZ2lvbi4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFjay5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvdHJhY2sv
VGV4dFRyYWNrLmlkbDogQWRkZWQgbWV0aG9kcyBzcGVjaWZpYyBmb3IgcmVnaW9uIGhhbmRsaW5n
LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6VGV4dFRyYWNrUmVnaW9uKTogSW5pdGlhbGl6ZWQgdGhl
IHRyYWNrIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6c2V0VHJhY2spOiBBZGRlZCBpbnRlcm5hbCBzZXR0ZXIgZm9yIHRoZSB0cmFjayBhdHRyaWJ1
dGUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lv
bjo6dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24pOiBNZXRob2QgdG8gY29weSB0aGUgcGFyYW1l
dGVycworICAgICAgICBmcm9tIGEgZGlmZmVyZW50IHJlZ2lvbiBvYmplY3QuCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaDogQWRkZWQgdHJhY2sgbWVtYmVyIHZhcmlhYmxl
IGFuZCBjb3B5IG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbjo6dHJh
Y2spOiBHZXR0ZXIgcmV0cmlldmVzIG5vdyB0aGUgbWVtYmVyIHZhcmlhYmxlLgorICAgICAgICAo
VGV4dFRyYWNrUmVnaW9uKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxp
c3QuY3BwOiBJbXBsZW1lbnRlZCBtZXRob2RzIHJlcXVpcmVkIGJ5IHRoZSBJREwuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OlRleHRU
cmFja1JlZ2lvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6
bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6Oml0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVtb3ZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja1JlZ2lvbkxpc3Q6OmNsZWFyKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbkxpc3QuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVGV4dFRyYWNrUmVn
aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjpjcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6flRleHRUcmFja1JlZ2lv
bkxpc3QpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5pZGw6IElE
TCBkZWZpbmVkIGJ5IHRoZSBzcGVjaWZpY2F0aW9uLgorCiAyMDEzLTAzLTI0ICBLb25kYXBhbGx5
S2FseWFuICA8a2FseWFuLmtvbmRhcGFsbHlAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEFk
ZCBzdXBwb3J0IHRvIGNoZWNrIGZvciBjdXJyZW50IERyYXdhYmxlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmlu
ZGV4IDhiYjY0ZDM0MWM3ZDQ4MzhhNDU5ZTgxN2NlZmMyN2YyYzM0YWUzNzIuLjJhZjhkYzgzNjAx
Mjc2N2I1ZWVjZDgyNzViYWE0NTViM2ZhYWJhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTUwMyw2
ICs1MDMsNyBAQAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5pZGwnLAog
ICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5pZGwnLAogICAgICAgICAgICAgJ2h0
bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmlkbCcsCisgICAgICAgICAgICAnaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb25MaXN0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwnLApAQCAtMzYzMiw2ICszNjMzLDggQEAKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmgnLAorICAgICAg
ICAgICAgJ2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5jcHAnLAorICAgICAgICAgICAg
J2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oJywKICAgICAgICAgICAgICdodG1sL3Ry
YWNrL1RyYWNrQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svVHJhY2tFdmVudC5j
cHAnLAogICAgICAgICAgICAgJ2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCmluZGV4IGJiNTY5OGNhZTcwMWIwOTlkNjgw
YTUzZDVmMjhiYjM1ZTRjZWIxOWQuLjM0MzdmYTdlMWFhNjc1ZWE5Mjk2YTY3MmFlODFhNWViZTcx
ZmMxOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiVGV4dFRy
YWNrQ3VlTGlzdC5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tSZWdpb25MaXN0LmgiCiAjaW5jbHVkZSAiVHJhY2tCYXNlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTk3LDYgKzk4LDkgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBUZXh0VHJhY2s6
OnNob3dpbmdLZXl3b3JkKCkKIFRleHRUcmFjazo6VGV4dFRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIGtpbmQsIGNvbnN0IEF0b21pY1N0cmluZyYgbGFiZWwsIGNvbnN0IEF0b21pY1N0cmluZyYg
bGFuZ3VhZ2UsIFRleHRUcmFja1R5cGUgdHlwZSkKICAgICA6IFRyYWNrQmFzZShjb250ZXh0LCBU
cmFja0Jhc2U6OlRleHRUcmFjaykKICAgICAsIG1fY3VlcygwKQorI2lmIEVOQUJMRShXRUJWVFRf
UkVHSU9OUykKKyAgICAsIG1fcmVnaW9ucygwKQorI2VuZGlmCiAgICAgLCBtX21lZGlhRWxlbWVu
dCgwKQogICAgICwgbV9sYWJlbChsYWJlbCkKICAgICAsIG1fbGFuZ3VhZ2UobGFuZ3VhZ2UpCkBA
IC0xMTksNiArMTIzLDEwIEBAIFRleHRUcmFjazo6flRleHRUcmFjaygpCiAKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZXMtPmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBt
X2N1ZXMtPml0ZW0oaSktPnNldFRyYWNrKDApOworI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3JlZ2lvbnMtPmxlbmd0aCgpOyArK2kp
CisgICAgICAgICAgICBtX3JlZ2lvbnMtPml0ZW0oaSktPnNldFRyYWNrKDApOworI2VuZGlmCiAg
ICAgfQogICAgIGNsZWFyQ2xpZW50KCk7CiB9CkBAIC0yNzIsNiArMjgwLDgwIEBAIHZvaWQgVGV4
dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ICAgICAgICBtX2NsaWVudC0+dGV4dFRyYWNrUmVtb3ZlQ3VlKHRoaXMsIGN1ZSk7CiB9CiAKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKK1RleHRUcmFj
a1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6ZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpCit7Cisg
ICAgaWYgKCFtX3JlZ2lvbnMpCisgICAgICAgIG1fcmVnaW9ucyA9IFRleHRUcmFja1JlZ2lvbkxp
c3Q6OmNyZWF0ZSgpOworCisgICAgcmV0dXJuIG1fcmVnaW9ucy5nZXQoKTsKK30KKworVGV4dFRy
YWNrUmVnaW9uTGlzdCogVGV4dFRyYWNrOjpyZWdpb25zKCkKK3sKKyAgICAvLyBJZiB0aGUgdGV4
dCB0cmFjayBtb2RlIG9mIHRoZSB0ZXh0IHRyYWNrIHRoYXQgdGhlIFRleHRUcmFjayBvYmplY3QK
KyAgICAvLyByZXByZXNlbnRzIGlzIG5vdCB0aGUgdGV4dCB0cmFjayBkaXNhYmxlZCBtb2RlLCB0
aGVuIHRoZSByZWdpb25zCisgICAgLy8gYXR0cmlidXRlIG11c3QgcmV0dXJuIGEgbGl2ZSBUZXh0
VHJhY2tSZWdpb25MaXN0IG9iamVjdCB0aGF0IHJlcHJlc2VudHMKKyAgICAvLyB0aGUgdGV4dCB0
cmFjayBsaXN0IG9mIHJlZ2lvbnMgb2YgdGhlIHRleHQgdHJhY2suIE90aGVyd2lzZSwgaXQgbXVz
dAorICAgIC8vIHJldHVybiBudWxsLiBXaGVuIGFuIG9iamVjdCBpcyByZXR1cm5lZCwgdGhlIHNh
bWUgb2JqZWN0IG11c3QgYmUgcmV0dXJuZWQKKyAgICAvLyBlYWNoIHRpbWUuCisgICAgaWYgKG1f
bW9kZSAhPSBkaXNhYmxlZEtleXdvcmQoKSkKKyAgICAgICAgcmV0dXJuIGVuc3VyZVRleHRUcmFj
a1JlZ2lvbkxpc3QoKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFjazo6YWRk
UmVnaW9uKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPiBwcnBSZWdpb24pCit7CisgICAgaWYg
KCFwcnBSZWdpb24pCisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxUZXh0VHJhY2tSZWdp
b24+IHJlZ2lvbiA9IHBycFJlZ2lvbjsKKyAgICBUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdpb25M
aXN0ID0gZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpOworCisgICAgLy8gMS4gSWYgdGhlIGdp
dmVuIHJlZ2lvbiBpcyBpbiBhIHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHJlbW92
ZQorICAgIC8vIHJlZ2lvbiBmcm9tIHRoYXQgdGV4dCB0cmFjayBsaXN0IG9mIHJlZ2lvbnMuCisg
ICAgVGV4dFRyYWNrKiByZWdpb25UcmFjayA9IHJlZ2lvbi0+dHJhY2soKTsKKyAgICBpZiAocmVn
aW9uVHJhY2sgJiYgcmVnaW9uVHJhY2sgIT0gdGhpcykKKyAgICAgICAgcmVnaW9uVHJhY2stPnJl
bW92ZVJlZ2lvbihyZWdpb24uZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgLy8g
Mi4gSWYgdGhlIG1ldGhvZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNrIGxpc3Qgb2Yg
cmVnaW9ucyBjb250YWlucworICAgIC8vIGEgcmVnaW9uIHdpdGggdGhlIHNhbWUgaWRlbnRpZmll
ciBhcyByZWdpb24gcmVwbGFjZSB0aGUgdmFsdWVzIG9mIHRoYXQKKyAgICAvLyByZWdpb24ncyB3
aWR0aCwgaGVpZ2h0LCBhbmNob3IgcG9pbnQsIHZpZXdwb3J0IGFuY2hvciBwb2ludCBhbmQgc2Ny
b2xsCisgICAgLy8gYXR0cmlidXRlcyB3aXRoIHRob3NlIG9mIHJlZ2lvbi4KKyAgICBUZXh0VHJh
Y2tSZWdpb24qIGV4aXN0aW5nUmVnaW9uID0gcmVnaW9uTGlzdC0+Z2V0UmVnaW9uQnlJZChyZWdp
b24tPmlkKCkpOworICAgIGlmIChleGlzdGluZ1JlZ2lvbikgeworICAgICAgICBleGlzdGluZ1Jl
Z2lvbi0+dXBkYXRlUGFyYW1ldGVyc0Zyb21SZWdpb24ocmVnaW9uLmdldCgpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIC8vIE90aGVyd2lzZTogYWRkIHJlZ2lvbiB0byB0aGUgbWV0
aG9kJ3MgVGV4dFRyYWNrIG9iamVjdCdzIHRleHQgdHJhY2sKKyAgICAvLyBsaXN0IG9mIHJlZ2lv
bnMuCisgICAgcmVnaW9uLT5zZXRUcmFjayh0aGlzKTsKKyAgICByZWdpb25MaXN0LT5hZGQocmVn
aW9uKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OnJlbW92ZVJlZ2lvbihUZXh0VHJhY2tSZWdpb24q
IHJlZ2lvbiwgRXhjZXB0aW9uQ29kZSAmZWMpCit7CisgICAgaWYgKCFyZWdpb24pCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIDEuIElmIHRoZSBnaXZlbiByZWdpb24gaXMgbm90IGN1cnJlbnRs
eSBsaXN0ZWQgaW4gdGhlIG1ldGhvZCdzIFRleHRUcmFjaworICAgIC8vIG9iamVjdCdzIHRleHQg
dHJhY2sgbGlzdCBvZiByZWdpb25zLCB0aGVuIHRocm93IGEgTm90Rm91bmRFcnJvciBleGNlcHRp
b24uCisgICAgaWYgKHJlZ2lvbi0+dHJhY2soKSAhPSB0aGlzKSB7CisgICAgICAgIGVjID0gTk9U
X0ZPVU5EX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9yZWdpb25z
IHx8ICFtX3JlZ2lvbnMtPnJlbW92ZShyZWdpb24pKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZWdpb24tPnNldFRyYWNr
KDApOworfQorI2VuZGlmCisKIHZvaWQgVGV4dFRyYWNrOjpjdWVXaWxsQ2hhbmdlKFRleHRUcmFj
a0N1ZSogY3VlKQogewogICAgIGlmICghbV9jbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2suaAppbmRleCA5MjkwNGUwYTRjNjA1NDFkNzQxNzRhMDRlNjM0MDQ3NDA5ZTc3YjRh
Li5jMWMxMTE5Yzk3Mjg3ZmMzYzFlZjE3NDkwYjNmZDgyYmZhYzU4ZDZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmgKQEAgLTQ1LDYgKzQ1LDEwIEBAIGNsYXNzIEhUTUxNZWRp
YUVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBUZXh0VHJhY2tDdWU7CiBjbGFzcyBU
ZXh0VHJhY2tDdWVMaXN0OworI2lmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKK2NsYXNzIFRleHRU
cmFja1JlZ2lvbjsKK2NsYXNzIFRleHRUcmFja1JlZ2lvbkxpc3Q7CisjZW5kaWYKIAogY2xhc3Mg
VGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTEwOSw2ICsxMTMsMTIgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBi
b29sIGhhc0N1ZShUZXh0VHJhY2tDdWUqKTsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYg
RU5BQkxFKFdFQlZUVF9SRUdJT05TKQorICAgIFRleHRUcmFja1JlZ2lvbkxpc3QqIHJlZ2lvbnMo
KTsKKyAgICB2b2lkIGFkZFJlZ2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4pOworICAg
IHZvaWQgcmVtb3ZlUmVnaW9uKFRleHRUcmFja1JlZ2lvbiosIEV4Y2VwdGlvbkNvZGUmKTsKKyNl
bmRpZgorCiAgICAgdm9pZCBjdWVXaWxsQ2hhbmdlKFRleHRUcmFja0N1ZSopOwogICAgIHZvaWQg
Y3VlRGlkQ2hhbmdlKFRleHRUcmFja0N1ZSopOwogCkBAIC0xNDcsNyArMTU3LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOwogCiBwcml2YXRlOgot
ICAgIFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKKyAgICBUZXh0VHJhY2tS
ZWdpb25MaXN0KiBlbnN1cmVUZXh0VHJhY2tSZWdpb25MaXN0KCk7CisgICAgUmVmUHRyPFRleHRU
cmFja1JlZ2lvbkxpc3Q+IG1fcmVnaW9uczsKKyNlbmRpZgogCiAjaWYgVVNFKFBMQVRGT1JNX1RF
WFRfVFJBQ0tfTUVOVSkKICAgICB2aXJ0dWFsIFRleHRUcmFjayogcHVibGljVHJhY2soKSBPVkVS
UklERSB7IHJldHVybiB0aGlzOyB9CkBAIC0xNTUsNiArMTY4LDggQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8UGxhdGZvcm1UZXh0VHJhY2s+IG1fcGxhdGZvcm1UZXh0VHJhY2s7CiAjZW5kaWYKIAor
ICAgIFRleHRUcmFja0N1ZUxpc3QqIGVuc3VyZVRleHRUcmFja0N1ZUxpc3QoKTsKKwogICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OwogICAgIEF0b21pY1N0cmluZyBtX2tpbmQ7
CiAgICAgQXRvbWljU3RyaW5nIG1fbGFiZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFjay5pZGwKaW5kZXggNzVkYTZiMzA2NDkzNTUxODQ3MTI0Njc3NzlkNWE4NDkwMjFlNGEyZi4u
ZGEzNTVlMmZjZjg0ODM5YmFkOGNlMDI3NTdiOGZmOWJiNmExNWYwYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbApAQCAtNDUsNiArNDUsMTMgQEAKICAgICB2b2lkIHJl
bW92ZUN1ZShpbiBUZXh0VHJhY2tDdWUgY3VlKQogICAgICAgICByYWlzZXMgKERPTUV4Y2VwdGlv
bik7CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9XRUJWVFRfUkVHSU9OUykgJiYgRU5BQkxFX1dFQlZU
VF9SRUdJT05TCisgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja1JlZ2lvbkxpc3QgcmVn
aW9uczsKKyAgICB2b2lkIGFkZFJlZ2lvbihpbiBUZXh0VHJhY2tSZWdpb24gcmVnaW9uKTsKKyAg
ICB2b2lkIHJlbW92ZVJlZ2lvbihpbiBUZXh0VHJhY2tSZWdpb24gcmVnaW9uKQorICAgICAgICBy
YWlzZXMgKERPTUV4Y2VwdGlvbik7CisjZW5kaWYKKwogICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3BwCmluZGV4IDY2NTg4OTgx
MDA4YWVjYzYwZjlkZWJjY2JhNjMzNDUzYzc1MzE2YWUuLjVjYTcyZDM4ODQ3MTEyODUxMjdiNDU0
OWFhYjUwMGExMzRmMGEwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrUmVnaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbi5jcHAKQEAgLTUsNyArNSw3IEBACiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCiAgKiBtZXQ6
CiAgKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBlYyBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQogICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgpAQCAtNTYsNiArNTYsNyBAQCBUZXh0VHJhY2tSZWdpb246OlRleHRUcmFj
a1JlZ2lvbigpCiAgICAgLCBtX3JlZ2lvbkFuY2hvcihGbG9hdFBvaW50KGRlZmF1bHRBbmNob3JQ
b2ludFgsIGRlZmF1bHRBbmNob3JQb2ludFkpKQogICAgICwgbV92aWV3cG9ydEFuY2hvcihGbG9h
dFBvaW50KGRlZmF1bHRBbmNob3JQb2ludFgsIGRlZmF1bHRBbmNob3JQb2ludFkpKQogICAgICwg
bV9zY3JvbGwoZGVmYXVsdFNjcm9sbCkKKyAgICAsIG1fdHJhY2soMCkKIHsKIH0KIApAQCAtNjMs
NiArNjQsMTEgQEAgVGV4dFRyYWNrUmVnaW9uOjp+VGV4dFRyYWNrUmVnaW9uKCkKIHsKIH0KIAor
dm9pZCBUZXh0VHJhY2tSZWdpb246OnNldFRyYWNrKFRleHRUcmFjayogdHJhY2spCit7CisgICAg
bV90cmFjayA9IHRyYWNrOworfQorCiB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0SWQoY29uc3Qg
U3RyaW5nJiBpZCkKIHsKICAgICBtX2lkID0gaWQ7CkBAIC0xNzUsNiArMTgxLDIwIEBAIHZvaWQg
VGV4dFRyYWNrUmVnaW9uOjpzZXRTY3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiAgICAgbV9zY3JvbGwgPSB2YWx1ZSA9PSB1cFNjcm9sbFZhbHVlS2V5
d29yZDsKIH0KIAordm9pZCBUZXh0VHJhY2tSZWdpb246OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVn
aW9uKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQoreworICAgIG1faGVpZ2h0SW5MaW5lcyA9IHJl
Z2lvbi0+aGVpZ2h0KCk7CisgICAgbV93aWR0aCA9IHJlZ2lvbi0+d2lkdGgoKTsKKworICAgIG1f
cmVnaW9uQW5jaG9yID0gRmxvYXRQb2ludChyZWdpb24tPnJlZ2lvbkFuY2hvclgoKSwgcmVnaW9u
LT5yZWdpb25BbmNob3JZKCkpOworICAgIG1fdmlld3BvcnRBbmNob3IgPSBGbG9hdFBvaW50KHJl
Z2lvbi0+dmlld3BvcnRBbmNob3JYKCksIHJlZ2lvbi0+dmlld3BvcnRBbmNob3JZKCkpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc2V0U2Nyb2xsKHJlZ2lvbi0+c2Nyb2xsKCks
IGVjKTsKKworICAgIEFTU0VSVCghZWMpOworfQorCiB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0
UmVnaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBpbnB1dCkKIHsKICAgICAvLyBGSVhNRSgxMDk4
MTgpOiBQYXJzZSByZWdpb24gaGVhZGVyIG1ldGFkYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uLmgKaW5kZXggOWViM2NiNTkwY2U3ZDI3ZmEzOTI2MmIwNzNi
YTIyNTE4MmI5ZGYwMC4uM2YzZDQzZWYxOWMzOTcxNTc1NmNjOGQ3ZjczNTQxODE0NDBiMjZkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oCkBAIC00OSw3
ICs0OSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRleHRUcmFja1JlZ2lvbigpOwogCi0g
ICAgVGV4dFRyYWNrKiB0cmFjaygpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKyAgICBUZXh0VHJhY2sq
IHRyYWNrKCkgY29uc3QgeyByZXR1cm4gbV90cmFjazsgfQorICAgIHZvaWQgc2V0VHJhY2soVGV4
dFRyYWNrKik7CiAKICAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQogICAgIHZvaWQgc2V0SWQoY29uc3QgU3RyaW5nJik7CkBAIC03NSw2ICs3Niw4IEBAIHB1Ymxp
YzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcgc2Nyb2xsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRT
Y3JvbGwoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgdm9pZCB1
cGRhdGVQYXJhbWV0ZXJzRnJvbVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qKTsKKwogICAgIGNvbnN0
IFN0cmluZyYgcmVnaW9uU2V0dGluZ3MoKSBjb25zdCB7IHJldHVybiBtX3NldHRpbmdzOyB9CiAg
ICAgdm9pZCBzZXRSZWdpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKIApAQCAtMTAxLDYgKzEw
NCwxMiBAQCBwcml2YXRlOgogICAgIEZsb2F0UG9pbnQgbV92aWV3cG9ydEFuY2hvcjsKIAogICAg
IGJvb2wgbV9zY3JvbGw7CisKKyAgICAvLyBUaGUgbWVtYmVyIHZhcmlhYmxlIHRyYWNrIGNhbiBi
ZSBhIHJhdyBwb2ludGVyIGFzIGl0IHdpbGwgbmV2ZXIKKyAgICAvLyByZWZlcmVuY2UgYSBkZXN0
cm95ZWQgVGV4dFRyYWNrLCBhcyB0aGlzIG1lbWJlciB2YXJpYWJsZQorICAgIC8vIGlzIGNsZWFy
ZWQgaW4gdGhlIFRleHRUcmFjayBkZXN0cnVjdG9yIGFuZCBpdCBpcyBnZW5lcmFsbHkKKyAgICAv
LyBzZXQvcmVzZXQgd2l0aGluIHRoZSBhZGRSZWdpb24gYW5kIHJlbW92ZVJlZ2lvbiBtZXRob2Rz
LgorICAgIFRleHRUcmFjayogbV90cmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uTGlz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYzYzYyZGFjMzQ2MDVlODgzYzA1ZTQwOWE1MzA5NzNkOTY5Y2UyZGEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lv
bkxpc3QuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKKwor
I2luY2x1ZGUgIlRleHRUcmFja1JlZ2lvbkxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitUZXh0VHJhY2tSZWdpb25MaXN0OjpUZXh0VHJhY2tSZWdpb25MaXN0KCkKK3sKK30KKwordW5z
aWduZWQgbG9uZyBUZXh0VHJhY2tSZWdpb25MaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xpc3Quc2l6ZSgpOworfQorCitUZXh0VHJhY2tSZWdpb24qIFRleHRUcmFja1JlZ2lv
bkxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4IDwgbV9s
aXN0LnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7CisKKyAgICBy
ZXR1cm4gMDsKK30KKworVGV4dFRyYWNrUmVnaW9uKiBUZXh0VHJhY2tSZWdpb25MaXN0OjpnZXRS
ZWdpb25CeUlkKGNvbnN0IFN0cmluZyYgaWQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2xpc3Quc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGlzdFtpXS0+aWQo
KSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBtX2xpc3RbaV0uZ2V0KCk7CisgICAgfQorICAg
IHJldHVybiAwOworfQorCit2b2lkIFRleHRUcmFja1JlZ2lvbkxpc3Q6OmFkZChQYXNzUmVmUHRy
PFRleHRUcmFja1JlZ2lvbj4gcmVnaW9uKQoreworICAgIG1fbGlzdC5hcHBlbmQocmVnaW9uKTsK
K30KKworYm9vbCBUZXh0VHJhY2tSZWdpb25MaXN0OjpyZW1vdmUoVGV4dFRyYWNrUmVnaW9uKiBy
ZWdpb24pCit7CisgICAgc2l6ZV90IGluZGV4ID0gbV9saXN0LmZpbmQocmVnaW9uKTsKKyAgICBp
ZiAoaW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbGlz
dC5yZW1vdmUoaW5kZXgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFRleHRUcmFja1Jl
Z2lvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBtX2xpc3QuY2xlYXIoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tSZWdpb25MaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDcwZTNlNTZlYzczNWI3ZDljMzYwNTcw
NjAyOWM3MzA5NmFhMGMxYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uTGlzdC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFRleHRUcmFja1JlZ2lvbkxpc3RfaAorI2RlZmluZSBUZXh0VHJhY2tSZWdpb25MaXN0
X2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKFdFQlZUVF9SRUdJT05TKQor
CisjaW5jbHVkZSAiVGV4dFRyYWNrUmVnaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tSZWdpb25MaXN0IDogcHVi
bGljIFJlZkNvdW50ZWQ8VGV4dFRyYWNrUmVnaW9uTGlzdD4geworcHVibGljOgorICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbkxpc3Q+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja1JlZ2lvbkxpc3QoKSk7CisgICAgfQorCisg
ICAgflRleHRUcmFja1JlZ2lvbkxpc3QoKSB7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
KCkgY29uc3Q7CisKKyAgICBUZXh0VHJhY2tSZWdpb24qIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNv
bnN0OworICAgIFRleHRUcmFja1JlZ2lvbiogZ2V0UmVnaW9uQnlJZChjb25zdCBTdHJpbmcmKSBj
b25zdDsKKworICAgIHZvaWQgYWRkKFBhc3NSZWZQdHI8VGV4dFRyYWNrUmVnaW9uPik7CisgICAg
Ym9vbCByZW1vdmUoVGV4dFRyYWNrUmVnaW9uKik7CisKK3ByaXZhdGU6CisgICAgVGV4dFRyYWNr
UmVnaW9uTGlzdCgpOworICAgIHZvaWQgY2xlYXIoKTsKKworICAgIFZlY3RvcjxSZWZQdHI8VGV4
dFRyYWNrUmVnaW9uPiA+IG1fbGlzdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrUmVnaW9uTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a1JlZ2lvbkxpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkY2E2Mjk4Njk0Mjg4ZmFhYWQ4ODQxMDk3MzRi
M2FjMWQ3YmZkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK1sK
KyAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSyAmIFdFQlZUVF9SRUdJT05TLAorICAgIFY4RW5h
YmxlZEF0UnVudGltZT13ZWJraXRWaWRlb1RyYWNrLAorICAgIEluZGV4ZWRHZXR0ZXIsCisgICAg
SW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQorXSBpbnRlcmZhY2UgVGV4dFRyYWNrUmVnaW9uTGlz
dCB7CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgIFRl
eHRUcmFja1JlZ2lvbiBpdGVtKGluIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIFRleHRUcmFj
a1JlZ2lvbiBnZXRSZWdpb25CeUlkKGluIERPTVN0cmluZyBpZCk7Cit9OworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzAw
ZWM4YzE0OTRjYTEyYzE4MjU0MzA1OWQ0ODg4MGM4Y2IzZWFkOC4uZjI1MzkyYjQ1OGMxYTJmYzg1
NmZhM2QwYWU5MTA2ODI2YThhMmUxMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEzLTAzLTI1
ICBWaWN0b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0
VHJhY2sgRXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90
ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVk
aWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC5odG1sOiBBZGRl
ZC4KKwogMjAxMy0wMy0yNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgog
CiAgICAgICAgIEFYOiBDcmFzaCBpbiBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbjo6
aW5jcmVtZW50QnV0dG9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3Jl
Z2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdpb24tbGlzdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDEzYzc0NDNjN2Q3ZjBkNjEyMzYwZWJkZjk2OGUzYTI2
MzBiNGE2ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lv
bnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NDEgQEAKK1Rlc3RzIFRleHRUcmFja1JlZ2lvbkxpc3QgZnVuY3Rpb25hbGl0eTogbGVuZ3RoLCBv
cGVyYXRvcltdLCBhbmQgZ2V0UmVnaW9uQnlJZCgpCisKKworKiogSW1wbGljaXQgbW9kZSBkaXNh
YmxlZCBhbmQgdGhlIHJlZ2lvbnMgYXR0cmlidXRlIGlzIG51bGwgKioKK0VYUEVDVEVEICh0ZXN0
VHJhY2sudHJhY2subW9kZSA9PSAnZGlzYWJsZWQnKSBPSworRVhQRUNURUQgKHRlc3RUcmFjay50
cmFjay5yZWdpb25zID09ICdudWxsJykgT0sKKworKiogVGhlIHJlZ2lvbnMgYXR0cmlidXRlIHNo
b3VsZCBiZSBhbiBlbXB0eSBUZXh0VHJhY2tSZWdpb25MaXN0ICoqCitFWFBFQ1RFRCAocmVnaW9u
cyAhPSBudWxsID09ICd0cnVlJykgT0sKK0VYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMCcp
IE9LCisKKyoqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSB0cmFjayBhdHRyaWJ1dGUgb2YgdGhl
IHJlZ2lvbiBpcyBudWxsKioKK0VYUEVDVEVEIChyZWdpb24udHJhY2sgPT0gJ251bGwnKSBPSwor
CisqKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFRleHRUcmFj
a1JlZ2lvbkxpc3Qgb2JqZWN0ICoqCitFWFBFQ1RFRCAocmVnaW9ucy5sZW5ndGggPT0gJzEnKSBP
SworRVhQRUNURUQgKHJlZ2lvbnNbMF0gPT0gcmVnaW9uID09ICd0cnVlJykgT0sKK0VYUEVDVEVE
IChyZWdpb25zWzBdLnRyYWNrID09IHRlc3RUcmFjay50cmFjayA9PSAndHJ1ZScpIE9LCisKKyoq
IFRoZSB0cmFjayBhdHRyaWJ1dGUgc2hvdWxkIGNvcnJlY3RseSByZWZsZWN0IHRoZSB0cmFjayB0
byB3aGljaCB0aGUgcmVnaW9uIHdhcyBhZGRlZCB0byoqCitFWFBFQ1RFRCAocmVnaW9uLnRyYWNr
ID09IHRlc3RUcmFjay50cmFjayA9PSAndHJ1ZScpIE9LCisKKyoqIEFkZGluZyBhIHJlZ2lvbiB3
aXRoIGFuIGV4aXN0aW5nIGlkIHNob3VsZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHJlZ2lvbiAqKgor
RVhQRUNURUQgKHJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JYID09ICc1OScpIE9LCitFWFBFQ1RF
RCAocmVnaW9uc1swXS52aWV3cG9ydEFuY2hvclkgPT0gJzY4JykgT0sKK0VYUEVDVEVEIChyZWdp
b25zWzBdLnJlZ2lvbkFuY2hvclggPT0gJzIwJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdLnJl
Z2lvbkFuY2hvclkgPT0gJzMwJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdLmhlaWdodCA9PSAn
NScpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS53aWR0aCA9PSAnODcnKSBPSworRVhQRUNURUQg
KHJlZ2lvbnNbMF0uc2Nyb2xsID09ICd1cCcpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXSAhPSB1
cGRhdGVkUmVnaW9uID09ICd0cnVlJykgT0sKKworKiogQWRkIHRoZSByZWdpb24gYmFjayBhbmQg
Y2hlY2sgaWYgcmVtb3ZlUmVnaW9uKCkgcmVtb3ZlcyBpdCBwcm9wZXJseSAqKgorRVhQRUNURUQg
KHJlZ2lvbnMubGVuZ3RoID09ICcxJykgT0sKK0VYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAn
MCcpIE9LCisKKyoqIEluIGNhc2UgdGhlIHJlZ2lvbiBpcyBub3QgZm91bmQsIE5vdEZvdW5kRXJy
b3Igc2hvdWxkIGJlIHRocm93biAqKgorRXJyb3I6IE5vdEZvdW5kRXJyb3I6IERPTSBFeGNlcHRp
b24gOAorCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS90cmFj
ay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9tZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWZmMDZhYjU4Y2U3NDg1MmRlMjU2MDc1Mzc1MGVlNTZiZDc1NDE1ZAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3Rl
eHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbApAQCAtMCwwICsxLDk4IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50
LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKworICAgICAgICA8
c2NyaXB0IHNyYz0uLi8uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz0uLi8uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0PgorICAg
ICAgICB2YXIgdGVzdFRyYWNrOworICAgICAgICB2YXIgcmVnaW9uOworICAgICAgICB2YXIgcmVn
aW9uczsKKyAgICAgICAgdmFyIHVwZGF0ZWRSZWdpb247CisKKyAgICAgICAgZnVuY3Rpb24gc3Rh
cnRUZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgdGVzdFRyYWNrID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3RyYWNrJylbMF07CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiPGJyPioqIEltcGxpY2l0IG1vZGUgZGlzYWJsZWQgYW5kIHRoZSByZWdpb25zIGF0dHJpYnV0
ZSBpcyBudWxsICoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFjay50cmFj
ay5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRlc3RUcmFj
ay50cmFjay5yZWdpb25zIiwgbnVsbCk7CisKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5t
b2RlID0gImhpZGRlbiI7CisgICAgICAgICAgICByZWdpb25zID0gdGVzdFRyYWNrLnRyYWNrLnJl
Z2lvbnM7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSByZWdpb25zIGF0
dHJpYnV0ZSBzaG91bGQgYmUgYW4gZW1wdHkgVGV4dFRyYWNrUmVnaW9uTGlzdCAqKiIpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zICE9IG51bGwiLCB0cnVlKTsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAwKTsKKworICAgICAgICAgICAgcmVn
aW9uID0gbmV3IFRleHRUcmFja1JlZ2lvbigpOworICAgICAgICAgICAgcmVnaW9uLmlkID0gIlRl
c3RJZCI7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIFRoZSBkZWZhdWx0IHZh
bHVlIG9mIHRoZSB0cmFjayBhdHRyaWJ1dGUgb2YgdGhlIHJlZ2lvbiBpcyBudWxsKioiKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uLnRyYWNrIiwgbnVsbCk7CisKKyAgICAgICAg
ICAgIHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24ocmVnaW9uKTsKKworICAgICAgICAgICAgY29u
c29sZVdyaXRlKCI8YnI+KiogVGhlIGFkZFJlZ2lvbigpIG1ldGhvZCBwcm9wZXJseSB1cGRhdGVz
IHRoZSBUZXh0VHJhY2tSZWdpb25MaXN0IG9iamVjdCAqKiIpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIsIDEpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWdpb25zWzBdID09IHJlZ2lvbiIsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJy
ZWdpb25zWzBdLnRyYWNrID09IHRlc3RUcmFjay50cmFjayIsIHRydWUpOworCisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj4qKiBUaGUgdHJhY2sgYXR0cmlidXRlIHNob3VsZCBjb3JyZWN0
bHkgcmVmbGVjdCB0aGUgdHJhY2sgdG8gd2hpY2ggdGhlIHJlZ2lvbiB3YXMgYWRkZWQgdG8qKiIp
OworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNrLnRy
YWNrIiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24gPSBuZXcgVGV4dFRyYWNr
UmVnaW9uKCk7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLmlkID0gcmVnaW9uLmlkOworICAg
ICAgICAgICAgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFuY2hvclggPSA1OTsKKyAgICAgICAgICAg
IHVwZGF0ZWRSZWdpb24udmlld3BvcnRBbmNob3JZID0gNjg7CisgICAgICAgICAgICB1cGRhdGVk
UmVnaW9uLnJlZ2lvbkFuY2hvclggPSAyMDsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ucmVn
aW9uQW5jaG9yWSA9IDMwOworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5oZWlnaHQgPSA1Owor
ICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi53aWR0aCA9IDg3OworICAgICAgICAgICAgdXBkYXRl
ZFJlZ2lvbi5zY3JvbGwgPSAidXAiOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4q
KiBBZGRpbmcgYSByZWdpb24gd2l0aCBhbiBleGlzdGluZyBpZCBzaG91bGQgdXBkYXRlIHRoZSBl
eGlzdGluZyByZWdpb24gKioiKTsKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5hZGRSZWdp
b24odXBkYXRlZFJlZ2lvbik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0u
dmlld3BvcnRBbmNob3JYIiwgdXBkYXRlZFJlZ2lvbi52aWV3cG9ydEFuY2hvclgpOworICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLnZpZXdwb3J0QW5jaG9yWSIsIHVwZGF0ZWRS
ZWdpb24udmlld3BvcnRBbmNob3JZKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9u
c1swXS5yZWdpb25BbmNob3JYIiwgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JYKTsKKyAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS5yZWdpb25BbmNob3JZIiwgdXBkYXRlZFJl
Z2lvbi5yZWdpb25BbmNob3JZKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1sw
XS5oZWlnaHQiLCB1cGRhdGVkUmVnaW9uLmhlaWdodCk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoInJlZ2lvbnNbMF0ud2lkdGgiLCB1cGRhdGVkUmVnaW9uLndpZHRoKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS5zY3JvbGwiLCB1cGRhdGVkUmVnaW9uLnNjcm9sbCk7
CisKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXSAhPSB1cGRhdGVkUmVnaW9u
IiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZCB0aGUgcmVn
aW9uIGJhY2sgYW5kIGNoZWNrIGlmIHJlbW92ZVJlZ2lvbigpIHJlbW92ZXMgaXQgcHJvcGVybHkg
KioiKTsKKyAgICAgICAgICAgIHRlc3RUcmFjay50cmFjay5hZGRSZWdpb24ocmVnaW9uKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAxKTsKKyAgICAgICAgICAg
IHRlc3RUcmFjay50cmFjay5yZW1vdmVSZWdpb24ocmVnaW9uKTsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgicmVnaW9ucy5sZW5ndGgiLCAwKTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCI8YnI+KiogSW4gY2FzZSB0aGUgcmVnaW9uIGlzIG5vdCBmb3VuZCwgTm90Rm91bmRFcnJvciBz
aG91bGQgYmUgdGhyb3duICoqIik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICB0
ZXN0VHJhY2sudHJhY2sucmVtb3ZlUmVnaW9uKHJlZ2lvbik7CisgICAgICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgICAgY29uc29sZVdyaXRlKGUpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBGSVhNRSgxMDk4MTgpOiBVcGRhdGUgdGVzdCBmb3IgbXVsdGlwbGUgaW5p
dGlhbCByZWdpb25zIChhZnRlciBwYXJzaW5nIGlzIHN1cHBvcnRlZCkuCisKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3RXaXRoRGVsYXkoKQorICAgICAgICB7CisgICAgICAg
ICAgICBzZXRUaW1lb3V0KHN0YXJ0VGVzdCwgNTAwKTsKKyAgICAgICAgfQorICAgICAgICA8L3Nj
cmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzdGFydFRlc3RXaXRoRGVsYXko
KSI+CisgICAgICAgIDxwPlRlc3RzIFRleHRUcmFja1JlZ2lvbkxpc3QgZnVuY3Rpb25hbGl0eTog
bGVuZ3RoLCBvcGVyYXRvcltdLCBhbmQgZ2V0UmVnaW9uQnlJZCgpPC9wPgorICAgICAgICA8dmlk
ZW8+CisgICAgICAgICAgICA8dHJhY2sgaWQ9InRlc3RUcmFjayIgc3JjPSJjYXB0aW9ucy13ZWJ2
dHQvY2FwdGlvbnMtZmFzdC52dHQiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194934</attachid>
            <date>2013-03-25 15:33:46 -0700</date>
            <delta_ts>2013-03-25 16:33:28 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109820-20130326002929.patch</filename>
            <type>text/plain</type>
            <size>27923</size>
            <attacher name="Victor Carbune">vcarbune</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDYwNjg2ZmQzMTAyYjBi
M2FlNjczNjE3ODhjOTdhMjAzNDQyZjU1Ni4uYjI5ZDY5MTM1ZGVmYzRlZDAzOThiZDA1NjRiYzJh
MGNiMjg3MWVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAzLTI1ICBWaWN0
b3IgQ2FyYnVuZSAgPHZjYXJidW5lQGNocm9taXVtLm9yZz4KKworICAgICAgICBUZXh0VHJhY2sg
RXh0ZW5zaW9uIGZvciBXZWJWVFQgUmVnaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBD
YXJsc29uLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBUZXh0VHJhY2tSZWdpb25MaXN0IGFu
ZCBleHRlbmRlZCBUZXh0VHJhY2sgd2l0aAorICAgICAgICBtZXRob2RzIHJlcXVpcmVkIGZvciBw
cm9wZXIgaW50ZXJhY3Rpb24gd2l0aCBUZXh0VHJhY2tSZWdpb24gb2JqZWN0cy4KKworICAgICAg
ICBUZXN0OiBtZWRpYS90cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0
Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkZWQgZmlsZXMgZm9yIHByb3BlciBi
dWlsZGluZyBvZiBUZXh0VHJhY2tSZWdpb25MaXN0LgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4
dFRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6VGV4dFRyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjplbnN1cmVUZXh0
VHJhY2tSZWdpb25MaXN0KTogTWV0aG9kIGZvciBjcmVhdGluZyBhCisgICAgICAgIFRleHRUcmFj
a1JlZ2lvbkxpc3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHRyYWNrLCBpZiBpdCBkb2Vz
IGV4aXN0CisgICAgICAgIGFscmVhZHkuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJl
Z2lvbnMpOiBHZXR0ZXIgZm9yIHRoZSByZWdpb25zIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFjazo6YWRkUmVnaW9uKTogTWV0aG9kIGZvciBhZGRpbmcgYSByZWdpb24uCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlbW92ZVJlZ2lvbik6IE1ldGhvZCBmb3IgcmVtb3Zp
bmcgYSByZWdpb24uCisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2suaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoVGV4dFRyYWNrKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Rl
eHRUcmFjay5pZGw6IEFkZGVkIG1ldGhvZHMgc3BlY2lmaWMgZm9yIHJlZ2lvbiBoYW5kbGluZy4K
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0VHJhY2tSZWdpb246OlRleHRUcmFja1JlZ2lvbik6IEluaXRpYWxpemVkIHRoZSB0
cmFjayBtZW1iZXIgdmFyaWFibGUuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb246
OnNldFRyYWNrKTogQWRkZWQgaW50ZXJuYWwgc2V0dGVyIGZvciB0aGUgdHJhY2sgYXR0cmlidXRl
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb246
OnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKTogTWV0aG9kIHRvIGNvcHkgdGhlIHBhcmFtZXRl
cnMKKyAgICAgICAgZnJvbSBhIGRpZmZlcmVudCByZWdpb24gb2JqZWN0LgorICAgICAgICAqIGh0
bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmg6IEFkZGVkIHRyYWNrIG1lbWJlciB2YXJpYWJsZSBh
bmQgY29weSBtZXRob2QuCisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb246OnRyYWNr
KTogR2V0dGVyIHJldHJpZXZlcyBub3cgdGhlIG1lbWJlciB2YXJpYWJsZS4KKyAgICAgICAgKFRl
eHRUcmFja1JlZ2lvbik6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0
LmNwcDogSW1wbGVtZW50ZWQgbWV0aG9kcyByZXF1aXJlZCBieSB0aGUgSURMLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjpUZXh0VHJh
Y2tSZWdpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6Omxl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tSZWdpb25MaXN0OjppdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OmdldFJlZ2lvbkJ5SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6YWRkKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
VHJhY2tSZWdpb25MaXN0OjpjbGVhcik6CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tS
ZWdpb25MaXN0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFRleHRUcmFja1JlZ2lv
bkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUmVnaW9uTGlzdDo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1JlZ2lvbkxpc3Q6On5UZXh0VHJhY2tSZWdpb25M
aXN0KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaWRsOiBJREwg
ZGVmaW5lZCBieSB0aGUgc3BlY2lmaWNhdGlvbi4KKwogMjAxMy0wMy0yNCAgS29uZGFwYWxseUth
bHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQg
c3VwcG9ydCB0byBjaGVjayBmb3IgY3VycmVudCBEcmF3YWJsZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRl
eCA4YmI2NGQzNDFjN2Q0ODM4YTQ1OWU4MTdjZWZjMjdmMmMzNGFlMzcyLi4yYWY4ZGM4MzYwMTI3
NjdiNWVlY2Q4Mjc1YmFhNDU1YjNmYWFiYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC01MDMsNiAr
NTAzLDcgQEAKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja0xpc3QuaWRsJywKICAg
ICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuaWRsJywKICAgICAgICAgICAgICdodG1s
L3RyYWNrL1RleHRUcmFja1JlZ2lvbi5pZGwnLAorICAgICAgICAgICAgJ2h0bWwvdHJhY2svVGV4
dFRyYWNrUmVnaW9uTGlzdC5pZGwnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaWRsJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmlkbCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRs
JywKQEAgLTM2MzIsNiArMzYzMyw4IEBACiAgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uY3Bw
JywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbi5oJywKKyAgICAgICAg
ICAgICdodG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwJywKKyAgICAgICAgICAgICdo
dG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuaCcsCiAgICAgICAgICAgICAnaHRtbC90cmFj
ay9UcmFja0Jhc2UuY3BwJywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1RyYWNrRXZlbnQuY3Bw
JywKICAgICAgICAgICAgICdodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmNwcAppbmRleCBiYjU2OThjYWU3MDFiMDk5ZDY4MGE1
M2Q1ZjI4YmIzNWU0Y2ViMTlkLi4zNDM3ZmE3ZTFhYTY3NWVhOTI5NmE2NzJhZTgxYTVlYmU3MWZj
MTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFjay5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suY3BwCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIlRleHRUcmFj
a0N1ZUxpc3QuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCisjaW5jbHVkZSAiVGV4dFRy
YWNrUmVnaW9uTGlzdC5oIgogI2luY2x1ZGUgIlRyYWNrQmFzZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC05Nyw2ICs5OCw5IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgVGV4dFRyYWNrOjpz
aG93aW5nS2V5d29yZCgpCiBUZXh0VHJhY2s6OlRleHRUcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0LCBUZXh0VHJhY2tDbGllbnQqIGNsaWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBraW5kLCBjb25zdCBBdG9taWNTdHJpbmcmIGxhYmVsLCBjb25zdCBBdG9taWNTdHJpbmcmIGxh
bmd1YWdlLCBUZXh0VHJhY2tUeXBlIHR5cGUpCiAgICAgOiBUcmFja0Jhc2UoY29udGV4dCwgVHJh
Y2tCYXNlOjpUZXh0VHJhY2spCiAgICAgLCBtX2N1ZXMoMCkKKyNpZiBFTkFCTEUoV0VCVlRUX1JF
R0lPTlMpCisgICAgLCBtX3JlZ2lvbnMoMCkKKyNlbmRpZgogICAgICwgbV9tZWRpYUVsZW1lbnQo
MCkKICAgICAsIG1fbGFiZWwobGFiZWwpCiAgICAgLCBtX2xhbmd1YWdlKGxhbmd1YWdlKQpAQCAt
MTE5LDYgKzEyMywxMCBAQCBUZXh0VHJhY2s6On5UZXh0VHJhY2soKQogCiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9jdWVzLT5sZW5ndGgoKTsgKytpKQogICAgICAgICAgICAgbV9j
dWVzLT5pdGVtKGkpLT5zZXRUcmFjaygwKTsKKyNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9yZWdpb25zLT5sZW5ndGgoKTsgKytpKQor
ICAgICAgICAgICAgbV9yZWdpb25zLT5pdGVtKGkpLT5zZXRUcmFjaygwKTsKKyNlbmRpZgogICAg
IH0KICAgICBjbGVhckNsaWVudCgpOwogfQpAQCAtMjcyLDYgKzI4MCw4MCBAQCB2b2lkIFRleHRU
cmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSogY3VlLCBFeGNlcHRpb25Db2RlJiBlYykKICAg
ICAgICAgbV9jbGllbnQtPnRleHRUcmFja1JlbW92ZUN1ZSh0aGlzLCBjdWUpOwogfQogCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCitUZXh0VHJhY2tS
ZWdpb25MaXN0KiBUZXh0VHJhY2s6OmVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKQoreworICAg
IGlmICghbV9yZWdpb25zKQorICAgICAgICBtX3JlZ2lvbnMgPSBUZXh0VHJhY2tSZWdpb25MaXN0
OjpjcmVhdGUoKTsKKworICAgIHJldHVybiBtX3JlZ2lvbnMuZ2V0KCk7Cit9CisKK1RleHRUcmFj
a1JlZ2lvbkxpc3QqIFRleHRUcmFjazo6cmVnaW9ucygpCit7CisgICAgLy8gSWYgdGhlIHRleHQg
dHJhY2sgbW9kZSBvZiB0aGUgdGV4dCB0cmFjayB0aGF0IHRoZSBUZXh0VHJhY2sgb2JqZWN0Cisg
ICAgLy8gcmVwcmVzZW50cyBpcyBub3QgdGhlIHRleHQgdHJhY2sgZGlzYWJsZWQgbW9kZSwgdGhl
biB0aGUgcmVnaW9ucworICAgIC8vIGF0dHJpYnV0ZSBtdXN0IHJldHVybiBhIGxpdmUgVGV4dFRy
YWNrUmVnaW9uTGlzdCBvYmplY3QgdGhhdCByZXByZXNlbnRzCisgICAgLy8gdGhlIHRleHQgdHJh
Y2sgbGlzdCBvZiByZWdpb25zIG9mIHRoZSB0ZXh0IHRyYWNrLiBPdGhlcndpc2UsIGl0IG11c3QK
KyAgICAvLyByZXR1cm4gbnVsbC4gV2hlbiBhbiBvYmplY3QgaXMgcmV0dXJuZWQsIHRoZSBzYW1l
IG9iamVjdCBtdXN0IGJlIHJldHVybmVkCisgICAgLy8gZWFjaCB0aW1lLgorICAgIGlmIChtX21v
ZGUgIT0gZGlzYWJsZWRLZXl3b3JkKCkpCisgICAgICAgIHJldHVybiBlbnN1cmVUZXh0VHJhY2tS
ZWdpb25MaXN0KCk7CisKKyAgICByZXR1cm4gMDsKK30KKwordm9pZCBUZXh0VHJhY2s6OmFkZFJl
Z2lvbihQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4gcHJwUmVnaW9uKQoreworICAgIGlmICgh
cHJwUmVnaW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8VGV4dFRyYWNrUmVnaW9u
PiByZWdpb24gPSBwcnBSZWdpb247CisgICAgVGV4dFRyYWNrUmVnaW9uTGlzdCogcmVnaW9uTGlz
dCA9IGVuc3VyZVRleHRUcmFja1JlZ2lvbkxpc3QoKTsKKworICAgIC8vIDEuIElmIHRoZSBnaXZl
biByZWdpb24gaXMgaW4gYSB0ZXh0IHRyYWNrIGxpc3Qgb2YgcmVnaW9ucywgdGhlbiByZW1vdmUK
KyAgICAvLyByZWdpb24gZnJvbSB0aGF0IHRleHQgdHJhY2sgbGlzdCBvZiByZWdpb25zLgorICAg
IFRleHRUcmFjayogcmVnaW9uVHJhY2sgPSByZWdpb24tPnRyYWNrKCk7CisgICAgaWYgKHJlZ2lv
blRyYWNrICYmIHJlZ2lvblRyYWNrICE9IHRoaXMpCisgICAgICAgIHJlZ2lvblRyYWNrLT5yZW1v
dmVSZWdpb24ocmVnaW9uLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKworICAgIC8vIDIu
IElmIHRoZSBtZXRob2QncyBUZXh0VHJhY2sgb2JqZWN0J3MgdGV4dCB0cmFjayBsaXN0IG9mIHJl
Z2lvbnMgY29udGFpbnMKKyAgICAvLyBhIHJlZ2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIg
YXMgcmVnaW9uIHJlcGxhY2UgdGhlIHZhbHVlcyBvZiB0aGF0CisgICAgLy8gcmVnaW9uJ3Mgd2lk
dGgsIGhlaWdodCwgYW5jaG9yIHBvaW50LCB2aWV3cG9ydCBhbmNob3IgcG9pbnQgYW5kIHNjcm9s
bAorICAgIC8vIGF0dHJpYnV0ZXMgd2l0aCB0aG9zZSBvZiByZWdpb24uCisgICAgVGV4dFRyYWNr
UmVnaW9uKiBleGlzdGluZ1JlZ2lvbiA9IHJlZ2lvbkxpc3QtPmdldFJlZ2lvbkJ5SWQocmVnaW9u
LT5pZCgpKTsKKyAgICBpZiAoZXhpc3RpbmdSZWdpb24pIHsKKyAgICAgICAgZXhpc3RpbmdSZWdp
b24tPnVwZGF0ZVBhcmFtZXRlcnNGcm9tUmVnaW9uKHJlZ2lvbi5nZXQoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICAvLyBPdGhlcndpc2U6IGFkZCByZWdpb24gdG8gdGhlIG1ldGhv
ZCdzIFRleHRUcmFjayBvYmplY3QncyB0ZXh0IHRyYWNrCisgICAgLy8gbGlzdCBvZiByZWdpb25z
LgorICAgIHJlZ2lvbi0+c2V0VHJhY2sodGhpcyk7CisgICAgcmVnaW9uTGlzdC0+YWRkKHJlZ2lv
bik7Cit9CisKK3ZvaWQgVGV4dFRyYWNrOjpyZW1vdmVSZWdpb24oVGV4dFRyYWNrUmVnaW9uKiBy
ZWdpb24sIEV4Y2VwdGlvbkNvZGUgJmVjKQoreworICAgIGlmICghcmVnaW9uKQorICAgICAgICBy
ZXR1cm47CisKKyAgICAvLyAxLiBJZiB0aGUgZ2l2ZW4gcmVnaW9uIGlzIG5vdCBjdXJyZW50bHkg
bGlzdGVkIGluIHRoZSBtZXRob2QncyBUZXh0VHJhY2sKKyAgICAvLyBvYmplY3QncyB0ZXh0IHRy
YWNrIGxpc3Qgb2YgcmVnaW9ucywgdGhlbiB0aHJvdyBhIE5vdEZvdW5kRXJyb3IgZXhjZXB0aW9u
LgorICAgIGlmIChyZWdpb24tPnRyYWNrKCkgIT0gdGhpcykgeworICAgICAgICBlYyA9IE5PVF9G
T1VORF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fcmVnaW9ucyB8
fCAhbV9yZWdpb25zLT5yZW1vdmUocmVnaW9uKSkgeworICAgICAgICBlYyA9IElOVkFMSURfU1RB
VEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVnaW9uLT5zZXRUcmFjaygw
KTsKK30KKyNlbmRpZgorCiB2b2lkIFRleHRUcmFjazo6Y3VlV2lsbENoYW5nZShUZXh0VHJhY2tD
dWUqIGN1ZSkKIHsKICAgICBpZiAoIW1fY2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrLmgKaW5kZXggOTI5MDRlMGE0YzYwNTQxZDc0MTc0YTA0ZTYzNDA0NzQwOWU3N2I0YS4u
YzFjMTExOWM5NzI4N2ZjM2MxZWYxNzQ5MGIzZmQ4MmJmYWM1OGQ2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5oCkBAIC00NSw2ICs0NSwxMCBAQCBjbGFzcyBIVE1MTWVkaWFF
bGVtZW50OwogY2xhc3MgVGV4dFRyYWNrOwogY2xhc3MgVGV4dFRyYWNrQ3VlOwogY2xhc3MgVGV4
dFRyYWNrQ3VlTGlzdDsKKyNpZiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCitjbGFzcyBUZXh0VHJh
Y2tSZWdpb247CitjbGFzcyBUZXh0VHJhY2tSZWdpb25MaXN0OworI2VuZGlmCiAKIGNsYXNzIFRl
eHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CkBAIC0xMDksNiArMTEzLDEyIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9v
bCBoYXNDdWUoVGV4dFRyYWNrQ3VlKik7CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVO
QUJMRShXRUJWVFRfUkVHSU9OUykKKyAgICBUZXh0VHJhY2tSZWdpb25MaXN0KiByZWdpb25zKCk7
CisgICAgdm9pZCBhZGRSZWdpb24oUGFzc1JlZlB0cjxUZXh0VHJhY2tSZWdpb24+KTsKKyAgICB2
b2lkIHJlbW92ZVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qLCBFeGNlcHRpb25Db2RlJik7CisjZW5k
aWYKKwogICAgIHZvaWQgY3VlV2lsbENoYW5nZShUZXh0VHJhY2tDdWUqKTsKICAgICB2b2lkIGN1
ZURpZENoYW5nZShUZXh0VHJhY2tDdWUqKTsKIApAQCAtMTQ3LDcgKzE1NywxMCBAQCBwcm90ZWN0
ZWQ6CiAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUxpc3Q+IG1fY3VlczsKIAogcHJpdmF0ZToKLSAg
ICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CisjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisgICAgVGV4dFRyYWNrUmVn
aW9uTGlzdCogZW5zdXJlVGV4dFRyYWNrUmVnaW9uTGlzdCgpOworICAgIFJlZlB0cjxUZXh0VHJh
Y2tSZWdpb25MaXN0PiBtX3JlZ2lvbnM7CisjZW5kaWYKIAogI2lmIFVTRShQTEFURk9STV9URVhU
X1RSQUNLX01FTlUpCiAgICAgdmlydHVhbCBUZXh0VHJhY2sqIHB1YmxpY1RyYWNrKCkgT1ZFUlJJ
REUgeyByZXR1cm4gdGhpczsgfQpAQCAtMTU1LDYgKzE2OCw4IEBAIHByaXZhdGU6CiAgICAgUmVm
UHRyPFBsYXRmb3JtVGV4dFRyYWNrPiBtX3BsYXRmb3JtVGV4dFRyYWNrOwogI2VuZGlmCiAKKyAg
ICBUZXh0VHJhY2tDdWVMaXN0KiBlbnN1cmVUZXh0VHJhY2tDdWVMaXN0KCk7CisKICAgICBIVE1M
TWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKICAgICBBdG9taWNTdHJpbmcgbV9raW5kOwog
ICAgIEF0b21pY1N0cmluZyBtX2xhYmVsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2suaWRsCmluZGV4IDc1ZGE2YjMwNjQ5MzU1MTg0NzEyNDY3Nzc5ZDVhODQ5MDIxZTRhMmYuLmRh
MzU1ZTJmY2Y4NDgzOWJhZDhjZTAyNzU3YjhmZjliYjZhMTVmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1RleHRUcmFjay5pZGwKQEAgLTQ1LDYgKzQ1LDEzIEBACiAgICAgdm9pZCByZW1v
dmVDdWUoaW4gVGV4dFRyYWNrQ3VlIGN1ZSkKICAgICAgICAgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCisjaWYgZGVmaW5lZChFTkFCTEVfV0VCVlRUX1JFR0lPTlMpICYmIEVOQUJMRV9XRUJWVFRf
UkVHSU9OUworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0VHJhY2tSZWdpb25MaXN0IHJlZ2lv
bnM7CisgICAgdm9pZCBhZGRSZWdpb24oaW4gVGV4dFRyYWNrUmVnaW9uIHJlZ2lvbik7CisgICAg
dm9pZCByZW1vdmVSZWdpb24oaW4gVGV4dFRyYWNrUmVnaW9uIHJlZ2lvbikKKyAgICAgICAgcmFp
c2VzIChET01FeGNlcHRpb24pOworI2VuZGlmCisKICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZh
Y2UKICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmNwcAppbmRleCA2NjU4ODk4MTAw
OGFlY2M2MGY5ZGViY2NiYTYzMzQ1M2M3NTMxNmFlLi42ZGJjOGM3NTM4M2ZlY2QwMDU4NDljOWZj
MzkxOTg0Njc0NmNiNGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1Rl
eHRUcmFja1JlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tSZWdpb24uY3BwCkBAIC01LDcgKzUsNyBAQAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICogbWV0Ogog
ICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgZWMgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKICAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKQEAgLTM0LDYgKzM0LDggQEAKIAogI2luY2x1ZGUgIlRleHRUcmFja1JlZ2lv
bi5oIgogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gVGhlIHJlZ2lvbiBvY2N1cGllcyBieSBkZWZhdWx0IDEwMCUgb2Yg
dGhlIHdpZHRoIG9mIHRoZSB2aWRlbyB2aWV3cG9ydC4KQEAgLTU2LDYgKzU4LDcgQEAgVGV4dFRy
YWNrUmVnaW9uOjpUZXh0VHJhY2tSZWdpb24oKQogICAgICwgbV9yZWdpb25BbmNob3IoRmxvYXRQ
b2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0QW5jaG9yUG9pbnRZKSkKICAgICAsIG1f
dmlld3BvcnRBbmNob3IoRmxvYXRQb2ludChkZWZhdWx0QW5jaG9yUG9pbnRYLCBkZWZhdWx0QW5j
aG9yUG9pbnRZKSkKICAgICAsIG1fc2Nyb2xsKGRlZmF1bHRTY3JvbGwpCisgICAgLCBtX3RyYWNr
KDApCiB7CiB9CiAKQEAgLTYzLDYgKzY2LDExIEBAIFRleHRUcmFja1JlZ2lvbjo6flRleHRUcmFj
a1JlZ2lvbigpCiB7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjpzZXRUcmFjayhUZXh0VHJh
Y2sqIHRyYWNrKQoreworICAgIG1fdHJhY2sgPSB0cmFjazsKK30KKwogdm9pZCBUZXh0VHJhY2tS
ZWdpb246OnNldElkKGNvbnN0IFN0cmluZyYgaWQpCiB7CiAgICAgbV9pZCA9IGlkOwpAQCAtMTc1
LDYgKzE4MywxNyBAQCB2b2lkIFRleHRUcmFja1JlZ2lvbjo6c2V0U2Nyb2xsKGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIG1fc2Nyb2xsID0gdmFsdWUg
PT0gdXBTY3JvbGxWYWx1ZUtleXdvcmQ7CiB9CiAKK3ZvaWQgVGV4dFRyYWNrUmVnaW9uOjp1cGRh
dGVQYXJhbWV0ZXJzRnJvbVJlZ2lvbihUZXh0VHJhY2tSZWdpb24qIHJlZ2lvbikKK3sKKyAgICBt
X2hlaWdodEluTGluZXMgPSByZWdpb24tPmhlaWdodCgpOworICAgIG1fd2lkdGggPSByZWdpb24t
PndpZHRoKCk7CisKKyAgICBtX3JlZ2lvbkFuY2hvciA9IEZsb2F0UG9pbnQocmVnaW9uLT5yZWdp
b25BbmNob3JYKCksIHJlZ2lvbi0+cmVnaW9uQW5jaG9yWSgpKTsKKyAgICBtX3ZpZXdwb3J0QW5j
aG9yID0gRmxvYXRQb2ludChyZWdpb24tPnZpZXdwb3J0QW5jaG9yWCgpLCByZWdpb24tPnZpZXdw
b3J0QW5jaG9yWSgpKTsKKworICAgIHNldFNjcm9sbChyZWdpb24tPnNjcm9sbCgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKK30KKwogdm9pZCBUZXh0VHJhY2tSZWdpb246OnNldFJlZ2lvblNldHRp
bmdzKGNvbnN0IFN0cmluZyYgaW5wdXQpCiB7CiAgICAgLy8gRklYTUUoMTA5ODE4KTogUGFyc2Ug
cmVnaW9uIGhlYWRlciBtZXRhZGF0YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrUmVnaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbi5oCmluZGV4IDllYjNjYjU5MGNlN2QyN2ZhMzkyNjJiMDczYmEyMjUxODJiOWRm
MDAuLjNmM2Q0M2VmMTljMzk3MTU3NTZjYzhkN2Y3MzU0MTgxNDQwYjI2ZDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVnaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb24uaApAQCAtNDksNyArNDksOCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UZXh0VHJhY2tSZWdpb24oKTsKIAotICAgIFRleHRUcmFj
ayogdHJhY2soKSBjb25zdCB7IHJldHVybiAwOyB9CisgICAgVGV4dFRyYWNrKiB0cmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1fdHJhY2s7IH0KKyAgICB2b2lkIHNldFRyYWNrKFRleHRUcmFjayopOwog
CiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lk
IHNldElkKGNvbnN0IFN0cmluZyYpOwpAQCAtNzUsNiArNzYsOCBAQCBwdWJsaWM6CiAgICAgY29u
c3QgQXRvbWljU3RyaW5nIHNjcm9sbCgpIGNvbnN0OwogICAgIHZvaWQgc2V0U2Nyb2xsKGNvbnN0
IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgdXBkYXRlUGFyYW1l
dGVyc0Zyb21SZWdpb24oVGV4dFRyYWNrUmVnaW9uKik7CisKICAgICBjb25zdCBTdHJpbmcmIHJl
Z2lvblNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5nczsgfQogICAgIHZvaWQgc2V0
UmVnaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAKQEAgLTEwMSw2ICsxMDQsMTIgQEAgcHJp
dmF0ZToKICAgICBGbG9hdFBvaW50IG1fdmlld3BvcnRBbmNob3I7CiAKICAgICBib29sIG1fc2Ny
b2xsOworCisgICAgLy8gVGhlIG1lbWJlciB2YXJpYWJsZSB0cmFjayBjYW4gYmUgYSByYXcgcG9p
bnRlciBhcyBpdCB3aWxsIG5ldmVyCisgICAgLy8gcmVmZXJlbmNlIGEgZGVzdHJveWVkIFRleHRU
cmFjaywgYXMgdGhpcyBtZW1iZXIgdmFyaWFibGUKKyAgICAvLyBpcyBjbGVhcmVkIGluIHRoZSBU
ZXh0VHJhY2sgZGVzdHJ1Y3RvciBhbmQgaXQgaXMgZ2VuZXJhbGx5CisgICAgLy8gc2V0L3Jlc2V0
IHdpdGhpbiB0aGUgYWRkUmVnaW9uIGFuZCByZW1vdmVSZWdpb24gbWV0aG9kcy4KKyAgICBUZXh0
VHJhY2sqIG1fdHJhY2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lvbkxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42M2M2MmRhYzM0NjA1ZTg4M2MwNWU0MDlhNTMwOTczZDk2OWNlMmRhCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0LmNwcApA
QCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoV0VCVlRUX1JFR0lPTlMpCisKKyNpbmNsdWRlICJU
ZXh0VHJhY2tSZWdpb25MaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRyYWNr
UmVnaW9uTGlzdDo6VGV4dFRyYWNrUmVnaW9uTGlzdCgpCit7Cit9CisKK3Vuc2lnbmVkIGxvbmcg
VGV4dFRyYWNrUmVnaW9uTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9saXN0
LnNpemUoKTsKK30KKworVGV4dFRyYWNrUmVnaW9uKiBUZXh0VHJhY2tSZWdpb25MaXN0OjppdGVt
KHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1fbGlzdC5zaXplKCkp
CisgICAgICAgIHJldHVybiBtX2xpc3RbaW5kZXhdLmdldCgpOworCisgICAgcmV0dXJuIDA7Cit9
CisKK1RleHRUcmFja1JlZ2lvbiogVGV4dFRyYWNrUmVnaW9uTGlzdDo6Z2V0UmVnaW9uQnlJZChj
b25zdCBTdHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9s
aXN0LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xpc3RbaV0tPmlkKCkgPT0gaWQpCisg
ICAgICAgICAgICByZXR1cm4gbV9saXN0W2ldLmdldCgpOworICAgIH0KKyAgICByZXR1cm4gMDsK
K30KKwordm9pZCBUZXh0VHJhY2tSZWdpb25MaXN0OjphZGQoUGFzc1JlZlB0cjxUZXh0VHJhY2tS
ZWdpb24+IHJlZ2lvbikKK3sKKyAgICBtX2xpc3QuYXBwZW5kKHJlZ2lvbik7Cit9CisKK2Jvb2wg
VGV4dFRyYWNrUmVnaW9uTGlzdDo6cmVtb3ZlKFRleHRUcmFja1JlZ2lvbiogcmVnaW9uKQorewor
ICAgIHNpemVfdCBpbmRleCA9IG1fbGlzdC5maW5kKHJlZ2lvbik7CisgICAgaWYgKGluZGV4ID09
IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2xpc3QucmVtb3ZlKGlu
ZGV4KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUZXh0VHJhY2tSZWdpb25MaXN0Ojpj
bGVhcigpCit7CisgICAgbV9saXN0LmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbkxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrUmVn
aW9uTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3MGUzZTU2ZWM3MzViN2Q5YzM2MDU3MDYwMjljNzMwOTZh
YTBjMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja1JlZ2lvbkxpc3QuaApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0
VHJhY2tSZWdpb25MaXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrUmVnaW9uTGlzdF9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShXRUJWVFRfUkVHSU9OUykKKworI2luY2x1ZGUg
IlRleHRUcmFja1JlZ2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFRyYWNrUmVnaW9uTGlzdCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFRleHRUcmFja1JlZ2lvbkxpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxUZXh0VHJhY2tSZWdpb25MaXN0PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0VHJhY2tSZWdpb25MaXN0KCkpOworICAgIH0KKworICAgIH5UZXh0VHJh
Y2tSZWdpb25MaXN0KCkgeyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0Owor
CisgICAgVGV4dFRyYWNrUmVnaW9uKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICBU
ZXh0VHJhY2tSZWdpb24qIGdldFJlZ2lvbkJ5SWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CisKKyAg
ICB2b2lkIGFkZChQYXNzUmVmUHRyPFRleHRUcmFja1JlZ2lvbj4pOworICAgIGJvb2wgcmVtb3Zl
KFRleHRUcmFja1JlZ2lvbiopOworCitwcml2YXRlOgorICAgIFRleHRUcmFja1JlZ2lvbkxpc3Qo
KTsKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFja1JlZ2lv
bj4gPiBtX2xpc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja1JlZ2lv
bkxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tSZWdpb25MaXN0
LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZGNhNjI5ODY5NDI4OGZhYWFkODg0MTA5NzM0YjNhYzFkN2JmZDk0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tS
ZWdpb25MaXN0LmlkbApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitbCisgICAgQ29uZGl0
aW9uYWw9VklERU9fVFJBQ0sgJiBXRUJWVFRfUkVHSU9OUywKKyAgICBWOEVuYWJsZWRBdFJ1bnRp
bWU9d2Via2l0VmlkZW9UcmFjaywKKyAgICBJbmRleGVkR2V0dGVyLAorICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKK10gaW50ZXJmYWNlIFRleHRUcmFja1JlZ2lvbkxpc3QgeworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICBUZXh0VHJhY2tSZWdp
b24gaXRlbShpbiB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICBUZXh0VHJhY2tSZWdpb24gZ2V0
UmVnaW9uQnlJZChpbiBET01TdHJpbmcgaWQpOworfTsKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGMwMGVjOGMxNDk0Y2Ex
MmMxODI1NDMwNTlkNDg4ODBjOGNiM2VhZDguLjk3OWM1M2NhMmNmZjg3NjQ5ZmQ3OGI3YTNkMjdm
MWRhZWEyMzQzYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wMy0yNSAgVmljdG9yIENh
cmJ1bmUgIDx2Y2FyYnVuZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGV4dFRyYWNrIEV4dGVu
c2lvbiBmb3IgV2ViVlRUIFJlZ2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwOTgyMAorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNv
bi4KKworICAgICAgICAqIG1lZGlhL3RyYWNrL3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVn
aW9uLWxpc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBtZWRpYS90cmFjay9yZWdp
b25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0Lmh0bWw6IEFkZGVkLgorCiAyMDEzLTAz
LTI0ICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6
IENyYXNoIGluIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlTcGluQnV0dG9uOjppbmNyZW1lbnRCdXR0
b24oKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQv
dGV4dC10cmFjay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tZWRpYS90
cmFjay9yZWdpb25zLXdlYnZ0dC90ZXh0LXRyYWNrLXJlZ2lvbi1saXN0LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMTNjNzQ0M2M3ZDdmMGQ2MTIzNjBlYmRmOTY4ZTNhMjYzMGI0YTZlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4
dC10cmFjay1yZWdpb24tbGlzdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MSBAQAorVGVzdHMg
VGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJhdG9yW10sIGFu
ZCBnZXRSZWdpb25CeUlkKCkKKworCisqKiBJbXBsaWNpdCBtb2RlIGRpc2FibGVkIGFuZCB0aGUg
cmVnaW9ucyBhdHRyaWJ1dGUgaXMgbnVsbCAqKgorRVhQRUNURUQgKHRlc3RUcmFjay50cmFjay5t
b2RlID09ICdkaXNhYmxlZCcpIE9LCitFWFBFQ1RFRCAodGVzdFRyYWNrLnRyYWNrLnJlZ2lvbnMg
PT0gJ251bGwnKSBPSworCisqKiBUaGUgcmVnaW9ucyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGFuIGVt
cHR5IFRleHRUcmFja1JlZ2lvbkxpc3QgKioKK0VYUEVDVEVEIChyZWdpb25zICE9IG51bGwgPT0g
J3RydWUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKKworKiogVGhl
IGRlZmF1bHQgdmFsdWUgb2YgdGhlIHRyYWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51
bGwqKgorRVhQRUNURUQgKHJlZ2lvbi50cmFjayA9PSAnbnVsbCcpIE9LCisKKyoqIFRoZSBhZGRS
ZWdpb24oKSBtZXRob2QgcHJvcGVybHkgdXBkYXRlcyB0aGUgVGV4dFRyYWNrUmVnaW9uTGlzdCBv
YmplY3QgKioKK0VYUEVDVEVEIChyZWdpb25zLmxlbmd0aCA9PSAnMScpIE9LCitFWFBFQ1RFRCAo
cmVnaW9uc1swXSA9PSByZWdpb24gPT0gJ3RydWUnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0u
dHJhY2sgPT0gdGVzdFRyYWNrLnRyYWNrID09ICd0cnVlJykgT0sKKworKiogVGhlIHRyYWNrIGF0
dHJpYnV0ZSBzaG91bGQgY29ycmVjdGx5IHJlZmxlY3QgdGhlIHRyYWNrIHRvIHdoaWNoIHRoZSBy
ZWdpb24gd2FzIGFkZGVkIHRvKioKK0VYUEVDVEVEIChyZWdpb24udHJhY2sgPT0gdGVzdFRyYWNr
LnRyYWNrID09ICd0cnVlJykgT0sKKworKiogQWRkaW5nIGEgcmVnaW9uIHdpdGggYW4gZXhpc3Rp
bmcgaWQgc2hvdWxkIHVwZGF0ZSB0aGUgZXhpc3RpbmcgcmVnaW9uICoqCitFWFBFQ1RFRCAocmVn
aW9uc1swXS52aWV3cG9ydEFuY2hvclggPT0gJzU5JykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBd
LnZpZXdwb3J0QW5jaG9yWSA9PSAnNjgnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ucmVnaW9u
QW5jaG9yWCA9PSAnMjAnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0ucmVnaW9uQW5jaG9yWSA9
PSAnMzAnKSBPSworRVhQRUNURUQgKHJlZ2lvbnNbMF0uaGVpZ2h0ID09ICc1JykgT0sKK0VYUEVD
VEVEIChyZWdpb25zWzBdLndpZHRoID09ICc4NycpIE9LCitFWFBFQ1RFRCAocmVnaW9uc1swXS5z
Y3JvbGwgPT0gJ3VwJykgT0sKK0VYUEVDVEVEIChyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdpb24g
PT0gJ3RydWUnKSBPSworCisqKiBBZGQgdGhlIHJlZ2lvbiBiYWNrIGFuZCBjaGVjayBpZiByZW1v
dmVSZWdpb24oKSByZW1vdmVzIGl0IHByb3Blcmx5ICoqCitFWFBFQ1RFRCAocmVnaW9ucy5sZW5n
dGggPT0gJzEnKSBPSworRVhQRUNURUQgKHJlZ2lvbnMubGVuZ3RoID09ICcwJykgT0sKKworKiog
SW4gY2FzZSB0aGUgcmVnaW9uIGlzIG5vdCBmb3VuZCwgTm90Rm91bmRFcnJvciBzaG91bGQgYmUg
dGhyb3duICoqCitFcnJvcjogTm90Rm91bmRFcnJvcjogRE9NIEV4Y2VwdGlvbiA4CisKK0VORCBP
RiBURVNUCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL3RyYWNrL3JlZ2lvbnMtd2Vi
dnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3RyYWNr
L3JlZ2lvbnMtd2VidnR0L3RleHQtdHJhY2stcmVnaW9uLWxpc3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
NzZlMDY2ODAwY2ZlMzA4YzNlYjdlNDhmM2Y1M2I4ZmRjMDFlM2EyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svcmVnaW9ucy13ZWJ2dHQvdGV4dC10cmFjay1yZWdp
b24tbGlzdC5odG1sCkBAIC0wLDAgKzEsOTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
ICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCisgICAgICAgIDxzY3JpcHQgc3JjPS4u
Ly4uL21lZGlhLWZpbGUuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPS4uLy4uL3Zp
ZGVvLXRlc3QuanM+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciB0ZXN0
VHJhY2s7CisgICAgICAgIHZhciByZWdpb247CisgICAgICAgIHZhciByZWdpb25zOworICAgICAg
ICB2YXIgdXBkYXRlZFJlZ2lvbjsKKworICAgICAgICBmdW5jdGlvbiBzdGFydFRlc3QoKQorICAg
ICAgICB7CisgICAgICAgICAgICB0ZXN0VHJhY2sgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgndHJhY2snKVswXTsKKworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogSW1w
bGljaXQgbW9kZSBkaXNhYmxlZCBhbmQgdGhlIHJlZ2lvbnMgYXR0cmlidXRlIGlzIG51bGwgKioi
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLm1vZGUiLCAiZGlz
YWJsZWQiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGVzdFRyYWNrLnRyYWNrLnJlZ2lv
bnMiLCBudWxsKTsKKworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLm1vZGUgPSAiaGlkZGVu
IjsKKyAgICAgICAgICAgIHJlZ2lvbnMgPSB0ZXN0VHJhY2sudHJhY2sucmVnaW9uczsKKworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIHJlZ2lvbnMgYXR0cmlidXRlIHNob3Vs
ZCBiZSBhbiBlbXB0eSBUZXh0VHJhY2tSZWdpb25MaXN0ICoqIik7CisgICAgICAgICAgICB0ZXN0
RXhwZWN0ZWQoInJlZ2lvbnMgIT0gbnVsbCIsIHRydWUpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJyZWdpb25zLmxlbmd0aCIsIDApOworCisgICAgICAgICAgICByZWdpb24gPSBuZXcgVGV4
dFRyYWNrUmVnaW9uKCk7CisgICAgICAgICAgICByZWdpb24uaWQgPSAiVGVzdElkIjsKKworICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIHRy
YWNrIGF0dHJpYnV0ZSBvZiB0aGUgcmVnaW9uIGlzIG51bGwqKiIpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb24udHJhY2siLCBudWxsKTsKKworICAgICAgICAgICAgdGVzdFRyYWNr
LnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxi
cj4qKiBUaGUgYWRkUmVnaW9uKCkgbWV0aG9kIHByb3Blcmx5IHVwZGF0ZXMgdGhlIFRleHRUcmFj
a1JlZ2lvbkxpc3Qgb2JqZWN0ICoqIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lv
bnMubGVuZ3RoIiwgMSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0gPT0g
cmVnaW9uIiwgdHJ1ZSk7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbnNbMF0udHJh
Y2sgPT0gdGVzdFRyYWNrLnRyYWNrIiwgdHJ1ZSk7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiPGJyPioqIFRoZSB0cmFjayBhdHRyaWJ1dGUgc2hvdWxkIGNvcnJlY3RseSByZWZsZWN0IHRo
ZSB0cmFjayB0byB3aGljaCB0aGUgcmVnaW9uIHdhcyBhZGRlZCB0byoqIik7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoInJlZ2lvbi50cmFjayA9PSB0ZXN0VHJhY2sudHJhY2siLCB0cnVlKTsK
KworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbiA9IG5ldyBUZXh0VHJhY2tSZWdpb24oKTsKKyAg
ICAgICAgICAgIHVwZGF0ZWRSZWdpb24uaWQgPSByZWdpb24uaWQ7CisgICAgICAgICAgICB1cGRh
dGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWCA9IDU5OworICAgICAgICAgICAgdXBkYXRlZFJlZ2lv
bi52aWV3cG9ydEFuY2hvclkgPSA2ODsKKyAgICAgICAgICAgIHVwZGF0ZWRSZWdpb24ucmVnaW9u
QW5jaG9yWCA9IDIwOworICAgICAgICAgICAgdXBkYXRlZFJlZ2lvbi5yZWdpb25BbmNob3JZID0g
MzA7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLmhlaWdodCA9IDU7CisgICAgICAgICAgICB1
cGRhdGVkUmVnaW9uLndpZHRoID0gODc7CisgICAgICAgICAgICB1cGRhdGVkUmVnaW9uLnNjcm9s
bCA9ICJ1cCI7CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIEFkZGluZyBhIHJl
Z2lvbiB3aXRoIGFuIGV4aXN0aW5nIGlkIHNob3VsZCB1cGRhdGUgdGhlIGV4aXN0aW5nIHJlZ2lv
biAqKiIpOworICAgICAgICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbih1cGRhdGVkUmVn
aW9uKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1swXS52aWV3cG9ydEFuY2hv
clgiLCB1cGRhdGVkUmVnaW9uLnZpZXdwb3J0QW5jaG9yWCk7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoInJlZ2lvbnNbMF0udmlld3BvcnRBbmNob3JZIiwgdXBkYXRlZFJlZ2lvbi52aWV3cG9y
dEFuY2hvclkpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLnJlZ2lvbkFu
Y2hvclgiLCB1cGRhdGVkUmVnaW9uLnJlZ2lvbkFuY2hvclgpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJyZWdpb25zWzBdLnJlZ2lvbkFuY2hvclkiLCB1cGRhdGVkUmVnaW9uLnJlZ2lvbkFu
Y2hvclkpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdLmhlaWdodCIsIHVw
ZGF0ZWRSZWdpb24uaGVpZ2h0KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgicmVnaW9uc1sw
XS53aWR0aCIsIHVwZGF0ZWRSZWdpb24ud2lkdGgpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJyZWdpb25zWzBdLnNjcm9sbCIsIHVwZGF0ZWRSZWdpb24uc2Nyb2xsKTsKKworICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJyZWdpb25zWzBdICE9IHVwZGF0ZWRSZWdpb24iLCB0cnVlKTsKKwor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogQWRkIHRoZSByZWdpb24gYmFjayBhbmQg
Y2hlY2sgaWYgcmVtb3ZlUmVnaW9uKCkgcmVtb3ZlcyBpdCBwcm9wZXJseSAqKiIpOworICAgICAg
ICAgICAgdGVzdFRyYWNrLnRyYWNrLmFkZFJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJyZWdpb25zLmxlbmd0aCIsIDEpOworICAgICAgICAgICAgdGVzdFRyYWNrLnRy
YWNrLnJlbW92ZVJlZ2lvbihyZWdpb24pOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJyZWdp
b25zLmxlbmd0aCIsIDApOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBJbiBj
YXNlIHRoZSByZWdpb24gaXMgbm90IGZvdW5kLCBOb3RGb3VuZEVycm9yIHNob3VsZCBiZSB0aHJv
d24gKioiKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgIHRlc3RUcmFjay50cmFj
ay5yZW1vdmVSZWdpb24ocmVnaW9uKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IEZJWE1FKDEwOTgxOCk6IFVwZGF0ZSB0ZXN0IGZvciBtdWx0aXBsZSBpbml0aWFsIHJlZ2lvbnMg
KGFmdGVyIHBhcnNpbmcgaXMgc3VwcG9ydGVkKS4KKworICAgICAgICAgICAgY29uc29sZVdyaXRl
KCIiKTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0
aW9uIHN0YXJ0VGVzdFdpdGhEZWxheSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldFRpbWVv
dXQoc3RhcnRUZXN0LCAxMDApOworICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICAgIDwv
aGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InN0YXJ0VGVzdFdpdGhEZWxheSgpIj4KKyAgICAgICAg
PHA+VGVzdHMgVGV4dFRyYWNrUmVnaW9uTGlzdCBmdW5jdGlvbmFsaXR5OiBsZW5ndGgsIG9wZXJh
dG9yW10sIGFuZCBnZXRSZWdpb25CeUlkKCk8L3A+CisgICAgICAgIDx2aWRlbz4KKyAgICAgICAg
ICAgIDx0cmFjayBpZD0idGVzdFRyYWNrIiBzcmM9ImNhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1m
YXN0LnZ0dCI+CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>