<?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>160068</bug_id>
          
          <creation_ts>2016-07-21 18:48:19 -0700</creation_ts>
          <short_desc>Media controls on apple.com don&apos;t disappear when movie finishes playing</short_desc>
          <delta_ts>2016-07-25 12:59:07 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jonlee</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1213455</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-21 18:48:19 -0700</bug_when>
    <thetext>Media controls on apple.com don&apos;t disappear when movie finishes playing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213456</commentid>
    <comment_count>1</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-21 18:48:50 -0700</bug_when>
    <thetext>&lt;rdar://problem/26668526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213457</commentid>
    <comment_count>2</comment_count>
      <attachid>284297</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-21 18:55:22 -0700</bug_when>
    <thetext>Created attachment 284297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213774</commentid>
    <comment_count>3</comment_count>
      <attachid>284297</attachid>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-07-22 15:35:31 -0700</bug_when>
    <thetext>Comment on attachment 284297
Patch

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

Once there is an ended event, from then on these controls are always hidden? That seems like a pretty strong rule. What if the src changes or what if we scrub back from the end and start playing again. Am I missing something or is that really the behavior we want?

Is it possible to have a streaming test case also since it has a different code path?

&gt; Source/WebCore/html/HTMLMediaElement.cpp:4441
&gt; +                m_hasEverSentEndEvent = true;

Seems like the streaming case also needs to add the behavior restriction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213778</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-22 15:50:29 -0700</bug_when>
    <thetext>The check for m_element.hasEverSentEndEvent() happens right before isElementLargeEnoughForMainContent(m_element). Before we call into this codepath, we&apos;ve already established the following about the video:

- It is not currently ended
- The user has not gestured it (e.g. to play/pause)
- It is a &lt;video&gt; (with video)

Generally, this is enough to say that we should show media controls for it as long as it is large. This patch adds the additional constraint here that it must also not have ended once before, since if it has ended once already and the user has not gestured for it to begin again, we shouldn&apos;t be showing controls.

It the user has gestured again for the video to play, the check above for !hasBehaviorRestriction(RequireUserGestureToControlControlsManager) || ScriptController::processingUserGestureForMedia() will succeed, and we will show media controls.

(In reply to comment #3)
&gt; Comment on attachment 284297 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284297&amp;action=review
&gt; 
&gt; Once there is an ended event, from then on these controls are always hidden?
&gt; That seems like a pretty strong rule. What if the src changes or what if we
&gt; scrub back from the end and start playing again. Am I missing something or
&gt; is that really the behavior we want?
&gt; 
&gt; Is it possible to have a streaming test case also since it has a different
&gt; code path?

I&apos;ll add a test for the streaming case.

&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:4441
&gt; &gt; +                m_hasEverSentEndEvent = true;
&gt; 
&gt; Seems like the streaming case also needs to add the behavior restriction.

Good catch. The restriction should apply here as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213790</commentid>
    <comment_count>5</comment_count>
      <attachid>284386</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-22 16:39:11 -0700</bug_when>
    <thetext>Created attachment 284386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213791</commentid>
    <comment_count>6</comment_count>
    <who name="Jeremy Jones">jeremyj-wk</who>
    <bug_when>2016-07-22 16:42:58 -0700</bug_when>
    <thetext>Need to rebase the patch, but it LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213792</commentid>
    <comment_count>7</comment_count>
      <attachid>284387</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-22 16:45:57 -0700</bug_when>
    <thetext>Created attachment 284387
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213794</commentid>
    <comment_count>8</comment_count>
      <attachid>284388</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-22 16:51:30 -0700</bug_when>
    <thetext>Created attachment 284388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213798</commentid>
    <comment_count>9</comment_count>
      <attachid>284388</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2016-07-22 17:19:15 -0700</bug_when>
    <thetext>Comment on attachment 284388
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.h:926
&gt; +    bool m_isDonePlaying : 1;

isDonePlaying is not a very good name, because it doesn&apos;t reflect the meaning of this boolean. With the current name, it isn&apos;t obvious what the difference between this value and m_playing is.

Second, I&apos;m not sure that this variable really belongs here. From discussing the use of this with you over IRC, i&apos;m not sure that HTMLMediaElement is really the class which is concerned with the use case that this variable is describing. Because of separation of concerns, it seems to me that HTMLMediaElement should be concerned with playing / pausing / seeking / etc. the video, and not concerned with keeping track of this state. It seems to me that this state belongs in something which can observe the HTMLMediaElement and make decisions based on what it sees.

Maybe I&apos;m wrong, or maybe no such place exists.... either way, I&apos;m not comfortable r+ing this patch. You should ask someone else who knows more about our media infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213872</commentid>
    <comment_count>10</comment_count>
      <attachid>284407</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-23 00:32:58 -0700</bug_when>
    <thetext>Created attachment 284407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213929</commentid>
    <comment_count>11</comment_count>
      <attachid>284418</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-23 12:00:11 -0700</bug_when>
    <thetext>Created attachment 284418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213930</commentid>
    <comment_count>12</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-23 12:09:25 -0700</bug_when>
    <thetext>Thinking more about this, I agree -- it&apos;s strange for the HTMLMediaElement to keep state around that&apos;s only relevant to the media controls heuristic. I believe that state would be better kept on the MediaElementSession in the form of a behavior restriction and have the HTMLMediaElement be able to toggle this switch on or off (which it already does today with RequireUserGestureToControlControlsManager).

(In reply to comment #9)
&gt; Comment on attachment 284388 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=284388&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.h:926
&gt; &gt; +    bool m_isDonePlaying : 1;
&gt; 
&gt; isDonePlaying is not a very good name, because it doesn&apos;t reflect the
&gt; meaning of this boolean. With the current name, it isn&apos;t obvious what the
&gt; difference between this value and m_playing is.
&gt; 
&gt; Second, I&apos;m not sure that this variable really belongs here. From discussing
&gt; the use of this with you over IRC, i&apos;m not sure that HTMLMediaElement is
&gt; really the class which is concerned with the use case that this variable is
&gt; describing. Because of separation of concerns, it seems to me that
&gt; HTMLMediaElement should be concerned with playing / pausing / seeking / etc.
&gt; the video, and not concerned with keeping track of this state. It seems to
&gt; me that this state belongs in something which can observe the
&gt; HTMLMediaElement and make decisions based on what it sees.
&gt; 
&gt; Maybe I&apos;m wrong, or maybe no such place exists.... either way, I&apos;m not
&gt; comfortable r+ing this patch. You should ask someone else who knows more
&gt; about our media infrastructure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214240</commentid>
    <comment_count>13</comment_count>
      <attachid>284497</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-25 10:20:43 -0700</bug_when>
    <thetext>Created attachment 284497
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214248</commentid>
    <comment_count>14</comment_count>
      <attachid>284497</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 10:50:22 -0700</bug_when>
    <thetext>Comment on attachment 284497
Patch for landing

Clearing flags on attachment: 284497

Committed r203690: &lt;http://trac.webkit.org/changeset/203690&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214249</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-07-25 10:50:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214304</commentid>
    <comment_count>16</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-25 12:56:28 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214305</commentid>
    <comment_count>17</comment_count>
      <attachid>284514</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-25 12:56:29 -0700</bug_when>
    <thetext>Created attachment 284514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214307</commentid>
    <comment_count>18</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2016-07-25 12:58:56 -0700</bug_when>
    <thetext>Accidentally reopened due to uploading a patch for the wrong bug. Please ignore!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284297</attachid>
            <date>2016-07-21 18:55:22 -0700</date>
            <delta_ts>2016-07-22 16:39:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160721185422.patch</filename>
            <type>text/plain</type>
            <size>23872</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UwZmFkYTA0Y2I3Yjc1
ZmU2MTkwYmQ1ZTcyNGIyNTBkZTRiZGFkOC4uMGNlZmM0YzRhOWIxYWJkYzZhOTE2MGYxYzViMTll
MjYwNGUwNTQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE2LTA3LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVu
IGEgdmlkZW8gZW5kcywgaXQgc2hvdWxkIGNhdXNlIG1lZGlhIGNvbnRyb2xzIHRvIGhpZGUgd2hp
bGUgY3VycmVudCBsb2dpYworICAgICAgICBtb3N0bHkgYWNjb3VudHMgZm9yIHRoaXMsIGl0IGRv
ZXMgbm90IGFjY291bnQgZm9yIHByb2dyYW1tYXRpYyBzZWVrcyBjYXVzaW5nCisgICAgICAgIHRo
ZSB2aWRlbyB0byBsb3NlIGl0cyAnZW5kZWQnIHN0YXR1cyBiZWZvcmUgcXVlcnlpbmcgZm9yIHdo
ZXRoZXIgb3Igbm90IHRvCisgICAgICAgIHNob3cgbWVkaWEgY29udHJvbHMuCisKKyAgICAgICAg
VHdvIG5ldyBBUEkgdGVzdHM6IGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgYW5k
CisgICAgICAgIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0
bWwKKworICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0V2ZXJTZW50RW5kRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAg
ICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNv
bnRyb2xDb250cm9sc01hbmFnZXIpOgorCiAyMDE2LTA3LTIwICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFBhdXNpbmcgYXV0b3BsYXllZCBtZWRpYSBz
aG91bGQgbm90IHJlbW92ZSBhbGwgcmVzdHJpY3Rpb25zIGZvciB0aGF0IG1lZGlhIGVsZW1lbnQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDYwMmQ4NmNmMDhi
MzAwMDJjNmM1ZmViNTkyNGIxZGJjNzdkOTMwNjQuLmVlYmQ0ZTE2YTk2NTJjNmRjNjUzNjE0ZTMw
MDE1NWM4ZjFiN2Q5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMzk4LDYgKzM5OCw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3Nl
ZWtpbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRTdGFsbGVkRXZlbnQoZmFsc2UpCiAgICAgLCBtX3Nl
bnRFbmRFdmVudChmYWxzZSkKKyAgICAsIG1faGFzRXZlclNlbnRFbmRFdmVudChmYWxzZSkKICAg
ICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0
cnVlKQogICAgICwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUoZmFsc2UpCkBAIC0zMDEwLDYgKzMw
MTEsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGVuZGVkUGxheWJhY2soKSAmJiByZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSA+IDA7CiB9CiAKK2Jv
b2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzRXZlclNlbnRFbmRFdmVudCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1faGFzRXZlclNlbnRFbmRFdmVudDsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVtZW50
OjphdXRvcGxheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5j
aHJvbml6YXRpb24oYXV0b3BsYXlBdHRyKTsKQEAgLTQ0MTAsNyArNDQxNiw5IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAg
ICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBlbmRl
ZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgIGlmICghbV9zZW50RW5kRXZlbnQp
IHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgbV9oYXNFdmVyU2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBtX21lZGlh
U2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgY3VycmVudCBtZWRpYSBj
b250cm9sbGVyLCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBzdGF0ZQogICAgICAgICAgICAg
Ly8gZm9yIHRoZSBtZWRpYSBlbGVtZW50J3MgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLgpAQCAt
NDQzMCw2ICs0NDM4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVD
aGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIC8vIGJ5IGNhbGxpbmcgcGxheSgpCiAg
ICAgICAgICAgICBpZiAoIW1fc2VudEVuZEV2ZW50ICYmIG1fcGxheWVyICYmIG1fcGxheWVyLT5l
bmRlZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIG1faGFzRXZlclNlbnRFbmRFdmVudCA9IHRydWU7CiAgICAgICAgICAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CiAgICAgICAgICAgICAgICAg
bV9wYXVzZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNldFBsYXlpbmcoZmFsc2UpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA4NDdhZTI2MDVlMmJkNGRhNjJk
M2Y3NWZmMjdmYjJmY2VhZmE5ZTM4Li5mOGM5NTVmMzJiNDVlZTI2ODk3NTRlYjM1YjM4ZmFmNDlm
NjFjYTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjA5LDYg
KzIwOSw3IEBAIHB1YmxpYzoKICAgICBSZWY8VGltZVJhbmdlcz4gcGxheWVkKCkgb3ZlcnJpZGU7
CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBlbmRlZCgpIGNvbnN0OworICAgIGJvb2wgaGFzRXZlclNlbnRFbmRF
dmVudCgpIGNvbnN0OwogICAgIGJvb2wgYXV0b3BsYXkoKSBjb25zdDsKICAgICBib29sIGlzQXV0
b3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2F1dG9wbGF5aW5nOyB9CiAgICAgYm9vbCBsb29w
KCkgY29uc3Q7CkBAIC05MjIsNiArOTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIHRpbWUgaGFz
IG5vdCBjaGFuZ2VkIHNpbmNlIHNlbmRpbmcgYW4gImVuZGVkIiBldmVudAogICAgIGJvb2wgbV9z
ZW50RW5kRXZlbnQgOiAxOworICAgIGJvb2wgbV9oYXNFdmVyU2VudEVuZEV2ZW50IDogMTsKIAog
ICAgIGJvb2wgbV9wYXVzZWRJbnRlcm5hbCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01l
ZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDgzMmFiNmQ5OTA2MGEwODNlNjdmZjFkZDhjNTI1
MmZkZjg1YzNkOWEuLjFiYThjMmIyODc2ZmY5NTJmNzJhZTEwNWM4YmU5ZjZkNjg3NzAxOTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjU4LDYg
KzI1OCwxMSBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01h
bmFnZXIoKSBjb25zdAogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTm8gdmlkZW8i
KTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaWYgKG1fZWxlbWVudC5oYXNFdmVyU2VudEVuZEV2ZW50KCkpIHsKKyAgICAgICAgICAgIExP
RyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIg
LSByZXR1cm5pbmcgRkFMU0U6IEFscmVhZHkgZmluaXNoZWQgcGxheWluZyBvbmNlIik7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNFbGVtZW50
TGFyZ2VFbm91Z2hGb3JNYWluQ29udGVudChtX2VsZW1lbnQpKSB7CiAgICAgICAgICAgICBMT0co
TWVkaWEsICJNZWRpYUVsZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0g
cmV0dXJuaW5nIFRSVUU6IElzIG1haW4gY29udGVudCIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDM3MmMwOGQ1YjBjZTZkNDdkM2UwZTk2ZDMw
YmU0MzVmZTE0MTNmMmYuLjJhOThjMmU5MTc1MGU4YWNjMDdmNmJhNjc5MWI2M2QwZWNhOTI5MjAg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMiBAQAorMjAxNi0wNy0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KKworICAgICAgICBNZWRpYSBjb250cm9scyBvbiBhcHBsZS5jb20gZG9uJ3QgZGlzYXBw
ZWFyIHdoZW4gbW92aWUgZmluaXNoZXMgcGxheWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBuZXcgdW5pdCB0ZXN0cy4gUGxlYXNlIHNlZSBX
ZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW06
CisgICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmll
dzpmaW5hbE1lc3NhZ2VTdHJpbmc6XSk6CisgICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdl
SGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bRGlkUGxheU1lc3Nh
Z2VIYW5kbGVyIGluaXRXaXRoV0tXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtEaWRQ
bGF5TWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRN
ZXNzYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdl
LXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTIwICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
aU9TIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTAzZjEzZGE4YmM3NGQ3
OTc3Yjg5NWMwNTkyZGRlOTRiMGYwYzY3Yy4uMzMzOTdhYjJiYzk2ZTMyN2NkZjc1MTY5MTFkMzUw
NjNhYTU5OWQ4MyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUyLDYgKzUyLDggQEAKIAkJ
MkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0ND
OTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUz
IC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAv
KiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLzsgfTsKIAkJMkUxNEE1MjkxRDNGRTk2
QjAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTE0QTUyODFEM0ZF
OEI4MDAxMEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sICovOyB9Owor
CQkyRTFCN0IwMDFENDFBQkE3MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRp
bmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTFCN0FGRjFENDFBOTVGMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1l
bmRpbmcuaHRtbCAqLzsgfTsKKwkJMkUxQjdCMDIxRDQxQjFCOTAwNzU1OEI0IC8qIGxhcmdlLXZp
ZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxQjdCMDExRDQxQjFCMzAw
NzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0
bWwgKi87IH07CiAJCTJFNzc2NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0MxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi87IH07CiAJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJC
MSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi87IH07CiAJCTMz
QkU1QUY5MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNUFGODEz
N0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovOyB9OwpA
QCAtNDkyLDYgKzQ5NCw4IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7
CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTJFMUI3QjAyMUQ0
MUIxQjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRv
LWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMUI3QjAwMUQ0MUFCQTcwMDc1
NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovLAogCQkJCTVDOUU1OTQxMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hl
LmRiIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYyRSAv
KiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1QzlF
NTk0MzFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCkBAIC02OTAsNiArNjk0LDggQEAKIAkJMkREN0QzQTkxNzgyMDVEMDAwMjZF
MUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREN0QzQUUxNzgyMjdBQzAwMjZFMUUzIC8q
IGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtdGV4dC12
ZXJ0aWNhbC1sci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxNEE1Mjgx
RDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFCN0FGRjFENDFBOTVGMDA3NTU4
QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
aHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxQjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdl
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10
by1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4
MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gbWFpbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1
Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBtYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMzNCOUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzE4LDYgKzEzMjQsNyBAQAog
CQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkyRTFCN0IwMTFENDFCMUIzMDA3NTU4QjQg
LyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCAqLywK
IAkJCQk1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLywK
IAkJCQk1QzlFNTkzRjFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0g
Ki8sCiAJCQkJNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIt
d2FsICovLApAQCAtMTM1MCw2ICsxMzU3LDcgQEAKIAkJCQk3Q0NCOTkyMjFEM0I0NEU3MDAzOTIy
RjYgLyogb3Blbi1tdWx0aXBsZS1leHRlcm5hbC11cmwuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFD
RjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAqLywKIAkJ
CQk1MTcxNEVCMzFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIu
aHRtbCAqLywKKwkJCQkyRTFCN0FGRjFENDFBOTVGMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vl
ay1hZnRlci1lbmRpbmcuaHRtbCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KaW5kZXgg
ZmJlZmViYWVjMWZlYjE2OGFkNzI1YzAzMWFmYjI0YjQ2MjllY2FkZi4uZTNhZWQzODkwMWU0YTI4
MmMzYTRhYjYzOWFjNTg2YTc2MjZiZmMyNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0K
QEAgLTU0LDIzICs1NCwyNSBAQCAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9p
bnQgewogCiBAZW5kCiAKLUBpbnRlcmZhY2UgRGlkUGxheU1lc3NhZ2VIYW5kbGVyIDogTlNPYmpl
Y3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja01l
c3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiBfd2ViVmlldzsKIH0KIAogQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgZXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmV0YWluKSBOU1N0cmluZyAqZmluYWxNZXNzYWdlU3RyaW5nOwogCi0tIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldzsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmlu
ZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VTdHJpbmc7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlv
biBEaWRQbGF5TWVzc2FnZUhhbmRsZXIKK0BpbXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXIKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZp
ZXcqKXdlYlZpZXcKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3
Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmluZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VTdHJp
bmcKIHsKICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIF93ZWJWaWV3ID0gd2ViVmlldzsKKyAgICBfZmluYWxNZXNzYWdlU3RyaW5nID0g
ZmluYWxNZXNzYWdlU3RyaW5nOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC04MCw3ICs4Miw3
IEBAIC0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxl
ciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkCiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0g
dHJ1ZTsKIAogICAgIE5TU3RyaW5nICpib2R5U3RyaW5nID0gKE5TU3RyaW5nICopW21lc3NhZ2Ug
Ym9keV07Ci0gICAgaWYgKFtib2R5U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAInBsYXlpbmciXSB8
fCBbYm9keVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJwYXVzZWQiXSkgeworICAgIGlmIChbYm9k
eVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6c2VsZi5maW5hbE1lc3NhZ2VTdHJpbmddKSB7CiAgICAg
ICAgIEJPT0wgaGFzQ29udHJvbHNNYW5hZ2VyID0gW193ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0Zv
ckNvbnRyb2xzTWFuYWdlcl07CiAgICAgICAgIGlmIChzZWxmLmV4cGVjdGVkVG9IYXZlQ29udHJv
bHNNYW5hZ2VyKQogICAgICAgICAgICAgRVhQRUNUX1RSVUUoaGFzQ29udHJvbHNNYW5hZ2VyKTsK
QEAgLTEzMiw3ICsxMzQsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBp
bml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxh
eWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxN
ZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6
QCJwbGF5aW5nSGFuZGxlciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBh
ZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJh
bWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3Rv
cmVCdWZmZXJlZCBkZWZlcjpOT10pOwpAQCAtMTUzLDcgKzE1NSw3IEBAIFRFU1QoVmlkZW9Db250
cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxWaWRlbykKICAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlv
bi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRp
b3Zpc3VhbE1lZGlhVHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0
YWluUHRyPERpZFBsYXlNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5
TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsK
KyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRv
cHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZp
ZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0xNzQsNyAr
MTc2LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJT
aW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhh
bmRsZXI+IHBsYXliYWNrSGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtb
TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJW
aWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBhdXNlZCJdKTsKICAgICBbW2NvbmZpZ3Vy
YXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpwbGF5
YmFja0hhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0xOTMsMTMg
KzE5NSw1OCBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdl
clNpbmdsZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogfQorICAgIAorVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlk
ZW9TZWVrc0FmdGVyRW5kaW5nKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0
aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdV
c2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICBS
ZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VI
YW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBh
bGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6
QCJlbmRlZCJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOworICAgIAorICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKKyAgICAKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0aGUgZXhw
ZWN0YXRpb24gaXMgTk8gZXZlbiBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNlZWtzIHRv
IHRoZSBiZWdpbm5pbmcuCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01h
bmFnZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdl
LXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRD
b250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKyAgICAKK1RFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvSGlkZXNDb250
cm9sc0FmdGVyU2Vla2luZ1RvRW5kKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJp
bmc6QCJlbmRlZCJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFu
ZGxlciJdOworICAgIAorICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhb
W05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHls
ZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVy
ZWQgZGVmZXI6Tk9dKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJW
aWV3LmdldCgpXTsKKyAgICAKKyAgICBSZXRhaW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9u
bG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRX
aXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpeKCkgeworICAgICAgICBbd2ViVmll
dyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBvaW50KDUwLCA1MCldOworICAgIH1dKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJvbmxvYWRIYW5kbGVyIl07CisgICAgCisg
ICAgLy8gU2luY2UgdGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgor
ICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKKyAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlby1oaWRlcy1jb250
cm9scy1hZnRlci1zZWVrLXRvLWVuZCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9y
eTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OnJlcXVlc3RdOworICAgIAorICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29u
dHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CiAKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFyZ2VWaWRlb1dpdGhvdXRBdWRpbykKIHsKICAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJh
dGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tB
dWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAg
UmV0YWluUHRyPERpZFBsYXlNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQ
bGF5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0g
YWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRh
aW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0yMjAs
NyArMjY3LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFn
ZXJBdWRpb0VsZW1lbnRTdGFydGVkV2l0aFNjcmlwdCkKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVz
UmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5v
bmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBsYXlNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVk
aWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBm
aW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
bmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmll
dyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1z
ZWVrLXRvLWVuZC5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
bGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41Yzg2OWVjNGViZjkyOGZiMTYwMWZmMThmOTMxYmZhYzcxM2Q3NDk3Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Utdmlk
ZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbApAQCAtMCwwICsxLDMxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKworICAgIGZ1
bmN0aW9uIGhhbmRsZUVuZGVkKCkgeworICAgICAgICAvLyBUaGUgbWVkaWEgY29udHJvbHMgc2hv
dWxkIGJlIHVwZGF0ZWQgb24gdGhlIG5leHQgcnVubG9vcC4KKyAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgd2luZG93Lndl
YmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoImVuZGVkIik7
CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsgfQorICAgICAgICB9LCAwKTsKKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBzZWVrVG9FbmQoKSB7CisgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ2aWRlbyIpWzBdOworICAgICAgICB2aWRlby5jdXJyZW50VGlt
ZSA9IHZpZGVvLmR1cmF0aW9uOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJlZ2luVGVzdCgpIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
Lm9ubG9hZEhhbmRsZXIucG9zdE1lc3NhZ2UoImxvYWRlZCIpOworICAgICAgICB9IGNhdGNoKGUp
IHsgfQorICAgIH0KKworICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbm1vdXNlZG93bj1z
ZWVrVG9FbmQoKSBvbmxvYWQ9YmVnaW5UZXN0KCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IG9uZW5k
ZWQ9aGFuZGxlRW5kZWQoKSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiB3ZWJraXQt
cGxheXNpbmxpbmUgc3R5bGU9IndpZHRoOiA4MDBweDsgaGVpZ2h0OiA2MDBweDsiPjwvdmlkZW8+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1l
bmRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzE2N2Y1NzRjNDYwYjI2M2IzNzMyMWM2ODY0NjFiNTQx
ZTlkYzkyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbApAQCAtMCwwICsxLDIx
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZnVuY3Rpb24gc2Vla1RvQmVnaW5uaW5nQW5kRmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuY3VycmVudFRpbWUgPSAwOwor
ICAgICAgICAgICAgLy8gVGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRo
ZSBuZXh0IHJ1bmxvb3AuCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVy
LnBvc3RNZXNzYWdlKCJlbmRlZCIpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBzZWVrVG9FbmQoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiI3Rlc3QtdmlkZW8iKS5kdXJhdGlvbiAtIDAuMTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZpZGVvIGlkPSJ0ZXN0LXZpZGVvIiBhdXRvcGxh
eSBvbmVuZGVkPXNlZWtUb0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSBvbnBsYXlpbmc9c2Vla1Rv
RW5kKCkgc3R5bGU9IndpZHRoOiA4MDBweDsgaGVpZ2h0OiA2MDBweDsiIHNyYz0ibGFyZ2Utdmlk
ZW8td2l0aC1hdWRpby5tcDQiPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284386</attachid>
            <date>2016-07-22 16:39:11 -0700</date>
            <delta_ts>2016-07-22 16:45:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160722163809.patch</filename>
            <type>text/plain</type>
            <size>27604</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UwZmFkYTA0Y2I3Yjc1
ZmU2MTkwYmQ1ZTcyNGIyNTBkZTRiZGFkOC4uNmMzNWYxYTY2ZTFjZWE2YWUwZDhkOWJiMmUzZWMz
NGJlZDNmMDY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA3LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91
bGQgY2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZSB3aGlsZSBjdXJyZW50IGxvZ2ljCisgICAg
ICAgIG1vc3RseSBhY2NvdW50cyBmb3IgdGhpcywgaXQgZG9lcyBub3QgYWNjb3VudCBmb3IgcHJv
Z3JhbW1hdGljIHNlZWtzIGNhdXNpbmcKKyAgICAgICAgdGhlIHZpZGVvIHRvIGxvc2UgaXRzICdl
bmRlZCcgc3RhdHVzIGJlZm9yZSBxdWVyeWluZyBmb3Igd2hldGhlciBvciBub3QgdG8KKyAgICAg
ICAgc2hvdyBtZWRpYSBjb250cm9scy4KKworICAgICAgICBUaHJlZSBuZXcgQVBJIHRlc3RzOiBs
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sCisgICAgICAgIGxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwKKyAgICAgICAgbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKKworICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Omhhc0V2ZXJTZW50RW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01h
bmFnZXIpOgorCiAyMDE2LTA3LTIwICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFBhdXNpbmcgYXV0b3BsYXllZCBtZWRpYSBzaG91bGQgbm90IHJlbW92
ZSBhbGwgcmVzdHJpY3Rpb25zIGZvciB0aGF0IG1lZGlhIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDYwMmQ4NmNmMDhiMzAwMDJjNmM1ZmViNTky
NGIxZGJjNzdkOTMwNjQuLjZlYjExNzY0YzI1MWE5Yjc0NjhhOTc1MjQwMjdjMjgwMzZmYTc5NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzk4LDYgKzM5
OCw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAg
ICAgLCBtX3NlbnRTdGFsbGVkRXZlbnQoZmFsc2UpCiAgICAgLCBtX3NlbnRFbmRFdmVudChmYWxz
ZSkKKyAgICAsIG1faXNEb25lUGxheWluZyhmYWxzZSkKICAgICAsIG1fcGF1c2VkSW50ZXJuYWwo
ZmFsc2UpCiAgICAgLCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0cnVlKQogICAgICwgbV9jbG9zZWRD
YXB0aW9uc1Zpc2libGUoZmFsc2UpCkBAIC0zMDEwLDYgKzMwMTEsMTEgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjplbmRlZCgpIGNvbnN0CiAgICAgcmV0dXJuIGVuZGVkUGxheWJhY2soKSAmJiBy
ZXF1ZXN0ZWRQbGF5YmFja1JhdGUoKSA+IDA7CiB9CiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6
aXNEb25lUGxheWluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNEb25lUGxheWluZzsKK30K
KwogYm9vbCBIVE1MTWVkaWFFbGVtZW50OjphdXRvcGxheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oYXV0b3BsYXlBdHRyKTsKQEAgLTQ0
MTAsNyArNDQxNiw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hh
bmdlZChNZWRpYVBsYXllciopCiAgICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCBlbmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAg
ICAgIGlmICghbV9zZW50RW5kRXZlbnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVu
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9pc0RvbmVQbGF5aW5nID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAg
ICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFz
IGEgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBz
dGF0ZQogICAgICAgICAgICAgLy8gZm9yIHRoZSBtZWRpYSBlbGVtZW50J3MgY3VycmVudCBtZWRp
YSBjb250cm9sbGVyLgpAQCAtNDQzMCw3ICs0NDM4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIC8vIGJ5
IGNhbGxpbmcgcGxheSgpCiAgICAgICAgICAgICBpZiAoIW1fc2VudEVuZEV2ZW50ICYmIG1fcGxh
eWVyICYmIG1fcGxheWVyLT5lbmRlZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZl
bnQgPSB0cnVlOworICAgICAgICAgICAgICAgIG1faXNEb25lUGxheWluZyA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAg
ICAgICAgICAgICAgbV9tZWRpYVNlc3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFF
bGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2Vy
KTsKICAgICAgICAgICAgICAgICBtX3BhdXNlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2V0
UGxheWluZyhmYWxzZSk7CiAgICAgICAgICAgICB9CkBAIC00OTM2LDYgKzQ5NDYsOSBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZVBsYXlTdGF0ZShVcGRhdGVTdGF0ZSB1cGRhdGVTdGF0
ZSkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKGJvb2wgcGxheWluZykKIHsK
KyAgICBpZiAocGxheWluZykKKyAgICAgICAgbV9pc0RvbmVQbGF5aW5nID0gZmFsc2U7CisKICAg
ICBpZiAobV9wbGF5aW5nID09IHBsYXlpbmcpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCA4NDdhZTI2MDVlMmJkNGRhNjJkM2Y3NWZm
MjdmYjJmY2VhZmE5ZTM4Li5kZDY0NzVlZjQwNzQ4N2JiOTEzMGRlNDRkNTJjZDhiZDkzMmQ1Y2Nl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjA5LDYgKzIwOSw3
IEBAIHB1YmxpYzoKICAgICBSZWY8VGltZVJhbmdlcz4gcGxheWVkKCkgb3ZlcnJpZGU7CiAgICAg
UmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBlbmRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNEb25lUGxheWluZygpIGNvbnN0
OwogICAgIGJvb2wgYXV0b3BsYXkoKSBjb25zdDsKICAgICBib29sIGlzQXV0b3BsYXlpbmcoKSBj
b25zdCB7IHJldHVybiBtX2F1dG9wbGF5aW5nOyB9CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CkBA
IC05MjIsNiArOTIzLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIHRpbWUgaGFzIG5vdCBjaGFuZ2Vk
IHNpbmNlIHNlbmRpbmcgYW4gImVuZGVkIiBldmVudAogICAgIGJvb2wgbV9zZW50RW5kRXZlbnQg
OiAxOworICAgIGJvb2wgbV9pc0RvbmVQbGF5aW5nIDogMTsKIAogICAgIGJvb2wgbV9wYXVzZWRJ
bnRlcm5hbCA6IDE7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24u
Y3BwCmluZGV4IDgzMmFiNmQ5OTA2MGEwODNlNjdmZjFkZDhjNTI1MmZkZjg1YzNkOWEuLmNiOTIw
MzE5ZTJhODkyN2NkZmQxOGQ5ZWQyOTIzYmVlMmM3OTEzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjU5LDYgKzI1OSwxMSBAQCBib29sIE1l
ZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fZWxlbWVu
dC5pc0RvbmVQbGF5aW5nKCkpIHsKKyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVu
dFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IERv
bmUgcGxheWluZyIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKGlzRWxlbWVudExhcmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQobV9lbGVtZW50KSkg
ewogICAgICAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJv
bENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBUUlVFOiBJcyBtYWluIGNvbnRlbnQiKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDM3MmMwOGQ1YjBjZTZkNDdkM2UwZTk2ZDMwYmU0MzVmZTE0MTNm
MmYuLjk2YjIyYWY5YWQ1NGZhYzhiNmRkM2Q4YzBlYWMxYzAzMmJhYjUwNzggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAor
MjAxNi0wNy0yMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBNZWRpYSBjb250cm9scyBvbiBhcHBsZS5jb20gZG9uJ3QgZGlzYXBwZWFyIHdoZW4gbW92
aWUgZmluaXNoZXMgcGxheWluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTYwMDY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjY2ODUyNj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBB
UEkgdGVzdHMuIFBsZWFzZSBzZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1Zp
ZGVvQ29udHJvbHNNYW5hZ2VyLm1tOgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrTWVzc2FnZUhh
bmRsZXIgaW5pdFdpdGhXS1dlYlZpZXc6ZmluYWxNZXNzYWdlU3RyaW5nOl0pOgorICAgICAgICAo
LVtNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJl
Y2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICgtW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmlldzpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bRGlkUGxheU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJv
bGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1h
ZnRlci1zZWVrLXRvLWVuZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sOiBBZGRl
ZC4KKwogMjAxNi0wNy0yMCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGlPUyBidWlsZCBmaXguCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGUwM2YxM2RhOGJjNzRkNzk3N2I4OTVjMDU5MmRkZTk0YjBmMGM2N2MuLjNlMWI0MDUz
YWMzZTgzYmNlYmJiNjdhYmI0Y2VjNTMxZWI2MjNlMmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01Miw2ICs1Miw5IEBACiAJCTJEQzRDRjc3MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0
ZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRDNENGNzYxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24ubW0gKi87IH07CiAJCTJE
RDdEM0FGMTc4MjI3QjMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ3
RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi87
IH07CiAJCTJFMTRBNTI5MUQzRkU5NkIwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRo
LWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkUxNEE1MjgxRDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdp
dGgtYXVkaW8uaHRtbCAqLzsgfTsKKwkJMkUxQjdCMDAxRDQxQUJBNzAwNzU1OEI0IC8qIGxhcmdl
LXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0IC8qIGxh
cmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CisJCTJFMUI3QjAyMUQ0MUIx
QjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVu
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9s
cy1hZnRlci1zZWVrLXRvLWVuZC5odG1sICovOyB9OworCQkyRTFERkRGMTFENDJFMUU0MDA3MTRB
MDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5n
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5u
aW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovOyB9OwogCQkyRTc3NjVDRDE2QzREODBB
MDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tICovOyB9
OwogCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJC
MSAvKiBtYWluTWFjLm1tICovOyB9OwogCQkzM0JFNUFGOTEzN0I1QUFFMDA3MDU4MTMgLyogTW91
c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzNCRTVBRjgxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFm
dGVyQ3Jhc2hfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTQ5Miw2ICs0OTUsOSBAQAogCQkJZHN0UGF0
aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQkyRTFERkRGMTFENDJFMUU0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8sCisJCQkJMkUxQjdCMDIxRDQxQjFCOTAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJMkUxQjdCMDAxRDQxQUJBNzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXIt
ZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU5NDExRDNFQjVBQzAw
RTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
NUM5RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNh
dGlvbkNhY2hlLmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTY5MCw2ICs2OTYsOSBA
QAogCQkyREQ3RDNBOTE3ODIwNUQwMDAyNkUxRTMgLyogUmVzaXplUmV2ZXJzZVBhZ2luYXRlZFdl
YlZpZXcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzaXplUmV2
ZXJzZVBhZ2luYXRlZFdlYlZpZXcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REQ3RDNBRTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSAibG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRTE0QTUyODFEM0ZFOEI4MDAxMEYzNUIgLyogYXV0b3BsYXlpbmct
dmlkZW8td2l0aC1hdWRpby5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImF1dG9w
bGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVu
ZGluZy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWst
YWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFCN0Iw
MTFENDFCMUIzMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vl
ay10by1lbmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1o
aWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWst
dG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVy
LWVuZGluZy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0MxNkM0
RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBtYWluSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTc3
NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IG1haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMzM0I5Q0UxMTI3N0YyMzEwMEZFRkNFMyAvKiBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJldmVudEVtcHR5VXNlckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgsNiArMTMyNyw4IEBA
CiAJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJFMURGREYwMUQ0MkUxNDQwMDcxNEEw
MCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcu
aHRtbCAqLywKKwkJCQkyRTFCN0IwMTFENDFCMUIzMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlk
ZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCAqLywKIAkJCQk1QzlFNTkzRTFEM0VC
MURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLywKIAkJCQk1QzlFNTkzRjFEM0VC
MURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gKi8sCiAJCQkJNUM5RTU5NDAx
RDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsICovLApAQCAtMTM1MCw2
ICsxMzYxLDcgQEAKIAkJCQk3Q0NCOTkyMjFEM0I0NEU3MDAzOTIyRjYgLyogb3Blbi1tdWx0aXBs
ZS1leHRlcm5hbC11cmwuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyog
V2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAqLywKIAkJCQk1MTcxNEVCMzFDRjhDNzYx
MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTIuaHRtbCAqLywKKwkJCQkyRTFC
N0FGRjFENDFBOTVGMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRt
bCAqLywKIAkJCSk7CiAJCQluYW1lID0gUmVzb3VyY2VzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KaW5kZXggZmJlZmViYWVjMWZlYjE2OGFk
NzI1YzAzMWFmYjI0YjQ2MjllY2FkZi4uYWZjMTViYWQzNmJhMGU3NTQzOTA1ZDBmMTc3NzZmMTA3
M2Y4ODZlMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0KQEAgLTU0LDIzICs1NCwyNSBA
QCAtICh2b2lkKW1vdXNlRG93bkF0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgewogCiBAZW5kCiAKLUBp
bnRlcmZhY2UgRGlkUGxheU1lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI+IHsKK0BpbnRlcmZhY2UgTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIDogTlNP
YmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+IHsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiBfd2ViVmlldzsKIH0KIAogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZXhwZWN0ZWRUb0hh
dmVDb250cm9sc01hbmFnZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1N0cmlu
ZyAqZmluYWxNZXNzYWdlU3RyaW5nOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZp
ZXc6KFdLV2ViVmlldyopd2ViVmlldzsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmll
dzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVzc2FnZVN0cmluZzooTlNTdHJpbmcgKilmaW5h
bE1lc3NhZ2VTdHJpbmc7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBEaWRQbGF5TWVzc2FnZUhh
bmRsZXIKK0BpbXBsZW1lbnRhdGlvbiBNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIKIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3IGZpbmFsTWVz
c2FnZVN0cmluZzooTlNTdHJpbmcgKilmaW5hbE1lc3NhZ2VTdHJpbmcKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIF93ZWJWaWV3
ID0gd2ViVmlldzsKKyAgICBfZmluYWxNZXNzYWdlU3RyaW5nID0gZmluYWxNZXNzYWdlU3RyaW5n
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC04MCw3ICs4Miw3IEBAIC0gKHZvaWQpdXNlckNv
bnRlbnRDb250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29u
dHJvbGxlciBkCiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gdHJ1ZTsKIAogICAgIE5TU3Ry
aW5nICpib2R5U3RyaW5nID0gKE5TU3RyaW5nICopW21lc3NhZ2UgYm9keV07Ci0gICAgaWYgKFti
b2R5U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAInBsYXlpbmciXSB8fCBbYm9keVN0cmluZyBpc0Vx
dWFsVG9TdHJpbmc6QCJwYXVzZWQiXSkgeworICAgIGlmIChbYm9keVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6c2VsZi5maW5hbE1lc3NhZ2VTdHJpbmddKSB7CiAgICAgICAgIEJPT0wgaGFzQ29udHJv
bHNNYW5hZ2VyID0gW193ZWJWaWV3IF9oYXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07
CiAgICAgICAgIGlmIChzZWxmLmV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyKQogICAgICAg
ICAgICAgRVhQRUNUX1RSVUUoaGFzQ29udHJvbHNNYW5hZ2VyKTsKQEAgLTEzMiw3ICsxMzQsNyBA
QCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxh
cmdlVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxh
eWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpO
T10pOwpAQCAtMTUzLDcgKzE1NSw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVv
Q29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxWaWRlbykKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVz
UmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5v
bmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBsYXlNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVk
aWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJh
Y2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBm
aW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkg
bmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmll
dyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0xNzQsNyArMTc2LDcgQEAgVEVTVChWaWRl
b0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5
aW5nVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IHBsYXliYWNrSGFu
ZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVz
c2FnZVN0cmluZzpAInBhdXNlZCJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpwbGF5YmFja0hhbmRsZXIuZ2V0KCkg
bmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRv
dyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmll
dyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tp
bmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0xOTQsMTIgKzE5Niw3NyBAQCBURVNUKFZp
ZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3Bs
YXlpbmdWaWRlbykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7CiB9CiAKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvU2Vla3NBZnRlckVuZGluZykKK3sKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zp
c3VhbE1lZGlhVHlwZU5vbmU7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgUmV0YWlu
UHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcu
Z2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAiZW5kZWQiXSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKKworICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmll
d10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKworICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBo
YXMgZW5kZWQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTyBldmVuIGlmIHRoZSBwYWdlIHByb2dyYW1t
YXRpY2FsbHkgc2Vla3MgdG8gdGhlIGJlZ2lubmluZy4KKyAgICBbaGFuZGxlciBzZXRFeHBlY3Rl
ZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107CisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0g
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmciIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKK1RFU1QoVmlkZW9D
b250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVv
U2Vla3NBbmRQbGF5c0FmdGVyRW5kaW5nKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsK
KyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01l
c3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VT
dHJpbmc6QCJyZXBsYXlpbmciXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxh
eWluZ0hhbmRsZXIiXTsKKworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHRO
UyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBz
dHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVm
ZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3
ZWJWaWV3LmdldCgpXTsKKworICAgIC8vIFNpbmNlIHRoZSB2aWRlbyBpcyBzdGlsbCBwbGF5aW5n
LCB0aGUgZXhwZWN0YXRpb24gaXMgWUVTIGV2ZW4gaWYgdGhlIHZpZGVvIGhhcyBlbmRlZCBvbmNl
LgorICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOllFU107Cisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8tc2Vlay10
by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCitURVNUKFZpZGVvQ29udHJvbHNN
YW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb0hpZGVzQ29u
dHJvbHNBZnRlclNlZWtpbmdUb0VuZCkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3Ry
aW5nOkAiZW5kZWQiXSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hh
bmRsZXIiXTsKKworICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKKyAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3
LmdldCgpXTsKKworICAgIFJldGFpblB0cjxPbkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFu
ZGxlciA9IGFkb3B0TlMoW1tPbkxvYWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKSBoYW5kbGVyOl4oKSB7CisgICAgICAgIFt3ZWJWaWV3IG1vdXNl
RG93bkF0UG9pbnQ6TlNNYWtlUG9pbnQoNTAsIDUwKV07CisgICAgfV0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9u
bG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpAIm9ubG9hZEhhbmRsZXIiXTsKKworICAgIC8vIFNpbmNl
IHRoZSB2aWRlbyBoYXMgZW5kZWQsIHRoZSBleHBlY3RhdGlvbiBpcyBOTy4KKyAgICBbaGFuZGxl
ciBzZXRFeHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpOT107CisgICAgTlNVUkxSZXF1ZXN0
ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIFVSTEZvclJlc291cmNlOkAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXIt
c2Vlay10by1lbmQiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0
ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0
TWVzc2FnZSk7Cit9CisKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNN
YW5hZ2VyU2luZ2xlTGFyZ2VWaWRlb1dpdGhvdXRBdWRpbykKIHsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBs
YXlNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5Q
dHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5n
ZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpb
d2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0yMjAsNyArMjg3LDcgQEAgVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJBdWRpb0VsZW1lbnRT
dGFydGVkV2l0aFNjcmlwdCkKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFj
dGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBsYXlNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tX
ZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJp
bmc6QCJwbGF5aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdI
YW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tO
U1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVN
YXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVk
IGRlZmVyOk5PXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8taGlk
ZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41Yzg2OWVjNGVi
ZjkyOGZiMTYwMWZmMThmOTMxYmZhYzcxM2Q3NDk3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8taGlkZXMtY29udHJv
bHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbApAQCAtMCwwICsxLDMxIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKworICAgIGZ1bmN0aW9uIGhhbmRsZUVu
ZGVkKCkgeworICAgICAgICAvLyBUaGUgbWVkaWEgY29udHJvbHMgc2hvdWxkIGJlIHVwZGF0ZWQg
b24gdGhlIG5leHQgcnVubG9vcC4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoImVuZGVkIik7CisgICAgICAgICAgICB9
IGNhdGNoKGUpIHsgfQorICAgICAgICB9LCAwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBzZWVr
VG9FbmQoKSB7CisgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJ2aWRlbyIpWzBdOworICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IHZpZGVvLmR1cmF0
aW9uOworICAgIH0KKworICAgIGZ1bmN0aW9uIGJlZ2luVGVzdCgpIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLm9ubG9hZEhhbmRsZXIu
cG9zdE1lc3NhZ2UoImxvYWRlZCIpOworICAgICAgICB9IGNhdGNoKGUpIHsgfQorICAgIH0KKwor
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbm1vdXNlZG93bj1zZWVrVG9FbmQoKSBvbmxv
YWQ9YmVnaW5UZXN0KCk+CisgICAgPHZpZGVvIGF1dG9wbGF5IG9uZW5kZWQ9aGFuZGxlRW5kZWQo
KSBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0IiB3ZWJraXQtcGxheXNpbmxpbmUgc3R5
bGU9IndpZHRoOiA4MDBweDsgaGVpZ2h0OiA2MDBweDsiPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9s
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMzE2N2Y1NzRjNDYwYjI2M2IzNzMyMWM2ODY0NjFiNTQxZTlkYzkyCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2Ut
dmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbApAQCAtMCwwICsxLDIxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2Vl
a1RvQmVnaW5uaW5nQW5kRmluaXNoVGVzdCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuY3VycmVudFRpbWUgPSAwOworICAgICAgICAgICAgLy8g
VGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRoZSBuZXh0IHJ1bmxvb3Au
CisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIHdp
bmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVyLnBvc3RNZXNzYWdlKCJl
bmRlZCIpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlv
biBzZWVrVG9FbmQoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVz
dC12aWRlbyIpLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3Qtdmlk
ZW8iKS5kdXJhdGlvbiAtIDAuMTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPHZpZGVvIGlkPSJ0ZXN0LXZpZGVvIiBhdXRvcGxheSBvbmVuZGVkPXNlZWtU
b0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSBvbnBsYXlpbmc9c2Vla1RvRW5kKCkgc3R5bGU9Indp
ZHRoOiA4MDBweDsgaGVpZ2h0OiA2MDBweDsiIHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5t
cDQiPjwvdmlkZW8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1h
bmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVu
ZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YThlYjEwZWIxNGYxOWExOTI3NzEyZDM0NTkzMWFlZGJj
M2ViMDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRp
bmcuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvQmVnaW5uaW5nQW5kRmluaXNo
VGVzdCgpIHsKKyAgICAgICAgICAgIHZhciB2aWRlbyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
IiN0ZXN0LXZpZGVvIik7CisgICAgICAgICAgICB2aWRlby5jdXJyZW50VGltZSA9IDA7CisgICAg
ICAgICAgICB2aWRlby5wbGF5KCk7CisgICAgICAgICAgICAvLyBUaGUgbWVkaWEgY29udHJvbHMg
c2hvdWxkIGJlIHVwZGF0ZWQgb24gdGhlIG5leHQgcnVubG9vcC4KKyAgICAgICAgICAgIHNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdl
SGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoInJlcGxheWluZyIpOworICAgICAg
ICAgICAgfSwgMCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBzZWVrVG9FbmQoKSB7
CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpLmN1cnJl
bnRUaW1lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5kdXJhdGlvbiAt
IDAuMTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHZp
ZGVvIGlkPSJ0ZXN0LXZpZGVvIiBhdXRvcGxheSBvbmVuZGVkPXNlZWtUb0JlZ2lubmluZ0FuZEZp
bmlzaFRlc3QoKSBvbnBsYXlpbmc9c2Vla1RvRW5kKCkgc3R5bGU9IndpZHRoOiA4MDBweDsgaGVp
Z2h0OiA2MDBweDsiIHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQiPjwvdmlkZW8+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284387</attachid>
            <date>2016-07-22 16:45:57 -0700</date>
            <delta_ts>2016-07-22 16:51:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160722164455.patch</filename>
            <type>text/plain</type>
            <size>27831</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhMmY1MTViNDA3MWFj
NzViY2VlYjA3NDQ3MWQ4ZmNiOTFiNzY3OS4uOGQzMmQ5ZTc5NjdmMzRmMWM4OGY4YjEyMGIwOTgx
MTkzZjMwZjkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTA3LTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91
bGQgY2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZSB3aGlsZSBjdXJyZW50IGxvZ2ljCisgICAg
ICAgIG1vc3RseSBhY2NvdW50cyBmb3IgdGhpcywgaXQgZG9lcyBub3QgYWNjb3VudCBmb3IgcHJv
Z3JhbW1hdGljIHNlZWtzIGNhdXNpbmcKKyAgICAgICAgdGhlIHZpZGVvIHRvIGxvc2UgaXRzICdl
bmRlZCcgc3RhdHVzIGJlZm9yZSBxdWVyeWluZyBmb3Igd2hldGhlciBvciBub3QgdG8KKyAgICAg
ICAgc2hvdyBtZWRpYSBjb250cm9scy4KKworICAgICAgICBUaHJlZSBuZXcgQVBJIHRlc3RzOiBs
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sCisgICAgICAgIGxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwKKyAgICAgICAgbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKKworICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6Omhhc0V2ZXJTZW50RW5kRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01h
bmFnZXIpOgorCiAyMDE2LTA3LTIyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgUGFyYW1ldGVyIHRvIEhUTUxDb2xsZWN0aW9uLml0ZW0oKSAvIG5hbWVkSXRlbSgp
IHNob3VsZCBiZSBtYW5kYXRvcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCmluZGV4IDYwMmQ4NmNmMDhiMzAwMDJjNmM1ZmViNTkyNGIxZGJjNzdkOTMwNjQuLjZlYjEx
NzY0YzI1MWE5Yjc0NjhhOTc1MjQwMjdjMjgwMzZmYTc5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMzk4LDYgKzM5OCw3IEBAIEhUTUxNZWRpYUVsZW1l
bnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtCiAgICAgLCBtX3NlZWtpbmcoZmFsc2UpCiAgICAgLCBtX3NlbnRTdGFsbGVkRXZl
bnQoZmFsc2UpCiAgICAgLCBtX3NlbnRFbmRFdmVudChmYWxzZSkKKyAgICAsIG1faXNEb25lUGxh
eWluZyhmYWxzZSkKICAgICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAgLCBtX3NlbmRQ
cm9ncmVzc0V2ZW50cyh0cnVlKQogICAgICwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUoZmFsc2Up
CkBAIC0zMDEwLDYgKzMwMTEsMTEgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjplbmRlZCgpIGNv
bnN0CiAgICAgcmV0dXJuIGVuZGVkUGxheWJhY2soKSAmJiByZXF1ZXN0ZWRQbGF5YmFja1JhdGUo
KSA+IDA7CiB9CiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNEb25lUGxheWluZygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1faXNEb25lUGxheWluZzsKK30KKwogYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjphdXRvcGxheSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJpYnV0ZVdpdGhvdXRT
eW5jaHJvbml6YXRpb24oYXV0b3BsYXlBdHRyKTsKQEAgLTQ0MTAsNyArNDQxNiw5IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAg
ICAgICAgICAgICAvLyBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBl
bmRlZCBhdCB0aGUgbWVkaWEgZWxlbWVudC4KICAgICAgICAgICAgIGlmICghbV9zZW50RW5kRXZl
bnQpIHsKICAgICAgICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAg
ICAgICAgbV9pc0RvbmVQbGF5aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2
ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBtX21lZGlhU2Vz
c2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJl
VXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgLy8gSWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgY3VycmVudCBtZWRpYSBjb250
cm9sbGVyLCB0aGVuIHJlcG9ydCB0aGUgY29udHJvbGxlciBzdGF0ZQogICAgICAgICAgICAgLy8g
Zm9yIHRoZSBtZWRpYSBlbGVtZW50J3MgY3VycmVudCBtZWRpYSBjb250cm9sbGVyLgpAQCAtNDQz
MCw3ICs0NDM4LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFu
Z2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIC8vIGJ5IGNhbGxpbmcgcGxheSgpCiAgICAg
ICAgICAgICBpZiAoIW1fc2VudEVuZEV2ZW50ICYmIG1fcGxheWVyICYmIG1fcGxheWVyLT5lbmRl
ZCgpKSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIG1faXNEb25lUGxheWluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkuZW5kZWRFdmVudCk7CisgICAgICAgICAgICAgICAgbV9tZWRpYVNl
c3Npb24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWly
ZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKICAgICAgICAgICAgICAgICBt
X3BhdXNlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgc2V0UGxheWluZyhmYWxzZSk7CiAgICAg
ICAgICAgICB9CkBAIC00OTM2LDYgKzQ5NDYsOSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVw
ZGF0ZVBsYXlTdGF0ZShVcGRhdGVTdGF0ZSB1cGRhdGVTdGF0ZSkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRQbGF5aW5nKGJvb2wgcGxheWluZykKIHsKKyAgICBpZiAocGxheWluZykKKyAg
ICAgICAgbV9pc0RvbmVQbGF5aW5nID0gZmFsc2U7CisKICAgICBpZiAobV9wbGF5aW5nID09IHBs
YXlpbmcpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAppbmRleCA4NDdhZTI2MDVlMmJkNGRhNjJkM2Y3NWZmMjdmYjJmY2VhZmE5ZTM4Li5kZDY0
NzVlZjQwNzQ4N2JiOTEzMGRlNDRkNTJjZDhiZDkzMmQ1Y2NlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjA5LDYgKzIwOSw3IEBAIHB1YmxpYzoKICAgICBSZWY8
VGltZVJhbmdlcz4gcGxheWVkKCkgb3ZlcnJpZGU7CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWth
YmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlbmRlZCgpIGNv
bnN0OworICAgIGJvb2wgaXNEb25lUGxheWluZygpIGNvbnN0OwogICAgIGJvb2wgYXV0b3BsYXko
KSBjb25zdDsKICAgICBib29sIGlzQXV0b3BsYXlpbmcoKSBjb25zdCB7IHJldHVybiBtX2F1dG9w
bGF5aW5nOyB9CiAgICAgYm9vbCBsb29wKCkgY29uc3Q7CkBAIC05MjIsNiArOTIzLDcgQEAgcHJp
dmF0ZToKIAogICAgIC8vIHRpbWUgaGFzIG5vdCBjaGFuZ2VkIHNpbmNlIHNlbmRpbmcgYW4gImVu
ZGVkIiBldmVudAogICAgIGJvb2wgbV9zZW50RW5kRXZlbnQgOiAxOworICAgIGJvb2wgbV9pc0Rv
bmVQbGF5aW5nIDogMTsKIAogICAgIGJvb2wgbV9wYXVzZWRJbnRlcm5hbCA6IDE7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCmluZGV4IDgzMmFiNmQ5OTA2
MGEwODNlNjdmZjFkZDhjNTI1MmZkZjg1YzNkOWEuLmNiOTIwMzE5ZTJhODkyN2NkZmQxOGQ5ZWQy
OTIzYmVlMmM3OTEzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVt
ZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNz
aW9uLmNwcApAQCAtMjU5LDYgKzI1OSwxMSBAQCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNh
bkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1fZWxlbWVudC5pc0RvbmVQbGF5aW5nKCkpIHsK
KyAgICAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xD
b250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IERvbmUgcGxheWluZyIpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgaWYgKGlzRWxlbWVudExh
cmdlRW5vdWdoRm9yTWFpbkNvbnRlbnQobV9lbGVtZW50KSkgewogICAgICAgICAgICAgTE9HKE1l
ZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJl
dHVybmluZyBUUlVFOiBJcyBtYWluIGNvbnRlbnQiKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGYx
NzFkM2RiNmQ5OTFkM2Y5ZjUyYjNiMzNiYzJkYWIwNTg4MGJlZDcuLmQ0OTRhZmY0OWM0MjEyMTZm
NGRlMTg4YmNlZjIyNDNkNTQwMDM2MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0wNy0yMSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBjb250cm9scyBv
biBhcHBsZS5jb20gZG9uJ3QgZGlzYXBwZWFyIHdoZW4gbW92aWUgZmluaXNoZXMgcGxheWluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDY4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjY2ODUyNj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIG5ldyBBUEkgdGVzdHMuIFBsZWFzZSBzZWUg
V2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1t
OgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgaW5pdFdpdGhXS1dlYlZp
ZXc6ZmluYWxNZXNzYWdlU3RyaW5nOl0pOgorICAgICAgICAoLVtNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0p
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICgtW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmlldzpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bRGlk
UGxheU1lc3NhZ2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0
TWVzc2FnZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJn
ZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sOiBBZGRlZC4KKwogMjAxNi0wNy0yMiAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKDIw
MzYxNik6IG5vIEZUTCB0ZXN0aW5nIHdhcyBpbmFkdmVydGVudGx5IHJlbW92ZWQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggYjhiZTI1YjNiOWFhZDUyMTA3YjQ2NjM1NjU1YmVhOGMzYzRlNzVk
Ny4uYzRkMWI1MzFjZjA1NDcyNzI1ZmViYjFmMTZjMTkyMGQ3MTgxODljNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTUzLDYgKzUzLDkgQEAKIAkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0
IC8qIERhdGFEZXRlY3Rpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyREM0Q0Y3NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAq
LzsgfTsKIAkJMkREN0QzQUYxNzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNh
bC1sci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwt
bHIuaHRtbCAqLzsgfTsKIAkJMkUxNEE1MjkxRDNGRTk2QjAwMTBGMzVCIC8qIGF1dG9wbGF5aW5n
LXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTE0QTUyODFEM0ZFOEI4MDAxMEYzNUIgLyogYXV0b3BsYXlp
bmctdmlkZW8td2l0aC1hdWRpby5odG1sICovOyB9OworCQkyRTFCN0IwMDFENDFBQkE3MDA3NTU4
QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFCN0FGRjFENDFBOTVGMDA3
NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKKwkJMkUx
QjdCMDIxRDQxQjFCOTAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVy
LXNlZWstdG8tZW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkUxQjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgKi87IH07CisJCTJFMURGREYxMUQ0
MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1h
ZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vl
ay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJFNzc2
NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5J
T1MubW0gKi87IH07CiAJCTJFNzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0UxNkM0
RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi87IH07CiAJCTMzQkU1QUY5MTM3QjVBQUUwMDcw
NTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JFNUFGODEzN0I1QUFFMDA3MDU4MTMgLyog
TW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNDk3LDcgKzUwMCwxMyBA
QAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVy
U3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKzw8PDw8PDwgMDY4NGI3OTAxMDg2MGY2ZjAwMjMzMjA3
NTFkY2RmZTc0NmVlNjYzMQogCQkJCTUxNUJFMTZGMUQ0MjhCQjEwMEREN0M2OCAvKiBTdG9yZUJs
b2JUb0JlRGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorPT09PT09PQorCQkJCTJF
MURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1h
bmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTFC
N0IwMjFENDFCMUI5MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXIt
c2Vlay10by1lbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTFCN0IwMDFENDFB
QkE3MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKKz4+Pj4+Pj4gTWVkaWEgY29udHJvbHMgb24gYXBwbGUuY29tIGRvbid0
IGRpc2FwcGVhciB3aGVuIG1vdmllIGZpbmlzaGVzIHBsYXlpbmcKIAkJCQk1QzlFNTk0MTFEM0VC
NUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQk1QzlFNTk0MjFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0g
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFw
cGxpY2F0aW9uQ2FjaGUuZGItd2FsIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtNjk4LDYgKzcw
Nyw5IEBACiAJCTJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5h
dGVkV2ViVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNp
emVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxh
eWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
YXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0
ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8t
c2Vlay1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
MUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRl
ci1zZWVrLXRvLWVuZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZp
ZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXkt
YWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTc3NjVD
QzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IG1haW5JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAwRkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlV
c2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNSw2ICsxMzQ3
LDggQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkUxREZERjAxRDQyRTE0NDAw
NzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVu
ZGluZy5odG1sICovLAorCQkJCTJFMUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRl
by1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sICovLAogCQkJCTVDOUU1OTNF
MUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNG
MUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlF
NTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8sCkBAIC0x
MzY5LDYgKzEzODMsNyBAQAogCQkJCTUxNUJFMTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBTdG9yZUJs
b2JUb0JlRGVsZXRlZC5odG1sICovLAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBX
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIzMUNGOEM3NjEw
MDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAorCQkJCTJFMUI3
QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1s
ICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
VmlkZW9Db250cm9sc01hbmFnZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCBmYmVmZWJhZWMxZmViMTY4YWQ3
MjVjMDMxYWZiMjRiNDYyOWVjYWRmLi5hZmMxNWJhZDM2YmEwZTc1NDM5MDVkMGYxNzc3NmYxMDcz
Zjg4NmUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQpAQCAtNTQsMjMgKzU0LDI1IEBA
IC0gKHZvaWQpbW91c2VEb3duQXRQb2ludDooTlNQb2ludClwb2ludCB7CiAKIEBlbmQKIAotQGlu
dGVyZmFjZSBEaWRQbGF5TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4geworQGludGVyZmFjZSBNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgOiBOU09i
amVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4gewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IF93ZWJWaWV3OwogfQogCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBleHBlY3RlZFRvSGF2
ZUNvbnRyb2xzTWFuYWdlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIE5TU3RyaW5n
ICpmaW5hbE1lc3NhZ2VTdHJpbmc7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmll
dzooV0tXZWJWaWV3Kil3ZWJWaWV3OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3
OihXS1dlYlZpZXcqKXdlYlZpZXcgZmluYWxNZXNzYWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFs
TWVzc2FnZVN0cmluZzsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIERpZFBsYXlNZXNzYWdlSGFu
ZGxlcgorQGltcGxlbWVudGF0aW9uIE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcgogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcgZmluYWxNZXNz
YWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFsTWVzc2FnZVN0cmluZwogewogICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgX3dlYlZpZXcg
PSB3ZWJWaWV3OworICAgIF9maW5hbE1lc3NhZ2VTdHJpbmcgPSBmaW5hbE1lc3NhZ2VTdHJpbmc7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTgwLDcgKzgyLDcgQEAgLSAodm9pZCl1c2VyQ29u
dGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250
cm9sbGVyIGQKICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSB0cnVlOwogCiAgICAgTlNTdHJp
bmcgKmJvZHlTdHJpbmcgPSAoTlNTdHJpbmcgKilbbWVzc2FnZSBib2R5XTsKLSAgICBpZiAoW2Jv
ZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAicGxheWluZyJdIHx8IFtib2R5U3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAInBhdXNlZCJdKSB7CisgICAgaWYgKFtib2R5U3RyaW5nIGlzRXF1YWxUb1N0
cmluZzpzZWxmLmZpbmFsTWVzc2FnZVN0cmluZ10pIHsKICAgICAgICAgQk9PTCBoYXNDb250cm9s
c01hbmFnZXIgPSBbX3dlYlZpZXcgX2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsK
ICAgICAgICAgaWYgKHNlbGYuZXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXIpCiAgICAgICAg
ICAgICBFWFBFQ1RfVFJVRShoYXNDb250cm9sc01hbmFnZXIpOwpAQCAtMTMyLDcgKzEzNCw3IEBA
IFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFy
Z2VWaWRlbykKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBsYXlNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFk
b3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVy
PiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10g
aW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5
aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07
CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XSk7CkBAIC0xNTMsNyArMTU1LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9D
b250cm9sc01hbmFnZXJTaW5nbGVTbWFsbFZpZGVvKQogICAgIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNS
ZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9u
ZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxheU1lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFj
a01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZp
bmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBu
YW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93
ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3
IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTE3NCw3ICsxNzYsNyBAQCBURVNUKFZpZGVv
Q29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3BsYXlp
bmdWaWRlbykKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBsYXlNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tIYW5k
bGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXI+IHBsYXliYWNrSGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNz
YWdlU3RyaW5nOkAicGF1c2VkIl0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOnBsYXliYWNrSGFuZGxlci5nZXQoKSBu
YW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93
ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3
IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2lu
Z1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTE5NCwxMiArMTk2LDc3IEBAIFRFU1QoVmlk
ZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxh
eWluZ1ZpZGVvKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlKTsKIH0KIAorVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FmdGVyRW5kaW5nKQoreworICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5Q
dHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5n
ZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJlbmRlZCJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
dXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3
aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dl
YlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNC
YWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGhh
cyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PIGV2ZW4gaWYgdGhlIHBhZ2UgcHJvZ3JhbW1h
dGljYWxseSBzZWVrcyB0byB0aGUgYmVnaW5uaW5nLgorICAgIFtoYW5kbGVyIHNldEV4cGVjdGVk
VG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKworVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9T
ZWVrc0FuZFBsYXlzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0
cmluZzpAInJlcGxheWluZyJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5
aW5nSGFuZGxlciJdOworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5T
KFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0
eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3Ondl
YlZpZXcuZ2V0KCldOworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcs
IHRoZSBleHBlY3RhdGlvbiBpcyBZRVMgZXZlbiBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2Uu
CisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6WUVTXTsKKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVrLXRv
LWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmciIHdpdGhFeHRlbnNpb246QCJodG1sIiBz
dWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVz
dGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01h
bmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTGFyZ2VBdXRvcGxheWluZ1ZpZGVvSGlkZXNDb250
cm9sc0FmdGVyU2Vla2luZ1RvRW5kKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAg
ICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3Nh
Z2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJp
bmc6QCJlbmRlZCJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFu
ZGxlciJdOworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNX
aW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFz
azpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBk
ZWZlcjpOT10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcu
Z2V0KCldOworCisgICAgUmV0YWluUHRyPE9uTG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5k
bGVyID0gYWRvcHROUyhbW09uTG9hZE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2Vi
Vmlldzp3ZWJWaWV3LmdldCgpIGhhbmRsZXI6XigpIHsKKyAgICAgICAgW3dlYlZpZXcgbW91c2VE
b3duQXRQb2ludDpOU01ha2VQb2ludCg1MCwgNTApXTsKKyAgICB9XSk7CisgICAgW1tjb25maWd1
cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6b25s
b2FkSGFuZGxlci5nZXQoKSBuYW1lOkAib25sb2FkSGFuZGxlciJdOworCisgICAgLy8gU2luY2Ug
dGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlzIE5PLgorICAgIFtoYW5kbGVy
IHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsKKyAgICBOU1VSTFJlcXVlc3Qg
KnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1z
ZWVrLXRvLWVuZCIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOwor
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRl
clBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRN
ZXNzYWdlKTsKK30KKwogVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01h
bmFnZXJTaW5nbGVMYXJnZVZpZGVvV2l0aG91dEF1ZGlvKQogewogICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxh
eU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0
cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQ
bGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTIyMCw3ICsyODcsNyBAQCBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckF1ZGlvRWxlbWVudFN0
YXJ0ZWRXaXRoU2NyaXB0KQogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0
aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5Q
dHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5k
bGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2Fn
ZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmlu
ZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hh
bmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1h
c2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQg
ZGVmZXI6Tk9dKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1oaWRl
cy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjODY5ZWM0ZWJm
OTI4ZmIxNjAxZmYxOGY5MzFiZmFjNzEzZDc0OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9s
cy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorCisgICAgZnVuY3Rpb24gaGFuZGxlRW5k
ZWQoKSB7CisgICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBzaG91bGQgYmUgdXBkYXRlZCBv
biB0aGUgbmV4dCBydW5sb29wLgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgiZW5kZWQiKTsKKyAgICAgICAgICAgIH0g
Y2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHNlZWtU
b0VuZCgpIHsKKyAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInZpZGVvIilbMF07CisgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRp
b247CisgICAgfQorCisgICAgZnVuY3Rpb24gYmVnaW5UZXN0KCkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMub25sb2FkSGFuZGxlci5w
b3N0TWVzc2FnZSgibG9hZGVkIik7CisgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgfQorCisg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubW91c2Vkb3duPXNlZWtUb0VuZCgpIG9ubG9h
ZD1iZWdpblRlc3QoKT4KKyAgICA8dmlkZW8gYXV0b3BsYXkgb25lbmRlZD1oYW5kbGVFbmRlZCgp
IHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRpby5tcDQiIHdlYmtpdC1wbGF5c2lubGluZSBzdHls
ZT0id2lkdGg6IDgwMHB4OyBoZWlnaHQ6IDYwMHB4OyI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmUzMTY3ZjU3NGM0NjBiMjYzYjM3MzIxYzY4NjQ2MWI1NDFlOWRjOTIKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12
aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBzZWVr
VG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGltZSA9IDA7CisgICAgICAgICAgICAvLyBU
aGUgbWVkaWEgY29udHJvbHMgc2hvdWxkIGJlIHVwZGF0ZWQgb24gdGhlIG5leHQgcnVubG9vcC4K
KyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMucGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoImVu
ZGVkIik7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IHNlZWtUb0VuZCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0
LXZpZGVvIikuY3VycmVudFRpbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRl
byIpLmR1cmF0aW9uIC0gMC4xOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgICA8dmlkZW8gaWQ9InRlc3QtdmlkZW8iIGF1dG9wbGF5IG9uZW5kZWQ9c2Vla1Rv
QmVnaW5uaW5nQW5kRmluaXNoVGVzdCgpIG9ucGxheWluZz1zZWVrVG9FbmQoKSBzdHlsZT0id2lk
dGg6IDgwMHB4OyBoZWlnaHQ6IDYwMHB4OyIgc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1w
NCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFu
ZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5k
aW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdhOGViMTBlYjE0ZjE5YTE5Mjc3MTJkMzQ1OTMxYWVkYmMz
ZWIwMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
KyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBzZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hU
ZXN0KCkgeworICAgICAgICAgICAgdmFyIHZpZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcigi
I3Rlc3QtdmlkZW8iKTsKKyAgICAgICAgICAgIHZpZGVvLmN1cnJlbnRUaW1lID0gMDsKKyAgICAg
ICAgICAgIHZpZGVvLnBsYXkoKTsKKyAgICAgICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBz
aG91bGQgYmUgdXBkYXRlZCBvbiB0aGUgbmV4dCBydW5sb29wLgorICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgicmVwbGF5aW5nIik7CisgICAgICAg
ICAgICB9LCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlZWtUb0VuZCgpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuY3VycmVu
dFRpbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpLmR1cmF0aW9uIC0g
MC4xOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlk
ZW8gaWQ9InRlc3QtdmlkZW8iIGF1dG9wbGF5IG9uZW5kZWQ9c2Vla1RvQmVnaW5uaW5nQW5kRmlu
aXNoVGVzdCgpIG9ucGxheWluZz1zZWVrVG9FbmQoKSBzdHlsZT0id2lkdGg6IDgwMHB4OyBoZWln
aHQ6IDYwMHB4OyIgc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284388</attachid>
            <date>2016-07-22 16:51:30 -0700</date>
            <delta_ts>2016-07-23 00:32:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160722165029.patch</filename>
            <type>text/plain</type>
            <size>27804</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTlhMmY1MTViNDA3MWFj
NzViY2VlYjA3NDQ3MWQ4ZmNiOTFiNzY3OS4uNDU0YTZiNWNhNmExMmM1NTgxNmQ0M2E4ODkyYzJi
YWFiNDEyYjM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE2LTA3LTIyICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91
bGQgY2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZSB3aGlsZSBjdXJyZW50IGxvZ2ljCisgICAg
ICAgIG1vc3RseSBhY2NvdW50cyBmb3IgdGhpcywgaXQgZG9lcyBub3QgYWNjb3VudCBmb3IgcHJv
Z3JhbW1hdGljIHNlZWtzIGNhdXNpbmcKKyAgICAgICAgdGhlIHZpZGVvIHRvIGxvc2UgaXRzICdl
bmRlZCcgc3RhdHVzIGJlZm9yZSBxdWVyeWluZyBmb3Igd2hldGhlciBvciBub3QgdG8KKyAgICAg
ICAgc2hvdyBtZWRpYSBjb250cm9scy4KKworICAgICAgICBUaHJlZSBuZXcgQVBJIHRlc3RzOiBs
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sCisgICAgICAgIGxhcmdlLXZpZGVvLWhp
ZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwKKyAgICAgICAgbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKKworICAgICAgICAq
IGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzRG9uZVBsYXlpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpzZXRQbGF5aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlcik6CisKIDIw
MTYtMDctMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQYXJh
bWV0ZXIgdG8gSFRNTENvbGxlY3Rpb24uaXRlbSgpIC8gbmFtZWRJdGVtKCkgc2hvdWxkIGJlIG1h
bmRhdG9yeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNjAy
ZDg2Y2YwOGIzMDAwMmM2YzVmZWI1OTI0YjFkYmM3N2Q5MzA2NC4uNmViMTE3NjRjMjUxYTliNzQ2
OGE5NzUyNDAyN2MyODAzNmZhNzk0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCkBAIC0zOTgsNiArMzk4LDcgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlh
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICAg
ICAsIG1fc2Vla2luZyhmYWxzZSkKICAgICAsIG1fc2VudFN0YWxsZWRFdmVudChmYWxzZSkKICAg
ICAsIG1fc2VudEVuZEV2ZW50KGZhbHNlKQorICAgICwgbV9pc0RvbmVQbGF5aW5nKGZhbHNlKQog
ICAgICwgbV9wYXVzZWRJbnRlcm5hbChmYWxzZSkKICAgICAsIG1fc2VuZFByb2dyZXNzRXZlbnRz
KHRydWUpCiAgICAgLCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKQEAgLTMwMTAsNiAr
MzAxMSwxMSBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmVuZGVkKCkgY29uc3QKICAgICByZXR1
cm4gZW5kZWRQbGF5YmFjaygpICYmIHJlcXVlc3RlZFBsYXliYWNrUmF0ZSgpID4gMDsKIH0KIAor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0RvbmVQbGF5aW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pc0RvbmVQbGF5aW5nOworfQorCiBib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmF1dG9wbGF5
KCkgY29uc3QKIHsKICAgICByZXR1cm4gaGFzQXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlv
bihhdXRvcGxheUF0dHIpOwpAQCAtNDQxMCw3ICs0NDE2LDkgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKE1lZGlhUGxheWVyKikKICAgICAgICAgICAgIC8v
IFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIGVuZGVkIGF0IHRoZSBt
ZWRpYSBlbGVtZW50LgogICAgICAgICAgICAgaWYgKCFtX3NlbnRFbmRFdmVudCkgewogICAgICAg
ICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtX2lzRG9u
ZVBsYXlpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLmVuZGVkRXZlbnQpOworICAgICAgICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhh
dmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRv
Q29udHJvbENvbnRyb2xzTWFuYWdlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJ
ZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4g
cmVwb3J0IHRoZSBjb250cm9sbGVyIHN0YXRlCiAgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlh
IGVsZW1lbnQncyBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIuCkBAIC00NDMwLDcgKzQ0MzgsOSBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5
ZXIqKQogICAgICAgICAgICAgLy8gYnkgY2FsbGluZyBwbGF5KCkKICAgICAgICAgICAgIGlmICgh
bV9zZW50RW5kRXZlbnQgJiYgbV9wbGF5ZXIgJiYgbV9wbGF5ZXItPmVuZGVkKCkpIHsKICAgICAg
ICAgICAgICAgICBtX3NlbnRFbmRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgbV9pc0Rv
bmVQbGF5aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFt
ZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBtX21lZGlhU2Vzc2lvbi0+YWRkQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlVXNlckdlc3R1cmVU
b0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAgICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKGZhbHNlKTsKICAgICAgICAgICAgIH0KQEAg
LTQ5MzYsNiArNDk0Niw5IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRl
KFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBs
YXlpbmcoYm9vbCBwbGF5aW5nKQogeworICAgIGlmIChwbGF5aW5nKQorICAgICAgICBtX2lzRG9u
ZVBsYXlpbmcgPSBmYWxzZTsKKwogICAgIGlmIChtX3BsYXlpbmcgPT0gcGxheWluZykKICAgICAg
ICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDg0
N2FlMjYwNWUyYmQ0ZGE2MmQzZjc1ZmYyN2ZiMmZjZWFmYTllMzguLmRkNjQ3NWVmNDA3NDg3YmI5
MTMwZGU0NGQ1MmNkOGJkOTMyZDVjY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCkBAIC0yMDksNiArMjA5LDcgQEAgcHVibGljOgogICAgIFJlZjxUaW1lUmFuZ2VzPiBw
bGF5ZWQoKSBvdmVycmlkZTsKICAgICBSZWY8VGltZVJhbmdlcz4gc2Vla2FibGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGVuZGVkKCkgY29uc3Q7CisgICAgYm9v
bCBpc0RvbmVQbGF5aW5nKCkgY29uc3Q7CiAgICAgYm9vbCBhdXRvcGxheSgpIGNvbnN0OwogICAg
IGJvb2wgaXNBdXRvcGxheWluZygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b3BsYXlpbmc7IH0KICAg
ICBib29sIGxvb3AoKSBjb25zdDsKQEAgLTkyMiw2ICs5MjMsNyBAQCBwcml2YXRlOgogCiAgICAg
Ly8gdGltZSBoYXMgbm90IGNoYW5nZWQgc2luY2Ugc2VuZGluZyBhbiAiZW5kZWQiIGV2ZW50CiAg
ICAgYm9vbCBtX3NlbnRFbmRFdmVudCA6IDE7CisgICAgYm9vbCBtX2lzRG9uZVBsYXlpbmcgOiAx
OwogCiAgICAgYm9vbCBtX3BhdXNlZEludGVybmFsIDogMTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKaW5kZXggODMyYWI2ZDk5MDYwYTA4M2U2N2ZmMWRk
OGM1MjUyZmRmODVjM2Q5YS4uY2I5MjAzMTllMmE4OTI3Y2RmZDE4ZDllZDI5MjNiZWUyYzc5MTNl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Npb24uY3BwCkBAIC0y
NTksNiArMjU5LDExIEBAIGJvb2wgTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRy
b2xzTWFuYWdlcigpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAobV9lbGVtZW50LmlzRG9uZVBsYXlpbmcoKSkgeworICAgICAgICAgICAg
TE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdl
ciAtIHJldHVybmluZyBGQUxTRTogRG9uZSBwbGF5aW5nIik7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoaXNFbGVtZW50TGFyZ2VFbm91Z2hGb3JN
YWluQ29udGVudChtX2VsZW1lbnQpKSB7CiAgICAgICAgICAgICBMT0coTWVkaWEsICJNZWRpYUVs
ZW1lbnRTZXNzaW9uOjpjYW5Db250cm9sQ29udHJvbHNNYW5hZ2VyIC0gcmV0dXJuaW5nIFRSVUU6
IElzIG1haW4gY29udGVudCIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjE3MWQzZGI2ZDk5MWQz
ZjlmNTJiM2IzM2JjMmRhYjA1ODgwYmVkNy4uMTZkYTRiOWQ4Nzg5ZTc5YmFkMTQ3ODAwNjZlMzBl
NmNmMGE0NmQzZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRyb2xzIG9uIGFwcGxlLmNvbSBk
b24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5aW5nCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwNjgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZHMgbmV3IEFQSSB0ZXN0cy4gUGxlYXNlIHNlZSBXZWJDb3JlIENoYW5n
ZUxvZyBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW06CisgICAgICAgICgt
W01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBpbml0V2l0aFdLV2ViVmlldzpmaW5hbE1lc3Nh
Z2VTdHJpbmc6XSk6CisgICAgICAgICgtW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciB1c2Vy
Q29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKC1bRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGlu
aXRXaXRoV0tXZWJWaWV3Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtEaWRQbGF5TWVzc2FnZUhh
bmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOiBE
ZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdl
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWst
YWZ0ZXItZW5kaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVy
LWVuZGluZy5odG1sOiBBZGRlZC4KKwogMjAxNi0wNy0yMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fi
b2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKDIwMzYxNik6IG5vIEZUTCB0ZXN0
aW5nIHdhcyBpbmFkdmVydGVudGx5IHJlbW92ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YjhiZTI1YjNiOWFhZDUyMTA3YjQ2NjM1NjU1YmVhOGMzYzRlNzVkNy4uMjdhY2YwODNmMGUyMWI2
NWE2ZmJjYjQ5YmRkODgzYTRjZGQxZjJkZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTUz
LDYgKzUzLDkgQEAKIAkJMkRDNENGNzcxRDJEOUREODAwRUNDQzk0IC8qIERhdGFEZXRlY3Rpb24u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREM0Q0Y3
NjFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5tbSAqLzsgfTsKIAkJMkREN0QzQUYx
NzgyMjdCMzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdEM0FFMTc4
MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLzsgfTsKIAkJ
MkUxNEE1MjkxRDNGRTk2QjAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyRTE0QTUyODFEM0ZFOEI4MDAxMEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRp
by5odG1sICovOyB9OworCQkyRTFCN0IwMDFENDFBQkE3MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8t
c2Vlay1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFCN0FGRjFENDFBOTVGMDA3NTU4QjQgLyogbGFyZ2Utdmlk
ZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKKwkJMkUxQjdCMDIxRDQxQjFCOTAwNzU1
OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUx
QjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVy
LXNlZWstdG8tZW5kLmh0bWwgKi87IH07CisJCTJFMURGREYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFE
RkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5k
LXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJFNzc2NUNEMTZDNEQ4MEEwMEJBMkJC
MSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi87IH07CiAJCTJF
Nzc2NUNGMTZDNEQ4MTEwMEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1h
aW5NYWMubW0gKi87IH07CiAJCTMzQkU1QUY5MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVB
ZnRlckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzM0JFNUFGODEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFz
aF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNDk4LDYgKzUwMSw5IEBACiAJCQlkc3RTdWJmb2xkZXJT
cGVjID0gNzsKIAkJCWZpbGVzID0gKAogCQkJCTUxNUJFMTZGMUQ0MjhCQjEwMEREN0M2OCAvKiBT
dG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMURG
REYxMUQ0MkUxRTQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQt
cGxheS1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTFCN0Iw
MjFENDFCMUI5MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vl
ay10by1lbmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQkyRTFCN0IwMDFENDFBQkE3
MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk1QzlFNTk0MTFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25D
YWNoZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1QzlFNTk0MjFEM0VCNUFDMDBFM0M2
MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
NUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsIGluIENv
cHkgUmVzb3VyY2VzICovLApAQCAtNjk4LDYgKzcwNCw5IEBACiAJCTJERDdEM0E5MTc4MjA1RDAw
MDI2RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJERDdEM0FFMTc4MjI3QUMwMDI2RTFF
MyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRl
eHQtdmVydGljYWwtbHIuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFMTRB
NTI4MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRp
by5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxQjdBRkYxRDQxQTk1RjAw
NzU1OEI0IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFMUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBs
YXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gImxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNl
ZWstdG8tZW5kLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFERkRGMDFE
NDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXkt
YWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2Utdmlk
ZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IG1haW5JT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNFMTZDNEQ4MTEwMEJBMkJCMSAv
KiBtYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFp
bk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzMzQjlDRTExMjc3RjIzMTAw
RkVGQ0UzIC8qIFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcmV2ZW50RW1wdHlVc2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTMzNSw2ICsxMzQ0LDggQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAw
QkQ0RDI0IC8qIFJlc291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWst
dG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovLAorCQkJCTJFMUI3QjAx
MUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVr
LXRvLWVuZC5odG1sICovLAogCQkJCTVDOUU1OTNFMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNh
dGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNh
dGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBw
bGljYXRpb25DYWNoZS5kYi13YWwgKi8sCkBAIC0xMzY5LDYgKzEzODAsNyBAQAogCQkJCTUxNUJF
MTZFMUQ0Mjg4RkYwMEREN0M2OCAvKiBTdG9yZUJsb2JUb0JlRGVsZXRlZC5odG1sICovLAogCQkJ
CTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMS5o
dG1sICovLAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElE
QkNsZWFudXAtMi5odG1sICovLAorCQkJCTJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBsYXJn
ZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sICovLAogCQkJKTsKIAkJCW5hbWUgPSBSZXNv
dXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlkZW9Db250cm9sc01hbmFnZXIubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdl
ci5tbQppbmRleCBmYmVmZWJhZWMxZmViMTY4YWQ3MjVjMDMxYWZiMjRiNDYyOWVjYWRmLi5hZmMx
NWJhZDM2YmEwZTc1NDM5MDVkMGYxNzc3NmYxMDczZjg4NmUxIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xz
TWFuYWdlci5tbQpAQCAtNTQsMjMgKzU0LDI1IEBAIC0gKHZvaWQpbW91c2VEb3duQXRQb2ludDoo
TlNQb2ludClwb2ludCB7CiAKIEBlbmQKIAotQGludGVyZmFjZSBEaWRQbGF5TWVzc2FnZUhhbmRs
ZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4geworQGludGVyZmFjZSBNZWRp
YVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxl
cj4gewogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IF93ZWJWaWV3OwogfQogCiBAcHJvcGVydHkg
KG5vbmF0b21pYykgQk9PTCBleHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjsKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZXRhaW4pIE5TU3RyaW5nICpmaW5hbE1lc3NhZ2VTdHJpbmc7CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3OworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXcgZmluYWxN
ZXNzYWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFsTWVzc2FnZVN0cmluZzsKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIERpZFBsYXlNZXNzYWdlSGFuZGxlcgorQGltcGxlbWVudGF0aW9uIE1lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlcgogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZp
ZXc6KFdLV2ViVmlldyopd2ViVmlldworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3
OihXS1dlYlZpZXcqKXdlYlZpZXcgZmluYWxNZXNzYWdlU3RyaW5nOihOU1N0cmluZyAqKWZpbmFs
TWVzc2FnZVN0cmluZwogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgX3dlYlZpZXcgPSB3ZWJWaWV3OworICAgIF9maW5hbE1lc3Nh
Z2VTdHJpbmcgPSBmaW5hbE1lc3NhZ2VTdHJpbmc7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KQEAg
LTgwLDcgKzgyLDcgQEAgLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRl
bnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGQKICAgICByZWNlaXZlZFNjcmlw
dE1lc3NhZ2UgPSB0cnVlOwogCiAgICAgTlNTdHJpbmcgKmJvZHlTdHJpbmcgPSAoTlNTdHJpbmcg
KilbbWVzc2FnZSBib2R5XTsKLSAgICBpZiAoW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAi
cGxheWluZyJdIHx8IFtib2R5U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAInBhdXNlZCJdKSB7Cisg
ICAgaWYgKFtib2R5U3RyaW5nIGlzRXF1YWxUb1N0cmluZzpzZWxmLmZpbmFsTWVzc2FnZVN0cmlu
Z10pIHsKICAgICAgICAgQk9PTCBoYXNDb250cm9sc01hbmFnZXIgPSBbX3dlYlZpZXcgX2hhc0Fj
dGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsKICAgICAgICAgaWYgKHNlbGYuZXhwZWN0ZWRU
b0hhdmVDb250cm9sc01hbmFnZXIpCiAgICAgICAgICAgICBFWFBFQ1RfVFJVRShoYXNDb250cm9s
c01hbmFnZXIpOwpAQCAtMTMyLDcgKzEzNCw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIs
IFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlTGFyZ2VWaWRlbykKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBs
YXlNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tEaWRQbGF5TWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKKyAgICBSZXRhaW5Q
dHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5n
ZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwbGF5aW5nIl0pOwogICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CiAKICAgICBSZXRhaW5QdHI8TlNXaW5kb3c+
IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpb
d2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpO
U0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CkBAIC0xNTMsNyArMTU1LDcgQEAgVEVT
VChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbFZp
ZGVvKQogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBj
b25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3
PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKLSAgICBSZXRhaW5QdHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRO
UyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmll
dy5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhh
bmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmci
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAog
ICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsK
QEAgLTE3NCw3ICsxNzYsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRy
b2xzTWFuYWdlclNpbmdsZVNtYWxsQXV0b3BsYXlpbmdWaWRlbykKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgUmV0YWluUHRyPERpZFBs
YXlNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tIYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IHBsYXliYWNrSGFuZGxlciA9
IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tX
ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGF1c2VkIl0pOwogICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOnBsYXliYWNrSGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAog
ICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsK
QEAgLTE5NCwxMiArMTk2LDc3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29u
dHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKIH0KIAorVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9T
ZWVrc0FmdGVyRW5kaW5nKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2Vy
QWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJl
bmRlZCJdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OworCisgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpO
T10pOworICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCld
OworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4cGVjdGF0aW9uIGlz
IE5PIGV2ZW4gaWYgdGhlIHBhZ2UgcHJvZ3JhbW1hdGljYWxseSBzZWVrcyB0byB0aGUgYmVnaW5u
aW5nLgorICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOk5PXTsK
KyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVr
LWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJB
ZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9TZWVrc0FuZFBsYXlzQWZ0ZXJFbmRpbmcpCit7
CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZp
Z3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwor
ICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9w
dE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmll
dzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInJlcGxheWluZyJdKTsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFu
ZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworCisgICAgUmV0YWlu
UHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRo
Q29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2lu
ZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgLy8gU2lu
Y2UgdGhlIHZpZGVvIGlzIHN0aWxsIHBsYXlpbmcsIHRoZSBleHBlY3RhdGlvbiBpcyBZRVMgZXZl
biBpZiB0aGUgdmlkZW8gaGFzIGVuZGVkIG9uY2UuCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRU
b0hhdmVDb250cm9sc01hbmFnZXI6WUVTXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9y
UmVzb3VyY2U6QCJsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1l
bmRpbmciIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJ
LnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdGVkQ29udHJvbHNNYW5hZ2VyQWZ0ZXJQbGF5
aW5nKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7Cit9CisKK1RFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2Vy
TGFyZ2VBdXRvcGxheWluZ1ZpZGVvSGlkZXNDb250cm9sc0FmdGVyU2Vla2luZ1RvRW5kKQorewor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1
cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBSZXRhaW5QdHI8TWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHRO
UyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6
d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJlbmRlZCJdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpo
YW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOworCisgICAgUmV0YWluUHRyPE5T
V2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAgIFtbd2luZG93IGNv
bnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworCisgICAgUmV0YWluUHRyPE9u
TG9hZE1lc3NhZ2VIYW5kbGVyPiBvbmxvYWRIYW5kbGVyID0gYWRvcHROUyhbW09uTG9hZE1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGhhbmRsZXI6
XigpIHsKKyAgICAgICAgW3dlYlZpZXcgbW91c2VEb3duQXRQb2ludDpOU01ha2VQb2ludCg1MCwg
NTApXTsKKyAgICB9XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6b25sb2FkSGFuZGxlci5nZXQoKSBuYW1lOkAib25s
b2FkSGFuZGxlciJdOworCisgICAgLy8gU2luY2UgdGhlIHZpZGVvIGhhcyBlbmRlZCwgdGhlIGV4
cGVjdGF0aW9uIGlzIE5PLgorICAgIFtoYW5kbGVyIHNldEV4cGVjdGVkVG9IYXZlQ29udHJvbHNN
YW5hZ2VyOk5PXTsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJsYXJn
ZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKK30KKwogVEVTVChWaWRlb0Nv
bnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvV2l0aG91
dEF1ZGlvKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
ICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9y
UGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0g
YWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6
d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBs
YXlpbmciXSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIi
XTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93
IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
Tk9dKTsKQEAgLTIyMCw3ICsyODcsNyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlckF1ZGlvRWxlbWVudFN0YXJ0ZWRXaXRoU2NyaXB0KQogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNv
bnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVu
ZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjVjODY5ZWM0ZWJmOTI4ZmIxNjAxZmYxOGY5MzFiZmFjNzEzZDc0
OTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9sYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCkBA
IC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2Ny
aXB0PgorCisgICAgZnVuY3Rpb24gaGFuZGxlRW5kZWQoKSB7CisgICAgICAgIC8vIFRoZSBtZWRp
YSBjb250cm9scyBzaG91bGQgYmUgdXBkYXRlZCBvbiB0aGUgbmV4dCBydW5sb29wLgorICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVz
c2FnZSgiZW5kZWQiKTsKKyAgICAgICAgICAgIH0gY2F0Y2goZSkgeyB9CisgICAgICAgIH0sIDAp
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHNlZWtUb0VuZCgpIHsKKyAgICAgICAgdmFyIHZpZGVv
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInZpZGVvIilbMF07CisgICAgICAgIHZp
ZGVvLmN1cnJlbnRUaW1lID0gdmlkZW8uZHVyYXRpb247CisgICAgfQorCisgICAgZnVuY3Rpb24g
YmVnaW5UZXN0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgd2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMub25sb2FkSGFuZGxlci5wb3N0TWVzc2FnZSgibG9hZGVkIik7CisgICAg
ICAgIH0gY2F0Y2goZSkgeyB9CisgICAgfQorCisgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubW91c2Vkb3duPXNlZWtUb0VuZCgpIG9ubG9hZD1iZWdpblRlc3QoKT4KKyAgICA8dmlkZW8g
YXV0b3BsYXkgb25lbmRlZD1oYW5kbGVFbmRlZCgpIHNyYz0ibGFyZ2UtdmlkZW8td2l0aC1hdWRp
by5tcDQiIHdlYmtpdC1wbGF5c2lubGluZSBzdHlsZT0id2lkdGg6IDgwMHB4OyBoZWlnaHQ6IDYw
MHB4OyI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5n
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
by1zZWVrLWFmdGVyLWVuZGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzMTY3ZjU3NGM0NjBiMjYzYjM3
MzIxYzY4NjQ2MWI1NDFlOWRjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1s
CkBAIC0wLDAgKzEsMjEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBmdW5jdGlvbiBzZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkg
eworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJy
ZW50VGltZSA9IDA7CisgICAgICAgICAgICAvLyBUaGUgbWVkaWEgY29udHJvbHMgc2hvdWxkIGJl
IHVwZGF0ZWQgb24gdGhlIG5leHQgcnVubG9vcC4KKyAgICAgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
cGxheWluZ0hhbmRsZXIucG9zdE1lc3NhZ2UoImVuZGVkIik7CisgICAgICAgICAgICB9LCAwKTsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHNlZWtUb0VuZCgpIHsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuY3VycmVudFRpbWUgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpLmR1cmF0aW9uIC0gMC4xOworICAgICAg
ICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gaWQ9InRlc3Qt
dmlkZW8iIGF1dG9wbGF5IG9uZW5kZWQ9c2Vla1RvQmVnaW5uaW5nQW5kRmluaXNoVGVzdCgpIG9u
cGxheWluZz1zZWVrVG9FbmQoKSBzdHlsZT0id2lkdGg6IDgwMHB4OyBoZWlnaHQ6IDYwMHB4OyIg
c3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10
by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdhOGVi
MTBlYjE0ZjE5YTE5Mjc3MTJkMzQ1OTMxYWVkYmMzZWIwMwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstdG8t
YmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5j
dGlvbiBzZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgeworICAgICAgICAgICAgdmFyIHZp
ZGVvID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKTsKKyAgICAgICAgICAg
IHZpZGVvLmN1cnJlbnRUaW1lID0gMDsKKyAgICAgICAgICAgIHZpZGVvLnBsYXkoKTsKKyAgICAg
ICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBzaG91bGQgYmUgdXBkYXRlZCBvbiB0aGUgbmV4
dCBydW5sb29wLgorICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0
TWVzc2FnZSgicmVwbGF5aW5nIik7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIHNlZWtUb0VuZCgpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuY3VycmVudFRpbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCIjdGVzdC12aWRlbyIpLmR1cmF0aW9uIC0gMC4xOworICAgICAgICB9CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8dmlkZW8gaWQ9InRlc3QtdmlkZW8iIGF1dG9wbGF5
IG9uZW5kZWQ9c2Vla1RvQmVnaW5uaW5nQW5kRmluaXNoVGVzdCgpIG9ucGxheWluZz1zZWVrVG9F
bmQoKSBzdHlsZT0id2lkdGg6IDgwMHB4OyBoZWlnaHQ6IDYwMHB4OyIgc3JjPSJsYXJnZS12aWRl
by13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284407</attachid>
            <date>2016-07-23 00:32:58 -0700</date>
            <delta_ts>2016-07-23 12:00:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160723003155.patch</filename>
            <type>text/plain</type>
            <size>26957</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFiNGI1M2QwZDkyNmJj
MDFhMTgxZWEwMzUxN2Q1ZTQwNzBjNGMzMS4uZjY2N2Y5N2E0ZTE2MjY0YTU1ZjdiMTNlYzNjZWM4
MzBjYzI5YjA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA3LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91
bGQgY2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZS4gV2hpbGUgY3VycmVudCBsb2dpYworICAg
ICAgICBtb3N0bHkgYWNjb3VudHMgZm9yIHRoaXMsIGl0IGRvZXMgbm90IGFjY291bnQgZm9yIHBy
b2dyYW1tYXRpYyBzZWVrcyBjYXVzaW5nCisgICAgICAgIHRoZSB2aWRlbyB0byBsb3NlIGl0cyAn
ZW5kZWQnIHN0YXR1cyBiZWZvcmUgcXVlcnlpbmcgZm9yIHdoZXRoZXIgb3Igbm90IHRvCisgICAg
ICAgIHNob3cgbWVkaWEgY29udHJvbHMuCisKKyAgICAgICAgVGhyZWUgbmV3IEFQSSB0ZXN0czog
bGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbAorICAgICAgICBsYXJnZS12aWRlby1o
aWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCisgICAgICAgIGxhcmdlLXZpZGVv
LXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29u
dHJvbENvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
Lmg6CisKIDIwMTYtMDctMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIYW5kbGUgY2FzZXMgd2hlbiBJT1N1cmZhY2UgaW5pdGlhbGl6YXRpb24gZmFpbHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2MDJkODZjZjA4YjMw
MDAyYzZjNWZlYjU5MjRiMWRiYzc3ZDkzMDY0Li44NTg5ZTk5NzE1NWY3OGE4MDJjMGRmMDc0ZmM3
YWRkMGJiN2MxM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ0MTEsNiArNDQxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAgICAgICBpZiAoIW1fc2VudEVuZEV2ZW50
KSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpOworICAgICAgICAgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNl
c3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8IE1lZGlh
RWxlbWVudFNlc3Npb246OlJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMg
YSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0
YXRlCiAgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIuCkBAIC00NDMxLDYgKzQ0MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgICAgICAgICAgaWYgKCFt
X3NlbnRFbmRFdmVudCAmJiBtX3BsYXllciAmJiBtX3BsYXllci0+ZW5kZWQoKSkgewogICAgICAg
ICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBtX21lZGlh
U2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIgfCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAgICAgICAg
ICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKGZhbHNl
KTsKICAgICAgICAgICAgIH0KQEAgLTQ5MzYsNiArNDkzOCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwbGF5aW5nKQogeworICAgIGlmIChwbGF5
aW5nICYmIG1fbWVkaWFTZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJhY2tUb0Nv
bnRyb2xDb250cm9sc01hbmFnZXIpOworCiAgICAgaWYgKG1fcGxheWluZyA9PSBwbGF5aW5nKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwCmluZGV4IGZhMWRlMzFlMDZjOTJhNzU2NWU0ODZiN2U3NmI2Mjk5ZDZiMzkzZmMuLjcw
ZGFhOWY4NWJiODU3MDU2YTE2OWU3ZTEzZjAzMmFlMjJmZGY5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjQzLDYgKzI0MywxMSBAQCBib29s
IE1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaGFzQmVoYXZpb3JSZXN0cmlj
dGlvbihSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpICYmICFtX2VsZW1l
bnQuaXNQbGF5aW5nKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVlZHMgdG8g
YmUgcGxheWluZyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1f
ZWxlbWVudC5tdXRlZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11dGVkIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKaW5kZXggZjEwMWM5NmM0N2EyYzY1ZmM5N2Y2YWI1NjQyNmNiYTFmZjUxN2QwNi4u
YjgwMmRjYjY1NmIwZmE4OWEzNjI1Nzg0OWMyZDhiN2Y1ZmE3OGMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgog
ICAgICAgICBJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IDEgPDwgMTEsCiAgICAgICAg
IE92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250ZW50ID0gMSA8PCAxMiwK
ICAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyID0gMSA8
PCAxMywKKyAgICAgICAgUmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyID0g
MSA8PCAxNCwKICAgICAgICAgQWxsUmVzdHJpY3Rpb25zID0gfk5vUmVzdHJpY3Rpb25zLAogICAg
IH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmY2YxZmNhNTkyN2Ey
YmVmMjM5ZmYxMmFmMWRlNGU0MjRmMWMwMDhiLi40ZGMxYzRhMWNlNTFjOTE0NDliZjc4MzUyN2Iz
NDIzYzQ0NjExYjNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDctMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgb24gYXBwbGUuY29t
IGRvbid0IGRpc2FwcGVhciB3aGVuIG1vdmllIGZpbmlzaGVzIHBsYXlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA2OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY2Njg1MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyBuZXcgQVBJIHRlc3RzLiBQbGVhc2Ugc2VlIFdlYkNvcmUgQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAg
KC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGluaXRXaXRoV0tXZWJWaWV3OmZpbmFsTWVz
c2FnZVN0cmluZzpdKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtEaWRQbGF5TWVzc2FnZUhhbmRsZXIg
aW5pdFdpdGhXS1dlYlZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RpZFBsYXlNZXNzYWdl
SGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFy
Z2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vl
ay1hZnRlci1lbmRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0
ZXItZW5kaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSBk
aXNwbGF5ZWQgZm9yIG1lZGlhIGluIG1lZGlhIGRvY3VtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBiOGJlMjViM2I5YWFkNTIxMDdiNDY2MzU2NTViZWE4YzNjNGU3NWQ3Li4yN2FjZjA4
M2YwZTIxYjY1YTZmYmNiNDliZGQ4ODNhNGNkZDFmMmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTMsNiArNTMsOSBAQAogCQkyREM0Q0Y3NzFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURl
dGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwogCQky
REQ3RDNBRjE3ODIyN0IzMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRE
N0QzQUUxNzgyMjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICov
OyB9OwogCQkyRTE0QTUyOTFEM0ZFOTZCMDAxMEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0
aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgKi87IH07CisJCTJFMUI3QjAwMUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJn
ZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBs
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sICovOyB9OworCQkyRTFCN0IwMjFENDFC
MUI5MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1l
bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTFCN0IwMTFENDFCMUIzMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJv
bHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCAqLzsgfTsKKwkJMkUxREZERjExRDQyRTFFNDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lu
bmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsg
fTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJC
QjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1v
dXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVB
ZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CkBAIC00OTgsNiArNTAxLDkgQEAKIAkJCWRzdFN1
YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3
QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5u
aW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTJFMUI3QjAyMUQ0MUIxQjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1h
ZnRlci1zZWVrLXRvLWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMUI3QjAw
MUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQxMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBs
aWNhdGlvbkNhY2hlLmRiIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQyMUQzRUI1
QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1QzlFNTk0MzFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13
YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC02OTgsNiArNzA0LDkgQEAKIAkJMkREN0QzQTkx
NzgyMDVEMDAwMjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRX
ZWJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREN0QzQUUxNzgyMjdB
QzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxv
dHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUxNEE1MjgxRDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVk
aW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFCN0FGRjFE
NDFBOTVGMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxQjdCMDExRDQxQjFCMzAwNzU1
OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMt
YWZ0ZXItc2Vlay10by1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
MURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1h
bmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAv
KiBtYWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFp
bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0RDgxMTAw
QkEyQkIxIC8qIG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBtYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEy
NzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM1LDYgKzEzNDQsOCBAQAogCQlBMTZGNjZCODFD
NDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2Utdmlk
ZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCisJCQkJ
MkUxQjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFm
dGVyLXNlZWstdG8tZW5kLmh0bWwgKi8sCiAJCQkJNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGIgKi8sCiAJCQkJNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htICovLAogCQkJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLywKQEAgLTEzNjksNiArMTM4MCw3IEBACiAJ
CQkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwg
Ki8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xl
YW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCisJCQkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0
IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tCmluZGV4IGFhOTc5MTk0N2IwN2IyNTZlMjYzNzQ2NDZhNmUwN2I1ODU1MDQy
YmIuLmU0Mzc5ODY2ZjMwYTkzYmRmZjVjN2YyYWUwODY3MTgxNWY1NjE5NjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5h
Z2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVv
Q29udHJvbHNNYW5hZ2VyLm1tCkBAIC01NCwyMyArNTQsMjUgQEAgLSAodm9pZCltb3VzZURvd25B
dFBvaW50OihOU1BvaW50KXBvaW50IHsKIAogQGVuZAogCi1AaW50ZXJmYWNlIERpZFBsYXlNZXNz
YWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7CitAaW50ZXJm
YWNlIE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CiB9CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNTdHJpbmcgKmZpbmFsTWVzc2FnZVN0cmlu
ZzsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZp
ZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmll
dyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nOwogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gRGlkUGxheU1lc3NhZ2VIYW5kbGVyCitAaW1wbGVtZW50YXRp
b24gTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
S1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5n
ICopZmluYWxNZXNzYWdlU3RyaW5nCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgX2Zp
bmFsTWVzc2FnZVN0cmluZyA9IGZpbmFsTWVzc2FnZVN0cmluZzsKIAogICAgIHJldHVybiBzZWxm
OwogfQpAQCAtODAsNyArODIsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CiAKICAgICBOU1N0cmluZyAqYm9keVN0cmluZyA9IChO
U1N0cmluZyAqKVttZXNzYWdlIGJvZHldOwotICAgIGlmIChbYm9keVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6QCJwbGF5aW5nIl0gfHwgW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAicGF1c2Vk
Il0pIHsKKyAgICBpZiAoW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnNlbGYuZmluYWxNZXNz
YWdlU3RyaW5nXSkgewogICAgICAgICBCT09MIGhhc0NvbnRyb2xzTWFuYWdlciA9IFtfd2ViVmll
dyBfaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXJdOwogICAgICAgICBpZiAoc2VsZi5l
eHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcikKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhh
c0NvbnRyb2xzTWFuYWdlcik7CkBAIC0xMzIsNyArMTM0LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xz
TWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKQogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTE1Myw3ICsxNTUs
NyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmds
ZVNtYWxsVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25G
b3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFu
ZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAi
cGxheWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT10pOwpAQCAtMTc0LDcgKzE3Niw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtbRGlk
UGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tI
YW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwYXVzZWQi
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6cGxheWJhY2tIYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT10pOwpAQCAtMTk0LDEyICsxOTYsNzcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogfQogCitURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlp
bmdWaWRlb1NlZWtzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0
cmluZzpAImVuZGVkIl0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdI
YW5kbGVyIl07CisKKyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tO
U1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVN
YXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVk
IGRlZmVyOk5PXSk7CisgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmll
dy5nZXQoKV07CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0aGUgZXhwZWN0
YXRpb24gaXMgTk8gZXZlbiBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNlZWtzIHRvIHRo
ZSBiZWdpbm5pbmcuCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFn
ZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZp
ZGVvLXNlZWstYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xz
TWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVu
ZGluZykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRo
V0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicmVwbGF5aW5nIl0p
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAg
ICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVz
c1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Cisg
ICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAg
ICAvLyBTaW5jZSB0aGUgdmlkZW8gaXMgc3RpbGwgcGxheWluZywgdGhlIGV4cGVjdGF0aW9uIGlz
IFlFUyBldmVuIGlmIHRoZSB2aWRlbyBoYXMgZW5kZWQgb25jZS4KKyAgICBbaGFuZGxlciBzZXRF
eHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOworICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5
LWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJB
ZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9IaWRlc0NvbnRyb2xzQWZ0ZXJTZWVraW5nVG9F
bmQpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5
YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdL
V2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAImVuZGVkIl0pOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAgICBSZXRh
aW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW1t3
aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICBSZXRh
aW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25M
b2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkg
aGFuZGxlcjpeKCkgeworICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBv
aW50KDUwLCA1MCldOworICAgIH1dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5h
bWU6QCJvbmxvYWRIYW5kbGVyIl07CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVk
LCB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVD
b250cm9sc01hbmFnZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCiBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlk
ZW9XaXRob3V0QXVkaW8pCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhh
bmRsZXIgPSBhZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdL
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3Ry
aW5nOkAicGxheWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5n
SGFuZGxlciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxl
TWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpOT10pOwpAQCAtMjIwLDcgKzI4Nyw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiAg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdL
QXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbRGlk
UGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9
IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tX
ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKICAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwogCiAgICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
aGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNl
ZWstdG8tZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4NjllYzRlYmY5MjhmYjE2MDFmZjE4ZjkzMWJm
YWM3MTNkNzQ5NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5k
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBoYW5kbGVFbmRlZCgpIHsKKyAgICAgICAgLy8g
VGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRoZSBuZXh0IHJ1bmxvb3Au
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVy
LnBvc3RNZXNzYWdlKCJlbmRlZCIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAg
ICAgfSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICB2
YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidmlkZW8iKVswXTsKKyAg
ICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBiZWdpblRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5vbmxvYWRIYW5kbGVyLnBvc3RNZXNzYWdlKCJsb2FkZWQi
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICB9CisKKyAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25tb3VzZWRvd249c2Vla1RvRW5kKCkgb25sb2FkPWJlZ2luVGVzdCgpPgorICAg
IDx2aWRlbyBhdXRvcGxheSBvbmVuZGVkPWhhbmRsZUVuZGVkKCkgc3JjPSJsYXJnZS12aWRlby13
aXRoLWF1ZGlvLm1wNCIgd2Via2l0LXBsYXlzaW5saW5lIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhl
aWdodDogNjAwcHg7Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRl
ci1lbmRpbmcuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxNjdmNTc0YzQ2
MGIyNjNiMzczMjFjNjg2NDYxYjU0MWU5ZGM5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5k
aW5nLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlz
aFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRl
byIpLmN1cnJlbnRUaW1lID0gMDsKKyAgICAgICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBz
aG91bGQgYmUgdXBkYXRlZCBvbiB0aGUgbmV4dCBydW5sb29wLgorICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgiZW5kZWQiKTsKKyAgICAgICAgICAg
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAg
ICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGlt
ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBp
ZD0idGVzdC12aWRlbyIgYXV0b3BsYXkgb25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hU
ZXN0KCkgb25wbGF5aW5nPXNlZWtUb0VuZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDog
NjAwcHg7IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5n
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
by1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wN2E4ZWIxMGViMTRmMTlhMTkyNzcxMmQzNDU5MzFhZWRiYzNlYjAzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKQEAgLTAsMCArMSwy
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGZ1bmN0aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSB7CisgICAgICAgICAg
ICB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpOworICAg
ICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSAwOworICAgICAgICAgICAgdmlkZW8ucGxheSgp
OworICAgICAgICAgICAgLy8gVGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9u
IHRoZSBuZXh0IHJ1bmxvb3AuCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5k
bGVyLnBvc3RNZXNzYWdlKCJyZXBsYXlpbmciKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGltZSA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBpZD0idGVzdC12aWRlbyIg
YXV0b3BsYXkgb25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgb25wbGF5aW5n
PXNlZWtUb0VuZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDogNjAwcHg7IiBzcmM9Imxh
cmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284418</attachid>
            <date>2016-07-23 12:00:11 -0700</date>
            <delta_ts>2016-07-25 10:20:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160723115909.patch</filename>
            <type>text/plain</type>
            <size>26957</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFiNGI1M2QwZDkyNmJj
MDFhMTgxZWEwMzUxN2Q1ZTQwNzBjNGMzMS4uZjY2N2Y5N2E0ZTE2MjY0YTU1ZjdiMTNlYzNjZWM4
MzBjYzI5YjA2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA3LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91
bGQgY2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZS4gV2hpbGUgY3VycmVudCBsb2dpYworICAg
ICAgICBtb3N0bHkgYWNjb3VudHMgZm9yIHRoaXMsIGl0IGRvZXMgbm90IGFjY291bnQgZm9yIHBy
b2dyYW1tYXRpYyBzZWVrcyBjYXVzaW5nCisgICAgICAgIHRoZSB2aWRlbyB0byBsb3NlIGl0cyAn
ZW5kZWQnIHN0YXR1cyBiZWZvcmUgcXVlcnlpbmcgZm9yIHdoZXRoZXIgb3Igbm90IHRvCisgICAg
ICAgIHNob3cgbWVkaWEgY29udHJvbHMuCisKKyAgICAgICAgVGhyZWUgbmV3IEFQSSB0ZXN0czog
bGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbAorICAgICAgICBsYXJnZS12aWRlby1o
aWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCisgICAgICAgIGxhcmdlLXZpZGVv
LXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sCisKKyAgICAgICAg
KiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpzZXRQbGF5aW5nKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNl
c3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29u
dHJvbENvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9u
Lmg6CisKIDIwMTYtMDctMjIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBIYW5kbGUgY2FzZXMgd2hlbiBJT1N1cmZhY2UgaW5pdGlhbGl6YXRpb24gZmFpbHMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2MDJkODZjZjA4YjMw
MDAyYzZjNWZlYjU5MjRiMWRiYzc3ZDkzMDY0Li44NTg5ZTk5NzE1NWY3OGE4MDJjMGRmMDc0ZmM3
YWRkMGJiN2MxM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
QEAgLTQ0MTEsNiArNDQxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJU
aW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAgICAgICBpZiAoIW1fc2VudEVuZEV2ZW50
KSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpOworICAgICAgICAgICAg
ICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxlbWVudFNl
c3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8IE1lZGlh
RWxlbWVudFNlc3Npb246OlJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFuYWdlcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVudCBoYXMg
YSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9sbGVyIHN0
YXRlCiAgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50IG1lZGlh
IGNvbnRyb2xsZXIuCkBAIC00NDMxLDYgKzQ0MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgICAgICAgICAgaWYgKCFt
X3NlbnRFbmRFdmVudCAmJiBtX3BsYXllciAmJiBtX3BsYXllci0+ZW5kZWQoKSkgewogICAgICAg
ICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzY2hlZHVs
ZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBtX21lZGlh
U2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1
aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIgfCBNZWRpYUVsZW1lbnRTZXNz
aW9uOjpSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAgICAgICAg
ICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzZXRQbGF5aW5nKGZhbHNl
KTsKICAgICAgICAgICAgIH0KQEAgLTQ5MzYsNiArNDkzOCw5IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwbGF5aW5nKQogeworICAgIGlmIChwbGF5
aW5nICYmIG1fbWVkaWFTZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVtb3ZlQmVo
YXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJhY2tUb0Nv
bnRyb2xDb250cm9sc01hbmFnZXIpOworCiAgICAgaWYgKG1fcGxheWluZyA9PSBwbGF5aW5nKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFF
bGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwCmluZGV4IGZhMWRlMzFlMDZjOTJhNzU2NWU0ODZiN2U3NmI2Mjk5ZDZiMzkzZmMuLjcw
ZGFhOWY4NWJiODU3MDU2YTE2OWU3ZTEzZjAzMmFlMjJmZGY5ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjQzLDYgKzI0MywxMSBAQCBib29s
IE1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBjb25zdAog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaGFzQmVoYXZpb3JSZXN0cmlj
dGlvbihSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpICYmICFtX2VsZW1l
bnQuaXNQbGF5aW5nKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50U2Vzc2lv
bjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVlZHMgdG8g
YmUgcGxheWluZyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgaWYgKG1f
ZWxlbWVudC5tdXRlZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVudFNlc3Np
b246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11dGVkIik7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRT
ZXNzaW9uLmgKaW5kZXggZjEwMWM5NmM0N2EyYzY1ZmM5N2Y2YWI1NjQyNmNiYTFmZjUxN2QwNi4u
YjgwMmRjYjY1NmIwZmE4OWEzNjI1Nzg0OWMyZDhiN2Y1ZmE3OGMzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgog
ICAgICAgICBJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IDEgPDwgMTEsCiAgICAgICAg
IE92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250ZW50ID0gMSA8PCAxMiwK
ICAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyID0gMSA8
PCAxMywKKyAgICAgICAgUmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyID0g
MSA8PCAxNCwKICAgICAgICAgQWxsUmVzdHJpY3Rpb25zID0gfk5vUmVzdHJpY3Rpb25zLAogICAg
IH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmY2YxZmNhNTkyN2Ey
YmVmMjM5ZmYxMmFmMWRlNGU0MjRmMWMwMDhiLi40ZGMxYzRhMWNlNTFjOTE0NDliZjc4MzUyN2Iz
NDIzYzQ0NjExYjNhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDctMjMgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgb24gYXBwbGUuY29t
IGRvbid0IGRpc2FwcGVhciB3aGVuIG1vdmllIGZpbmlzaGVzIHBsYXlpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA2OAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMjY2Njg1MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkcyBuZXcgQVBJIHRlc3RzLiBQbGVhc2Ugc2VlIFdlYkNvcmUgQ2hh
bmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAgICAg
KC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGluaXRXaXRoV0tXZWJWaWV3OmZpbmFsTWVz
c2FnZVN0cmluZzpdKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIHVz
ZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtEaWRQbGF5TWVzc2FnZUhhbmRsZXIg
aW5pdFdpdGhXS1dlYlZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RpZFBsYXlNZXNzYWdl
SGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6
IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFy
Z2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vl
ay1hZnRlci1lbmRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0
ZXItZW5kaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTIyICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSBk
aXNwbGF5ZWQgZm9yIG1lZGlhIGluIG1lZGlhIGRvY3VtZW50cwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCBiOGJlMjViM2I5YWFkNTIxMDdiNDY2MzU2NTViZWE4YzNjNGU3NWQ3Li4yN2FjZjA4
M2YwZTIxYjY1YTZmYmNiNDliZGQ4ODNhNGNkZDFmMmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNTMsNiArNTMsOSBAQAogCQkyREM0Q0Y3NzFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURl
dGVjdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEQzRDRjc2MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwogCQky
REQ3RDNBRjE3ODIyN0IzMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRE
N0QzQUUxNzgyMjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICov
OyB9OwogCQkyRTE0QTUyOTFEM0ZFOTZCMDAxMEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0
aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwgKi87IH07CisJCTJFMUI3QjAwMUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJn
ZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBs
YXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sICovOyB9OworCQkyRTFCN0IwMjFENDFC
MUI5MDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1l
bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTFCN0IwMTFENDFCMUIzMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJv
bHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCAqLzsgfTsKKwkJMkUxREZERjExRDQyRTFFNDAwNzE0
QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFMURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lu
bmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgw
QTAwQkEyQkIxIC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsg
fTsKIAkJMkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJC
QjEgLyogbWFpbk1hYy5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1v
dXNlTW92ZUFmdGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVB
ZnRlckNyYXNoX0J1bmRsZS5jcHAgKi87IH07CkBAIC00OTgsNiArNTAxLDkgQEAKIAkJCWRzdFN1
YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3
QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJ
CQkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5u
aW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJ
CTJFMUI3QjAyMUQ0MUIxQjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1h
ZnRlci1zZWVrLXRvLWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMUI3QjAw
MUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQxMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBs
aWNhdGlvbkNhY2hlLmRiIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQyMUQzRUI1
QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQk1QzlFNTk0MzFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13
YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC02OTgsNiArNzA0LDkgQEAKIAkJMkREN0QzQTkx
NzgyMDVEMDAwMjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRX
ZWJWaWV3LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREN0QzQUUxNzgyMjdB
QzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxv
dHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMkUxNEE1MjgxRDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVk
aW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvcGxheWluZy12aWRlby13
aXRoLWF1ZGlvLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFCN0FGRjFE
NDFBOTVGMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxQjdCMDExRDQxQjFCMzAwNzU1
OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMt
YWZ0ZXItc2Vlay10by1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJF
MURGREYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1h
bmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJs
YXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAv
KiBtYWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFp
bklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0RDgxMTAw
QkEyQkIxIC8qIG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBtYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEy
NzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzM1LDYgKzEzNDQsOCBAQAogCQlBMTZGNjZCODFD
NDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2Utdmlk
ZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCisJCQkJ
MkUxQjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFm
dGVyLXNlZWstdG8tZW5kLmh0bWwgKi8sCiAJCQkJNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGIgKi8sCiAJCQkJNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htICovLAogCQkJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLywKQEAgLTEzNjksNiArMTM4MCw3IEBACiAJ
CQkJNTE1QkUxNkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwg
Ki8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xl
YW51cC0xLmh0bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nl
c3NLaWxsSURCQ2xlYW51cC0yLmh0bWwgKi8sCisJCQkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0
IC8qIGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFJlc291cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdl
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJv
bHNNYW5hZ2VyLm1tCmluZGV4IGFhOTc5MTk0N2IwN2IyNTZlMjYzNzQ2NDZhNmUwN2I1ODU1MDQy
YmIuLmU0Mzc5ODY2ZjMwYTkzYmRmZjVjN2YyYWUwODY3MTgxNWY1NjE5NjkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5h
Z2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVv
Q29udHJvbHNNYW5hZ2VyLm1tCkBAIC01NCwyMyArNTQsMjUgQEAgLSAodm9pZCltb3VzZURvd25B
dFBvaW50OihOU1BvaW50KXBvaW50IHsKIAogQGVuZAogCi1AaW50ZXJmYWNlIERpZFBsYXlNZXNz
YWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7CitAaW50ZXJm
YWNlIE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CiB9CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIGV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNTdHJpbmcgKmZpbmFsTWVzc2FnZVN0cmlu
ZzsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZp
ZXc7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmll
dyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nOwogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gRGlkUGxheU1lc3NhZ2VIYW5kbGVyCitAaW1wbGVtZW50YXRp
b24gTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFdLV2ViVmlldzooV0tXZWJWaWV3Kil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhX
S1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5n
ICopZmluYWxNZXNzYWdlU3RyaW5nCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgX2Zp
bmFsTWVzc2FnZVN0cmluZyA9IGZpbmFsTWVzc2FnZVN0cmluZzsKIAogICAgIHJldHVybiBzZWxm
OwogfQpAQCAtODAsNyArODIsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tV
c2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IHRydWU7CiAKICAgICBOU1N0cmluZyAqYm9keVN0cmluZyA9IChO
U1N0cmluZyAqKVttZXNzYWdlIGJvZHldOwotICAgIGlmIChbYm9keVN0cmluZyBpc0VxdWFsVG9T
dHJpbmc6QCJwbGF5aW5nIl0gfHwgW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAicGF1c2Vk
Il0pIHsKKyAgICBpZiAoW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnNlbGYuZmluYWxNZXNz
YWdlU3RyaW5nXSkgewogICAgICAgICBCT09MIGhhc0NvbnRyb2xzTWFuYWdlciA9IFtfd2ViVmll
dyBfaGFzQWN0aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXJdOwogICAgICAgICBpZiAoc2VsZi5l
eHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcikKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhh
c0NvbnRyb2xzTWFuYWdlcik7CkBAIC0xMzIsNyArMTM0LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xz
TWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKQogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
aGFuZGxlci5nZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxO
U1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRl
bnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBi
YWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTE1Myw3ICsxNTUs
NyBAQCBURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmds
ZVNtYWxsVmlkZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25G
b3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmll
dzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFu
ZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAi
cGxheWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT10pOwpAQCAtMTc0LDcgKzE3Niw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZp
ZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogICAgIFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdl
dCgpLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEw
MCwgMTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5Q
dHI8RGlkUGxheU1lc3NhZ2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtbRGlk
UGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tI
YW5kbGVyID0gYWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5p
dFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwYXVzZWQi
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6cGxheWJhY2tIYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxl
ciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5k
b3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpOT10pOwpAQCAtMTk0LDEyICsxOTYsNzcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogfQogCitURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlp
bmdWaWRlb1NlZWtzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVz
c2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0
cmluZzpAImVuZGVkIl0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdI
YW5kbGVyIl07CisKKyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tO
U1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVN
YXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVk
IGRlZmVyOk5PXSk7CisgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmll
dy5nZXQoKV07CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0aGUgZXhwZWN0
YXRpb24gaXMgTk8gZXZlbiBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNlZWtzIHRvIHRo
ZSBiZWdpbm5pbmcuCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFn
ZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZp
ZGVvLXNlZWstYWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xz
TWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNl
aXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRl
b0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVu
ZGluZykKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBs
YXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxl
ciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRo
V0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicmVwbGF5aW5nIl0p
OworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAg
ICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10g
aW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVz
c1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7Cisg
ICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAg
ICAvLyBTaW5jZSB0aGUgdmlkZW8gaXMgc3RpbGwgcGxheWluZywgdGhlIGV4cGVjdGF0aW9uIGlz
IFlFUyBldmVuIGlmIHRoZSB2aWRlbyBoYXMgZW5kZWQgb25jZS4KKyAgICBbaGFuZGxlciBzZXRF
eHBlY3RlZFRvSGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOworICAgIE5TVVJMUmVxdWVzdCAqcmVx
dWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxl
XSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5
LWFmdGVyLWVuZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3Rd
OworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJB
ZnRlclBsYXlpbmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3Jp
cHRNZXNzYWdlKTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9s
c01hbmFnZXJMYXJnZUF1dG9wbGF5aW5nVmlkZW9IaWRlc0NvbnRyb2xzQWZ0ZXJTZWVraW5nVG9F
bmQpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5
YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIg
PSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdL
V2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAImVuZGVkIl0pOworICAg
IFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VI
YW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAgICBSZXRh
aW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdp
dGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRv
d01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW1t3
aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICBSZXRh
aW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25M
b2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkg
aGFuZGxlcjpeKCkgeworICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBv
aW50KDUwLCA1MCldOworICAgIH1dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRD
b250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5h
bWU6QCJvbmxvYWRIYW5kbGVyIl07CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVk
LCB0aGUgZXhwZWN0YXRpb24gaXMgTk8uCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVD
b250cm9sc01hbmFnZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCiBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlk
ZW9XaXRob3V0QXVkaW8pCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhh
bmRsZXIgPSBhZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdL
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNz
YWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3Ry
aW5nOkAicGxheWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5n
SGFuZGxlciJdOwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtb
TlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxl
TWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJl
ZCBkZWZlcjpOT10pOwpAQCAtMjIwLDcgKzI4Nyw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFn
ZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiAg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdL
QXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAg
IFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbRGlk
UGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9
IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tX
ZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKICAg
ICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdl
SGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwogCiAgICAgUmV0
YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRX
aXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5k
b3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
aGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNl
ZWstdG8tZW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWM4NjllYzRlYmY5MjhmYjE2MDFmZjE4ZjkzMWJm
YWM3MTNkNzQ5NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5k
Lmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzY3JpcHQ+CisKKyAgICBmdW5jdGlvbiBoYW5kbGVFbmRlZCgpIHsKKyAgICAgICAgLy8g
VGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRoZSBuZXh0IHJ1bmxvb3Au
CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkgeworICAg
ICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVy
LnBvc3RNZXNzYWdlKCJlbmRlZCIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAg
ICAgfSwgMCk7CisgICAgfQorCisgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICB2
YXIgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidmlkZW8iKVswXTsKKyAg
ICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbjsKKyAgICB9CisKKyAgICBm
dW5jdGlvbiBiZWdpblRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5vbmxvYWRIYW5kbGVyLnBvc3RNZXNzYWdlKCJsb2FkZWQi
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICB9CisKKyAgIDwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25tb3VzZWRvd249c2Vla1RvRW5kKCkgb25sb2FkPWJlZ2luVGVzdCgpPgorICAg
IDx2aWRlbyBhdXRvcGxheSBvbmVuZGVkPWhhbmRsZUVuZGVkKCkgc3JjPSJsYXJnZS12aWRlby13
aXRoLWF1ZGlvLm1wNCIgd2Via2l0LXBsYXlzaW5saW5lIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhl
aWdodDogNjAwcHg7Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRl
ci1lbmRpbmcuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xh
cmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxNjdmNTc0YzQ2
MGIyNjNiMzczMjFjNjg2NDYxYjU0MWU5ZGM5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5k
aW5nLmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFk
PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlz
aFRlc3QoKSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRl
byIpLmN1cnJlbnRUaW1lID0gMDsKKyAgICAgICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBz
aG91bGQgYmUgdXBkYXRlZCBvbiB0aGUgbmV4dCBydW5sb29wLgorICAgICAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VI
YW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgiZW5kZWQiKTsKKyAgICAgICAgICAg
IH0sIDApOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAg
ICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGlt
ZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBp
ZD0idGVzdC12aWRlbyIgYXV0b3BsYXkgb25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hU
ZXN0KCkgb25wbGF5aW5nPXNlZWtUb0VuZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDog
NjAwcHg7IiBzcmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
Q29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5n
Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRl
by1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wN2E4ZWIxMGViMTRmMTlhMTkyNzcxMmQzNDU5MzFhZWRiYzNlYjAzCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
c2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKQEAgLTAsMCArMSwy
MyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAg
ICAgIGZ1bmN0aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSB7CisgICAgICAgICAg
ICB2YXIgdmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpOworICAg
ICAgICAgICAgdmlkZW8uY3VycmVudFRpbWUgPSAwOworICAgICAgICAgICAgdmlkZW8ucGxheSgp
OworICAgICAgICAgICAgLy8gVGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9u
IHRoZSBuZXh0IHJ1bmxvb3AuCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewor
ICAgICAgICAgICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5k
bGVyLnBvc3RNZXNzYWdlKCJyZXBsYXlpbmciKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICAgICAgZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGltZSA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBpZD0idGVzdC12aWRlbyIg
YXV0b3BsYXkgb25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgb25wbGF5aW5n
PXNlZWtUb0VuZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDogNjAwcHg7IiBzcmM9Imxh
cmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284497</attachid>
            <date>2016-07-25 10:20:43 -0700</date>
            <delta_ts>2016-07-25 12:56:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-160068-20160725101936.patch</filename>
            <type>text/plain</type>
            <size>27005</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGFjMWZlM2JkMzI1OTEx
ZGI4ZTBiMDVhMjQ0ZmQxOTQ4ZDJkNWIyNi4uOWQwOGIxNGJiN2QzNGU4ZjYwYjYwODExNWI5OWNm
NjJjNDAxMTk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA3LTIzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIE1lZGlhIGNvbnRy
b2xzIG9uIGFwcGxlLmNvbSBkb24ndCBkaXNhcHBlYXIgd2hlbiBtb3ZpZSBmaW5pc2hlcyBwbGF5
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAw
NjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI2NjY4NTI2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFdoZW4gYSB2aWRlbyBlbmRzLCBpdCBzaG91bGQg
Y2F1c2UgbWVkaWEgY29udHJvbHMgdG8gaGlkZS4gV2hpbGUgY3VycmVudCBsb2dpYworICAgICAg
ICBtb3N0bHkgYWNjb3VudHMgZm9yIHRoaXMsIGl0IGRvZXMgbm90IGFjY291bnQgZm9yIHByb2dy
YW1tYXRpYyBzZWVrcyBjYXVzaW5nCisgICAgICAgIHRoZSB2aWRlbyB0byBsb3NlIGl0cyAnZW5k
ZWQnIHN0YXR1cyBiZWZvcmUgcXVlcnlpbmcgZm9yIHdoZXRoZXIgb3Igbm90IHRvCisgICAgICAg
IHNob3cgbWVkaWEgY29udHJvbHMuCisKKyAgICAgICAgVGhyZWUgbmV3IEFQSSB0ZXN0czogbGFy
Z2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbAorICAgICAgICBsYXJnZS12aWRlby1oaWRl
cy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sCisgICAgICAgIGxhcmdlLXZpZGVvLXNl
ZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sCisKKyAgICAgICAgKiBo
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpzZXRQbGF5aW5nKToKKyAgICAgICAgKiBodG1sL01lZGlhRWxlbWVudFNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50U2Vzc2lvbjo6Y2FuQ29udHJv
bENvbnRyb2xzTWFuYWdlcik6CisgICAgICAgICogaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmg6
CisKIDIwMTYtMDctMjQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGhlIHdlYiBwcm9jZXNzIGhhbmdzIHdoZW4gY29tcHV0aW5nIGVsZW1lbnRzLWJh
c2VkIHNuYXAgcG9pbnRzIGZvciBhIGNvbnRhaW5lciB3aXRoIGxhcmdlIG1heCBzY3JvbGwgb2Zm
c2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAppbmRleCA2MDJkODZj
ZjA4YjMwMDAyYzZjNWZlYjU5MjRiMWRiYzc3ZDkzMDY0Li44NTg5ZTk5NzE1NWY3OGE4MDJjMGRm
MDc0ZmM3YWRkMGJiN2MxM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKQEAgLTQ0MTEsNiArNDQxMSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJUaW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiAgICAgICAgICAgICBpZiAoIW1fc2VudEVu
ZEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgbV9zZW50RW5kRXZlbnQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQpOworICAgICAg
ICAgICAgICAgIG1fbWVkaWFTZXNzaW9uLT5hZGRCZWhhdmlvclJlc3RyaWN0aW9uKE1lZGlhRWxl
bWVudFNlc3Npb246OlJlcXVpcmVVc2VyR2VzdHVyZVRvQ29udHJvbENvbnRyb2xzTWFuYWdlciB8
IE1lZGlhRWxlbWVudFNlc3Npb246OlJlcXVpcmVQbGF5YmFja1RvQ29udHJvbENvbnRyb2xzTWFu
YWdlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJZiB0aGUgbWVkaWEgZWxlbWVu
dCBoYXMgYSBjdXJyZW50IG1lZGlhIGNvbnRyb2xsZXIsIHRoZW4gcmVwb3J0IHRoZSBjb250cm9s
bGVyIHN0YXRlCiAgICAgICAgICAgICAvLyBmb3IgdGhlIG1lZGlhIGVsZW1lbnQncyBjdXJyZW50
IG1lZGlhIGNvbnRyb2xsZXIuCkBAIC00NDMxLDYgKzQ0MzIsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQbGF5ZXIqKQogICAgICAgICAgICAg
aWYgKCFtX3NlbnRFbmRFdmVudCAmJiBtX3BsYXllciAmJiBtX3BsYXllci0+ZW5kZWQoKSkgewog
ICAgICAgICAgICAgICAgIG1fc2VudEVuZEV2ZW50ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBz
Y2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50KTsKKyAgICAgICAgICAgICAgICBt
X21lZGlhU2Vzc2lvbi0+YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9u
OjpSZXF1aXJlVXNlckdlc3R1cmVUb0NvbnRyb2xDb250cm9sc01hbmFnZXIgfCBNZWRpYUVsZW1l
bnRTZXNzaW9uOjpSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogICAg
ICAgICAgICAgICAgIG1fcGF1c2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBzZXRQbGF5aW5n
KGZhbHNlKTsKICAgICAgICAgICAgIH0KQEAgLTQ5MzYsNiArNDkzOCw5IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6dXBkYXRlUGxheVN0YXRlKFVwZGF0ZVN0YXRlIHVwZGF0ZVN0YXRlKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFBsYXlpbmcoYm9vbCBwbGF5aW5nKQogeworICAgIGlm
IChwbGF5aW5nICYmIG1fbWVkaWFTZXNzaW9uKQorICAgICAgICBtX21lZGlhU2Vzc2lvbi0+cmVt
b3ZlQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJh
Y2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOworCiAgICAgaWYgKG1fcGxheWluZyA9PSBwbGF5
aW5nKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
TWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01lZGlhRWxlbWVu
dFNlc3Npb24uY3BwCmluZGV4IGZhMWRlMzFlMDZjOTJhNzU2NWU0ODZiN2U3NmI2Mjk5ZDZiMzkz
ZmMuLjcwZGFhOWY4NWJiODU3MDU2YTE2OWU3ZTEzZjAzMmFlMjJmZGY5ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmNwcApAQCAtMjQzLDYgKzI0MywxMSBA
QCBib29sIE1lZGlhRWxlbWVudFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIoKSBj
b25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBpZiAoaGFzQmVoYXZpb3JS
ZXN0cmljdGlvbihSZXF1aXJlUGxheWJhY2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpICYmICFt
X2VsZW1lbnQuaXNQbGF5aW5nKCkpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAiTWVkaWFFbGVtZW50
U2Vzc2lvbjo6Y2FuQ29udHJvbENvbnRyb2xzTWFuYWdlciAtIHJldHVybmluZyBGQUxTRTogTmVl
ZHMgdG8gYmUgcGxheWluZyIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAg
aWYgKG1fZWxlbWVudC5tdXRlZCgpKSB7CiAgICAgICAgIExPRyhNZWRpYSwgIk1lZGlhRWxlbWVu
dFNlc3Npb246OmNhbkNvbnRyb2xDb250cm9sc01hbmFnZXIgLSByZXR1cm5pbmcgRkFMU0U6IE11
dGVkIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvTWVkaWFFbGVtZW50U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVs
ZW1lbnRTZXNzaW9uLmgKaW5kZXggZjEwMWM5NmM0N2EyYzY1ZmM5N2Y2YWI1NjQyNmNiYTFmZjUx
N2QwNi4uYjgwMmRjYjY1NmIwZmE4OWEzNjI1Nzg0OWMyZDhiN2Y1ZmE3OGMzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NZWRpYUVsZW1lbnRTZXNzaW9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVi
bGljOgogICAgICAgICBJbnZpc2libGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IDEgPDwgMTEsCiAg
ICAgICAgIE92ZXJyaWRlVXNlckdlc3R1cmVSZXF1aXJlbWVudEZvck1haW5Db250ZW50ID0gMSA8
PCAxMiwKICAgICAgICAgUmVxdWlyZVVzZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2Vy
ID0gMSA8PCAxMywKKyAgICAgICAgUmVxdWlyZVBsYXliYWNrVG9Db250cm9sQ29udHJvbHNNYW5h
Z2VyID0gMSA8PCAxNCwKICAgICAgICAgQWxsUmVzdHJpY3Rpb25zID0gfk5vUmVzdHJpY3Rpb25z
LAogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBCZWhhdmlvclJlc3RyaWN0aW9uczsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhMzdmNDEz
ZGE1NmE5ZGQ2M2M2NjQ5N2E2ODExZjRlZmY5NDgzOTU2Li45MmU1NDA2NTVhODE5YzZhZjc0OGUz
OTA0ZjY4NDY3ZmI5MTllZmEyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTYtMDctMjMgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgTWVkaWEgY29udHJvbHMgb24gYXBw
bGUuY29tIGRvbid0IGRpc2FwcGVhciB3aGVuIG1vdmllIGZpbmlzaGVzIHBsYXlpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDA2OAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjY2Njg1MjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgQWRkcyBuZXcgQVBJIHRlc3RzLiBQbGVhc2Ugc2VlIFdlYkNvcmUg
Q2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAg
ICAgKC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGluaXRXaXRoV0tXZWJWaWV3OmZpbmFs
TWVzc2FnZVN0cmluZzpdKToKKyAgICAgICAgKC1bTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVy
IHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpdKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAoLVtEaWRQbGF5TWVzc2FnZUhhbmRs
ZXIgaW5pdFdpdGhXS1dlYlZpZXc6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0RpZFBsYXlNZXNz
YWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6
XSk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2Ev
bGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbDogQWRkZWQu
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8t
c2Vlay1hZnRlci1lbmRpbmcuaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXkt
YWZ0ZXItZW5kaW5nLmh0bWw6IEFkZGVkLgorCiAyMDE2LTA3LTI0ICBQaGlsaXBwZSBOb3JtYW5k
ICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmb3Jnb3QgdG8g
Y29tbWl0IHRoaXMgZmlsZSBpbiByMjAzNjc0LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBi
OGJlMjViM2I5YWFkNTIxMDdiNDY2MzU2NTViZWE4YzNjNGU3NWQ3Li4yN2FjZjA4M2YwZTIxYjY1
YTZmYmNiNDliZGQ4ODNhNGNkZDFmMmRlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTMs
NiArNTMsOSBAQAogCQkyREM0Q0Y3NzFEMkQ5REQ4MDBFQ0NDOTQgLyogRGF0YURldGVjdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQzRDRjc2
MUQyRDlERDgwMEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovOyB9OwogCQkyREQ3RDNBRjE3
ODIyN0IzMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkREN0QzQUUxNzgy
MjdBQzAwMjZFMUUzIC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovOyB9OwogCQky
RTE0QTUyOTFEM0ZFOTZCMDAxMEYzNUIgLyogYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJFMTRBNTI4MUQzRkU4QjgwMDEwRjM1QiAvKiBhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwgKi87IH07CisJCTJFMUI3QjAwMUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJnZS12aWRlby1z
ZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJFMUI3QUZGMUQ0MUE5NUYwMDc1NThCNCAvKiBsYXJnZS12aWRl
by1zZWVrLWFmdGVyLWVuZGluZy5odG1sICovOyB9OworCQkyRTFCN0IwMjFENDFCMUI5MDA3NTU4
QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFC
N0IwMTFENDFCMUIzMDA3NTU4QjQgLyogbGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXIt
c2Vlay10by1lbmQuaHRtbCAqLzsgfTsKKwkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8qIGxh
cmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFMURG
REYwMUQ0MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQt
cGxheS1hZnRlci1lbmRpbmcuaHRtbCAqLzsgfTsKIAkJMkU3NzY1Q0QxNkM0RDgwQTAwQkEyQkIx
IC8qIG1haW5JT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAqLzsgfTsKIAkJMkU3
NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTc3NjVDRTE2QzREODExMDBCQTJCQjEgLyogbWFp
bk1hYy5tbSAqLzsgfTsKIAkJMzNCRTVBRjkxMzdCNUFBRTAwNzA1ODEzIC8qIE1vdXNlTW92ZUFm
dGVyQ3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMzQkU1QUY4MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNo
X0J1bmRsZS5jcHAgKi87IH07CkBAIC00OTgsNiArNTAxLDkgQEAKIAkJCWRzdFN1YmZvbGRlclNw
ZWMgPSA3OwogCQkJZmlsZXMgPSAoCiAJCQkJNTE1QkUxNkYxRDQyOEJCMTAwREQ3QzY4IC8qIFN0
b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJMkUxREZE
RjExRDQyRTFFNDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1w
bGF5LWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMUI3QjAy
MUQ0MUIxQjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVr
LXRvLWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMUI3QjAwMUQ0MUFCQTcw
MDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTVDOUU1OTQxMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNh
Y2hlLmRiIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYy
RSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1
QzlFNTk0MzFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCkBAIC02OTgsNiArNzA0LDkgQEAKIAkJMkREN0QzQTkxNzgyMDVEMDAw
MjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkREN0QzQUUxNzgyMjdBQzAwMjZFMUUz
IC8qIGxvdHMtb2YtdGV4dC12ZXJ0aWNhbC1sci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtdGV4
dC12ZXJ0aWNhbC1sci5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkUxNEE1
MjgxRDNGRThCODAwMTBGMzVCIC8qIGF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJhdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlv
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyRTFCN0FGRjFENDFBOTVGMDA3
NTU4QjQgLyogbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxQjdCMDExRDQxQjFCMzAwNzU1OEI0IC8qIGxh
cmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8taGlkZXMtY29udHJvbHMtYWZ0ZXItc2Vl
ay10by1lbmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJFMURGREYwMUQ0
MkUxNDQwMDcxNEEwMCAvKiBsYXJnZS12aWRlby1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1h
ZnRlci1lbmRpbmcuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRl
by1zZWVrLXRvLWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9T
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbklPUy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8q
IG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBtYWlu
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNCOUNFMTEyNzdGMjMxMDBG
RUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xMzM1LDYgKzEzNDQsOCBAQAogCQlBMTZGNjZCODFDNDBFOUUxMDBC
RDREMjQgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10
by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCisJCQkJMkUxQjdCMDEx
RDQxQjFCMzAwNzU1OEI0IC8qIGxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWst
dG8tZW5kLmh0bWwgKi8sCiAJCQkJNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0
aW9uQ2FjaGUuZGIgKi8sCiAJCQkJNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0
aW9uQ2FjaGUuZGItc2htICovLAogCQkJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBs
aWNhdGlvbkNhY2hlLmRiLXdhbCAqLywKQEAgLTEzNjksNiArMTM4MCw3IEBACiAJCQkJNTE1QkUx
NkUxRDQyODhGRjAwREQ3QzY4IC8qIFN0b3JlQmxvYlRvQmVEZWxldGVkLmh0bWwgKi8sCiAJCQkJ
NTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC0xLmh0
bWwgKi8sCiAJCQkJNTE3MTRFQjMxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURC
Q2xlYW51cC0yLmh0bWwgKi8sCisJCQkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0IC8qIGxhcmdl
LXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFJlc291
cmNlczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2Vy
Lm1tCmluZGV4IGFhOTc5MTk0N2IwN2IyNTZlMjYzNzQ2NDZhNmUwN2I1ODU1MDQyYmIuLmU0Mzc5
ODY2ZjMwYTkzYmRmZjVjN2YyYWUwODY3MTgxNWY1NjE5NjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1ZpZGVvQ29udHJvbHNN
YW5hZ2VyLm1tCkBAIC01NCwyMyArNTQsMjUgQEAgLSAodm9pZCltb3VzZURvd25BdFBvaW50OihO
U1BvaW50KXBvaW50IHsKIAogQGVuZAogCi1AaW50ZXJmYWNlIERpZFBsYXlNZXNzYWdlSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPiB7CitAaW50ZXJmYWNlIE1lZGlh
UGxheWJhY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVy
PiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gX3dlYlZpZXc7CiB9CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGV4cGVjdGVkVG9IYXZlQ29udHJvbHNNYW5hZ2VyOworQHByb3BlcnR5
IChub25hdG9taWMsIHJldGFpbikgTlNTdHJpbmcgKmZpbmFsTWVzc2FnZVN0cmluZzsKIAotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoV0tXZWJWaWV3OihXS1dlYlZpZXcqKXdlYlZpZXc7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1l
c3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxNZXNzYWdlU3RyaW5nOwogQGVuZAogCi1AaW1w
bGVtZW50YXRpb24gRGlkUGxheU1lc3NhZ2VIYW5kbGVyCitAaW1wbGVtZW50YXRpb24gTWVkaWFQ
bGF5YmFja01lc3NhZ2VIYW5kbGVyCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFdLV2ViVmll
dzooV0tXZWJWaWV3Kil3ZWJWaWV3CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhXS1dlYlZpZXc6
KFdLV2ViVmlldyopd2ViVmlldyBmaW5hbE1lc3NhZ2VTdHJpbmc6KE5TU3RyaW5nICopZmluYWxN
ZXNzYWdlU3RyaW5nCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKICAgICBfd2ViVmlldyA9IHdlYlZpZXc7CisgICAgX2ZpbmFsTWVzc2Fn
ZVN0cmluZyA9IGZpbmFsTWVzc2FnZVN0cmluZzsKIAogICAgIHJldHVybiBzZWxmOwogfQpAQCAt
ODAsNyArODIsNyBAQCAtICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVu
dENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZAogICAgIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZSA9IHRydWU7CiAKICAgICBOU1N0cmluZyAqYm9keVN0cmluZyA9IChOU1N0cmluZyAq
KVttZXNzYWdlIGJvZHldOwotICAgIGlmIChbYm9keVN0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCJw
bGF5aW5nIl0gfHwgW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAicGF1c2VkIl0pIHsKKyAg
ICBpZiAoW2JvZHlTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOnNlbGYuZmluYWxNZXNzYWdlU3RyaW5n
XSkgewogICAgICAgICBCT09MIGhhc0NvbnRyb2xzTWFuYWdlciA9IFtfd2ViVmlldyBfaGFzQWN0
aXZlVmlkZW9Gb3JDb250cm9sc01hbmFnZXJdOwogICAgICAgICBpZiAoc2VsZi5leHBlY3RlZFRv
SGF2ZUNvbnRyb2xzTWFuYWdlcikKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKGhhc0NvbnRyb2xz
TWFuYWdlcik7CkBAIC0xMzIsNyArMTM0LDcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwg
VmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKQogICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxh
eU1lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0RpZFBsYXlNZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFJldGFpblB0
cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQ
bGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3Lmdl
dCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAInBsYXlpbmciXSk7CiAgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAicGxheWluZ0hhbmRsZXIiXTsKIAogICAgIFJldGFpblB0cjxOU1dpbmRvdz4g
d2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0Olt3
ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5T
QmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKQEAgLTE1Myw3ICsxNTUsNyBAQCBURVNU
KFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxsVmlk
ZW8pCiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFj
ayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3
LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFu
ZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRX
aXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJd
KTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwogCiAg
ICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxl
c3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpA
QCAtMTc0LDcgKzE3Niw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJv
bHNNYW5hZ2VyU2luZ2xlU21hbGxBdXRvcGxheWluZ1ZpZGVvKQogICAgIFJldGFpblB0cjxXS1dl
YlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFU
eXBlTm9uZTsKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBSZXRhaW5QdHI8RGlkUGxh
eU1lc3NhZ2VIYW5kbGVyPiBwbGF5YmFja0hhbmRsZXIgPSBhZG9wdE5TKFtbRGlkUGxheU1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAg
UmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gcGxheWJhY2tIYW5kbGVyID0g
YWRvcHROUyhbW01lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dl
YlZpZXc6d2ViVmlldy5nZXQoKSBmaW5hbE1lc3NhZ2VTdHJpbmc6QCJwYXVzZWQiXSk7CiAgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6cGxheWJhY2tIYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwogCiAg
ICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxl
c3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpA
QCAtMTk0LDEyICsxOTYsNzcgQEAgVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250
cm9sc01hbmFnZXJTaW5nbGVTbWFsbEF1dG9wbGF5aW5nVmlkZW8pCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogfQogCitURVNUKFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1Nl
ZWtzQWZ0ZXJFbmRpbmcpCit7CisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJldGFp
blB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKV0pOworICAgIFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRs
ZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAImVu
ZGVkIl0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07
CisKKyAgICBSZXRhaW5QdHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5P
XSk7CisgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07
CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0aGUgZXhwZWN0YXRpb24gaXMg
Tk8gZXZlbiBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNlZWtzIHRvIHRoZSBiZWdpbm5p
bmcuCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01hbmFnZXI6Tk9dOwor
ICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdlLXZpZGVvLXNlZWst
YWZ0ZXItZW5kaW5nIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFm
dGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlw
dE1lc3NhZ2UpOworfQorCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xz
TWFuYWdlckxhcmdlQXV0b3BsYXlpbmdWaWRlb1NlZWtzQW5kUGxheXNBZnRlckVuZGluZykKK3sK
KyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0g
V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7Cisg
ICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0
TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3
OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicmVwbGF5aW5nIl0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAgICBSZXRhaW5Q
dHI8TlNXaW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhD
b250ZW50UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01h
c2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW1t3aW5k
b3cgY29udGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICAvLyBTaW5j
ZSB0aGUgdmlkZW8gaXMgc3RpbGwgcGxheWluZywgdGhlIGV4cGVjdGF0aW9uIGlzIFlFUyBldmVu
IGlmIHRoZSB2aWRlbyBoYXMgZW5kZWQgb25jZS4KKyAgICBbaGFuZGxlciBzZXRFeHBlY3RlZFRv
SGF2ZUNvbnRyb2xzTWFuYWdlcjpZRVNdOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JS
ZXNvdXJjZTpAImxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVu
ZGluZyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEku
cmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0ZWRDb250cm9sc01hbmFnZXJBZnRlclBsYXlp
bmcpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
KTsKK30KKworVEVTVChWaWRlb0NvbnRyb2xzTWFuYWdlciwgVmlkZW9Db250cm9sc01hbmFnZXJM
YXJnZUF1dG9wbGF5aW5nVmlkZW9IaWRlc0NvbnRyb2xzQWZ0ZXJTZWVraW5nVG9FbmQpCit7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3Vy
YXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdL
QXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IFJldGFpblB0cjxNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5T
KFtbTWVkaWFQbGF5YmFja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpIGZpbmFsTWVzc2FnZVN0cmluZzpAImVuZGVkIl0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInBsYXlpbmdIYW5kbGVyIl07CisKKyAgICBSZXRhaW5QdHI8TlNX
aW5kb3c+IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50
UmVjdDpbd2ViVmlldyBmcmFtZV0gc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFj
a2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOk5PXSk7CisgICAgW1t3aW5kb3cgY29u
dGVudFZpZXddIGFkZFN1YnZpZXc6d2ViVmlldy5nZXQoKV07CisKKyAgICBSZXRhaW5QdHI8T25M
b2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25Mb2FkTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgaGFuZGxlcjpe
KCkgeworICAgICAgICBbd2ViVmlldyBtb3VzZURvd25BdFBvaW50Ok5TTWFrZVBvaW50KDUwLCA1
MCldOworICAgIH1dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVy
XSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJvbmxv
YWRIYW5kbGVyIl07CisKKyAgICAvLyBTaW5jZSB0aGUgdmlkZW8gaGFzIGVuZGVkLCB0aGUgZXhw
ZWN0YXRpb24gaXMgTk8uCisgICAgW2hhbmRsZXIgc2V0RXhwZWN0ZWRUb0hhdmVDb250cm9sc01h
bmFnZXI6Tk9dOworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImxhcmdl
LXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kIiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJnRlc3RlZENvbnRyb2xzTWFuYWdlckFmdGVyUGxheWluZyk7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOworfQorCiBURVNUKFZpZGVvQ29u
dHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZUxhcmdlVmlkZW9XaXRob3V0
QXVkaW8pCiB7CiAgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwog
ICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQ
bGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dl
YlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIFJldGFpblB0cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBh
ZG9wdE5TKFtbRGlkUGxheU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3
ZWJWaWV3LmdldCgpXSk7CisgICAgUmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxl
cj4gaGFuZGxlciA9IGFkb3B0TlMoW1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxh
eWluZyJdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJd
OwogCiAgICAgUmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cg
YWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpO
T10pOwpAQCAtMjIwLDcgKzI4Nyw3IEBAIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVv
Q29udHJvbHNNYW5hZ2VyQXVkaW9FbGVtZW50U3RhcnRlZFdpdGhTY3JpcHQpCiAgICAgUmV0YWlu
UHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwogICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAw
LCAxMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIFJldGFpblB0
cjxEaWRQbGF5TWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbRGlkUGxheU1lc3Nh
Z2VIYW5kbGVyIGFsbG9jXSBpbml0V2l0aFdLV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAg
UmV0YWluUHRyPE1lZGlhUGxheWJhY2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMo
W1tNZWRpYVBsYXliYWNrTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3Ondl
YlZpZXcuZ2V0KCkgZmluYWxNZXNzYWdlU3RyaW5nOkAicGxheWluZyJdKTsKICAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpo
YW5kbGVyLmdldCgpIG5hbWU6QCJwbGF5aW5nSGFuZGxlciJdOwogCiAgICAgUmV0YWluUHRyPE5T
V2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVu
dFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJh
Y2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8taGlkZXMtY29u
dHJvbHMtYWZ0ZXItc2Vlay10by1lbmQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5k
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWM4NjllYzRlYmY5MjhmYjE2MDFmZjE4ZjkzMWJmYWM3MTNkNzQ5
NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL2xhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwKQEAg
LTAsMCArMSwzMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3Jp
cHQ+CisKKyAgICBmdW5jdGlvbiBoYW5kbGVFbmRlZCgpIHsKKyAgICAgICAgLy8gVGhlIG1lZGlh
IGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRoZSBuZXh0IHJ1bmxvb3AuCisgICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVyLnBvc3RNZXNz
YWdlKCJlbmRlZCIpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7IH0KKyAgICAgICAgfSwgMCk7
CisgICAgfQorCisgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICB2YXIgdmlkZW8g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidmlkZW8iKVswXTsKKyAgICAgICAgdmlk
ZW8uY3VycmVudFRpbWUgPSB2aWRlby5kdXJhdGlvbjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBi
ZWdpblRlc3QoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1l
c3NhZ2VIYW5kbGVycy5vbmxvYWRIYW5kbGVyLnBvc3RNZXNzYWdlKCJsb2FkZWQiKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7IH0KKyAgICB9CisKKyAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25tb3VzZWRvd249c2Vla1RvRW5kKCkgb25sb2FkPWJlZ2luVGVzdCgpPgorICAgIDx2aWRlbyBh
dXRvcGxheSBvbmVuZGVkPWhhbmRsZUVuZGVkKCkgc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlv
Lm1wNCIgd2Via2l0LXBsYXlzaW5saW5lIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDogNjAw
cHg7Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcu
aHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVv
LXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTMxNjdmNTc0YzQ2MGIyNjNiMzcz
MjFjNjg2NDYxYjU0MWU5ZGM5MgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwK
QEAgLTAsMCArMSwyMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxz
Y3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSB7
CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpLmN1cnJl
bnRUaW1lID0gMDsKKyAgICAgICAgICAgIC8vIFRoZSBtZWRpYSBjb250cm9scyBzaG91bGQgYmUg
dXBkYXRlZCBvbiB0aGUgbmV4dCBydW5sb29wLgorICAgICAgICAgICAgc2V0VGltZW91dChmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5w
bGF5aW5nSGFuZGxlci5wb3N0TWVzc2FnZSgiZW5kZWQiKTsKKyAgICAgICAgICAgIH0sIDApOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGltZSA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7CisgICAgICAg
IH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBpZD0idGVzdC12
aWRlbyIgYXV0b3BsYXkgb25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgb25w
bGF5aW5nPXNlZWtUb0VuZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDogNjAwcHg7IiBz
cmM9ImxhcmdlLXZpZGVvLXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFy
Z2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby1zZWVrLXRv
LWJlZ2lubmluZy1hbmQtcGxheS1hZnRlci1lbmRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wN2E4ZWIx
MGViMTRmMTlhMTkyNzcxMmQzNDU5MzFhZWRiYzNlYjAzCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8tc2Vlay10by1i
ZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0
aW9uIHNlZWtUb0JlZ2lubmluZ0FuZEZpbmlzaFRlc3QoKSB7CisgICAgICAgICAgICB2YXIgdmlk
ZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjdGVzdC12aWRlbyIpOworICAgICAgICAgICAg
dmlkZW8uY3VycmVudFRpbWUgPSAwOworICAgICAgICAgICAgdmlkZW8ucGxheSgpOworICAgICAg
ICAgICAgLy8gVGhlIG1lZGlhIGNvbnRyb2xzIHNob3VsZCBiZSB1cGRhdGVkIG9uIHRoZSBuZXh0
IHJ1bmxvb3AuCisgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnBsYXlpbmdIYW5kbGVyLnBvc3RN
ZXNzYWdlKCJyZXBsYXlpbmciKTsKKyAgICAgICAgICAgIH0sIDApOworICAgICAgICB9CisKKyAg
ICAgICAgZnVuY3Rpb24gc2Vla1RvRW5kKCkgeworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigiI3Rlc3QtdmlkZW8iKS5jdXJyZW50VGltZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoIiN0ZXN0LXZpZGVvIikuZHVyYXRpb24gLSAwLjE7CisgICAgICAgIH0KKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorICAgIDx2aWRlbyBpZD0idGVzdC12aWRlbyIgYXV0b3BsYXkg
b25lbmRlZD1zZWVrVG9CZWdpbm5pbmdBbmRGaW5pc2hUZXN0KCkgb25wbGF5aW5nPXNlZWtUb0Vu
ZCgpIHN0eWxlPSJ3aWR0aDogODAwcHg7IGhlaWdodDogNjAwcHg7IiBzcmM9ImxhcmdlLXZpZGVv
LXdpdGgtYXVkaW8ubXA0Ij48L3ZpZGVvPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284514</attachid>
            <date>2016-07-25 12:56:29 -0700</date>
            <delta_ts>2016-07-25 12:59:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160068-20160725125522.patch</filename>
            <type>text/plain</type>
            <size>15452</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzNjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBhMDY2NzI4MTRkZGEx
MjI5ZTExMTI2ZDQ2MDVhOTE2MzAwOGVlMi4uMjkzZTc0NzlkODExZmRmYzlkNWE0OGZmMzEyMzgx
NGZkOTBlZWQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtNCw2ICs0LDIzIEBACiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjAwNjgKICAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI2NjY4NTI2PgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZvciB2aWRlb3MgdGhhdCBoYXZlIG5ldmVyIHBsYXllZCBiYWNrIHlldCwgd2Ug
c2hvdWxkIG5vdCBzaG93IG1lZGlhIGNvbnRyb2xzLiBUbyBlbnN1cmUgdGhpcworICAgICAgICBi
ZWhhdmlvciwgd2UgZW5zdXJlIHRoYXQgdGhlIHBsYXliYWNrIGJlaGF2aW9yIHJlc3RyaWN0aW9u
IGlzIHNldCB1cG9uIGNyZWF0aW5nIHRoZSBtZWRpYQorICAgICAgICBlbGVtZW50LiBUaGlzIHJl
c3RyaWN0aW9uIGlzIHRoZW4gcmVtb3ZlZCB3aGVuIHRoZSBtZWRpYSBlbGVtZW50IGJlZ2lucyB0
byBwbGF5LgorCisgICAgICAgIEFkZGVkIHR3byBuZXcgV2ViS2l0IEFQSSB0ZXN0cy4KKworICAg
ICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKworMjAxNi0wNy0yNSAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBNZWRpYSBjb250cm9scyBv
biBhcHBsZS5jb20gZG9uJ3QgZGlzYXBwZWFyIHdoZW4gbW92aWUgZmluaXNoZXMgcGxheWluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwMDY4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjY2ODUyNj4KKwogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KIAogICAgICAgICBXaGVuIGEgdmlkZW8gZW5kcywgaXQgc2hvdWxkIGNhdXNl
IG1lZGlhIGNvbnRyb2xzIHRvIGhpZGUuIFdoaWxlIGN1cnJlbnQgbG9naWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDg1ODllOTk3MTU1Zjc4YTgwMmMwZGYw
NzRmYzdhZGQwYmI3YzEzYzkuLjk4ZWNjOWU4ZTg0Zjg5NmViODNmMjUxMTdhZGE2MGFmOTljOTIx
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDQzLDYg
KzQ0Myw3IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAgICAgbV9tZWRpYVNlc3Npb24tPmFk
ZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVzZXJHZXN0
dXJlVG9BdXRvcGxheVRvRXh0ZXJuYWxEZXZpY2UpOwogI2VuZGlmCiAgICAgbV9tZWRpYVNlc3Np
b24tPmFkZEJlaGF2aW9yUmVzdHJpY3Rpb24oTWVkaWFFbGVtZW50U2Vzc2lvbjo6UmVxdWlyZVVz
ZXJHZXN0dXJlVG9Db250cm9sQ29udHJvbHNNYW5hZ2VyKTsKKyAgICBtX21lZGlhU2Vzc2lvbi0+
YWRkQmVoYXZpb3JSZXN0cmljdGlvbihNZWRpYUVsZW1lbnRTZXNzaW9uOjpSZXF1aXJlUGxheWJh
Y2tUb0NvbnRyb2xDb250cm9sc01hbmFnZXIpOwogCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0g
ZG9jdW1lbnQuc2V0dGluZ3MoKTsKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmU0ZWU4OWVhOTI3MjI5NGFhNDc3
N2VmYjkzMzA4ZmIwMzNkZjdlNS4uMDJlOGVkNGE0NjVkMWE5MmU3ZTJjMjUxMjk1NzgwMGM1OTRh
ZDNmZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDI2IEBACiAyMDE2LTA3LTI1ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhA
YXBwbGUuY29tPgogCisgICAgICAgIE1lZGlhIGNvbnRyb2xzIHNob3VsZCBub3QgYmUgZGlzcGxh
eWVkIG9uIHBhZ2VzIHdpdGggbXVsdGlwbGUgdmlkZW9zIHVudGlsIGEgdmlkZW8gc3RhcnRzIHBs
YXlpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
MDA5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjY5ODY2NzM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmVyaWZ5IHRoYXQgbXVsdGlwbGUgdmlk
ZW9zIGRvIG9yIGRvbid0IHNob3cgdGhlIG1lZGlhIGNvbnRyb2xsZXIgZGVwZW5kaW5nIG9uIHdo
ZXRoZXIgdmlkZW9zCisgICAgICAgIGFyZSBwbGF5aW5nLiBBbHNvIHR3ZWFrcyBhbiBleGlzdGlu
ZyBBUEkgdGVzdCAoVmlkZW9Db250cm9sc01hbmFnZXJTaW5nbGVMYXJnZVZpZGVvKSB0aGF0IHdh
cworICAgICAgICBwYXNzaW5nIGJlY2F1c2Ugd2Ugd2VyZSBhbHdheXMgc2hvd2luZyBtZWRpYSBj
b250cm9scyBmb3IgbGFyZ2UgdmlkZW9zIHdpdGggYXVkaW8sIGV2ZW4gaWYgdGhleQorICAgICAg
ICBoYWQgbm90IHBsYXllZCBiYWNrIHlldC4gVGhpcyBjaGFuZ2UgZW5zdXJlcyB0aGF0IGxhcmdl
IHZpZGVvcyB3aXRoIGF1ZGlvIHNob3cgbWVkaWEgY29udHJvbHMKKyAgICAgICAgb25seSBhZnRl
ciB0aGV5IGJlZ2luIHRvIHBsYXkgYmFjaywgYW5kIG5vdCBieSB2aXJ0dWUgb2YgYmVpbmcgbGFy
Z2UgZW5vdWdoIGZvciBtYWluIGNvbnRlbnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXdpdGgtYXVkaW8uaHRtbDoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRv
cGxheS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9sYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sOiBBZGRlZC4KKworMjAxNi0wNy0yNSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKwogICAgICAgICBNZWRpYSBj
b250cm9scyBvbiBhcHBsZS5jb20gZG9uJ3QgZGlzYXBwZWFyIHdoZW4gbW92aWUgZmluaXNoZXMg
cGxheWluZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYwMDY4CiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNjY2ODUyNj4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMjdhY2YwODNmMGUyMWI2NWE2ZmJjYjQ5YmRkODgzYTRjZGQxZjJkZS4uMmU5
Nzg2NDI3NTdiZTc2YzZiMWRlZmZlMzA2MjI3YmFiMjg5M2FmZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTU2LDYgKzU2LDggQEAKIAkJMkUxQjdCMDAxRDQxQUJBNzAwNzU1OEI0IC8qIGxh
cmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0IC8q
IGxhcmdlLXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi87IH07CiAJCTJFMUI3QjAyMUQ0
MUIxQjkwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRv
LWVuZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDJFMUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250
cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sICovOyB9OwogCQkyRTFERkRGMTFENDJFMUU0MDA3
MTRBMDAgLyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5k
aW5nLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNlZWstdG8tYmVn
aW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovOyB9OworCQkyRTFERkRFRDFENDJB
NTExMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRTFERkRFQzFENDJBNDFD
MDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCAqLzsgfTsKKwkJMkUxREZE
RUYxRDQyQTZGMjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkUxREZERUUxRDQyQTZFQjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9w
bGF5Lmh0bWwgKi87IH07CiAJCTJFNzc2NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0Mx
NkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi87IH07CiAJCTJFNzc2NUNGMTZDNEQ4MTEw
MEJBMkJCMSAvKiBtYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkU3NzY1Q0UxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi87IH07
CiAJCTMzQkU1QUY5MTM3QjVBQUUwMDcwNTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzM0JF
NUFGODEzN0I1QUFFMDA3MDU4MTMgLyogTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3BwICov
OyB9OwpAQCAtNTA0LDYgKzUwNiw4IEBACiAJCQkJMkUxREZERjExRDQyRTFFNDAwNzE0QTAwIC8q
IGxhcmdlLXZpZGVvLXNlZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTJFMUI3QjAyMUQ0MUIxQjkwMDc1NThCNCAvKiBs
YXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTJFMUI3QjAwMUQ0MUFCQTcwMDc1NThCNCAvKiBsYXJnZS12aWRl
by1zZWVrLWFmdGVyLWVuZGluZy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMURG
REVGMUQ0MkE2RjIwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTJFMURGREVEMUQ0MkE1MTEwMDcxNEEwMCAv
KiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTVDOUU1OTQxMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiIGluIENvcHkg
UmVzb3VyY2VzICovLAogCQkJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlv
bkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1QzlFNTk0MzFEM0VCNUFD
MDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CkBAIC03MDcsNiArNzExLDggQEAKIAkJMkUxQjdBRkYxRDQxQTk1RjAwNzU1OEI0IC8qIGxhcmdl
LXZpZGVvLXNlZWstYWZ0ZXItZW5kaW5nLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSAibGFyZ2UtdmlkZW8tc2Vlay1hZnRlci1lbmRpbmcuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJFMUI3QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRl
cy1jb250cm9scy1hZnRlci1zZWVrLXRvLWVuZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gImxhcmdlLXZpZGVvLWhpZGVzLWNvbnRyb2xzLWFmdGVyLXNlZWstdG8tZW5kLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRTFERkRGMDFENDJFMTQ0MDA3MTRBMDAg
LyogbGFyZ2UtdmlkZW8tc2Vlay10by1iZWdpbm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW8tc2Vlay10by1iZWdp
bm5pbmctYW5kLXBsYXktYWZ0ZXItZW5kaW5nLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRTFERkRFQzFENDJBNDFDMDA3MTRBMDAgLyogbGFyZ2UtdmlkZW9zLXdpdGgtYXVk
aW8uaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsYXJnZS12aWRlb3Mtd2l0aC1h
dWRpby5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkUxREZERUUxRDQyQTZF
QjAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8tYXV0b3BsYXku
aHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJB
MkJCMSAvKiBtYWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gbWFpbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkU3NzY1Q0UxNkM0
RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBtYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzNC
OUNFMTEyNzdGMjMxMDBGRUZDRTMgLyogUHJldmVudEVtcHR5VXNlckFnZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByZXZlbnRFbXB0eVVzZXJBZ2VudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzQ2LDYgKzEzNTIsNyBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMkUxREZERjAxRDQyRTE0NDAwNzE0QTAwIC8qIGxhcmdlLXZpZGVvLXNl
ZWstdG8tYmVnaW5uaW5nLWFuZC1wbGF5LWFmdGVyLWVuZGluZy5odG1sICovLAogCQkJCTJFMUI3
QjAxMUQ0MUIxQjMwMDc1NThCNCAvKiBsYXJnZS12aWRlby1oaWRlcy1jb250cm9scy1hZnRlci1z
ZWVrLXRvLWVuZC5odG1sICovLAorCQkJCTJFMURGREVFMUQ0MkE2RUIwMDcxNEEwMCAvKiBsYXJn
ZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheS5odG1sICovLAogCQkJCTVDOUU1OTNFMUQzRUIx
REUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovLAogCQkJCTVDOUU1OTNGMUQzRUIx
REUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLywKIAkJCQk1QzlFNTk0MDFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8sCkBAIC0xMzgxLDYg
KzEzODgsNyBAQAogCQkJCTUxNzE0RUIyMUNGOEM3NjEwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2ls
bElEQkNsZWFudXAtMS5odG1sICovLAogCQkJCTUxNzE0RUIzMUNGOEM3NjEwMDQ3MjNDNCAvKiBX
ZWJQcm9jZXNzS2lsbElEQkNsZWFudXAtMi5odG1sICovLAogCQkJCTJFMUI3QUZGMUQ0MUE5NUYw
MDc1NThCNCAvKiBsYXJnZS12aWRlby1zZWVrLWFmdGVyLWVuZGluZy5odG1sICovLAorCQkJCTJF
MURGREVDMUQ0MkE0MUMwMDcxNEEwMCAvKiBsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby5odG1sICov
LAogCQkJKTsKIAkJCW5hbWUgPSBSZXNvdXJjZXM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvVmlk
ZW9Db250cm9sc01hbmFnZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJD
b2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCBlNDM3OTg2NmYzMGE5M2JkZmY1Yzdm
MmFlMDg2NzE4MTVmNTYxOTY5Li40Y2ZhODdmZjNmMjBiNmM3ZDlmOGVmZjIxYjUxYTY3ZjczOTY1
NmQyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9W
aWRlb0NvbnRyb2xzTWFuYWdlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDJDb2NvYS9WaWRlb0NvbnRyb2xzTWFuYWdlci5tbQpAQCAtMTcxLDYgKzE3MSw1NCBAQCBU
RVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdlclNpbmdsZVNtYWxs
VmlkZW8pCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOwogfQogCitURVNUKFZpZGVvQ29udHJvbHNNYW5hZ2VyLCBWaWRlb0NvbnRyb2xzTWFuYWdl
ck11bHRpcGxlVmlkZW9zV2l0aEF1ZGlvKQoreworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLm1lZGlhVHlwZXNSZXF1
aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsK
KyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIF9fYmxvY2sgQk9PTCBkaWRTaG93TWVk
aWFDb250cm9sczsKKyAgICBfX2Jsb2NrIGJvb2wgaXNEb25lTG9hZGluZyA9IE5POworCisgICAg
UmV0YWluUHRyPE5TV2luZG93PiB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6W3dlYlZpZXcgZnJhbWVdIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NX
aW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpOT10pOworICAg
IFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIFJl
dGFpblB0cjxPbkxvYWRNZXNzYWdlSGFuZGxlcj4gb25sb2FkSGFuZGxlciA9IGFkb3B0TlMoW1tP
bkxvYWRNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdFdpdGhXS1dlYlZpZXc6d2ViVmlldy5nZXQo
KSBoYW5kbGVyOl4oKSB7CisgICAgICAgIGRpZFNob3dNZWRpYUNvbnRyb2xzID0gW3dlYlZpZXcg
X2hhc0FjdGl2ZVZpZGVvRm9yQ29udHJvbHNNYW5hZ2VyXTsKKyAgICAgICAgaXNEb25lTG9hZGlu
ZyA9IHRydWU7CisgICAgfV0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm9ubG9hZEhhbmRsZXIuZ2V0KCkgbmFtZTpA
Im9ubG9hZEhhbmRsZXIiXTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJl
cXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJj
ZTpAImxhcmdlLXZpZGVvcy13aXRoLWF1ZGlvIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZUxv
YWRpbmcpOworICAgIEVYUEVDVF9GQUxTRShkaWRTaG93TWVkaWFDb250cm9scyk7Cit9CisKK1RF
U1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyTXVsdGlwbGVWaWRl
b3NXaXRoQXVkaW9BbmRBdXRvcGxheSkKK3sKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBfX2Jsb2NrIEJPT0wgZGlkU2hvd01lZGlh
Q29udHJvbHM7CisgICAgX19ibG9jayBib29sIGlzRG9uZUxvYWRpbmcgPSBOTzsKKworICAgIFJl
dGFpblB0cjxOU1dpbmRvdz4gd2luZG93ID0gYWRvcHROUyhbW05TV2luZG93IGFsbG9jXSBpbml0
V2l0aENvbnRlbnRSZWN0Olt3ZWJWaWV3IGZyYW1lXSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2lu
ZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6Tk9dKTsKKyAgICBb
W3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKKyAgICBSZXRh
aW5QdHI8T25Mb2FkTWVzc2FnZUhhbmRsZXI+IG9ubG9hZEhhbmRsZXIgPSBhZG9wdE5TKFtbT25M
b2FkTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRXaXRoV0tXZWJWaWV3OndlYlZpZXcuZ2V0KCkg
aGFuZGxlcjpeKCkgeworICAgICAgICBkaWRTaG93TWVkaWFDb250cm9scyA9IFt3ZWJWaWV3IF9o
YXNBY3RpdmVWaWRlb0ZvckNvbnRyb2xzTWFuYWdlcl07CisgICAgICAgIGlzRG9uZUxvYWRpbmcg
PSB0cnVlOworICAgIH1dKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpvbmxvYWRIYW5kbGVyLmdldCgpIG5hbWU6QCJv
bmxvYWRIYW5kbGVyIl07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1
ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6
QCJsYXJnZS12aWRlb3Mtd2l0aC1hdWRpby1hdXRvcGxheSIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3
IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZp
c0RvbmVMb2FkaW5nKTsKKyAgICBFWFBFQ1RfVFJVRShkaWRTaG93TWVkaWFDb250cm9scyk7Cit9
CisKIFRFU1QoVmlkZW9Db250cm9sc01hbmFnZXIsIFZpZGVvQ29udHJvbHNNYW5hZ2VyU2luZ2xl
U21hbGxBdXRvcGxheWluZ1ZpZGVvKQogewogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL2xhcmdlLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvLXdpdGgtYXVkaW8uaHRtbAppbmRleCA0
ZjE3MzViZWFhYmNhMTQwMDc0ZTA4OTY3NzA0NWQzYjkyMjdmYTljLi5kMjMzNDYzY2ViOGZhYTMy
MmUzNmYwYzIyYmFjMTkxYTMzM2U4YWZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9sYXJnZS12aWRlby13aXRoLWF1ZGlvLmh0bWwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW8td2l0aC1hdWRp
by5odG1sCkBAIC0xMiwxMSArMTIsMTMgQEAKIAogICAgIGZ1bmN0aW9uIHBsYXlpbmcoKSB7CiAg
ICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZW91dCk7Ci0gICAgICAgIHRyeSB7Ci0gICAg
ICAgICAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0
TWVzc2FnZSgncGxheWluZycpOwotICAgICAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgICAgIHdp
bmRvdy5sb2NhdGlvbiA9ICdjYWxsYmFjazpwbGF5aW5nJzsKLSAgICAgICAgfQorICAgICAgICBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAg
ICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5wbGF5aW5nSGFuZGxlci5wb3N0TWVzc2Fn
ZSgncGxheWluZycpOworICAgICAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICAgICAg
d2luZG93LmxvY2F0aW9uID0gJ2NhbGxiYWNrOnBsYXlpbmcnOworICAgICAgICAgICAgfQorICAg
ICAgICB9LCAwKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBub3RQbGF5aW5nKCkgewpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9z
LXdpdGgtYXVkaW8tYXV0b3BsYXkuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL2xhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTdlOGIyZDQ1ZjQ2Y2I2YWZjZWFlOTZmNjk4YjdmNDRlYzUwYmU5OQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVv
cy13aXRoLWF1ZGlvLWF1dG9wbGF5Lmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAg
ICAgICAvLyBUaGUgbWVkaWEgY29udHJvbHMgc2hvdWxkIGJlIHVwZGF0ZWQgb24gdGhlIG5leHQg
cnVubG9vcC4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMub25sb2Fk
SGFuZGxlci5wb3N0TWVzc2FnZSgibG9hZGVkIik7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsg
fQorICAgICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1oYW5kbGVM
b2FkZWQoKT4KKyAgICA8dmlkZW8gaWQ9ImZvbyIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVpZ2h0
OiAzMjBweDsiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRl
bz4KKyAgICA8dmlkZW8gYXV0b3BsYXkgaWQ9ImJhciIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVp
Z2h0OiAzMjBweDsiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92
aWRlbz4KKyAgICA8dmlkZW8gaWQ9ImJheiIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVpZ2h0OiAz
MjBweDsiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4K
KzwvYm9keT4KKzxodG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvbGFyZ2UtdmlkZW9zLXdpdGgtYXVkaW8uaHRtbCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdlLXZpZGVvcy13aXRoLWF1ZGlvLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGZkZGUyZjJhYTY0OGQ0NDU2OTYxODI2NGM3NDNmNjQ3ODYzY2NiZQotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL2xhcmdl
LXZpZGVvcy13aXRoLWF1ZGlvLmh0bWwKQEAgLTAsMCArMSwxOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gaGFuZGxlTG9hZGVkKCkgeworICAgICAg
ICAvLyBUaGUgbWVkaWEgY29udHJvbHMgc2hvdWxkIGJlIHVwZGF0ZWQgb24gdGhlIG5leHQgcnVu
bG9vcC4KKyAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMub25sb2FkSGFu
ZGxlci5wb3N0TWVzc2FnZSgibG9hZGVkIik7CisgICAgICAgICAgICB9IGNhdGNoKGUpIHsgfQor
ICAgICAgICB9LCAwKTsKKyAgICB9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1oYW5kbGVMb2Fk
ZWQoKT4KKyAgICA8dmlkZW8gaWQ9ImZvbyIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVpZ2h0OiAz
MjBweDsiPjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4K
KyAgICA8dmlkZW8gaWQ9ImJhciIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVpZ2h0OiAzMjBweDsi
Pjxzb3VyY2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKyAgICA8
dmlkZW8gaWQ9ImJheiIgc3R5bGU9IndpZHRoOiA0ODBweDsgaGVpZ2h0OiAzMjBweDsiPjxzb3Vy
Y2Ugc3JjPSJsYXJnZS12aWRlby13aXRoLWF1ZGlvLm1wNCI+PC92aWRlbz4KKzwvYm9keT4KKzxo
dG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>