<?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>208374</bug_id>
          
          <creation_ts>2020-02-28 07:16:04 -0800</creation_ts>
          <short_desc>[GTK][WPE] Stop using mediaControlsBase.js</short_desc>
          <delta_ts>2020-03-02 02:27:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1623946</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-02-28 07:16:04 -0800</bug_when>
    <thetext>Move the required base functionality to mediaControlsAdwaita.js and use that single file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623948</commentid>
    <comment_count>1</comment_count>
      <attachid>391976</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-02-28 07:17:58 -0800</bug_when>
    <thetext>Created attachment 391976
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623951</commentid>
    <comment_count>2</comment_count>
      <attachid>391977</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-02-28 07:27:02 -0800</bug_when>
    <thetext>Created attachment 391977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623957</commentid>
    <comment_count>3</comment_count>
      <attachid>391976</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-02-28 07:55:29 -0800</bug_when>
    <thetext>Comment on attachment 391976
Patch

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

Nit: things are ok as they are now but if you feel like giving it another shot, I would try to use let and const instead of var. Obviously let for things that are going to change and const for those that are not. Your call.

&gt; Source/WebCore/Modules/mediacontrols/mediaControlsAdwaita.js:336
&gt; +        this.controls.panel.classList.add(this.ClassNames.show);
&gt; +        this.controls.panel.classList.remove(this.ClassNames.hidden);

Nit: I think it makes more sense to switch these lines to remove the hidden first and then add the show.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624474</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-03-02 02:25:39 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #3)
&gt; Comment on attachment 391976 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391976&amp;action=review
&gt; 
&gt; Nit: things are ok as they are now but if you feel like giving it another
&gt; shot, I would try to use let and const instead of var. Obviously let for
&gt; things that are going to change and const for those that are not. Your call.

I don&apos;t know JavaScript, but if it&apos;s a mechanical change I can give it a try in a follow up patch if you think it&apos;s an important change.

&gt; &gt; Source/WebCore/Modules/mediacontrols/mediaControlsAdwaita.js:336
&gt; &gt; +        this.controls.panel.classList.add(this.ClassNames.show);
&gt; &gt; +        this.controls.panel.classList.remove(this.ClassNames.hidden);
&gt; 
&gt; Nit: I think it makes more sense to switch these lines to remove the hidden
&gt; first and then add the show.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624475</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-03-02 02:27:50 -0800</bug_when>
    <thetext>Committed r257705: &lt;https://trac.webkit.org/changeset/257705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391976</attachid>
            <date>2020-02-28 07:17:58 -0800</date>
            <delta_ts>2020-02-28 07:55:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-media-controls-js.diff</filename>
            <type>text/plain</type>
            <size>47813</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxY2RlMDI2ODM3ZC4uMGRkZWE5NDc2YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjIgQEAKKzIwMjAtMDItMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBtZWRpYUNvbnRyb2xz
QmFzZS5qcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSB0aGUgcmVxdWlyZWQgYmFzZSBmdW5jdGlvbmFsaXR5IHRvIG1lZGlhQ29udHJvbHNBZHdh
aXRhLmpzIGFuZCB1c2UgdGhhdCBzaW5nbGUgZmlsZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFjb250cm9scy9tZWRpYUNvbnRyb2xzQWR3YWl0YS5qczoKKyAgICAgICAgKGNyZWF0ZUNvbnRy
b2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5
cGUubGlzdGVuRm9yKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnN0b3BMaXN0ZW5p
bmdGb3IpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYWRkVmlkZW9MaXN0ZW5lcnMp
OgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlVmlkZW9MaXN0ZW5lcnMpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlRXZlbnQpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuY3JlYXRlQmFzZSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3Rv
dHlwZS5pc0F1ZGlvKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmlzRnVsbFNjcmVl
bik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG91bGRIYXZlQ29udHJvbHMpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlQmFzZSk6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS5jb25maWd1cmVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlw
ZS5kaXNjb25uZWN0Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVj
b25uZWN0Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbnRy
b2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVDb250cm9scyk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5yZXNldEhpZGVDb250cm9sc1RpbWVyKToKKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFySGlkZUNvbnRyb2xzVGltZXIpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuY29udHJvbHNBcmVBbHdheXNWaXNpYmxlKToKKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNvbnRyb2xzQXJlSGlkZGVuKToKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLmFkZENvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJv
dG90eXBlLnJlbW92ZUNvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVw
ZGF0ZUNvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldElzTGl2ZSk6
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVEdXJhdGlvbik6CisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5mb3JtYXRUaW1lKToKKyAgICAgICAgKENvbnRyb2xsZXIu
cHJvdG90eXBlLnNldFBsYXlpbmcpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBk
YXRlUGxheWluZyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDYXB0aW9u
QnV0dG9uKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUNhcHRpb25Db250
YWluZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlRnVsbHNjcmVlbkJ1
dHRvbik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVWb2x1bWUpOgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlSGFzVmlkZW8pOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lVXBkYXRlKToKKyAgICAgICAgKENvbnRyb2xsZXIu
cHJvdG90eXBlLmhhbmRsZUR1cmF0aW9uQ2hhbmdlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJv
dG90eXBlLmhhbmRsZVBsYXkpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxl
UGF1c2UpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVm9sdW1lQ2hhbmdl
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2Up
OgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVGV4dFRyYWNrQ2hhbmdlKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVRleHRUcmFja0FkZCk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUZXh0VHJhY2tSZW1vdmUpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ29udHJvbHNDaGFuZ2UpOgorICAgICAgICAo
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlV3JhcHBlck1vdXNlTW92ZSk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVXcmFwcGVyTW91c2VPdXQpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuaGFuZGxlV3JhcHBlck1vdXNlVXApOgorICAgICAgICAoQ29udHJv
bGxlci5wcm90b3R5cGUuaGFuZGxlUGFuZWxNb3VzZURvd24pOgorICAgICAgICAoQ29udHJvbGxl
ci5wcm90b3R5cGUuaGFuZGxlUGFuZWxUcmFuc2l0aW9uRW5kKToKKyAgICAgICAgKENvbnRyb2xs
ZXIucHJvdG90eXBlLmhhbmRsZVBhbmVsQ2xpY2spOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuY2FuUGxheSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVQbGF5
QnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1l
bGluZUNoYW5nZSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lbGlu
ZU1vdXNlVXApOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRv
bkNsaWNrZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRv
bk1vdXNlT3Zlcik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVWb2x1bWVC
b3hNb3VzZU91dCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVWb2x1bWVT
bGlkZXJJbnB1dCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVGdWxsc2Ny
ZWVuQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5idWlsZENh
cHRpb25NZW51KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNhcHRpb25JdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuZm9jdXNTaWJsaW5nQ2FwdGlv
bkl0ZW0pOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ2FwdGlvbkl0ZW1L
ZXlVcCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93Q2FwdGlvbk1lbnUpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuY2FwdGlvbk1lbnVUcmFuc2l0aW9uRW5kKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNhcHRpb25NZW51Q29udGFpbnNOb2RlKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25DbGlja2Vk
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25Nb3Vz
ZU92ZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ2FwdGlvbkJ1dHRv
bk1vdXNlT3V0KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25N
ZW51TW91c2VPdXQpOgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEpOiBEZWxldGVkLgorICAg
ICAgICAoY29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJv
dG90eXBlLmNyZWF0ZUNvbnRyb2xzKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZS5jb25maWd1cmVJbmxpbmVDb250cm9scyk6IERlbGV0ZWQuCisgICAgICAg
IChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuc2hvdWxkSGF2ZUNvbnRyb2xzKTogRGVsZXRl
ZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5yZWNvbm5lY3RDb250cm9s
cyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuc2V0U3Rh
dHVzSGlkZGVuKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlw
ZS51cGRhdGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3Rv
dHlwZS5oYW5kbGVUaW1lVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZS51cGRhdGVIYXNBdWRpbyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9s
bGVyQWR3YWl0YS5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRvbk1vdXNlT3Zlcik6IERlbGV0ZWQu
CisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGFuZGxlVm9sdW1lQm94TW91
c2VPdXQpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnJl
bW92ZUNvbnRyb2xzKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3Rv
dHlwZS5hZGRDb250cm9scyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5w
cm90b3R5cGUudXBkYXRlRnVsbHNjcmVlbkJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChDb250
cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUmVhZHlTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlRHVyYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnNldElzTGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUGxheWluZyk6
IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLmhh
bmRsZUNhcHRpb25CdXR0b25DbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJB
ZHdhaXRhLnByb3RvdHlwZS5idWlsZENhcHRpb25NZW51KTogRGVsZXRlZC4KKyAgICAgICAgKENv
bnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5kZXN0cm95Q2FwdGlvbk1lbnUpOiBEZWxldGVkLgor
ICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnNob3dDYXB0aW9uTWVudSk6IERl
bGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGlkZUNhcHRpb25N
ZW51KTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5jYXB0
aW9uTWVudVRyYW5zaXRpb25FbmQpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2Fp
dGEucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25Nb3VzZU92ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25TaG93
TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGFu
ZGxlQ2FwdGlvbkJ1dHRvbk1vdXNlT3V0KTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJB
ZHdhaXRhLnByb3RvdHlwZS5oYW5kbGVDYXB0aW9uTW91c2VPdXQpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qczoKKyAgICAgICAg
KENvbnRyb2xsZXIucHJvdG90eXBlLmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQWR3YWl0YTo6bWVkaWFDb250cm9sc1NjcmlwdCk6CisKIDIwMjAtMDItMjggIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI1NzI5OSk6IFtHVEtdIFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNpemluZy9idXR0b24tbWluLXdpZHRoLmh0bWwgaXMgZmFpbGluZyBzaW5jZSByMjU3Mjk5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFD
b250cm9sc0Fkd2FpdGEuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0Fkd2FpdGEuanMKaW5kZXggYjJhNzgwNWRmNGMuLjJhYzM3N2I0MTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc0Fkd2FpdGEuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNBZHdhaXRhLmpzCkBAIC0xLDQzICsxLDMwMyBAQAogZnVuY3Rpb24gY3Jl
YXRlQ29udHJvbHMocm9vdCwgdmlkZW8sIGhvc3QpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb250cm9s
bGVyQWR3YWl0YShyb290LCB2aWRlbywgaG9zdCk7CisgICAgcmV0dXJuIG5ldyBDb250cm9sbGVy
KHJvb3QsIHZpZGVvLCBob3N0KTsKIH07CiAKLWZ1bmN0aW9uIENvbnRyb2xsZXJBZHdhaXRhKHJv
b3QsIHZpZGVvLCBob3N0KQorZnVuY3Rpb24gQ29udHJvbGxlcihyb290LCB2aWRlbywgaG9zdCkK
IHsKLSAgICBDb250cm9sbGVyLmNhbGwodGhpcywgcm9vdCwgdmlkZW8sIGhvc3QpOworICAgIHRo
aXMudmlkZW8gPSB2aWRlbzsKKyAgICB0aGlzLnJvb3QgPSByb290OworICAgIHRoaXMuaG9zdCA9
IGhvc3Q7CisgICAgdGhpcy5jb250cm9scyA9IHt9OworICAgIHRoaXMubGlzdGVuZXJzID0ge307
CisgICAgdGhpcy5pc0xpdmUgPSBmYWxzZTsKKyAgICB0aGlzLmhhc1Zpc3VhbE1lZGlhID0gZmFs
c2U7CisKKyAgICB0aGlzLmFkZFZpZGVvTGlzdGVuZXJzKCk7CisgICAgdGhpcy5jcmVhdGVCYXNl
KCk7CisgICAgdGhpcy5jcmVhdGVDb250cm9scygpOworICAgIHRoaXMudXBkYXRlQmFzZSgpOwor
ICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKKyAgICB0aGlzLnVwZGF0ZUR1cmF0aW9uKCk7Cisg
ICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgdGhpcy51cGRhdGVQbGF5aW5nKCk7CisgICAgdGhp
cy51cGRhdGVDYXB0aW9uQnV0dG9uKCk7CisgICAgdGhpcy51cGRhdGVDYXB0aW9uQ29udGFpbmVy
KCk7CisgICAgdGhpcy51cGRhdGVGdWxsc2NyZWVuQnV0dG9uKCk7CisgICAgdGhpcy51cGRhdGVW
b2x1bWUoKTsKKyAgICB0aGlzLnVwZGF0ZUhhc0F1ZGlvKCk7CisgICAgdGhpcy51cGRhdGVIYXNW
aWRlbygpOwogfTsKIAotZnVuY3Rpb24gY29udGFpbnMobGlzdCwgb2JqKQotewotICAgIHZhciBp
ID0gbGlzdC5sZW5ndGg7Ci0gICAgd2hpbGUgKGktLSkKLSAgICAgICAgaWYgKGxpc3RbaV0gPT09
IG9iaikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX07CitD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qIENvbnN0YW50cyAqLworICAgIEhhbmRs
ZWRWaWRlb0V2ZW50czogeworICAgICAgICBlbXB0aWVkOiAnaGFuZGxlUmVhZHlTdGF0ZUNoYW5n
ZScsCisgICAgICAgIGxvYWRlZG1ldGFkYXRhOiAnaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZScsCisg
ICAgICAgIGxvYWRlZGRhdGE6ICdoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlJywKKyAgICAgICAgY2Fu
cGxheTogJ2hhbmRsZVJlYWR5U3RhdGVDaGFuZ2UnLAorICAgICAgICBjYW5wbGF5dGhyb3VnaDog
J2hhbmRsZVJlYWR5U3RhdGVDaGFuZ2UnLAorICAgICAgICB0aW1ldXBkYXRlOiAnaGFuZGxlVGlt
ZVVwZGF0ZScsCisgICAgICAgIGR1cmF0aW9uY2hhbmdlOiAnaGFuZGxlRHVyYXRpb25DaGFuZ2Un
LAorICAgICAgICBwbGF5aW5nOiAnaGFuZGxlUGxheScsCisgICAgICAgIHBhdXNlOiAnaGFuZGxl
UGF1c2UnLAorICAgICAgICB2b2x1bWVjaGFuZ2U6ICdoYW5kbGVWb2x1bWVDaGFuZ2UnLAorICAg
ICAgICB3ZWJraXRmdWxsc2NyZWVuY2hhbmdlOiAnaGFuZGxlRnVsbHNjcmVlbkNoYW5nZScsCisg
ICAgICAgIHdlYmtpdGJlZ2luZnVsbHNjcmVlbjogJ2hhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UnLAor
ICAgICAgICB3ZWJraXRlbmRmdWxsc2NyZWVuOiAnaGFuZGxlRnVsbHNjcmVlbkNoYW5nZScsCisg
ICAgfSwKKyAgICBIaWRlQ29udHJvbHNEZWxheTogNCAqIDEwMDAsCisgICAgQ2xhc3NOYW1lczog
eworICAgICAgICBoaWRkZW46ICdoaWRkZW4nLAorICAgICAgICBoaWRpbmc6ICdoaWRpbmcnLAor
ICAgICAgICBtdXRlQm94OiAnbXV0ZS1ib3gnLAorICAgICAgICBtdXRlZDogJ211dGVkJywKKyAg
ICAgICAgcGF1c2VkOiAncGF1c2VkJywKKyAgICAgICAgc2VsZWN0ZWQ6ICdzZWxlY3RlZCcsCisg
ICAgICAgIHNob3c6ICdzaG93JywKKyAgICAgICAgbm9WaWRlbzogJ25vLXZpZGVvJywKKyAgICAg
ICAgbm9EdXJhdGlvbjogJ25vLWR1cmF0aW9uJywKKyAgICAgICAgZG93bjogJ2Rvd24nLAorICAg
ICAgICBvdXQ6ICdvdXQnLAorICAgIH0sCisgICAgS2V5Q29kZXM6IHsKKyAgICAgICAgZW50ZXI6
IDEzLAorICAgICAgICBlc2NhcGU6IDI3LAorICAgICAgICBzcGFjZTogMzIsCisgICAgICAgIGxl
ZnQ6IDM3LAorICAgICAgICB1cDogMzgsCisgICAgICAgIHJpZ2h0OiAzOSwKKyAgICAgICAgZG93
bjogNDAKKyAgICB9LAogCi1Db250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUgPSB7CisgICAgbGlz
dGVuRm9yOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUp
CisgICAgeworICAgICAgICBpZiAodHlwZW9mIHVzZUNhcHR1cmUgPT09ICd1bmRlZmluZWQnKQor
ICAgICAgICAgICAgdXNlQ2FwdHVyZSA9IGZhbHNlOwogCi0gICAgY3JlYXRlQ29udHJvbHM6IGZ1
bmN0aW9uKCkKKyAgICAgICAgaWYgKCEodGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXSBpbnN0YW5j
ZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBbXTsK
KyAgICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKHtlbGVtZW50OmVsZW1lbnQs
IGhhbmRsZXI6aGFuZGxlciwgdXNlQ2FwdHVyZTp1c2VDYXB0dXJlfSk7CisgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIHVzZUNhcHR1cmUpOworICAgIH0s
CisKKyAgICBzdG9wTGlzdGVuaW5nRm9yOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhh
bmRsZXIsIHVzZUNhcHR1cmUpCiAgICAgewotICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5j
cmVhdGVDb250cm9scy5hcHBseSh0aGlzKTsKKyAgICAgICAgaWYgKHR5cGVvZiB1c2VDYXB0dXJl
ID09PSAndW5kZWZpbmVkJykKKyAgICAgICAgICAgIHVzZUNhcHR1cmUgPSBmYWxzZTsKIAotICAg
ICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1l
cy5oaWRpbmcpOwotICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24uZGlzYWJs
ZWQgPSB0cnVlOworICAgICAgICBpZiAoISh0aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdIGluc3Rh
bmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMubGlzdGVu
ZXJzW2V2ZW50TmFtZV0gPSB0aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdLmZpbHRlcihmdW5jdGlv
bihlbnRyeSkgeworICAgICAgICAgICAgcmV0dXJuICEoZW50cnkuZWxlbWVudCA9PT0gZWxlbWVu
dCAmJiBlbnRyeS5oYW5kbGVyID09PSBoYW5kbGVyICYmIGVudHJ5LnVzZUNhcHR1cmUgPT09IHVz
ZUNhcHR1cmUpOworICAgICAgICB9KTsKKyAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZSwgdGhpcywgdXNlQ2FwdHVyZSk7CisgICAgfSwKKworICAgIGFkZFZpZGVv
TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRo
aXMuSGFuZGxlZFZpZGVvRXZlbnRzKSB7CisgICAgICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlz
LnZpZGVvLCBuYW1lLCB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tuYW1lXSk7CisgICAgICAgIH07
CisKKyAgICAgICAgLyogdGV4dCB0cmFja3MgKi8KKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhp
cy52aWRlby50ZXh0VHJhY2tzLCAnY2hhbmdlJywgdGhpcy5oYW5kbGVUZXh0VHJhY2tDaGFuZ2Up
OworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLnRleHRUcmFja3MsICdhZGR0cmFj
aycsIHRoaXMuaGFuZGxlVGV4dFRyYWNrQWRkKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhp
cy52aWRlby50ZXh0VHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLmhhbmRsZVRleHRUcmFja1Jl
bW92ZSk7CisKKyAgICAgICAgLyogYXVkaW8gdHJhY2tzICovCisgICAgICAgIHRoaXMubGlzdGVu
Rm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdjaGFuZ2UnLCB0aGlzLnVwZGF0ZUhhc0F1ZGlv
KTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy52aWRlby5hdWRpb1RyYWNrcywgJ2FkZHRy
YWNrJywgdGhpcy51cGRhdGVIYXNBdWRpbyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMu
dmlkZW8uYXVkaW9UcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMudXBkYXRlSGFzQXVkaW8pOwor
CisgICAgICAgIC8qIHZpZGVvIHRyYWNrcyAqLworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlz
LnZpZGVvLnZpZGVvVHJhY2tzLCAnY2hhbmdlJywgdGhpcy51cGRhdGVIYXNWaWRlbyk7CisgICAg
ICAgIHRoaXMubGlzdGVuRm9yKHRoaXMudmlkZW8udmlkZW9UcmFja3MsICdhZGR0cmFjaycsIHRo
aXMudXBkYXRlSGFzVmlkZW8pOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLnZp
ZGVvVHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVvKTsKKworICAgICAg
ICAvKiBjb250cm9scyBhdHRyaWJ1dGUgKi8KKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVy
ID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5oYW5kbGVDb250cm9sc0NoYW5nZS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVyLm9ic2VydmUodGhpcy52aWRlbywg
eyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnY29udHJvbHMnXSB9KTsKKyAg
ICB9LAorCisgICAgcmVtb3ZlVmlkZW9MaXN0ZW5lcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5IYW5kbGVkVmlkZW9FdmVudHMpIHsKKyAgICAgICAg
ICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLCBuYW1lLCB0aGlzLkhhbmRsZWRW
aWRlb0V2ZW50c1tuYW1lXSk7CisgICAgICAgIH07CisKKyAgICAgICAgLyogdGV4dCB0cmFja3Mg
Ki8KKyAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8udGV4dFRyYWNrcywg
J2NoYW5nZScsIHRoaXMuaGFuZGxlVGV4dFRyYWNrQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5zdG9w
TGlzdGVuaW5nRm9yKHRoaXMudmlkZW8udGV4dFRyYWNrcywgJ2FkZHRyYWNrJywgdGhpcy5oYW5k
bGVUZXh0VHJhY2tBZGQpOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRl
by50ZXh0VHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLmhhbmRsZVRleHRUcmFja1JlbW92ZSk7
CisKKyAgICAgICAgLyogYXVkaW8gdHJhY2tzICovCisgICAgICAgIHRoaXMuc3RvcExpc3Rlbmlu
Z0Zvcih0aGlzLnZpZGVvLmF1ZGlvVHJhY2tzLCAnY2hhbmdlJywgdGhpcy51cGRhdGVIYXNBdWRp
byk7CisgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLmF1ZGlvVHJhY2tz
LCAnYWRkdHJhY2snLCB0aGlzLnVwZGF0ZUhhc0F1ZGlvKTsKKyAgICAgICAgdGhpcy5zdG9wTGlz
dGVuaW5nRm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMudXBk
YXRlSGFzQXVkaW8pOworCisgICAgICAgIC8qIHZpZGVvIHRyYWNrcyAqLworICAgICAgICB0aGlz
LnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlby52aWRlb1RyYWNrcywgJ2NoYW5nZScsIHRoaXMu
dXBkYXRlSGFzVmlkZW8pOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRl
by52aWRlb1RyYWNrcywgJ2FkZHRyYWNrJywgdGhpcy51cGRhdGVIYXNWaWRlbyk7CisgICAgICAg
IHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAncmVtb3ZldHJh
Y2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVvKTsKKworICAgICAgICAvKiBjb250cm9scyBhdHRyaWJ1
dGUgKi8KKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAg
ICAgZGVsZXRlKHRoaXMuY29udHJvbHNPYnNlcnZlcik7CisgICAgfSwKKworICAgIGhhbmRsZUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBwcmV2ZW50RGVmYXVsdCA9
IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09
PSB0aGlzLnZpZGVvKSB7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXJOYW1lID0gdGhpcy5I
YW5kbGVkVmlkZW9FdmVudHNbZXZlbnQudHlwZV07CisgICAgICAgICAgICAgICAgdmFyIGhhbmRs
ZXIgPSB0aGlzW2hhbmRsZXJOYW1lXTsKKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlciAmJiBo
YW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIu
Y2FsbCh0aGlzLCBldmVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghKHRo
aXMubGlzdGVuZXJzW2V2ZW50LnR5cGVdIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnQudHlwZV0uZm9y
RWFjaChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS5lbGVtZW50
ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGVudHJ5LmhhbmRsZXIgaW5zdGFuY2VvZiBGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQgfD0gZW50cnkuaGFuZGxl
ci5jYWxsKHRoaXMsIGV2ZW50KTsKKyAgICAgICAgICAgIH0sIHRoaXMpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuY29uc29sZSkKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByZXZlbnREZWZh
dWx0KSB7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgY3JlYXRl
QmFzZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGJhc2UgPSB0aGlzLmJhc2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgYmFzZS5zZXRBdHRyaWJ1dGUo
J3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzJyk7CisgICAgICAgIHRoaXMubGlzdGVu
Rm9yKGJhc2UsICdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZVdyYXBwZXJNb3VzZU1vdmUpOworICAg
ICAgICB0aGlzLmxpc3RlbkZvcihiYXNlLCAnbW91c2VvdXQnLCB0aGlzLmhhbmRsZVdyYXBwZXJN
b3VzZU91dCk7CisgICAgICAgIGlmICh0aGlzLmhvc3QudGV4dFRyYWNrQ29udGFpbmVyKQorICAg
ICAgICAgICAgYmFzZS5hcHBlbmRDaGlsZCh0aGlzLmhvc3QudGV4dFRyYWNrQ29udGFpbmVyKTsK
KyAgICB9LAorCisgICAgaXNBdWRpbzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMudmlkZW8gaW5zdGFuY2VvZiBIVE1MQXVkaW9FbGVtZW50OworICAgIH0sCisKKyAgICBp
c0Z1bGxTY3JlZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZpZGVv
LndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuOworICAgIH0sCiAKLSAgICAgICAgdGhpcy5saXN0
ZW5Gb3IodGhpcy5jb250cm9scy5tdXRlQm94LCAnbW91c2VvdXQnLCB0aGlzLmhhbmRsZVZvbHVt
ZUJveE1vdXNlT3V0KTsKLSAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5jb250cm9scy5tdXRl
QnV0dG9uLCAnbW91c2VvdmVyJywgdGhpcy5oYW5kbGVNdXRlQnV0dG9uTW91c2VPdmVyKTsKLSAg
ICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5jb250cm9scy52b2x1bWVCb3gsICdtb3VzZW92ZXIn
LCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3VzZU92ZXIpOwotICAgICAgICB0aGlzLmxpc3RlbkZv
cih0aGlzLmNvbnRyb2xzLnZvbHVtZSwgJ21vdXNlb3ZlcicsIHRoaXMuaGFuZGxlTXV0ZUJ1dHRv
bk1vdXNlT3Zlcik7Ci0gICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMuY29udHJvbHMuY2FwdGlv
bkJ1dHRvbiwgJ21vdXNlb3ZlcicsIHRoaXMuaGFuZGxlQ2FwdGlvbkJ1dHRvbk1vdXNlT3Zlcik7
Ci0gICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbiwgJ21v
dXNlb3V0JywgdGhpcy5oYW5kbGVDYXB0aW9uQnV0dG9uTW91c2VPdXQpOworICAgIHNob3VsZEhh
dmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8o
KSAmJiAhdGhpcy5ob3N0LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2spCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jb250cm9scyB8fCB0aGlz
LmlzRnVsbFNjcmVlbigpOworICAgIH0sCisKKyAgICB1cGRhdGVCYXNlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5zaG91bGRIYXZlQ29udHJvbHMoKSB8fCAodGhpcy52aWRl
by50ZXh0VHJhY2tzICYmIHRoaXMudmlkZW8udGV4dFRyYWNrcy5sZW5ndGgpKSB7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuYmFzZS5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5y
b290LmFwcGVuZENoaWxkKHRoaXMuYmFzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAodGhpcy5iYXNlLnBhcmVudE5vZGUpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLmJhc2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhc2UpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSwKIAorICAgIGNyZWF0ZUNvbnRyb2xzOiBmdW5jdGlv
bigpCisgICAgewogICAgICAgICB2YXIgZW5jbG9zdXJlID0gdGhpcy5jb250cm9scy5lbmNsb3N1
cmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgZW5jbG9zdXJlLnNl
dEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9zdXJlJyk7
CisKKyAgICAgICAgdmFyIHBhbmVsID0gdGhpcy5jb250cm9scy5wYW5lbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBwYW5lbC5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycs
ICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsJyk7CisgICAgICAgIHBhbmVsLnNldEF0dHJp
YnV0ZSgnYXJpYS1sYWJlbCcsICh0aGlzLmlzQXVkaW8oKSA/ICdBdWRpbyBQbGF5YmFjaycgOiAn
VmlkZW8gUGxheWJhY2snKSk7CisgICAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgncm9sZScsICd0
b29sYmFyJyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAnbW91c2Vkb3duJywgdGhp
cy5oYW5kbGVQYW5lbE1vdXNlRG93bik7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAn
dHJhbnNpdGlvbmVuZCcsIHRoaXMuaGFuZGxlUGFuZWxUcmFuc2l0aW9uRW5kKTsKKyAgICAgICAg
dGhpcy5saXN0ZW5Gb3IocGFuZWwsICdjbGljaycsIHRoaXMuaGFuZGxlUGFuZWxDbGljayk7Cisg
ICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAnZGJsY2xpY2snLCB0aGlzLmhhbmRsZVBhbmVs
Q2xpY2spOworCisgICAgICAgIHZhciBwbGF5QnV0dG9uID0gdGhpcy5jb250cm9scy5wbGF5QnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIHBsYXlCdXR0
b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1
dHRvbicpOworICAgICAgICBwbGF5QnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdQ
bGF5Jyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBsYXlCdXR0b24sICdjbGljaycsIHRoaXMu
aGFuZGxlUGxheUJ1dHRvbkNsaWNrZWQpOworCisgICAgICAgIHZhciB0aW1lbGluZUJveCA9IHRo
aXMuY29udHJvbHMudGltZWxpbmVCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgdGltZWxpbmVCb3guc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lbGluZS1jb250YWluZXInKTsKKworICAgICAgICB2YXIgY3VycmVudFRp
bWUgPSB0aGlzLmNvbnRyb2xzLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIGN1cnJlbnRUaW1lLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXknKTsKKyAgICAgICAgY3VycmVu
dFRpbWUuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0VsYXBzZWQnKTsKKyAgICAgICAgY3Vy
cmVudFRpbWUuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RpbWVyJyk7CisKKyAgICAgICAgdmFyIHRp
bWVsaW5lID0gdGhpcy5jb250cm9scy50aW1lbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucHV0Jyk7CisgICAgICAgIHRpbWVsaW5lLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJr
aXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUnKTsKKyAgICAgICAgdGltZWxpbmUuc2V0QXR0cmli
dXRlKCdhcmlhLWxhYmVsJywgJ0R1cmF0aW9uJyk7CisgICAgICAgIHRpbWVsaW5lLnR5cGUgPSAn
cmFuZ2UnOworICAgICAgICB0aW1lbGluZS52YWx1ZSA9IDA7CisgICAgICAgIHRpbWVsaW5lLnN0
ZXAgPSAuMDE7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRpbWVsaW5lLCAnaW5wdXQnLCB0aGlz
LmhhbmRsZVRpbWVsaW5lQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGltZWxpbmUs
ICdtb3VzZXVwJywgdGhpcy5oYW5kbGVUaW1lbGluZU1vdXNlVXApOworCisgICAgICAgIHZhciBt
dXRlQm94ID0gdGhpcy5jb250cm9scy5tdXRlQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIG11dGVCb3guY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMubXV0
ZUJveCk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKG11dGVCb3gsICdtb3VzZW91dCcsIHRoaXMu
aGFuZGxlVm9sdW1lQm94TW91c2VPdXQpOworCisgICAgICAgIHZhciBtdXRlQnV0dG9uID0gdGhp
cy5jb250cm9scy5tdXRlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7
CisgICAgICAgIG11dGVCdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRp
YS1jb250cm9scy1tdXRlLWJ1dHRvbicpOworICAgICAgICBtdXRlQnV0dG9uLnNldEF0dHJpYnV0
ZSgnYXJpYS1sYWJlbCcsICdNdXRlJyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKG11dGVCdXR0
b24sICdjbGljaycsIHRoaXMuaGFuZGxlTXV0ZUJ1dHRvbkNsaWNrZWQpOworICAgICAgICB0aGlz
Lmxpc3RlbkZvcihtdXRlQnV0dG9uLCAnbW91c2VvdmVyJywgdGhpcy5oYW5kbGVNdXRlQnV0dG9u
TW91c2VPdmVyKTsKKworICAgICAgICB2YXIgdm9sdW1lQm94ID0gdGhpcy5jb250cm9scy52b2x1
bWVCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgdm9sdW1lQm94
LnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlci1jb250YWluZXInKTsKKyAgICAgICAgdm9sdW1lQm94LmNsYXNzTGlzdC5hZGQodGhpcy5D
bGFzc05hbWVzLmhpZGluZyk7CisgICAgICAgIHZvbHVtZUJveC5jbGFzc0xpc3QuYWRkKHRoaXMu
Q2xhc3NOYW1lcy52b2x1bWVCb3gpOworICAgICAgICB0aGlzLmxpc3RlbkZvcih2b2x1bWVCb3gs
ICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3VzZU92ZXIpOworCisgICAgICAg
IHZhciB2b2x1bWUgPSB0aGlzLmNvbnRyb2xzLnZvbHVtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CisgICAgICAgIHZvbHVtZS5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXInKTsKKyAgICAgICAgdm9sdW1lLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdWb2x1bWUnKTsKKyAgICAgICAgdm9sdW1lLnR5cGUgPSAn
cmFuZ2UnOworICAgICAgICB2b2x1bWUubWluID0gMDsKKyAgICAgICAgdm9sdW1lLm1heCA9IDE7
CisgICAgICAgIHZvbHVtZS5zdGVwID0gLjAxOworICAgICAgICB0aGlzLmxpc3RlbkZvcih2b2x1
bWUsICdpbnB1dCcsIHRoaXMuaGFuZGxlVm9sdW1lU2xpZGVySW5wdXQpOworICAgICAgICB0aGlz
Lmxpc3RlbkZvcih2b2x1bWUsICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3Vz
ZU92ZXIpOworCisgICAgICAgIHZhciBjYXB0aW9uQnV0dG9uID0gdGhpcy5jb250cm9scy5jYXB0
aW9uQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIGNh
cHRpb25CdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9s
cy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbicpOworICAgICAgICBjYXB0aW9uQnV0dG9u
LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdDYXB0aW9ucycpOworICAgICAgICBjYXB0aW9u
QnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICd0cnVlJyk7CisgICAgICAgIGNh
cHRpb25CdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCAnYXVkaW9UcmFja01lbnUnKTsK
KyAgICAgICAgdGhpcy5saXN0ZW5Gb3IoY2FwdGlvbkJ1dHRvbiwgJ2NsaWNrJywgdGhpcy5oYW5k
bGVDYXB0aW9uQnV0dG9uQ2xpY2tlZCk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGNhcHRpb25C
dXR0b24sICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZUNhcHRpb25CdXR0b25Nb3VzZU92ZXIpOwor
ICAgICAgICB0aGlzLmxpc3RlbkZvcihjYXB0aW9uQnV0dG9uLCAnbW91c2VvdXQnLCB0aGlzLmhh
bmRsZUNhcHRpb25CdXR0b25Nb3VzZU91dCk7CisKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5CdXR0
b24gPSB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdidXR0b24nKTsKKyAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3Bz
ZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uJyk7CisgICAg
ICAgIGZ1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0Rpc3BsYXkg
RnVsbCBTY3JlZW4nKTsKKyAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7
CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGZ1bGxzY3JlZW5CdXR0b24sICdjbGljaycsIHRoaXMu
aGFuZGxlRnVsbHNjcmVlbkJ1dHRvbkNsaWNrZWQpOwogICAgIH0sCiAKLSAgICBjb25maWd1cmVJ
bmxpbmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIGNvbmZpZ3VyZUNvbnRyb2xzOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMu
Y29udHJvbHMucGxheUJ1dHRvbik7CiAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5k
Q2hpbGQodGhpcy5jb250cm9scy50aW1lbGluZSk7CkBAIC01MiwyNiArMzEyLDExNSBAQCBDb250
cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29udHJvbHMuZW5jbG9z
dXJlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMucGFuZWwpOwogICAgIH0sCiAKLSAgICBzaG91
bGRIYXZlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICBkaXNjb25uZWN0Q29udHJvbHM6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8oKSAmJiAhdGhpcy5o
b3N0LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2spCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jb250cm9scyB8fCB0aGlzLmlzRnVsbFNjcmVl
bigpOworICAgICAgICBmb3IgKHZhciBpdGVtIGluIHRoaXMuY29udHJvbHMpIHsKKyAgICAgICAg
ICAgIHZhciBjb250cm9sID0gdGhpcy5jb250cm9sc1tpdGVtXTsKKyAgICAgICAgICAgIGlmIChj
b250cm9sICYmIGNvbnRyb2wucGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICBjb250cm9sLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udHJvbCk7CisgICAgICAgfQogICAgIH0sCiAKICAgICBy
ZWNvbm5lY3RDb250cm9sczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQ29udHJvbGxlci5w
cm90b3R5cGUuZGlzY29ubmVjdENvbnRyb2xzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAg
ICAgICAgdGhpcy5jb25maWd1cmVJbmxpbmVDb250cm9scygpOworICAgICAgICB0aGlzLmRpc2Nv
bm5lY3RDb250cm9scygpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZUNvbnRyb2xzKCk7CiAKICAg
ICAgICAgaWYgKHRoaXMuc2hvdWxkSGF2ZUNvbnRyb2xzKCkpCiAgICAgICAgICAgICB0aGlzLmFk
ZENvbnRyb2xzKCk7CiAgICAgfSwKIAotICAgIHNldFN0YXR1c0hpZGRlbjogZnVuY3Rpb24oaGlk
ZGVuKQorICAgIHNob3dDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKKyAgICAg
ICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworCisgICAgICAgIHRoaXMudXBkYXRlVGltZSgpOworICAgIH0sCisKKyAgICBoaWRl
Q29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CisgICAgfSwKKworICAgIHJl
c2V0SGlkZUNvbnRyb2xzVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LmhpZGVUaW1lcikKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7Cisg
ICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGVDb250cm9scy5iaW5k
KHRoaXMpLCB0aGlzLkhpZGVDb250cm9sc0RlbGF5KTsKKyAgICB9LAorCisgICAgY2xlYXJIaWRl
Q29udHJvbHNUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaGlkZVRp
bWVyKQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTsKKyAgICAgICAg
dGhpcy5oaWRlVGltZXIgPSBudWxsOworICAgIH0sCisKKyAgICBjb250cm9sc0FyZUFsd2F5c1Zp
c2libGU6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLnBh
bmVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgfSwK
KworICAgIGNvbnRyb2xzQXJlSGlkZGVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5jb250cm9sc0FyZUFsd2F5c1Zpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB2YXIgcGFuZWwgPSB0aGlzLmNvbnRyb2xzLnBhbmVsOworICAgICAgICBy
ZXR1cm4gKCFwYW5lbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy5DbGFzc05hbWVzLnNob3cpIHx8
IHBhbmVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKSkKKyAgICAg
ICAgICAgICYmIChwYW5lbC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpICE9
PSBwYW5lbCk7CisgICAgfSwKKworICAgIGFkZENvbnRyb2xzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5lbmNsb3N1cmUpOwor
ICAgIH0sCisKKyAgICByZW1vdmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuY29udHJvbHMuZW5jbG9zdXJlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLmVuY2xvc3VyZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY29udHJvbHMu
ZW5jbG9zdXJlKTsKKyAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKKyAgICB9LAorCisg
ICAgdXBkYXRlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVjb25u
ZWN0Q29udHJvbHMoKTsKKyAgICB9LAorCisgICAgc2V0SXNMaXZlOiBmdW5jdGlvbihsaXZlKQor
ICAgIHsKKyAgICAgICAgaWYgKGxpdmUgPT09IHRoaXMuaXNMaXZlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0aGlzLmlzTGl2ZSA9IGxpdmU7CisKKyAgICAgICAgdGhpcy5yZWNvbm5l
Y3RDb250cm9scygpOworICAgICAgICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLmRpc2FibGVkID0g
dGhpcy5pc0xpdmU7CisgICAgfSwKKworICAgIHVwZGF0ZUR1cmF0aW9uOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgZHVyYXRpb24gPSB0aGlzLnZpZGVvLmR1cmF0aW9uOworICAgICAg
ICB0aGlzLnNldElzTGl2ZShkdXJhdGlvbiA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTsK
KyAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZS5taW4gPSAwOworICAgICAgICB0aGlzLmNv
bnRyb2xzLnRpbWVsaW5lLm1heCA9IHRoaXMuaXNMaXZlID8gMCA6IGR1cmF0aW9uOworICAgIH0s
CisKKyAgICBmb3JtYXRUaW1lOiBmdW5jdGlvbih0aW1lKQorICAgIHsKKyAgICAgICAgaWYgKGlz
TmFOKHRpbWUpKQorICAgICAgICAgICAgdGltZSA9IDA7CisgICAgICAgIHZhciBhYnNUaW1lID0g
TWF0aC5hYnModGltZSk7CisgICAgICAgIHZhciBpbnRTZWNvbmRzID0gTWF0aC5mbG9vcihhYnNU
aW1lICUgNjApLnRvRml4ZWQoMCk7CisgICAgICAgIHZhciBpbnRNaW51dGVzID0gTWF0aC5mbG9v
cigoYWJzVGltZSAvIDYwKSAlIDYwKS50b0ZpeGVkKDApOworICAgICAgICB2YXIgaW50SG91cnMg
PSBNYXRoLmZsb29yKGFic1RpbWUgLyAoNjAgKiA2MCkpLnRvRml4ZWQoMCk7CisgICAgICAgIHZh
ciBzaWduID0gdGltZSA8IDAgPyAnLScgOiBTdHJpbmcoKTsKKworICAgICAgICBpZiAoaW50SG91
cnMgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRIb3VycyArICc6JyArIFN0cmlu
ZygnMDAnICsgaW50TWludXRlcykuc2xpY2UoLTIpICsgIjoiICsgU3RyaW5nKCcwMCcgKyBpbnRT
ZWNvbmRzKS5zbGljZSgtMik7CisKKyAgICAgICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoJzAwJyAr
IGludE1pbnV0ZXMpLnNsaWNlKC0yKSArICI6IiArIFN0cmluZygnMDAnICsgaW50U2Vjb25kcyku
c2xpY2UoLTIpCiAgICAgfSwKIAogICAgIHVwZGF0ZVRpbWU6IGZ1bmN0aW9uKGZvcmNlVXBkYXRl
KQpAQCAtOTAsOSArNDM5LDc4IEBAIENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0sCiAKLSAgICBoYW5kbGVUaW1lVXBkYXRlOiBmdW5jdGlvbihldmVudCkK
KyAgICBzZXRQbGF5aW5nOiBmdW5jdGlvbihpc1BsYXlpbmcpCiAgICAgewotICAgICAgICB0aGlz
LnVwZGF0ZVRpbWUoKTsKKyAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nID09PSBpc1BsYXlpbmcp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gaXNQbGF5aW5n
OworCisgICAgICAgIGlmICghaXNQbGF5aW5nKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnBhdXNlZCk7CisgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMu
cGF1c2VkKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGxheUJ1dHRvbi5zZXRBdHRyaWJ1
dGUoJ2FyaWEtbGFiZWwnLCAnUGxheScpOworICAgICAgICAgICAgdGhpcy5zaG93Q29udHJvbHMo
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xh
c3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMucGF1c2VkKTsKKyAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMucGxheUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5wYXVz
ZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5QnV0dG9uLnNldEF0dHJpYnV0ZSgn
YXJpYS1sYWJlbCcsICdQYXVzZScpOworCisgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygp
OworICAgICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgdXBkYXRlUGxheWluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5zZXRQbGF5aW5nKCF0aGlzLmNhblBsYXkoKSk7CisgICAgICAgIGlmICghdGhpcy5jYW5Q
bGF5KCkpCisgICAgICAgICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgIH0sCisKKyAgICB1
cGRhdGVDYXB0aW9uQnV0dG9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy52
aWRlby53ZWJraXRIYXNDbG9zZWRDYXB0aW9ucykKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
Y2FwdGlvbkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmNhcHRpb25CdXR0b24uY2xh
c3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICB9LAorCisgICAgdXBkYXRl
Q2FwdGlvbkNvbnRhaW5lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhv
c3QudGV4dFRyYWNrQ29udGFpbmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZh
ciBoYXNDbG9zZWRDYXB0aW9ucyA9IHRoaXMudmlkZW8ud2Via2l0SGFzQ2xvc2VkQ2FwdGlvbnM7
CisgICAgICAgIHZhciBoYXNIaWRkZW5DbGFzcyA9IHRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWlu
ZXIuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworCisgICAgICAg
IGlmIChoYXNDbG9zZWRDYXB0aW9ucyAmJiBoYXNIaWRkZW5DbGFzcykKKyAgICAgICAgICAgIHRo
aXMuaG9zdC50ZXh0VHJhY2tDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFt
ZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZSBpZiAoIWhhc0Nsb3NlZENhcHRpb25zICYmICFoYXNI
aWRkZW5DbGFzcykKKyAgICAgICAgICAgIHRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWluZXIuY2xh
c3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKworICAgICAgICB0aGlzLnVwZGF0
ZUJhc2UoKTsKKyAgICAgICAgdGhpcy5ob3N0LnVwZGF0ZVRleHRUcmFja0NvbnRhaW5lcigpOwor
ICAgIH0sCisKKyAgICB1cGRhdGVGdWxsc2NyZWVuQnV0dG9uOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy52aWRlby5yZWFkeVN0YXRlID4gSFRNTE1lZGlhRWxlbWVudC5IQVZF
X05PVEhJTkcgJiYgIXRoaXMuaGFzVmlzdWFsTWVkaWEpIHsKKyAgICAgICAgICAgIHRoaXMuY29u
dHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRk
ZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5jb250
cm9scy5mdWxsc2NyZWVuQnV0dG9uLmRpc2FibGVkID0gIXRoaXMuaG9zdC5zdXBwb3J0c0Z1bGxz
Y3JlZW47CisgICAgfSwKKworICAgIHVwZGF0ZVZvbHVtZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQgfHwgIXRoaXMudmlkZW8udm9sdW1lKSB7CisgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNz
TmFtZXMubXV0ZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy52b2x1bWUudmFsdWUgPSAw
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQnV0dG9u
LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLm11dGVkKTsKKyAgICAgICAgICAgIHRo
aXMuY29udHJvbHMudm9sdW1lLnZhbHVlID0gdGhpcy52aWRlby52b2x1bWU7CisgICAgICAgIH0K
ICAgICB9LAogCiAgICAgdXBkYXRlSGFzQXVkaW86IGZ1bmN0aW9uKCkKQEAgLTEwMCwxMTEgKzUx
OCwzNzYgQEAgQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNv
bnRyb2xzLm11dGVCdXR0b24uZGlzYWJsZWQgPSB0aGlzLnZpZGVvLmF1ZGlvVHJhY2tzLmxlbmd0
aCA9PSAwOwogICAgIH0sCiAKLSAgICBoYW5kbGVNdXRlQnV0dG9uTW91c2VPdmVyOiBmdW5jdGlv
bihldmVudCkKKyAgICB1cGRhdGVIYXNWaWRlbzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMudmlkZW8ub2Zmc2V0VG9wICsgdGhpcy5jb250cm9scy5lbmNsb3N1cmUub2Zmc2V0
VG9wIDwgMTA1KSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xp
c3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuZG93bik7CisgICAgICAgIGlmICh0
aGlzLnZpZGVvLnZpZGVvVHJhY2tzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlz
LkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgfSwKKworICAgIGhhbmRsZVJlYWR5U3RhdGVDaGFu
Z2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5oYXNWaXN1YWxNZWRpYSA9
IHRoaXMudmlkZW8udmlkZW9UcmFja3MgJiYgdGhpcy52aWRlby52aWRlb1RyYWNrcy5sZW5ndGgg
PiAwOworICAgICAgICB0aGlzLnVwZGF0ZVZvbHVtZSgpOworICAgICAgICB0aGlzLnVwZGF0ZUR1
cmF0aW9uKCk7CisgICAgICAgIHRoaXMudXBkYXRlQ2FwdGlvbkJ1dHRvbigpOworICAgICAgICB0
aGlzLnVwZGF0ZUNhcHRpb25Db250YWluZXIoKTsKKyAgICAgICAgdGhpcy51cGRhdGVGdWxsc2Ny
ZWVuQnV0dG9uKCk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVVcGRhdGU6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgfSwKKworICAgIGhh
bmRsZUR1cmF0aW9uQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
dXBkYXRlRHVyYXRpb24oKTsKKyAgICAgICAgdGhpcy51cGRhdGVUaW1lKHRydWUpOworICAgIH0s
CisKKyAgICBoYW5kbGVQbGF5OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
c2V0UGxheWluZyh0cnVlKTsKKyAgICB9LAorCisgICAgaGFuZGxlUGF1c2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRQbGF5aW5nKGZhbHNlKTsKKyAgICB9LAorCisg
ICAgaGFuZGxlVm9sdW1lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMudXBkYXRlVm9sdW1lKCk7CisgICAgfSwKKworICAgIGhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2U6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVCYXNlKCk7CisgICAg
ICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKKworICAgICAgICBpZiAodGhpcy5pc0Z1bGxTY3Jl
ZW4oKSkgeworICAgICAgICAgICAgdGhpcy5jb250cm9scy5mdWxsc2NyZWVuQnV0dG9uLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdFeGl0IEZ1bGwgU2NyZWVuJyk7CisgICAgICAgICAgICB0
aGlzLmhvc3QuZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05h
bWVzLmRvd24pOwotICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVt
b3ZlKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMuZnVs
bHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGlzcGxheSBGdWxsIFNj
cmVlbicpOworICAgICAgICAgICAgdGhpcy5ob3N0LmV4aXRlZEZ1bGxzY3JlZW4oKTsKICAgICAg
ICAgfQotICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3QucmVtb3ZlKHRo
aXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworICAgIH0sCiAKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaGFuZGxlVGV4dFRyYWNrQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMudXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpOwogICAgIH0sCiAKLSAgICBoYW5kbGVWb2x1
bWVCb3hNb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlVGV4dFRyYWNrQWRkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNs
YXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB0aGlzLnVwZGF0ZUNhcHRpb25CdXR0b24oKTsKKyAgICAgICAgdGhpcy51cGRh
dGVDYXB0aW9uQ29udGFpbmVyKCk7CiAgICAgfSwKIAotICAgIHJlbW92ZUNvbnRyb2xzOiBmdW5j
dGlvbigpCisgICAgaGFuZGxlVGV4dFRyYWNrUmVtb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLmVuY2xvc3VyZS5wYXJlbnROb2RlKQotICAgICAg
ICAgICAgdGhpcy5jb250cm9scy5lbmNsb3N1cmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlz
LmNvbnRyb2xzLmVuY2xvc3VyZSk7Ci0gICAgICAgIHRoaXMuZGVzdHJveUNhcHRpb25NZW51KCk7
CisgICAgICAgIHRoaXMudXBkYXRlQ2FwdGlvbkJ1dHRvbigpOworICAgICAgICB0aGlzLnVwZGF0
ZUNhcHRpb25Db250YWluZXIoKTsKICAgICB9LAogCi0gICAgYWRkQ29udHJvbHM6IGZ1bmN0aW9u
KCkKKyAgICBoYW5kbGVDb250cm9sc0NoYW5nZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuZW5jbG9zdXJlKTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlQmFzZSgpOworCisgICAgICAgICAgICBpZiAo
dGhpcy5zaG91bGRIYXZlQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRy
b2xzKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250
cm9scygpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuY29u
c29sZSkKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICB9CiAgICAg
fSwKIAotICAgIHVwZGF0ZUZ1bGxzY3JlZW5CdXR0b246IGZ1bmN0aW9uKCkKKyAgICBoYW5kbGVX
cmFwcGVyTW91c2VNb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
LnZpZGVvLnJlYWR5U3RhdGUgPiBIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyAmJiAhdGhp
cy5oYXNWaXN1YWxNZWRpYSkgewotICAgICAgICAgICAgdGhpcy5jb250cm9scy5mdWxsc2NyZWVu
QnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgIHRo
aXMuc2hvd0NvbnRyb2xzKCk7CisgICAgICAgIHRoaXMucmVzZXRIaWRlQ29udHJvbHNUaW1lcigp
OworCisgICAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHZhciBkZWx0YSA9IG5ldyBXZWJLaXRQb2ludChldmVudC5jbGll
bnRYIC0gdGhpcy5pbml0aWFsRHJhZ0xvY2F0aW9uLngsIGV2ZW50LmNsaWVudFkgLSB0aGlzLmlu
aXRpYWxEcmFnTG9jYXRpb24ueSk7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuc3R5bGUu
bGVmdCA9IHRoaXMuaW5pdGlhbE9mZnNldC54ICsgZGVsdGEueCArICdweCc7CisgICAgICAgIHRo
aXMuY29udHJvbHMucGFuZWwuc3R5bGUudG9wID0gdGhpcy5pbml0aWFsT2Zmc2V0LnkgKyBkZWx0
YS55ICsgJ3B4JzsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkKKyAgICB9LAogCi0g
ICAgICAgIHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5kaXNhYmxlZCA9ICF0aGlzLmhv
c3Quc3VwcG9ydHNGdWxsc2NyZWVuOworICAgIGhhbmRsZVdyYXBwZXJNb3VzZU91dDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmhpZGVDb250cm9scygpOworICAgICAgICB0
aGlzLmNsZWFySGlkZUNvbnRyb2xzVGltZXIoKTsKICAgICB9LAogCi0gICAgdXBkYXRlUmVhZHlT
dGF0ZTogZnVuY3Rpb24oKQorICAgIGhhbmRsZVdyYXBwZXJNb3VzZVVwOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlVm9sdW1lKCk7CisgICAgICAgIHRoaXMuaXNE
cmFnZ2luZyA9IGZhbHNlOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy5iYXNl
LCAnbW91c2V1cCcsICdoYW5kbGVXcmFwcGVyTW91c2VVcCcsIHRydWUpOwogICAgIH0sCiAKLSAg
ICB1cGRhdGVEdXJhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhbmRsZVBhbmVsTW91c2VEb3duOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0
ZUR1cmF0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIGlmICh0aGlzLmlzTGl2
ZSkKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmUubWF4ID0gMDsKKyAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPSB0aGlzLmNvbnRyb2xzLnBhbmVsKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICghdGhpcy5pc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLmJhc2UsICdtb3VzZXVwJywgdGhp
cy5oYW5kbGVXcmFwcGVyTW91c2VVcCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9
IHRydWU7CisgICAgICAgIHRoaXMuaW5pdGlhbERyYWdMb2NhdGlvbiA9IG5ldyBXZWJLaXRQb2lu
dChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTsKKyAgICAgICAgdGhpcy5pbml0aWFsT2Zm
c2V0ID0gbmV3IFdlYktpdFBvaW50KAorICAgICAgICAgICAgcGFyc2VJbnQodGhpcy5jb250cm9s
cy5wYW5lbC5zdHlsZS5sZWZ0KSB8IDAsCisgICAgICAgICAgICBwYXJzZUludCh0aGlzLmNvbnRy
b2xzLnBhbmVsLnN0eWxlLnRvcCkgfCAwCisgICAgICAgICk7CiAgICAgfSwKIAotICAgIHNldElz
TGl2ZTogZnVuY3Rpb24obGl2ZSkKKyAgICBoYW5kbGVQYW5lbFRyYW5zaXRpb25FbmQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2V0SXNMaXZl
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmUu
ZGlzYWJsZWQgPSB0aGlzLmlzTGl2ZTsKKyAgICAgICAgdmFyIG9wYWNpdHkgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRyb2xzLnBhbmVsKS5vcGFjaXR5OworICAgICAgICBpZiAo
cGFyc2VJbnQob3BhY2l0eSkgPiAwKQorICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5j
bGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05h
bWVzLmhpZGRlbik7CiAgICAgfSwKIAotICAgIHVwZGF0ZVBsYXlpbmc6IGZ1bmN0aW9uKCkKKyAg
ICBoYW5kbGVQYW5lbENsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIENvbnRy
b2xsZXIucHJvdG90eXBlLnVwZGF0ZVBsYXlpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgICAgaWYgKCF0aGlzLmNhblBsYXkoKSkKLSAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRyb2xz
KCk7CisgICAgICAgIC8qIFByZXZlbnQgY2xpY2tzIGluIHRoZSBwYW5lbCBmcm9tIHBsYXlpbmcg
b3IgcGF1c2luZyB0aGUgdmlkZW8gaW4gYSBNZWRpYURvY3VtZW50LiAqLworICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0sCiAKLSAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rp
b24oZm9yY2VVcGRhdGUpCisgICAgY2FuUGxheTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMudmlkZW8ucGF1c2VkIHx8IHRoaXMudmlkZW8uZW5kZWQgfHwgdGhpcy52aWRl
by5yZWFkeVN0YXRlIDwgSFRNTE1lZGlhRWxlbWVudC5IQVZFX01FVEFEQVRBOwogICAgIH0sCiAK
LSAgICBoYW5kbGVDYXB0aW9uQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFu
ZGxlUGxheUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuY2FuUGxheSgpKQorICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVsaW5lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMudmlkZW8uZmFzdFNlZWsodGhpcy5jb250cm9scy50aW1lbGlu
ZS52YWx1ZSk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVsaW5lTW91c2VVcDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICAvKiBEbyBhIHByZWNpc2Ugc2VlayB3aGVuIHdlIGxpZnQg
dGhlIG1vdXNlLiAqLworICAgICAgICB0aGlzLnZpZGVvLmN1cnJlbnRUaW1lID0gdGhpcy5jb250
cm9scy50aW1lbGluZS52YWx1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlTXV0ZUJ1dHRvbkNsaWNr
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5oYW5kbGVDYXB0aW9uQnV0
dG9uU2hvd01lbnUoZXZlbnQpCisgICAgICAgIHRoaXMudmlkZW8ubXV0ZWQgPSAhdGhpcy52aWRl
by5tdXRlZDsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQpCisgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLm11dGVCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1VubXV0ZScp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlTXV0ZUJ1dHRvbk1v
dXNlT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy52aWRlby5v
ZmZzZXRUb3AgKyB0aGlzLmNvbnRyb2xzLmVuY2xvc3VyZS5vZmZzZXRUb3AgPCAxMDUpIHsKKyAg
ICAgICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFz
c05hbWVzLmRvd24pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVz
LmRvd24pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3Zl
KHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmNvbnRyb2xz
LnZvbHVtZUJveC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBoYW5kbGVWb2x1bWVCb3hNb3VzZU91
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJv
eC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlVm9sdW1lU2xpZGVySW5wdXQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQpIHsKKyAgICAgICAgICAg
IHRoaXMudmlkZW8ubXV0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMubXV0
ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnTXV0ZScpOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMudmlkZW8udm9sdW1lID0gdGhpcy5jb250cm9scy52b2x1bWUudmFsdWU7Cisg
ICAgfSwKKworICAgIGhhbmRsZUZ1bGxzY3JlZW5CdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAg
dGhpcy52aWRlby53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLnZpZGVvLndlYmtpdEVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9LAogCiAgICAgYnVpbGRDYXB0aW9uTWVudTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuYnVpbGRDYXB0aW9uTWVudS5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOworICAgICAgICB2YXIgdHJhY2tzID0gdGhpcy5ob3N0LnNvcnRlZFRyYWNr
TGlzdEZvck1lbnUodGhpcy52aWRlby50ZXh0VHJhY2tzKTsKKyAgICAgICAgaWYgKCF0cmFja3Mg
fHwgIXRyYWNrcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5s
aXN0ZW5Gb3IodGhpcy5jYXB0aW9uTWVudSwgJ21vdXNlb3V0JywgdGhpcy5oYW5kbGVDYXB0aW9u
TW91c2VPdXQpOworICAgICAgICB0aGlzLmNhcHRpb25NZW51ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuc2V0QXR0cmlidXRlKCdwc2V1
ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyJyk7
CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuc2V0QXR0cmlidXRlKCdpZCcsICdhdWRpb1RyYWNr
TWVudScpOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLmNhcHRpb25NZW51LCAnbW91c2Vv
dXQnLCB0aGlzLmhhbmRsZUNhcHRpb25NZW51TW91c2VPdXQpOwogICAgICAgICB0aGlzLmxpc3Rl
bkZvcih0aGlzLmNhcHRpb25NZW51LCAndHJhbnNpdGlvbmVuZCcsIHRoaXMuY2FwdGlvbk1lbnVU
cmFuc2l0aW9uRW5kKTsKKyAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY2FwdGlv
bk1lbnUpOworICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51VHJlZUVsZW1lbnRz
ID0gW107CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnVJdGVtcyA9IFtdOworCisgICAgICAgIHZh
ciBvZmZJdGVtID0gdGhpcy5ob3N0LmNhcHRpb25NZW51T2ZmSXRlbTsKKyAgICAgICAgdmFyIGF1
dG9tYXRpY0l0ZW0gPSB0aGlzLmhvc3QuY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtOworICAgICAg
ICB2YXIgZGlzcGxheU1vZGUgPSB0aGlzLmhvc3QuY2FwdGlvbkRpc3BsYXlNb2RlOworCisgICAg
ICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHRo
aXMuY2FwdGlvbk1lbnUuYXBwZW5kQ2hpbGQobGlzdCk7CisgICAgICAgIHRoaXMuY2FwdGlvbk1l
bnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVudHMucHVzaChsaXN0KTsKKworICAgICAgICB2YXIgaGVh
ZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7CisgICAgICAgIGhlYWRpbmcuaWQg
PSAnd2Via2l0TWVkaWFDb250cm9sc0Nsb3NlZENhcHRpb25zSGVhZGluZyc7CisgICAgICAgIGxp
c3QuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CisgICAgICAgIGhlYWRpbmcuaW5uZXJUZXh0ID0gJ1N1
YnRpdGxlcyc7CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVu
dHMucHVzaChoZWFkaW5nKTsKKworICAgICAgICB2YXIgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd1bCcpOworICAgICAgICB1bC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnbWVudScpOworICAg
ICAgICB1bC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICd3ZWJraXRNZWRpYUNvbnRy
b2xzQ2xvc2VkQ2FwdGlvbnNIZWFkaW5nJyk7CisgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQodWwp
OworICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51VHJlZUVsZW1lbnRzLnB1c2go
dWwpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJhY2tzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgbWVudUl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScp
OworICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnVpdGVtcmFk
aW8nKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEn
KTsKKyAgICAgICAgICAgIHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5wdXNoKG1lbnVJdGVtKTsKKyAg
ICAgICAgICAgIHRoaXMubGlzdGVuRm9yKG1lbnVJdGVtLCAnY2xpY2snLCB0aGlzLmNhcHRpb25J
dGVtU2VsZWN0ZWQpOworICAgICAgICAgICAgdGhpcy5saXN0ZW5Gb3IobWVudUl0ZW0sICdrZXl1
cCcsIHRoaXMuaGFuZGxlQ2FwdGlvbkl0ZW1LZXlVcCk7CisgICAgICAgICAgICB1bC5hcHBlbmRD
aGlsZChtZW51SXRlbSk7CisKKyAgICAgICAgICAgIHZhciB0cmFjayA9IHRyYWNrc1tpXTsKKyAg
ICAgICAgICAgIG1lbnVJdGVtLmlubmVyVGV4dCA9IHRoaXMuaG9zdC5kaXNwbGF5TmFtZUZvclRy
YWNrKHRyYWNrKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnRyYWNrID0gdHJhY2s7CisKKyAgICAg
ICAgICAgIGlmICh0cmFjayA9PT0gb2ZmSXRlbSkgeworICAgICAgICAgICAgICAgIHZhciBvZmZN
ZW51ID0gbWVudUl0ZW07CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh0cmFjayA9PT0gYXV0b21hdGljSXRlbSkgeworICAgICAgICAg
ICAgICAgIGlmIChkaXNwbGF5TW9kZSA9PT0gJ2F1dG9tYXRpYycpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbWVudUl0ZW0uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuc2VsZWN0ZWQpOwor
ICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAn
KTsKKyAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNr
ZWQnLCAndHJ1ZScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9ICdhdXRv
bWF0aWMnICYmIHRyYWNrLm1vZGUgPT09ICdzaG93aW5nJykgeworICAgICAgICAgICAgICAgIHZh
ciB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIG1lbnVJdGVt
LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgICAg
ICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKKyAgICAgICAgICAgICAg
ICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICd0cnVlJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51
VHJlZUVsZW1lbnRzID0gdGhpcy5jYXB0aW9uTWVudS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIp
OworICAgICAgICBpZiAob2ZmTWVudSAmJiBkaXNwbGF5TW9kZSA9PT0gJ2ZvcmNlZC1vbmx5JyAm
JiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkKSB7CisgICAgICAgICAgICBvZmZNZW51LmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnNl
dEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpOworICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0
cmlidXRlKCdhcmlhLWNoZWNrZWQnLCAndHJ1ZScpOworICAgICAgICB9CiAKLSAgICAgICAgLy8g
Q2FwdGlvbiBtZW51IGhhcyB0byBiZSBjZW50ZXJlZCB0byB0aGUgY2FwdGlvbiBidXR0b24uCisg
ICAgICAgIC8qIEZvY3VzIGZpcnN0IHNlbGVjdGVkIG1lbnVpdGVtLiAqLworICAgICAgICBmb3Ig
KHZhciBpID0gMCwgYyA9IHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5sZW5ndGg7IGkgPCBjOyBpKysp
IHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jYXB0aW9uTWVudUl0ZW1zW2ldOworICAg
ICAgICAgICAgaWYgKGl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5zZWxl
Y3RlZCkpIHsKKyAgICAgICAgICAgICAgICBpdGVtLmZvY3VzKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBDYXB0aW9uIG1l
bnUgaGFzIHRvIGJlIGNlbnRlcmVkIHRvIHRoZSBjYXB0aW9uIGJ1dHRvbi4gKi8KICAgICAgICAg
dmFyIGNhcHRpb25CdXR0b25DZW50ZXIgPSAgdGhpcy5jb250cm9scy5wYW5lbC5vZmZzZXRMZWZ0
ICsgdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLm9mZnNldExlZnQgKwogICAgICAgICAgICAg
dGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLm9mZnNldFdpZHRoIC8gMjsKICAgICAgICAgdmFy
IGNhcHRpb25NZW51TGVmdCA9IChjYXB0aW9uQnV0dG9uQ2VudGVyIC0gdGhpcy5jYXB0aW9uTWVu
dS5vZmZzZXRXaWR0aCAvIDIpOwogICAgICAgICBpZiAoY2FwdGlvbk1lbnVMZWZ0ICsgdGhpcy5j
YXB0aW9uTWVudS5vZmZzZXRXaWR0aCA+IHRoaXMuY29udHJvbHMucGFuZWwub2Zmc2V0TGVmdCAr
IHRoaXMuY29udHJvbHMucGFuZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICB0aGlzLmNhcHRp
b25NZW51LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLm91dCk7CiAgICAgICAgIHRoaXMu
Y2FwdGlvbk1lbnUuc3R5bGUubGVmdCA9IGNhcHRpb25NZW51TGVmdCArICdweCc7Ci0gICAgICAg
IC8vIEFzIGhlaWdodCBpcyBub3QgaW4gdGhlIGNzcywgaXQgbmVlZHMgdG8gYmUgc3BlY2lmaWVk
IHRvIGFuaW1hdGUgaXQuCisgICAgICAgIC8qIEFzIGhlaWdodCBpcyBub3QgaW4gdGhlIGNzcywg
aXQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIHRvIGFuaW1hdGUgaXQuICovCiAgICAgICAgIHRoaXMu
Y2FwdGlvbk1lbnUuaGVpZ2h0ID0gdGhpcy5jYXB0aW9uTWVudS5vZmZzZXRIZWlnaHQ7CiAgICAg
ICAgIHRoaXMuY2FwdGlvbk1lbnUuc3R5bGUuaGVpZ2h0ID0gMDsKICAgICB9LAogCi0gICAgZGVz
dHJveUNhcHRpb25NZW51OiBmdW5jdGlvbigpCisgICAgY2FwdGlvbkl0ZW1TZWxlY3RlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB0aGlzLmhvc3Quc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soZXZlbnQudGFyZ2V0LnRyYWNrKTsKICAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsK
ICAgICB9LAogCisgICAgZm9jdXNTaWJsaW5nQ2FwdGlvbkl0ZW06IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdmFyIGN1cnJlbnRJdGVtID0gZXZlbnQudGFyZ2V0OworICAgICAgICB2
YXIgcGVuZGluZ0l0ZW0gPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoKGV2ZW50LmtleUNvZGUpIHsK
KyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmxlZnQ6CisgICAgICAgIGNhc2UgdGhpcy5LZXlD
b2Rlcy51cDoKKyAgICAgICAgICAgIHBlbmRpbmdJdGVtID0gY3VycmVudEl0ZW0ucHJldmlvdXNT
aWJsaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5y
aWdodDoKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmRvd246CisgICAgICAgICAgICBwZW5k
aW5nSXRlbSA9IGN1cnJlbnRJdGVtLm5leHRTaWJsaW5nOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHBlbmRpbmdJdGVtKSB7CisgICAgICAgICAgICBjdXJyZW50
SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CisgICAgICAgICAgICBwZW5kaW5n
SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKKyAgICAgICAgICAgIHBlbmRpbmdJ
dGVtLmZvY3VzKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgaGFuZGxlQ2FwdGlvbkl0ZW1L
ZXlVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNv
ZGUpIHsKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmVudGVyOgorICAgICAgICBjYXNlIHRo
aXMuS2V5Q29kZXMuc3BhY2U6CisgICAgICAgICAgICB0aGlzLmNhcHRpb25JdGVtU2VsZWN0ZWQo
ZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5l
c2NhcGU6CisgICAgICAgICAgICB0aGlzLmhpZGVDYXB0aW9uTWVudSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5sZWZ0OgorICAgICAgICBjYXNlIHRo
aXMuS2V5Q29kZXMudXA6CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5yaWdodDoKKyAgICAg
ICAgY2FzZSB0aGlzLktleUNvZGVzLmRvd246CisgICAgICAgICAgICB0aGlzLmZvY3VzU2libGlu
Z0NhcHRpb25JdGVtKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKwog
ICAgIHNob3dDYXB0aW9uTWVudTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
LmNhcHRpb25NZW51KQorICAgICAgICAgICAgdGhpcy5idWlsZENhcHRpb25NZW51KCk7CiAgICAg
ICAgIHRoaXMuY2FwdGlvbk1lbnUuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jYXB0aW9uTWVudS5oZWln
aHQgKyAncHgnOwogICAgIH0sCiAKQEAgLTIxNSw0MCArODk4LDUzIEBAIENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZSA9IHsKIAogICAgIGNhcHRpb25NZW51VHJhbnNpdGlvbkVuZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5jYXB0aW9uTWVudS5vZmZzZXRIZWln
aHQgPT09IDApCi0gICAgICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95Q2FwdGlv
bk1lbnUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgaWYgKHRoaXMuY2FwdGlvbk1l
bnUub2Zmc2V0SGVpZ2h0ICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuY2FwdGlvbk1lbnVJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAg
IHRoaXMuc3RvcExpc3RlbmluZ0ZvcihpdGVtLCAnY2xpY2snLCB0aGlzLmNhcHRpb25JdGVtU2Vs
ZWN0ZWQpOworICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKGl0ZW0sICdrZXl1cCcs
IHRoaXMuaGFuZGxlQ2FwdGlvbkl0ZW1LZXlVcCk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAg
ICAgIC8qIEZLQSBhbmQgQVg6IGZvY3VzIHRoZSB0cmlnZ2VyIGJlZm9yZSBkZXN0cm95aW5nIHRo
ZSBlbGVtZW50IHdpdGggZm9jdXMuICovCisgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLmNhcHRp
b25CdXR0b24pCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmNhcHRpb25CdXR0b24uZm9jdXMo
KTsKKworICAgICAgICBpZiAodGhpcy5jYXB0aW9uTWVudS5wYXJlbnROb2RlKQorICAgICAgICAg
ICAgdGhpcy5jYXB0aW9uTWVudS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY2FwdGlvbk1l
bnUpOworICAgICAgICBkZWxldGUgdGhpcy5jYXB0aW9uTWVudTsKKyAgICAgICAgZGVsZXRlIHRo
aXMuY2FwdGlvbk1lbnVJdGVtczsKICAgICB9LAogCi0gICAgaGFuZGxlQ2FwdGlvbkJ1dHRvbk1v
dXNlT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgY2FwdGlvbk1lbnVDb250YWluc05vZGU6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLmhhbmRsZUNhcHRpb25CdXR0b25TaG93
TWVudShldmVudCk7CisgICAgICAgIHJldHVybiB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51
VHJlZUVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0gPT0gbm9kZSkKKyAgICAgICAgICAgIHx8
IHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtID09IG5vZGUpOworICAg
IH0sCisKKyAgICBoYW5kbGVDYXB0aW9uQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLnNob3dDYXB0aW9uTWVudSgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCi0gICAgaGFuZGxlQ2FwdGlvbkJ1dHRvblNob3dNZW51OiBmdW5jdGlvbihl
dmVudCkKKyAgICBoYW5kbGVDYXB0aW9uQnV0dG9uTW91c2VPdmVyOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5jYXB0aW9uTWVudSkKLSAgICAgICAgICAgIHRoaXMu
YnVpbGRDYXB0aW9uTWVudSgpOwotICAgICAgICBpZiAoIWNvbnRhaW5zKHRoaXMuY2FwdGlvbk1l
bnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVudHMsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKQotICAgICAg
ICAgICAgdGhpcy5zaG93Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgdGhpcy5zaG93Q2FwdGlvbk1l
bnUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAogICAgIGhhbmRsZUNhcHRpb25C
dXR0b25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5j
YXB0aW9uTWVudSAmJiAhY29udGFpbnModGhpcy5jYXB0aW9uTWVudS5jYXB0aW9uTWVudVRyZWVF
bGVtZW50cywgZXZlbnQucmVsYXRlZFRhcmdldCkpCisgICAgICAgIGlmICh0aGlzLmNhcHRpb25N
ZW51ICYmICF0aGlzLmNhcHRpb25NZW51Q29udGFpbnNOb2RlKGV2ZW50LnJlbGF0ZWRUYXJnZXQp
KQogICAgICAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSwKIAotICAgIGhhbmRsZUNhcHRpb25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQp
CisgICAgaGFuZGxlQ2FwdGlvbk1lbnVNb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPSB0aGlzLmNvbnRyb2xzLmNhcHRpb25C
dXR0b24gJiYKLSAgICAgICAgICAgICFjb250YWlucyh0aGlzLmNhcHRpb25NZW51LmNhcHRpb25N
ZW51VHJlZUVsZW1lbnRzLCBldmVudC5yZWxhdGVkVGFyZ2V0KSkKKyAgICAgICAgaWYgKGV2ZW50
LnJlbGF0ZWRUYXJnZXQgIT0gdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uICYmICF0aGlzLmNh
cHRpb25NZW51Q29udGFpbnNOb2RlKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKQogICAgICAgICAgICAg
dGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIH07
Ci0KLU9iamVjdC5jcmVhdGUoQ29udHJvbGxlci5wcm90b3R5cGUpLmV4dGVuZChDb250cm9sbGVy
QWR3YWl0YS5wcm90b3R5cGUpOwotT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgeyBlbnVtZXJhYmxlOmZhbHNlLCB2YWx1ZTpD
b250cm9sbGVyQWR3YWl0YSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcwppbmRleCBkY2IyOTE3MDM4ZS4u
ZmQ4NmM5ZjBhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0Jhc2UuanMKQEAgLTI5OSwxMSArMjk5LDYgQEAgQ29u
dHJvbGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAnY2xp
Y2snLCB0aGlzLmhhbmRsZVBhbmVsQ2xpY2spOwogICAgICAgICB0aGlzLmxpc3RlbkZvcihwYW5l
bCwgJ2RibGNsaWNrJywgdGhpcy5oYW5kbGVQYW5lbENsaWNrKTsKIAotICAgICAgICB2YXIgcmV3
aW5kQnV0dG9uID0gdGhpcy5jb250cm9scy5yZXdpbmRCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdidXR0b24nKTsKLSAgICAgICAgcmV3aW5kQnV0dG9uLnNldEF0dHJpYnV0ZSgncHNl
dWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtcmV3aW5kLWJ1dHRvbicpOwotICAgICAgICBy
ZXdpbmRCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgdGhpcy5VSVN0cmluZygnUmV3
aW5kICMjc2VjIyMgU2Vjb25kcycsICcjI3NlYyMjJywgdGhpcy5SZXdpbmRBbW91bnQpKTsKLSAg
ICAgICAgdGhpcy5saXN0ZW5Gb3IocmV3aW5kQnV0dG9uLCAnY2xpY2snLCB0aGlzLmhhbmRsZVJl
d2luZEJ1dHRvbkNsaWNrZWQpOwotCiAgICAgICAgIHZhciBzZWVrQmFja0J1dHRvbiA9IHRoaXMu
Y29udHJvbHMuc2Vla0JhY2tCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24n
KTsKICAgICAgICAgc2Vla0JhY2tCdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtp
dC1tZWRpYS1jb250cm9scy1zZWVrLWJhY2stYnV0dG9uJyk7CiAgICAgICAgIHNlZWtCYWNrQnV0
dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsIHRoaXMuVUlTdHJpbmcoJ1Jld2luZCcpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggNzc4MWQwYzU4ZTcuLmExZjAwMGVjNzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QbGF0Zm9ybUdUSy5jbWFrZQpAQCAtNzAsOSArNzAsNyBAQCBsaXN0KEFQUEVORCBX
ZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCiApCiAKIHNldChXZWJDb3JlX1VTRVJfQUdF
TlRfU0NSSVBUUwotICAgICR7V0VCQ09SRV9ESVJ9L2VuLmxwcm9qL21lZGlhQ29udHJvbHNMb2Nh
bGl6ZWRTdHJpbmdzLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNBZHdhaXRhLmpzCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL21lZGlhQ29udHJvbHNCYXNlLmpzCiApCiAKIHNldChXZWJDb3JlX1VTRVJfQUdF
TlRfU0NSSVBUU19ERVBFTkRFTkNJRVMgJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQWR3YWl0YS5jcHApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5j
bWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlCmluZGV4IDIwMmViYWNiYmZk
Li4wZDU5ODJlMWRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21h
a2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKQEAgLTQ1LDggKzQ1LDYg
QEAgbGlzdChBUFBFTkQgV2ViQ29yZV9VU0VSX0FHRU5UX1NUWUxFX1NIRUVUUwogKQogCiBzZXQo
V2ViQ29yZV9VU0VSX0FHRU5UX1NDUklQVFMKLSAgICAke1dFQkNPUkVfRElSfS9lbi5scHJvai9t
ZWRpYUNvbnRyb2xzTG9jYWxpemVkU3RyaW5ncy5qcwotICAgICR7V0VCQ09SRV9ESVJ9L01vZHVs
ZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcwogICAgICR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQWR3YWl0YS5qcwogKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwCmluZGV4IDc3
NTQ2ZTAwMmUxLi5iMThjNGQwNWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNpbmNsdWRlICJUaW1l
UmFuZ2VzLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U2NyaXB0cy5oIgogI2luY2x1ZGUgIlVzZXJB
Z2VudFN0eWxlU2hlZXRzLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE3NSwxMSArMTc0LDcgQEAgU3RyaW5nIFJlbmRl
clRoZW1lQWR3YWl0YTo6ZXh0cmFNZWRpYUNvbnRyb2xzU3R5bGVTaGVldCgpCiAKIFN0cmluZyBS
ZW5kZXJUaGVtZUFkd2FpdGE6Om1lZGlhQ29udHJvbHNTY3JpcHQoKQogewotICAgIFN0cmluZ0J1
aWxkZXIgc2NyaXB0QnVpbGRlcjsKLSAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMo
bWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250
cm9sc0xvY2FsaXplZFN0cmluZ3NKYXZhU2NyaXB0KSk7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBl
bmRDaGFyYWN0ZXJzKG1lZGlhQ29udHJvbHNCYXNlSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29u
dHJvbHNCYXNlSmF2YVNjcmlwdCkpOwotICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVy
cyhtZWRpYUNvbnRyb2xzQWR3YWl0YUphdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzQWR3
YWl0YUphdmFTY3JpcHQpKTsKLSAgICByZXR1cm4gc2NyaXB0QnVpbGRlci50b1N0cmluZygpOwor
ICAgIHJldHVybiBTdHJpbmcobWVkaWFDb250cm9sc0Fkd2FpdGFKYXZhU2NyaXB0LCBzaXplb2Yo
bWVkaWFDb250cm9sc0Fkd2FpdGFKYXZhU2NyaXB0KSk7CiB9CiAjZW5kaWYKIAo=
</data>
<flag name="review"
          id="407469"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391977</attachid>
            <date>2020-02-28 07:27:02 -0800</date>
            <delta_ts>2020-02-28 07:55:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-media-controls-js.diff</filename>
            <type>text/plain</type>
            <size>47230</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxY2RlMDI2ODM3ZC4uMGRkZWE5NDc2YzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjIgQEAKKzIwMjAtMDItMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdW1dQRV0gU3RvcCB1c2luZyBtZWRpYUNvbnRyb2xz
QmFzZS5qcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA4Mzc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZSB0aGUgcmVxdWlyZWQgYmFzZSBmdW5jdGlvbmFsaXR5IHRvIG1lZGlhQ29udHJvbHNBZHdh
aXRhLmpzIGFuZCB1c2UgdGhhdCBzaW5nbGUgZmlsZS4KKworICAgICAgICAqIE1vZHVsZXMvbWVk
aWFjb250cm9scy9tZWRpYUNvbnRyb2xzQWR3YWl0YS5qczoKKyAgICAgICAgKGNyZWF0ZUNvbnRy
b2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5
cGUubGlzdGVuRm9yKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnN0b3BMaXN0ZW5p
bmdGb3IpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuYWRkVmlkZW9MaXN0ZW5lcnMp
OgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVtb3ZlVmlkZW9MaXN0ZW5lcnMpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlRXZlbnQpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuY3JlYXRlQmFzZSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3Rv
dHlwZS5pc0F1ZGlvKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmlzRnVsbFNjcmVl
bik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG91bGRIYXZlQ29udHJvbHMpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlQmFzZSk6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5jcmVhdGVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVyLnBy
b3RvdHlwZS5jb25maWd1cmVDb250cm9scyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlw
ZS5kaXNjb25uZWN0Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUucmVj
b25uZWN0Q29udHJvbHMpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuc2hvd0NvbnRy
b2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhpZGVDb250cm9scyk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5yZXNldEhpZGVDb250cm9sc1RpbWVyKToKKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNsZWFySGlkZUNvbnRyb2xzVGltZXIpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuY29udHJvbHNBcmVBbHdheXNWaXNpYmxlKToKKyAgICAg
ICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNvbnRyb2xzQXJlSGlkZGVuKToKKyAgICAgICAgKENv
bnRyb2xsZXIucHJvdG90eXBlLmFkZENvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJv
dG90eXBlLnJlbW92ZUNvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVw
ZGF0ZUNvbnRyb2xzKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnNldElzTGl2ZSk6
CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVEdXJhdGlvbik6CisgICAgICAg
IChDb250cm9sbGVyLnByb3RvdHlwZS5mb3JtYXRUaW1lKToKKyAgICAgICAgKENvbnRyb2xsZXIu
cHJvdG90eXBlLnNldFBsYXlpbmcpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBk
YXRlUGxheWluZyk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVDYXB0aW9u
QnV0dG9uKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0ZUNhcHRpb25Db250
YWluZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlRnVsbHNjcmVlbkJ1
dHRvbik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS51cGRhdGVWb2x1bWUpOgorICAg
ICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUudXBkYXRlSGFzVmlkZW8pOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZSk6CisgICAgICAgIChDb250
cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lVXBkYXRlKToKKyAgICAgICAgKENvbnRyb2xsZXIu
cHJvdG90eXBlLmhhbmRsZUR1cmF0aW9uQ2hhbmdlKToKKyAgICAgICAgKENvbnRyb2xsZXIucHJv
dG90eXBlLmhhbmRsZVBsYXkpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxl
UGF1c2UpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVm9sdW1lQ2hhbmdl
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2Up
OgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlVGV4dFRyYWNrQ2hhbmdlKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZVRleHRUcmFja0FkZCk6CisgICAg
ICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUZXh0VHJhY2tSZW1vdmUpOgorICAgICAg
ICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ29udHJvbHNDaGFuZ2UpOgorICAgICAgICAo
Q29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlV3JhcHBlck1vdXNlTW92ZSk6CisgICAgICAgIChD
b250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVXcmFwcGVyTW91c2VPdXQpOgorICAgICAgICAoQ29u
dHJvbGxlci5wcm90b3R5cGUuaGFuZGxlV3JhcHBlck1vdXNlVXApOgorICAgICAgICAoQ29udHJv
bGxlci5wcm90b3R5cGUuaGFuZGxlUGFuZWxNb3VzZURvd24pOgorICAgICAgICAoQ29udHJvbGxl
ci5wcm90b3R5cGUuaGFuZGxlUGFuZWxUcmFuc2l0aW9uRW5kKToKKyAgICAgICAgKENvbnRyb2xs
ZXIucHJvdG90eXBlLmhhbmRsZVBhbmVsQ2xpY2spOgorICAgICAgICAoQ29udHJvbGxlci5wcm90
b3R5cGUuY2FuUGxheSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVQbGF5
QnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1l
bGluZUNoYW5nZSk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVUaW1lbGlu
ZU1vdXNlVXApOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRv
bkNsaWNrZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRv
bk1vdXNlT3Zlcik6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVWb2x1bWVC
b3hNb3VzZU91dCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVWb2x1bWVT
bGlkZXJJbnB1dCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5oYW5kbGVGdWxsc2Ny
ZWVuQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5idWlsZENh
cHRpb25NZW51KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNhcHRpb25JdGVtU2Vs
ZWN0ZWQpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuZm9jdXNTaWJsaW5nQ2FwdGlv
bkl0ZW0pOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ2FwdGlvbkl0ZW1L
ZXlVcCk6CisgICAgICAgIChDb250cm9sbGVyLnByb3RvdHlwZS5zaG93Q2FwdGlvbk1lbnUpOgor
ICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuY2FwdGlvbk1lbnVUcmFuc2l0aW9uRW5kKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmNhcHRpb25NZW51Q29udGFpbnNOb2RlKToK
KyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25DbGlja2Vk
KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25Nb3Vz
ZU92ZXIpOgorICAgICAgICAoQ29udHJvbGxlci5wcm90b3R5cGUuaGFuZGxlQ2FwdGlvbkJ1dHRv
bk1vdXNlT3V0KToKKyAgICAgICAgKENvbnRyb2xsZXIucHJvdG90eXBlLmhhbmRsZUNhcHRpb25N
ZW51TW91c2VPdXQpOgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEpOiBEZWxldGVkLgorICAg
ICAgICAoY29udGFpbnMpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJv
dG90eXBlLmNyZWF0ZUNvbnRyb2xzKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZS5jb25maWd1cmVJbmxpbmVDb250cm9scyk6IERlbGV0ZWQuCisgICAgICAg
IChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuc2hvdWxkSGF2ZUNvbnRyb2xzKTogRGVsZXRl
ZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5yZWNvbm5lY3RDb250cm9s
cyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuc2V0U3Rh
dHVzSGlkZGVuKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlw
ZS51cGRhdGVUaW1lKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3Rv
dHlwZS5oYW5kbGVUaW1lVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZS51cGRhdGVIYXNBdWRpbyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9s
bGVyQWR3YWl0YS5wcm90b3R5cGUuaGFuZGxlTXV0ZUJ1dHRvbk1vdXNlT3Zlcik6IERlbGV0ZWQu
CisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGFuZGxlVm9sdW1lQm94TW91
c2VPdXQpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnJl
bW92ZUNvbnRyb2xzKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3Rv
dHlwZS5hZGRDb250cm9scyk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5w
cm90b3R5cGUudXBkYXRlRnVsbHNjcmVlbkJ1dHRvbik6IERlbGV0ZWQuCisgICAgICAgIChDb250
cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUmVhZHlTdGF0ZSk6IERlbGV0ZWQuCisgICAg
ICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlRHVyYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnNldElzTGl2ZSk6IERlbGV0
ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUGxheWluZyk6
IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUudXBkYXRlUHJv
Z3Jlc3MpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLmhh
bmRsZUNhcHRpb25CdXR0b25DbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJB
ZHdhaXRhLnByb3RvdHlwZS5idWlsZENhcHRpb25NZW51KTogRGVsZXRlZC4KKyAgICAgICAgKENv
bnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5kZXN0cm95Q2FwdGlvbk1lbnUpOiBEZWxldGVkLgor
ICAgICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLnNob3dDYXB0aW9uTWVudSk6IERl
bGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGlkZUNhcHRpb25N
ZW51KTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZS5jYXB0
aW9uTWVudVRyYW5zaXRpb25FbmQpOiBEZWxldGVkLgorICAgICAgICAoQ29udHJvbGxlckFkd2Fp
dGEucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25Nb3VzZU92ZXIpOiBEZWxldGVkLgorICAg
ICAgICAoQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlLmhhbmRsZUNhcHRpb25CdXR0b25TaG93
TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChDb250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUuaGFu
ZGxlQ2FwdGlvbkJ1dHRvbk1vdXNlT3V0KTogRGVsZXRlZC4KKyAgICAgICAgKENvbnRyb2xsZXJB
ZHdhaXRhLnByb3RvdHlwZS5oYW5kbGVDYXB0aW9uTW91c2VPdXQpOiBEZWxldGVkLgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qczoKKyAgICAgICAg
KENvbnRyb2xsZXIucHJvdG90eXBlLmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKiBQbGF0Zm9y
bUdUSy5jbWFrZToKKyAgICAgICAgKiBQbGF0Zm9ybVdQRS5jbWFrZToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lQWR3YWl0YTo6bWVkaWFDb250cm9sc1NjcmlwdCk6CisKIDIwMjAtMDItMjggIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI1NzI5OSk6IFtHVEtdIFRlc3QgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXNpemluZy9idXR0b24tbWluLXdpZHRoLmh0bWwgaXMgZmFpbGluZyBzaW5jZSByMjU3Mjk5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFD
b250cm9sc0Fkd2FpdGEuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMv
bWVkaWFDb250cm9sc0Fkd2FpdGEuanMKaW5kZXggYjJhNzgwNWRmNGMuLjJhYzM3N2I0MTcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250
cm9sc0Fkd2FpdGEuanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYWNvbnRyb2xz
L21lZGlhQ29udHJvbHNBZHdhaXRhLmpzCkBAIC0xLDQzICsxLDMwMyBAQAogZnVuY3Rpb24gY3Jl
YXRlQ29udHJvbHMocm9vdCwgdmlkZW8sIGhvc3QpCiB7Ci0gICAgcmV0dXJuIG5ldyBDb250cm9s
bGVyQWR3YWl0YShyb290LCB2aWRlbywgaG9zdCk7CisgICAgcmV0dXJuIG5ldyBDb250cm9sbGVy
KHJvb3QsIHZpZGVvLCBob3N0KTsKIH07CiAKLWZ1bmN0aW9uIENvbnRyb2xsZXJBZHdhaXRhKHJv
b3QsIHZpZGVvLCBob3N0KQorZnVuY3Rpb24gQ29udHJvbGxlcihyb290LCB2aWRlbywgaG9zdCkK
IHsKLSAgICBDb250cm9sbGVyLmNhbGwodGhpcywgcm9vdCwgdmlkZW8sIGhvc3QpOworICAgIHRo
aXMudmlkZW8gPSB2aWRlbzsKKyAgICB0aGlzLnJvb3QgPSByb290OworICAgIHRoaXMuaG9zdCA9
IGhvc3Q7CisgICAgdGhpcy5jb250cm9scyA9IHt9OworICAgIHRoaXMubGlzdGVuZXJzID0ge307
CisgICAgdGhpcy5pc0xpdmUgPSBmYWxzZTsKKyAgICB0aGlzLmhhc1Zpc3VhbE1lZGlhID0gZmFs
c2U7CisKKyAgICB0aGlzLmFkZFZpZGVvTGlzdGVuZXJzKCk7CisgICAgdGhpcy5jcmVhdGVCYXNl
KCk7CisgICAgdGhpcy5jcmVhdGVDb250cm9scygpOworICAgIHRoaXMudXBkYXRlQmFzZSgpOwor
ICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKKyAgICB0aGlzLnVwZGF0ZUR1cmF0aW9uKCk7Cisg
ICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgdGhpcy51cGRhdGVQbGF5aW5nKCk7CisgICAgdGhp
cy51cGRhdGVDYXB0aW9uQnV0dG9uKCk7CisgICAgdGhpcy51cGRhdGVDYXB0aW9uQ29udGFpbmVy
KCk7CisgICAgdGhpcy51cGRhdGVGdWxsc2NyZWVuQnV0dG9uKCk7CisgICAgdGhpcy51cGRhdGVW
b2x1bWUoKTsKKyAgICB0aGlzLnVwZGF0ZUhhc0F1ZGlvKCk7CisgICAgdGhpcy51cGRhdGVIYXNW
aWRlbygpOwogfTsKIAotZnVuY3Rpb24gY29udGFpbnMobGlzdCwgb2JqKQotewotICAgIHZhciBp
ID0gbGlzdC5sZW5ndGg7Ci0gICAgd2hpbGUgKGktLSkKLSAgICAgICAgaWYgKGxpc3RbaV0gPT09
IG9iaikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX07CitD
b250cm9sbGVyLnByb3RvdHlwZSA9IHsKKworICAgIC8qIENvbnN0YW50cyAqLworICAgIEhhbmRs
ZWRWaWRlb0V2ZW50czogeworICAgICAgICBlbXB0aWVkOiAnaGFuZGxlUmVhZHlTdGF0ZUNoYW5n
ZScsCisgICAgICAgIGxvYWRlZG1ldGFkYXRhOiAnaGFuZGxlUmVhZHlTdGF0ZUNoYW5nZScsCisg
ICAgICAgIGxvYWRlZGRhdGE6ICdoYW5kbGVSZWFkeVN0YXRlQ2hhbmdlJywKKyAgICAgICAgY2Fu
cGxheTogJ2hhbmRsZVJlYWR5U3RhdGVDaGFuZ2UnLAorICAgICAgICBjYW5wbGF5dGhyb3VnaDog
J2hhbmRsZVJlYWR5U3RhdGVDaGFuZ2UnLAorICAgICAgICB0aW1ldXBkYXRlOiAnaGFuZGxlVGlt
ZVVwZGF0ZScsCisgICAgICAgIGR1cmF0aW9uY2hhbmdlOiAnaGFuZGxlRHVyYXRpb25DaGFuZ2Un
LAorICAgICAgICBwbGF5aW5nOiAnaGFuZGxlUGxheScsCisgICAgICAgIHBhdXNlOiAnaGFuZGxl
UGF1c2UnLAorICAgICAgICB2b2x1bWVjaGFuZ2U6ICdoYW5kbGVWb2x1bWVDaGFuZ2UnLAorICAg
ICAgICB3ZWJraXRmdWxsc2NyZWVuY2hhbmdlOiAnaGFuZGxlRnVsbHNjcmVlbkNoYW5nZScsCisg
ICAgICAgIHdlYmtpdGJlZ2luZnVsbHNjcmVlbjogJ2hhbmRsZUZ1bGxzY3JlZW5DaGFuZ2UnLAor
ICAgICAgICB3ZWJraXRlbmRmdWxsc2NyZWVuOiAnaGFuZGxlRnVsbHNjcmVlbkNoYW5nZScsCisg
ICAgfSwKKyAgICBIaWRlQ29udHJvbHNEZWxheTogNCAqIDEwMDAsCisgICAgQ2xhc3NOYW1lczog
eworICAgICAgICBoaWRkZW46ICdoaWRkZW4nLAorICAgICAgICBoaWRpbmc6ICdoaWRpbmcnLAor
ICAgICAgICBtdXRlQm94OiAnbXV0ZS1ib3gnLAorICAgICAgICBtdXRlZDogJ211dGVkJywKKyAg
ICAgICAgcGF1c2VkOiAncGF1c2VkJywKKyAgICAgICAgc2VsZWN0ZWQ6ICdzZWxlY3RlZCcsCisg
ICAgICAgIHNob3c6ICdzaG93JywKKyAgICAgICAgbm9WaWRlbzogJ25vLXZpZGVvJywKKyAgICAg
ICAgbm9EdXJhdGlvbjogJ25vLWR1cmF0aW9uJywKKyAgICAgICAgZG93bjogJ2Rvd24nLAorICAg
ICAgICBvdXQ6ICdvdXQnLAorICAgIH0sCisgICAgS2V5Q29kZXM6IHsKKyAgICAgICAgZW50ZXI6
IDEzLAorICAgICAgICBlc2NhcGU6IDI3LAorICAgICAgICBzcGFjZTogMzIsCisgICAgICAgIGxl
ZnQ6IDM3LAorICAgICAgICB1cDogMzgsCisgICAgICAgIHJpZ2h0OiAzOSwKKyAgICAgICAgZG93
bjogNDAKKyAgICB9LAogCi1Db250cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUgPSB7CisgICAgbGlz
dGVuRm9yOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhhbmRsZXIsIHVzZUNhcHR1cmUp
CisgICAgeworICAgICAgICBpZiAodHlwZW9mIHVzZUNhcHR1cmUgPT09ICd1bmRlZmluZWQnKQor
ICAgICAgICAgICAgdXNlQ2FwdHVyZSA9IGZhbHNlOwogCi0gICAgY3JlYXRlQ29udHJvbHM6IGZ1
bmN0aW9uKCkKKyAgICAgICAgaWYgKCEodGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXSBpbnN0YW5j
ZW9mIEFycmF5KSkKKyAgICAgICAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50TmFtZV0gPSBbXTsK
KyAgICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnROYW1lXS5wdXNoKHtlbGVtZW50OmVsZW1lbnQs
IGhhbmRsZXI6aGFuZGxlciwgdXNlQ2FwdHVyZTp1c2VDYXB0dXJlfSk7CisgICAgICAgIGVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIHRoaXMsIHVzZUNhcHR1cmUpOworICAgIH0s
CisKKyAgICBzdG9wTGlzdGVuaW5nRm9yOiBmdW5jdGlvbihlbGVtZW50LCBldmVudE5hbWUsIGhh
bmRsZXIsIHVzZUNhcHR1cmUpCiAgICAgewotICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5j
cmVhdGVDb250cm9scy5hcHBseSh0aGlzKTsKKyAgICAgICAgaWYgKHR5cGVvZiB1c2VDYXB0dXJl
ID09PSAndW5kZWZpbmVkJykKKyAgICAgICAgICAgIHVzZUNhcHR1cmUgPSBmYWxzZTsKIAotICAg
ICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1l
cy5oaWRpbmcpOwotICAgICAgICB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24uZGlzYWJs
ZWQgPSB0cnVlOworICAgICAgICBpZiAoISh0aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdIGluc3Rh
bmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMubGlzdGVu
ZXJzW2V2ZW50TmFtZV0gPSB0aGlzLmxpc3RlbmVyc1tldmVudE5hbWVdLmZpbHRlcihmdW5jdGlv
bihlbnRyeSkgeworICAgICAgICAgICAgcmV0dXJuICEoZW50cnkuZWxlbWVudCA9PT0gZWxlbWVu
dCAmJiBlbnRyeS5oYW5kbGVyID09PSBoYW5kbGVyICYmIGVudHJ5LnVzZUNhcHR1cmUgPT09IHVz
ZUNhcHR1cmUpOworICAgICAgICB9KTsKKyAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZSwgdGhpcywgdXNlQ2FwdHVyZSk7CisgICAgfSwKKworICAgIGFkZFZpZGVv
TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmb3IgKHZhciBuYW1lIGluIHRo
aXMuSGFuZGxlZFZpZGVvRXZlbnRzKSB7CisgICAgICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlz
LnZpZGVvLCBuYW1lLCB0aGlzLkhhbmRsZWRWaWRlb0V2ZW50c1tuYW1lXSk7CisgICAgICAgIH07
CisKKyAgICAgICAgLyogdGV4dCB0cmFja3MgKi8KKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhp
cy52aWRlby50ZXh0VHJhY2tzLCAnY2hhbmdlJywgdGhpcy5oYW5kbGVUZXh0VHJhY2tDaGFuZ2Up
OworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLnRleHRUcmFja3MsICdhZGR0cmFj
aycsIHRoaXMuaGFuZGxlVGV4dFRyYWNrQWRkKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhp
cy52aWRlby50ZXh0VHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLmhhbmRsZVRleHRUcmFja1Jl
bW92ZSk7CisKKyAgICAgICAgLyogYXVkaW8gdHJhY2tzICovCisgICAgICAgIHRoaXMubGlzdGVu
Rm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdjaGFuZ2UnLCB0aGlzLnVwZGF0ZUhhc0F1ZGlv
KTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy52aWRlby5hdWRpb1RyYWNrcywgJ2FkZHRy
YWNrJywgdGhpcy51cGRhdGVIYXNBdWRpbyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMu
dmlkZW8uYXVkaW9UcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMudXBkYXRlSGFzQXVkaW8pOwor
CisgICAgICAgIC8qIHZpZGVvIHRyYWNrcyAqLworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlz
LnZpZGVvLnZpZGVvVHJhY2tzLCAnY2hhbmdlJywgdGhpcy51cGRhdGVIYXNWaWRlbyk7CisgICAg
ICAgIHRoaXMubGlzdGVuRm9yKHRoaXMudmlkZW8udmlkZW9UcmFja3MsICdhZGR0cmFjaycsIHRo
aXMudXBkYXRlSGFzVmlkZW8pOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLnZpZGVvLnZp
ZGVvVHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVvKTsKKworICAgICAg
ICAvKiBjb250cm9scyBhdHRyaWJ1dGUgKi8KKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVy
ID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIodGhpcy5oYW5kbGVDb250cm9sc0NoYW5nZS5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVyLm9ic2VydmUodGhpcy52aWRlbywg
eyBhdHRyaWJ1dGVzOiB0cnVlLCBhdHRyaWJ1dGVGaWx0ZXI6IFsnY29udHJvbHMnXSB9KTsKKyAg
ICB9LAorCisgICAgcmVtb3ZlVmlkZW9MaXN0ZW5lcnM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5IYW5kbGVkVmlkZW9FdmVudHMpIHsKKyAgICAgICAg
ICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLCBuYW1lLCB0aGlzLkhhbmRsZWRW
aWRlb0V2ZW50c1tuYW1lXSk7CisgICAgICAgIH07CisKKyAgICAgICAgLyogdGV4dCB0cmFja3Mg
Ki8KKyAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKHRoaXMudmlkZW8udGV4dFRyYWNrcywg
J2NoYW5nZScsIHRoaXMuaGFuZGxlVGV4dFRyYWNrQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5zdG9w
TGlzdGVuaW5nRm9yKHRoaXMudmlkZW8udGV4dFRyYWNrcywgJ2FkZHRyYWNrJywgdGhpcy5oYW5k
bGVUZXh0VHJhY2tBZGQpOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRl
by50ZXh0VHJhY2tzLCAncmVtb3ZldHJhY2snLCB0aGlzLmhhbmRsZVRleHRUcmFja1JlbW92ZSk7
CisKKyAgICAgICAgLyogYXVkaW8gdHJhY2tzICovCisgICAgICAgIHRoaXMuc3RvcExpc3Rlbmlu
Z0Zvcih0aGlzLnZpZGVvLmF1ZGlvVHJhY2tzLCAnY2hhbmdlJywgdGhpcy51cGRhdGVIYXNBdWRp
byk7CisgICAgICAgIHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLmF1ZGlvVHJhY2tz
LCAnYWRkdHJhY2snLCB0aGlzLnVwZGF0ZUhhc0F1ZGlvKTsKKyAgICAgICAgdGhpcy5zdG9wTGlz
dGVuaW5nRm9yKHRoaXMudmlkZW8uYXVkaW9UcmFja3MsICdyZW1vdmV0cmFjaycsIHRoaXMudXBk
YXRlSGFzQXVkaW8pOworCisgICAgICAgIC8qIHZpZGVvIHRyYWNrcyAqLworICAgICAgICB0aGlz
LnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRlby52aWRlb1RyYWNrcywgJ2NoYW5nZScsIHRoaXMu
dXBkYXRlSGFzVmlkZW8pOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy52aWRl
by52aWRlb1RyYWNrcywgJ2FkZHRyYWNrJywgdGhpcy51cGRhdGVIYXNWaWRlbyk7CisgICAgICAg
IHRoaXMuc3RvcExpc3RlbmluZ0Zvcih0aGlzLnZpZGVvLnZpZGVvVHJhY2tzLCAncmVtb3ZldHJh
Y2snLCB0aGlzLnVwZGF0ZUhhc1ZpZGVvKTsKKworICAgICAgICAvKiBjb250cm9scyBhdHRyaWJ1
dGUgKi8KKyAgICAgICAgdGhpcy5jb250cm9sc09ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgICAg
ICAgZGVsZXRlKHRoaXMuY29udHJvbHNPYnNlcnZlcik7CisgICAgfSwKKworICAgIGhhbmRsZUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZhciBwcmV2ZW50RGVmYXVsdCA9
IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ID09
PSB0aGlzLnZpZGVvKSB7CisgICAgICAgICAgICAgICAgdmFyIGhhbmRsZXJOYW1lID0gdGhpcy5I
YW5kbGVkVmlkZW9FdmVudHNbZXZlbnQudHlwZV07CisgICAgICAgICAgICAgICAgdmFyIGhhbmRs
ZXIgPSB0aGlzW2hhbmRsZXJOYW1lXTsKKyAgICAgICAgICAgICAgICBpZiAoaGFuZGxlciAmJiBo
YW5kbGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIu
Y2FsbCh0aGlzLCBldmVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghKHRo
aXMubGlzdGVuZXJzW2V2ZW50LnR5cGVdIGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAgICAgdGhpcy5saXN0ZW5lcnNbZXZlbnQudHlwZV0uZm9y
RWFjaChmdW5jdGlvbihlbnRyeSkgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS5lbGVtZW50
ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGVudHJ5LmhhbmRsZXIgaW5zdGFuY2VvZiBGdW5j
dGlvbikKKyAgICAgICAgICAgICAgICAgICAgcHJldmVudERlZmF1bHQgfD0gZW50cnkuaGFuZGxl
ci5jYWxsKHRoaXMsIGV2ZW50KTsKKyAgICAgICAgICAgIH0sIHRoaXMpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuY29uc29sZSkKKyAgICAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByZXZlbnREZWZh
dWx0KSB7CisgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICAgICAgICAg
IGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgY3JlYXRl
QmFzZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIGJhc2UgPSB0aGlzLmJhc2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgYmFzZS5zZXRBdHRyaWJ1dGUo
J3BzZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzJyk7CisgICAgICAgIHRoaXMubGlzdGVu
Rm9yKGJhc2UsICdtb3VzZW1vdmUnLCB0aGlzLmhhbmRsZVdyYXBwZXJNb3VzZU1vdmUpOworICAg
ICAgICB0aGlzLmxpc3RlbkZvcihiYXNlLCAnbW91c2VvdXQnLCB0aGlzLmhhbmRsZVdyYXBwZXJN
b3VzZU91dCk7CisgICAgICAgIGlmICh0aGlzLmhvc3QudGV4dFRyYWNrQ29udGFpbmVyKQorICAg
ICAgICAgICAgYmFzZS5hcHBlbmRDaGlsZCh0aGlzLmhvc3QudGV4dFRyYWNrQ29udGFpbmVyKTsK
KyAgICB9LAorCisgICAgaXNBdWRpbzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMudmlkZW8gaW5zdGFuY2VvZiBIVE1MQXVkaW9FbGVtZW50OworICAgIH0sCisKKyAgICBp
c0Z1bGxTY3JlZW46IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLnZpZGVv
LndlYmtpdERpc3BsYXlpbmdGdWxsc2NyZWVuOworICAgIH0sCiAKLSAgICAgICAgdGhpcy5saXN0
ZW5Gb3IodGhpcy5jb250cm9scy5tdXRlQm94LCAnbW91c2VvdXQnLCB0aGlzLmhhbmRsZVZvbHVt
ZUJveE1vdXNlT3V0KTsKLSAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5jb250cm9scy5tdXRl
QnV0dG9uLCAnbW91c2VvdmVyJywgdGhpcy5oYW5kbGVNdXRlQnV0dG9uTW91c2VPdmVyKTsKLSAg
ICAgICAgdGhpcy5saXN0ZW5Gb3IodGhpcy5jb250cm9scy52b2x1bWVCb3gsICdtb3VzZW92ZXIn
LCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3VzZU92ZXIpOwotICAgICAgICB0aGlzLmxpc3RlbkZv
cih0aGlzLmNvbnRyb2xzLnZvbHVtZSwgJ21vdXNlb3ZlcicsIHRoaXMuaGFuZGxlTXV0ZUJ1dHRv
bk1vdXNlT3Zlcik7Ci0gICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMuY29udHJvbHMuY2FwdGlv
bkJ1dHRvbiwgJ21vdXNlb3ZlcicsIHRoaXMuaGFuZGxlQ2FwdGlvbkJ1dHRvbk1vdXNlT3Zlcik7
Ci0gICAgICAgIHRoaXMubGlzdGVuRm9yKHRoaXMuY29udHJvbHMuY2FwdGlvbkJ1dHRvbiwgJ21v
dXNlb3V0JywgdGhpcy5oYW5kbGVDYXB0aW9uQnV0dG9uTW91c2VPdXQpOworICAgIHNob3VsZEhh
dmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8o
KSAmJiAhdGhpcy5ob3N0LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2spCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jb250cm9scyB8fCB0aGlz
LmlzRnVsbFNjcmVlbigpOworICAgIH0sCisKKyAgICB1cGRhdGVCYXNlOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICBpZiAodGhpcy5zaG91bGRIYXZlQ29udHJvbHMoKSB8fCAodGhpcy52aWRl
by50ZXh0VHJhY2tzICYmIHRoaXMudmlkZW8udGV4dFRyYWNrcy5sZW5ndGgpKSB7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuYmFzZS5wYXJlbnROb2RlKSB7CisgICAgICAgICAgICAgICAgdGhpcy5y
b290LmFwcGVuZENoaWxkKHRoaXMuYmFzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBpZiAodGhpcy5iYXNlLnBhcmVudE5vZGUpIHsKKyAgICAgICAgICAg
ICAgICB0aGlzLmJhc2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmJhc2UpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfSwKIAorICAgIGNyZWF0ZUNvbnRyb2xzOiBmdW5jdGlv
bigpCisgICAgewogICAgICAgICB2YXIgZW5jbG9zdXJlID0gdGhpcy5jb250cm9scy5lbmNsb3N1
cmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICAgZW5jbG9zdXJlLnNl
dEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtZW5jbG9zdXJlJyk7
CisKKyAgICAgICAgdmFyIHBhbmVsID0gdGhpcy5jb250cm9scy5wYW5lbCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICBwYW5lbC5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycs
ICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsJyk7CisgICAgICAgIHBhbmVsLnNldEF0dHJp
YnV0ZSgnYXJpYS1sYWJlbCcsICh0aGlzLmlzQXVkaW8oKSA/ICdBdWRpbyBQbGF5YmFjaycgOiAn
VmlkZW8gUGxheWJhY2snKSk7CisgICAgICAgIHBhbmVsLnNldEF0dHJpYnV0ZSgncm9sZScsICd0
b29sYmFyJyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAnbW91c2Vkb3duJywgdGhp
cy5oYW5kbGVQYW5lbE1vdXNlRG93bik7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAn
dHJhbnNpdGlvbmVuZCcsIHRoaXMuaGFuZGxlUGFuZWxUcmFuc2l0aW9uRW5kKTsKKyAgICAgICAg
dGhpcy5saXN0ZW5Gb3IocGFuZWwsICdjbGljaycsIHRoaXMuaGFuZGxlUGFuZWxDbGljayk7Cisg
ICAgICAgIHRoaXMubGlzdGVuRm9yKHBhbmVsLCAnZGJsY2xpY2snLCB0aGlzLmhhbmRsZVBhbmVs
Q2xpY2spOworCisgICAgICAgIHZhciBwbGF5QnV0dG9uID0gdGhpcy5jb250cm9scy5wbGF5QnV0
dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIHBsYXlCdXR0
b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1wbGF5LWJ1
dHRvbicpOworICAgICAgICBwbGF5QnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdQ
bGF5Jyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHBsYXlCdXR0b24sICdjbGljaycsIHRoaXMu
aGFuZGxlUGxheUJ1dHRvbkNsaWNrZWQpOworCisgICAgICAgIHZhciB0aW1lbGluZUJveCA9IHRo
aXMuY29udHJvbHMudGltZWxpbmVCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICAgICAgdGltZWxpbmVCb3guc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRp
YS1jb250cm9scy10aW1lbGluZS1jb250YWluZXInKTsKKworICAgICAgICB2YXIgY3VycmVudFRp
bWUgPSB0aGlzLmNvbnRyb2xzLmN1cnJlbnRUaW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIGN1cnJlbnRUaW1lLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJr
aXQtbWVkaWEtY29udHJvbHMtY3VycmVudC10aW1lLWRpc3BsYXknKTsKKyAgICAgICAgY3VycmVu
dFRpbWUuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0VsYXBzZWQnKTsKKyAgICAgICAgY3Vy
cmVudFRpbWUuc2V0QXR0cmlidXRlKCdyb2xlJywgJ3RpbWVyJyk7CisKKyAgICAgICAgdmFyIHRp
bWVsaW5lID0gdGhpcy5jb250cm9scy50aW1lbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2lucHV0Jyk7CisgICAgICAgIHRpbWVsaW5lLnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJr
aXQtbWVkaWEtY29udHJvbHMtdGltZWxpbmUnKTsKKyAgICAgICAgdGltZWxpbmUuc2V0QXR0cmli
dXRlKCdhcmlhLWxhYmVsJywgJ0R1cmF0aW9uJyk7CisgICAgICAgIHRpbWVsaW5lLnR5cGUgPSAn
cmFuZ2UnOworICAgICAgICB0aW1lbGluZS52YWx1ZSA9IDA7CisgICAgICAgIHRpbWVsaW5lLnN0
ZXAgPSAuMDE7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKHRpbWVsaW5lLCAnaW5wdXQnLCB0aGlz
LmhhbmRsZVRpbWVsaW5lQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5saXN0ZW5Gb3IodGltZWxpbmUs
ICdtb3VzZXVwJywgdGhpcy5oYW5kbGVUaW1lbGluZU1vdXNlVXApOworCisgICAgICAgIHZhciBt
dXRlQm94ID0gdGhpcy5jb250cm9scy5tdXRlQm94ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgICAgIG11dGVCb3guY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMubXV0
ZUJveCk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKG11dGVCb3gsICdtb3VzZW91dCcsIHRoaXMu
aGFuZGxlVm9sdW1lQm94TW91c2VPdXQpOworCisgICAgICAgIHZhciBtdXRlQnV0dG9uID0gdGhp
cy5jb250cm9scy5tdXRlQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7
CisgICAgICAgIG11dGVCdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRp
YS1jb250cm9scy1tdXRlLWJ1dHRvbicpOworICAgICAgICBtdXRlQnV0dG9uLnNldEF0dHJpYnV0
ZSgnYXJpYS1sYWJlbCcsICdNdXRlJyk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKG11dGVCdXR0
b24sICdjbGljaycsIHRoaXMuaGFuZGxlTXV0ZUJ1dHRvbkNsaWNrZWQpOworICAgICAgICB0aGlz
Lmxpc3RlbkZvcihtdXRlQnV0dG9uLCAnbW91c2VvdmVyJywgdGhpcy5oYW5kbGVNdXRlQnV0dG9u
TW91c2VPdmVyKTsKKworICAgICAgICB2YXIgdm9sdW1lQm94ID0gdGhpcy5jb250cm9scy52b2x1
bWVCb3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgdm9sdW1lQm94
LnNldEF0dHJpYnV0ZSgncHNldWRvJywgJy13ZWJraXQtbWVkaWEtY29udHJvbHMtdm9sdW1lLXNs
aWRlci1jb250YWluZXInKTsKKyAgICAgICAgdm9sdW1lQm94LmNsYXNzTGlzdC5hZGQodGhpcy5D
bGFzc05hbWVzLmhpZGluZyk7CisgICAgICAgIHZvbHVtZUJveC5jbGFzc0xpc3QuYWRkKHRoaXMu
Q2xhc3NOYW1lcy52b2x1bWVCb3gpOworICAgICAgICB0aGlzLmxpc3RlbkZvcih2b2x1bWVCb3gs
ICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3VzZU92ZXIpOworCisgICAgICAg
IHZhciB2b2x1bWUgPSB0aGlzLmNvbnRyb2xzLnZvbHVtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2lucHV0Jyk7CisgICAgICAgIHZvbHVtZS5zZXRBdHRyaWJ1dGUoJ3BzZXVkbycsICctd2Vi
a2l0LW1lZGlhLWNvbnRyb2xzLXZvbHVtZS1zbGlkZXInKTsKKyAgICAgICAgdm9sdW1lLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdWb2x1bWUnKTsKKyAgICAgICAgdm9sdW1lLnR5cGUgPSAn
cmFuZ2UnOworICAgICAgICB2b2x1bWUubWluID0gMDsKKyAgICAgICAgdm9sdW1lLm1heCA9IDE7
CisgICAgICAgIHZvbHVtZS5zdGVwID0gLjAxOworICAgICAgICB0aGlzLmxpc3RlbkZvcih2b2x1
bWUsICdpbnB1dCcsIHRoaXMuaGFuZGxlVm9sdW1lU2xpZGVySW5wdXQpOworICAgICAgICB0aGlz
Lmxpc3RlbkZvcih2b2x1bWUsICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZU11dGVCdXR0b25Nb3Vz
ZU92ZXIpOworCisgICAgICAgIHZhciBjYXB0aW9uQnV0dG9uID0gdGhpcy5jb250cm9scy5jYXB0
aW9uQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CisgICAgICAgIGNh
cHRpb25CdXR0b24uc2V0QXR0cmlidXRlKCdwc2V1ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9s
cy10b2dnbGUtY2xvc2VkLWNhcHRpb25zLWJ1dHRvbicpOworICAgICAgICBjYXB0aW9uQnV0dG9u
LnNldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdDYXB0aW9ucycpOworICAgICAgICBjYXB0aW9u
QnV0dG9uLnNldEF0dHJpYnV0ZSgnYXJpYS1oYXNwb3B1cCcsICd0cnVlJyk7CisgICAgICAgIGNh
cHRpb25CdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLW93bnMnLCAnYXVkaW9UcmFja01lbnUnKTsK
KyAgICAgICAgdGhpcy5saXN0ZW5Gb3IoY2FwdGlvbkJ1dHRvbiwgJ2NsaWNrJywgdGhpcy5oYW5k
bGVDYXB0aW9uQnV0dG9uQ2xpY2tlZCk7CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGNhcHRpb25C
dXR0b24sICdtb3VzZW92ZXInLCB0aGlzLmhhbmRsZUNhcHRpb25CdXR0b25Nb3VzZU92ZXIpOwor
ICAgICAgICB0aGlzLmxpc3RlbkZvcihjYXB0aW9uQnV0dG9uLCAnbW91c2VvdXQnLCB0aGlzLmhh
bmRsZUNhcHRpb25CdXR0b25Nb3VzZU91dCk7CisKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5CdXR0
b24gPSB0aGlzLmNvbnRyb2xzLmZ1bGxzY3JlZW5CdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdidXR0b24nKTsKKyAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ3Bz
ZXVkbycsICctd2Via2l0LW1lZGlhLWNvbnRyb2xzLWZ1bGxzY3JlZW4tYnV0dG9uJyk7CisgICAg
ICAgIGZ1bGxzY3JlZW5CdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ0Rpc3BsYXkg
RnVsbCBTY3JlZW4nKTsKKyAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7
CisgICAgICAgIHRoaXMubGlzdGVuRm9yKGZ1bGxzY3JlZW5CdXR0b24sICdjbGljaycsIHRoaXMu
aGFuZGxlRnVsbHNjcmVlbkJ1dHRvbkNsaWNrZWQpOwogICAgIH0sCiAKLSAgICBjb25maWd1cmVJ
bmxpbmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIGNvbmZpZ3VyZUNvbnRyb2xzOiBmdW5jdGlv
bigpCiAgICAgewogICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmFwcGVuZENoaWxkKHRoaXMu
Y29udHJvbHMucGxheUJ1dHRvbik7CiAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuYXBwZW5k
Q2hpbGQodGhpcy5jb250cm9scy50aW1lbGluZSk7CkBAIC01MiwyNiArMzEyLDExNSBAQCBDb250
cm9sbGVyQWR3YWl0YS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY29udHJvbHMuZW5jbG9z
dXJlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMucGFuZWwpOwogICAgIH0sCiAKLSAgICBzaG91
bGRIYXZlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICBkaXNjb25uZWN0Q29udHJvbHM6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmlzQXVkaW8oKSAmJiAhdGhpcy5o
b3N0LmFsbG93c0lubGluZU1lZGlhUGxheWJhY2spCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LQotICAgICAgICByZXR1cm4gdGhpcy52aWRlby5jb250cm9scyB8fCB0aGlzLmlzRnVsbFNjcmVl
bigpOworICAgICAgICBmb3IgKHZhciBpdGVtIGluIHRoaXMuY29udHJvbHMpIHsKKyAgICAgICAg
ICAgIHZhciBjb250cm9sID0gdGhpcy5jb250cm9sc1tpdGVtXTsKKyAgICAgICAgICAgIGlmIChj
b250cm9sICYmIGNvbnRyb2wucGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICBjb250cm9sLnBh
cmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udHJvbCk7CisgICAgICAgfQogICAgIH0sCiAKICAgICBy
ZWNvbm5lY3RDb250cm9sczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgQ29udHJvbGxlci5w
cm90b3R5cGUuZGlzY29ubmVjdENvbnRyb2xzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0KLSAg
ICAgICAgdGhpcy5jb25maWd1cmVJbmxpbmVDb250cm9scygpOworICAgICAgICB0aGlzLmRpc2Nv
bm5lY3RDb250cm9scygpOworICAgICAgICB0aGlzLmNvbmZpZ3VyZUNvbnRyb2xzKCk7CiAKICAg
ICAgICAgaWYgKHRoaXMuc2hvdWxkSGF2ZUNvbnRyb2xzKCkpCiAgICAgICAgICAgICB0aGlzLmFk
ZENvbnRyb2xzKCk7CiAgICAgfSwKIAotICAgIHNldFN0YXR1c0hpZGRlbjogZnVuY3Rpb24oaGlk
ZGVuKQorICAgIHNob3dDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5j
b250cm9scy5wYW5lbC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5zaG93KTsKKyAgICAg
ICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5o
aWRkZW4pOworCisgICAgICAgIHRoaXMudXBkYXRlVGltZSgpOworICAgIH0sCisKKyAgICBoaWRl
Q29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwu
Y2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMuc2hvdyk7CisgICAgfSwKKworICAgIHJl
c2V0SGlkZUNvbnRyb2xzVGltZXI6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlz
LmhpZGVUaW1lcikKKyAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmhpZGVUaW1lcik7Cisg
ICAgICAgIHRoaXMuaGlkZVRpbWVyID0gc2V0VGltZW91dCh0aGlzLmhpZGVDb250cm9scy5iaW5k
KHRoaXMpLCB0aGlzLkhpZGVDb250cm9sc0RlbGF5KTsKKyAgICB9LAorCisgICAgY2xlYXJIaWRl
Q29udHJvbHNUaW1lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuaGlkZVRp
bWVyKQorICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVyKTsKKyAgICAgICAg
dGhpcy5oaWRlVGltZXIgPSBudWxsOworICAgIH0sCisKKyAgICBjb250cm9sc0FyZUFsd2F5c1Zp
c2libGU6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgIHJldHVybiB0aGlzLmNvbnRyb2xzLnBh
bmVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgfSwK
KworICAgIGNvbnRyb2xzQXJlSGlkZGVuOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAo
dGhpcy5jb250cm9sc0FyZUFsd2F5c1Zpc2libGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICB2YXIgcGFuZWwgPSB0aGlzLmNvbnRyb2xzLnBhbmVsOworICAgICAgICBy
ZXR1cm4gKCFwYW5lbC5jbGFzc0xpc3QuY29udGFpbnModGhpcy5DbGFzc05hbWVzLnNob3cpIHx8
IHBhbmVsLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKSkKKyAgICAg
ICAgICAgICYmIChwYW5lbC5wYXJlbnRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJzpob3ZlcicpICE9
PSBwYW5lbCk7CisgICAgfSwKKworICAgIGFkZENvbnRyb2xzOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB0aGlzLmJhc2UuYXBwZW5kQ2hpbGQodGhpcy5jb250cm9scy5lbmNsb3N1cmUpOwor
ICAgIH0sCisKKyAgICByZW1vdmVDb250cm9sczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuY29udHJvbHMuZW5jbG9zdXJlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLmVuY2xvc3VyZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY29udHJvbHMu
ZW5jbG9zdXJlKTsKKyAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKKyAgICB9LAorCisg
ICAgdXBkYXRlQ29udHJvbHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVjb25u
ZWN0Q29udHJvbHMoKTsKKyAgICB9LAorCisgICAgc2V0SXNMaXZlOiBmdW5jdGlvbihsaXZlKQor
ICAgIHsKKyAgICAgICAgaWYgKGxpdmUgPT09IHRoaXMuaXNMaXZlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB0aGlzLmlzTGl2ZSA9IGxpdmU7CisKKyAgICAgICAgdGhpcy5yZWNvbm5l
Y3RDb250cm9scygpOworICAgICAgICB0aGlzLmNvbnRyb2xzLnRpbWVsaW5lLmRpc2FibGVkID0g
dGhpcy5pc0xpdmU7CisgICAgfSwKKworICAgIHVwZGF0ZUR1cmF0aW9uOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgZHVyYXRpb24gPSB0aGlzLnZpZGVvLmR1cmF0aW9uOworICAgICAg
ICB0aGlzLnNldElzTGl2ZShkdXJhdGlvbiA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTsK
KyAgICAgICAgdGhpcy5jb250cm9scy50aW1lbGluZS5taW4gPSAwOworICAgICAgICB0aGlzLmNv
bnRyb2xzLnRpbWVsaW5lLm1heCA9IHRoaXMuaXNMaXZlID8gMCA6IGR1cmF0aW9uOworICAgIH0s
CisKKyAgICBmb3JtYXRUaW1lOiBmdW5jdGlvbih0aW1lKQorICAgIHsKKyAgICAgICAgaWYgKGlz
TmFOKHRpbWUpKQorICAgICAgICAgICAgdGltZSA9IDA7CisgICAgICAgIHZhciBhYnNUaW1lID0g
TWF0aC5hYnModGltZSk7CisgICAgICAgIHZhciBpbnRTZWNvbmRzID0gTWF0aC5mbG9vcihhYnNU
aW1lICUgNjApLnRvRml4ZWQoMCk7CisgICAgICAgIHZhciBpbnRNaW51dGVzID0gTWF0aC5mbG9v
cigoYWJzVGltZSAvIDYwKSAlIDYwKS50b0ZpeGVkKDApOworICAgICAgICB2YXIgaW50SG91cnMg
PSBNYXRoLmZsb29yKGFic1RpbWUgLyAoNjAgKiA2MCkpLnRvRml4ZWQoMCk7CisgICAgICAgIHZh
ciBzaWduID0gdGltZSA8IDAgPyAnLScgOiBTdHJpbmcoKTsKKworICAgICAgICBpZiAoaW50SG91
cnMgPiAwKQorICAgICAgICAgICAgcmV0dXJuIHNpZ24gKyBpbnRIb3VycyArICc6JyArIFN0cmlu
ZygnMDAnICsgaW50TWludXRlcykuc2xpY2UoLTIpICsgIjoiICsgU3RyaW5nKCcwMCcgKyBpbnRT
ZWNvbmRzKS5zbGljZSgtMik7CisKKyAgICAgICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoJzAwJyAr
IGludE1pbnV0ZXMpLnNsaWNlKC0yKSArICI6IiArIFN0cmluZygnMDAnICsgaW50U2Vjb25kcyku
c2xpY2UoLTIpCiAgICAgfSwKIAogICAgIHVwZGF0ZVRpbWU6IGZ1bmN0aW9uKGZvcmNlVXBkYXRl
KQpAQCAtOTAsOSArNDM5LDc4IEBAIENvbnRyb2xsZXJBZHdhaXRhLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0sCiAKLSAgICBoYW5kbGVUaW1lVXBkYXRlOiBmdW5jdGlvbihldmVudCkK
KyAgICBzZXRQbGF5aW5nOiBmdW5jdGlvbihpc1BsYXlpbmcpCiAgICAgewotICAgICAgICB0aGlz
LnVwZGF0ZVRpbWUoKTsKKyAgICAgICAgaWYgKHRoaXMuaXNQbGF5aW5nID09PSBpc1BsYXlpbmcp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuaXNQbGF5aW5nID0gaXNQbGF5aW5n
OworCisgICAgICAgIGlmICghaXNQbGF5aW5nKSB7CisgICAgICAgICAgICB0aGlzLmNvbnRyb2xz
LnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnBhdXNlZCk7CisgICAgICAgICAg
ICB0aGlzLmNvbnRyb2xzLnBsYXlCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMu
cGF1c2VkKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGxheUJ1dHRvbi5zZXRBdHRyaWJ1
dGUoJ2FyaWEtbGFiZWwnLCAnUGxheScpOworICAgICAgICAgICAgdGhpcy5zaG93Q29udHJvbHMo
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xh
c3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMucGF1c2VkKTsKKyAgICAgICAgICAgIHRoaXMu
Y29udHJvbHMucGxheUJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5wYXVz
ZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wbGF5QnV0dG9uLnNldEF0dHJpYnV0ZSgn
YXJpYS1sYWJlbCcsICdQYXVzZScpOworCisgICAgICAgICAgICB0aGlzLmhpZGVDb250cm9scygp
OworICAgICAgICAgICAgdGhpcy5yZXNldEhpZGVDb250cm9sc1RpbWVyKCk7CisgICAgICAgIH0K
KyAgICB9LAorCisgICAgdXBkYXRlUGxheWluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5zZXRQbGF5aW5nKCF0aGlzLmNhblBsYXkoKSk7CisgICAgICAgIGlmICghdGhpcy5jYW5Q
bGF5KCkpCisgICAgICAgICAgICB0aGlzLnNob3dDb250cm9scygpOworICAgIH0sCisKKyAgICB1
cGRhdGVDYXB0aW9uQnV0dG9uOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy52
aWRlby53ZWJraXRIYXNDbG9zZWRDYXB0aW9ucykKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
Y2FwdGlvbkJ1dHRvbi5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmNhcHRpb25CdXR0b24uY2xh
c3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKyAgICB9LAorCisgICAgdXBkYXRl
Q2FwdGlvbkNvbnRhaW5lcjogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmhv
c3QudGV4dFRyYWNrQ29udGFpbmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZh
ciBoYXNDbG9zZWRDYXB0aW9ucyA9IHRoaXMudmlkZW8ud2Via2l0SGFzQ2xvc2VkQ2FwdGlvbnM7
CisgICAgICAgIHZhciBoYXNIaWRkZW5DbGFzcyA9IHRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWlu
ZXIuY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworCisgICAgICAg
IGlmIChoYXNDbG9zZWRDYXB0aW9ucyAmJiBoYXNIaWRkZW5DbGFzcykKKyAgICAgICAgICAgIHRo
aXMuaG9zdC50ZXh0VHJhY2tDb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFt
ZXMuaGlkZGVuKTsKKyAgICAgICAgZWxzZSBpZiAoIWhhc0Nsb3NlZENhcHRpb25zICYmICFoYXNI
aWRkZW5DbGFzcykKKyAgICAgICAgICAgIHRoaXMuaG9zdC50ZXh0VHJhY2tDb250YWluZXIuY2xh
c3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuaGlkZGVuKTsKKworICAgICAgICB0aGlzLnVwZGF0
ZUJhc2UoKTsKKyAgICAgICAgdGhpcy5ob3N0LnVwZGF0ZVRleHRUcmFja0NvbnRhaW5lcigpOwor
ICAgIH0sCisKKyAgICB1cGRhdGVGdWxsc2NyZWVuQnV0dG9uOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICBpZiAodGhpcy52aWRlby5yZWFkeVN0YXRlID4gSFRNTE1lZGlhRWxlbWVudC5IQVZF
X05PVEhJTkcgJiYgIXRoaXMuaGFzVmlzdWFsTWVkaWEpIHsKKyAgICAgICAgICAgIHRoaXMuY29u
dHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRk
ZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5jb250
cm9scy5mdWxsc2NyZWVuQnV0dG9uLmRpc2FibGVkID0gIXRoaXMuaG9zdC5zdXBwb3J0c0Z1bGxz
Y3JlZW47CisgICAgfSwKKworICAgIHVwZGF0ZVZvbHVtZTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQgfHwgIXRoaXMudmlkZW8udm9sdW1lKSB7CisgICAg
ICAgICAgICB0aGlzLmNvbnRyb2xzLm11dGVCdXR0b24uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNz
TmFtZXMubXV0ZWQpOworICAgICAgICAgICAgdGhpcy5jb250cm9scy52b2x1bWUudmFsdWUgPSAw
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5jb250cm9scy5tdXRlQnV0dG9u
LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVzLm11dGVkKTsKKyAgICAgICAgICAgIHRo
aXMuY29udHJvbHMudm9sdW1lLnZhbHVlID0gdGhpcy52aWRlby52b2x1bWU7CisgICAgICAgIH0K
ICAgICB9LAogCiAgICAgdXBkYXRlSGFzQXVkaW86IGZ1bmN0aW9uKCkKQEAgLTEwMCwxMTEgKzUx
OCwzNzYgQEAgQ29udHJvbGxlckFkd2FpdGEucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNv
bnRyb2xzLm11dGVCdXR0b24uZGlzYWJsZWQgPSB0aGlzLnZpZGVvLmF1ZGlvVHJhY2tzLmxlbmd0
aCA9PSAwOwogICAgIH0sCiAKLSAgICBoYW5kbGVNdXRlQnV0dG9uTW91c2VPdmVyOiBmdW5jdGlv
bihldmVudCkKKyAgICB1cGRhdGVIYXNWaWRlbzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMudmlkZW8ub2Zmc2V0VG9wICsgdGhpcy5jb250cm9scy5lbmNsb3N1cmUub2Zmc2V0
VG9wIDwgMTA1KSB7Ci0gICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xp
c3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuZG93bik7CisgICAgICAgIGlmICh0
aGlzLnZpZGVvLnZpZGVvVHJhY2tzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMu
cGFuZWwuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuY2xhc3NMaXN0LmFkZCh0aGlz
LkNsYXNzTmFtZXMubm9WaWRlbyk7CisgICAgfSwKKworICAgIGhhbmRsZVJlYWR5U3RhdGVDaGFu
Z2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5oYXNWaXN1YWxNZWRpYSA9
IHRoaXMudmlkZW8udmlkZW9UcmFja3MgJiYgdGhpcy52aWRlby52aWRlb1RyYWNrcy5sZW5ndGgg
PiAwOworICAgICAgICB0aGlzLnVwZGF0ZVZvbHVtZSgpOworICAgICAgICB0aGlzLnVwZGF0ZUR1
cmF0aW9uKCk7CisgICAgICAgIHRoaXMudXBkYXRlQ2FwdGlvbkJ1dHRvbigpOworICAgICAgICB0
aGlzLnVwZGF0ZUNhcHRpb25Db250YWluZXIoKTsKKyAgICAgICAgdGhpcy51cGRhdGVGdWxsc2Ny
ZWVuQnV0dG9uKCk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVVcGRhdGU6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVUaW1lKCk7CisgICAgfSwKKworICAgIGhh
bmRsZUR1cmF0aW9uQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
dXBkYXRlRHVyYXRpb24oKTsKKyAgICAgICAgdGhpcy51cGRhdGVUaW1lKHRydWUpOworICAgIH0s
CisKKyAgICBoYW5kbGVQbGF5OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMu
c2V0UGxheWluZyh0cnVlKTsKKyAgICB9LAorCisgICAgaGFuZGxlUGF1c2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5zZXRQbGF5aW5nKGZhbHNlKTsKKyAgICB9LAorCisg
ICAgaGFuZGxlVm9sdW1lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMudXBkYXRlVm9sdW1lKCk7CisgICAgfSwKKworICAgIGhhbmRsZUZ1bGxzY3JlZW5DaGFuZ2U6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy51cGRhdGVCYXNlKCk7CisgICAg
ICAgIHRoaXMudXBkYXRlQ29udHJvbHMoKTsKKworICAgICAgICBpZiAodGhpcy5pc0Z1bGxTY3Jl
ZW4oKSkgeworICAgICAgICAgICAgdGhpcy5jb250cm9scy5mdWxsc2NyZWVuQnV0dG9uLnNldEF0
dHJpYnV0ZSgnYXJpYS1sYWJlbCcsICdFeGl0IEZ1bGwgU2NyZWVuJyk7CisgICAgICAgICAgICB0
aGlzLmhvc3QuZW50ZXJlZEZ1bGxzY3JlZW4oKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05h
bWVzLmRvd24pOwotICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVt
b3ZlKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMuZnVs
bHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnRGlzcGxheSBGdWxsIFNj
cmVlbicpOworICAgICAgICAgICAgdGhpcy5ob3N0LmV4aXRlZEZ1bGxzY3JlZW4oKTsKICAgICAg
ICAgfQotICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJveC5jbGFzc0xpc3QucmVtb3ZlKHRo
aXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworICAgIH0sCiAKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgaGFuZGxlVGV4dFRyYWNrQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMudXBkYXRlQ2FwdGlvbkNvbnRhaW5lcigpOwogICAgIH0sCiAKLSAgICBoYW5kbGVWb2x1
bWVCb3hNb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlVGV4dFRyYWNrQWRkOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNs
YXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGluZyk7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB0aGlzLnVwZGF0ZUNhcHRpb25CdXR0b24oKTsKKyAgICAgICAgdGhpcy51cGRh
dGVDYXB0aW9uQ29udGFpbmVyKCk7CiAgICAgfSwKIAotICAgIHJlbW92ZUNvbnRyb2xzOiBmdW5j
dGlvbigpCisgICAgaGFuZGxlVGV4dFRyYWNrUmVtb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7
Ci0gICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLmVuY2xvc3VyZS5wYXJlbnROb2RlKQotICAgICAg
ICAgICAgdGhpcy5jb250cm9scy5lbmNsb3N1cmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlz
LmNvbnRyb2xzLmVuY2xvc3VyZSk7Ci0gICAgICAgIHRoaXMuZGVzdHJveUNhcHRpb25NZW51KCk7
CisgICAgICAgIHRoaXMudXBkYXRlQ2FwdGlvbkJ1dHRvbigpOworICAgICAgICB0aGlzLnVwZGF0
ZUNhcHRpb25Db250YWluZXIoKTsKICAgICB9LAogCi0gICAgYWRkQ29udHJvbHM6IGZ1bmN0aW9u
KCkKKyAgICBoYW5kbGVDb250cm9sc0NoYW5nZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAg
dGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY29udHJvbHMuZW5jbG9zdXJlKTsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlQmFzZSgpOworCisgICAgICAgICAgICBpZiAo
dGhpcy5zaG91bGRIYXZlQ29udHJvbHMoKSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRy
b2xzKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250
cm9scygpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICh3aW5kb3cuY29u
c29sZSkKKyAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICB9CiAgICAg
fSwKIAotICAgIHVwZGF0ZUZ1bGxzY3JlZW5CdXR0b246IGZ1bmN0aW9uKCkKKyAgICBoYW5kbGVX
cmFwcGVyTW91c2VNb3ZlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
LnZpZGVvLnJlYWR5U3RhdGUgPiBIVE1MTWVkaWFFbGVtZW50LkhBVkVfTk9USElORyAmJiAhdGhp
cy5oYXNWaXN1YWxNZWRpYSkgewotICAgICAgICAgICAgdGhpcy5jb250cm9scy5mdWxsc2NyZWVu
QnV0dG9uLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLmhpZGRlbik7CisgICAgICAgIHRo
aXMuc2hvd0NvbnRyb2xzKCk7CisgICAgICAgIHRoaXMucmVzZXRIaWRlQ29udHJvbHNUaW1lcigp
OworCisgICAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nKQogICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIHZhciBkZWx0YSA9IG5ldyBXZWJLaXRQb2ludChldmVudC5jbGll
bnRYIC0gdGhpcy5pbml0aWFsRHJhZ0xvY2F0aW9uLngsIGV2ZW50LmNsaWVudFkgLSB0aGlzLmlu
aXRpYWxEcmFnTG9jYXRpb24ueSk7CisgICAgICAgIHRoaXMuY29udHJvbHMucGFuZWwuc3R5bGUu
bGVmdCA9IHRoaXMuaW5pdGlhbE9mZnNldC54ICsgZGVsdGEueCArICdweCc7CisgICAgICAgIHRo
aXMuY29udHJvbHMucGFuZWwuc3R5bGUudG9wID0gdGhpcy5pbml0aWFsT2Zmc2V0LnkgKyBkZWx0
YS55ICsgJ3B4JzsKKyAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkKKyAgICB9LAogCi0g
ICAgICAgIHRoaXMuY29udHJvbHMuZnVsbHNjcmVlbkJ1dHRvbi5kaXNhYmxlZCA9ICF0aGlzLmhv
c3Quc3VwcG9ydHNGdWxsc2NyZWVuOworICAgIGhhbmRsZVdyYXBwZXJNb3VzZU91dDogZnVuY3Rp
b24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmhpZGVDb250cm9scygpOworICAgICAgICB0
aGlzLmNsZWFySGlkZUNvbnRyb2xzVGltZXIoKTsKICAgICB9LAogCi0gICAgdXBkYXRlUmVhZHlT
dGF0ZTogZnVuY3Rpb24oKQorICAgIGhhbmRsZVdyYXBwZXJNb3VzZVVwOiBmdW5jdGlvbihldmVu
dCkKICAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlVm9sdW1lKCk7CisgICAgICAgIHRoaXMuaXNE
cmFnZ2luZyA9IGZhbHNlOworICAgICAgICB0aGlzLnN0b3BMaXN0ZW5pbmdGb3IodGhpcy5iYXNl
LCAnbW91c2V1cCcsICdoYW5kbGVXcmFwcGVyTW91c2VVcCcsIHRydWUpOwogICAgIH0sCiAKLSAg
ICB1cGRhdGVEdXJhdGlvbjogZnVuY3Rpb24oKQorICAgIGhhbmRsZVBhbmVsTW91c2VEb3duOiBm
dW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIENvbnRyb2xsZXIucHJvdG90eXBlLnVwZGF0
ZUR1cmF0aW9uLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIGlmICh0aGlzLmlzTGl2
ZSkKLSAgICAgICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmUubWF4ID0gMDsKKyAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPSB0aGlzLmNvbnRyb2xzLnBhbmVsKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICghdGhpcy5pc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLmJhc2UsICdtb3VzZXVwJywgdGhp
cy5oYW5kbGVXcmFwcGVyTW91c2VVcCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9
IHRydWU7CisgICAgICAgIHRoaXMuaW5pdGlhbERyYWdMb2NhdGlvbiA9IG5ldyBXZWJLaXRQb2lu
dChldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTsKKyAgICAgICAgdGhpcy5pbml0aWFsT2Zm
c2V0ID0gbmV3IFdlYktpdFBvaW50KAorICAgICAgICAgICAgcGFyc2VJbnQodGhpcy5jb250cm9s
cy5wYW5lbC5zdHlsZS5sZWZ0KSB8IDAsCisgICAgICAgICAgICBwYXJzZUludCh0aGlzLmNvbnRy
b2xzLnBhbmVsLnN0eWxlLnRvcCkgfCAwCisgICAgICAgICk7CiAgICAgfSwKIAotICAgIHNldElz
TGl2ZTogZnVuY3Rpb24obGl2ZSkKKyAgICBoYW5kbGVQYW5lbFRyYW5zaXRpb25FbmQ6IGZ1bmN0
aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuc2V0SXNMaXZl
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgIHRoaXMuY29udHJvbHMudGltZWxpbmUu
ZGlzYWJsZWQgPSB0aGlzLmlzTGl2ZTsKKyAgICAgICAgdmFyIG9wYWNpdHkgPSB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRyb2xzLnBhbmVsKS5vcGFjaXR5OworICAgICAgICBpZiAo
cGFyc2VJbnQob3BhY2l0eSkgPiAwKQorICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5j
bGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRkZW4pOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0aGlzLmNvbnRyb2xzLnBhbmVsLmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05h
bWVzLmhpZGRlbik7CiAgICAgfSwKIAotICAgIHVwZGF0ZVBsYXlpbmc6IGZ1bmN0aW9uKCkKKyAg
ICBoYW5kbGVQYW5lbENsaWNrOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIENvbnRy
b2xsZXIucHJvdG90eXBlLnVwZGF0ZVBsYXlpbmcuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgICAgaWYgKCF0aGlzLmNhblBsYXkoKSkKLSAgICAgICAgICAgIHRoaXMuc2hvd0NvbnRyb2xz
KCk7CisgICAgICAgIC8qIFByZXZlbnQgY2xpY2tzIGluIHRoZSBwYW5lbCBmcm9tIHBsYXlpbmcg
b3IgcGF1c2luZyB0aGUgdmlkZW8gaW4gYSBNZWRpYURvY3VtZW50LiAqLworICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgIH0sCiAKLSAgICB1cGRhdGVQcm9ncmVzczogZnVuY3Rp
b24oZm9yY2VVcGRhdGUpCisgICAgY2FuUGxheTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMudmlkZW8ucGF1c2VkIHx8IHRoaXMudmlkZW8uZW5kZWQgfHwgdGhpcy52aWRl
by5yZWFkeVN0YXRlIDwgSFRNTE1lZGlhRWxlbWVudC5IQVZFX01FVEFEQVRBOwogICAgIH0sCiAK
LSAgICBoYW5kbGVDYXB0aW9uQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFu
ZGxlUGxheUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYg
KHRoaXMuY2FuUGxheSgpKQorICAgICAgICAgICAgdGhpcy52aWRlby5wbGF5KCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHRoaXMudmlkZW8ucGF1c2UoKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVsaW5lQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICB7CisgICAgICAgIHRoaXMudmlkZW8uZmFzdFNlZWsodGhpcy5jb250cm9scy50aW1lbGlu
ZS52YWx1ZSk7CisgICAgfSwKKworICAgIGhhbmRsZVRpbWVsaW5lTW91c2VVcDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgeworICAgICAgICAvKiBEbyBhIHByZWNpc2Ugc2VlayB3aGVuIHdlIGxpZnQg
dGhlIG1vdXNlLiAqLworICAgICAgICB0aGlzLnZpZGVvLmN1cnJlbnRUaW1lID0gdGhpcy5jb250
cm9scy50aW1lbGluZS52YWx1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlTXV0ZUJ1dHRvbkNsaWNr
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy5oYW5kbGVDYXB0aW9uQnV0
dG9uU2hvd01lbnUoZXZlbnQpCisgICAgICAgIHRoaXMudmlkZW8ubXV0ZWQgPSAhdGhpcy52aWRl
by5tdXRlZDsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQpCisgICAgICAgICAgICB0aGlz
LmNvbnRyb2xzLm11dGVCdXR0b24uc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywgJ1VubXV0ZScp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlTXV0ZUJ1dHRvbk1v
dXNlT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy52aWRlby5v
ZmZzZXRUb3AgKyB0aGlzLmNvbnRyb2xzLmVuY2xvc3VyZS5vZmZzZXRUb3AgPCAxMDUpIHsKKyAg
ICAgICAgICAgIHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFz
c05hbWVzLmRvd24pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3Qu
YWRkKHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHRoaXMuY29udHJvbHMudm9sdW1lQm94LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5DbGFzc05hbWVz
LmRvd24pOworICAgICAgICAgICAgdGhpcy5jb250cm9scy5wYW5lbC5jbGFzc0xpc3QucmVtb3Zl
KHRoaXMuQ2xhc3NOYW1lcy5kb3duKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmNvbnRyb2xz
LnZvbHVtZUJveC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0sCisKKyAgICBoYW5kbGVWb2x1bWVCb3hNb3VzZU91
dDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLmNvbnRyb2xzLnZvbHVtZUJv
eC5jbGFzc0xpc3QuYWRkKHRoaXMuQ2xhc3NOYW1lcy5oaWRpbmcpOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9LAorCisgICAgaGFuZGxlVm9sdW1lU2xpZGVySW5wdXQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMudmlkZW8ubXV0ZWQpIHsKKyAgICAgICAgICAg
IHRoaXMudmlkZW8ubXV0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuY29udHJvbHMubXV0
ZUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCAnTXV0ZScpOworICAgICAgICB9Cisg
ICAgICAgIHRoaXMudmlkZW8udm9sdW1lID0gdGhpcy5jb250cm9scy52b2x1bWUudmFsdWU7Cisg
ICAgfSwKKworICAgIGhhbmRsZUZ1bGxzY3JlZW5CdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLmlzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAg
dGhpcy52aWRlby53ZWJraXRFeGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICB0aGlzLnZpZGVvLndlYmtpdEVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9LAogCiAgICAgYnVpbGRDYXB0aW9uTWVudTogZnVuY3Rpb24oKQogICAgIHsK
LSAgICAgICAgQ29udHJvbGxlci5wcm90b3R5cGUuYnVpbGRDYXB0aW9uTWVudS5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOworICAgICAgICB2YXIgdHJhY2tzID0gdGhpcy5ob3N0LnNvcnRlZFRyYWNr
TGlzdEZvck1lbnUodGhpcy52aWRlby50ZXh0VHJhY2tzKTsKKyAgICAgICAgaWYgKCF0cmFja3Mg
fHwgIXRyYWNrcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5s
aXN0ZW5Gb3IodGhpcy5jYXB0aW9uTWVudSwgJ21vdXNlb3V0JywgdGhpcy5oYW5kbGVDYXB0aW9u
TW91c2VPdXQpOworICAgICAgICB0aGlzLmNhcHRpb25NZW51ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuc2V0QXR0cmlidXRlKCdwc2V1
ZG8nLCAnLXdlYmtpdC1tZWRpYS1jb250cm9scy1jbG9zZWQtY2FwdGlvbnMtY29udGFpbmVyJyk7
CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuc2V0QXR0cmlidXRlKCdpZCcsICdhdWRpb1RyYWNr
TWVudScpOworICAgICAgICB0aGlzLmxpc3RlbkZvcih0aGlzLmNhcHRpb25NZW51LCAnbW91c2Vv
dXQnLCB0aGlzLmhhbmRsZUNhcHRpb25NZW51TW91c2VPdXQpOwogICAgICAgICB0aGlzLmxpc3Rl
bkZvcih0aGlzLmNhcHRpb25NZW51LCAndHJhbnNpdGlvbmVuZCcsIHRoaXMuY2FwdGlvbk1lbnVU
cmFuc2l0aW9uRW5kKTsKKyAgICAgICAgdGhpcy5iYXNlLmFwcGVuZENoaWxkKHRoaXMuY2FwdGlv
bk1lbnUpOworICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51VHJlZUVsZW1lbnRz
ID0gW107CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnVJdGVtcyA9IFtdOworCisgICAgICAgIHZh
ciBvZmZJdGVtID0gdGhpcy5ob3N0LmNhcHRpb25NZW51T2ZmSXRlbTsKKyAgICAgICAgdmFyIGF1
dG9tYXRpY0l0ZW0gPSB0aGlzLmhvc3QuY2FwdGlvbk1lbnVBdXRvbWF0aWNJdGVtOworICAgICAg
ICB2YXIgZGlzcGxheU1vZGUgPSB0aGlzLmhvc3QuY2FwdGlvbkRpc3BsYXlNb2RlOworCisgICAg
ICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHRo
aXMuY2FwdGlvbk1lbnUuYXBwZW5kQ2hpbGQobGlzdCk7CisgICAgICAgIHRoaXMuY2FwdGlvbk1l
bnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVudHMucHVzaChsaXN0KTsKKworICAgICAgICB2YXIgaGVh
ZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7CisgICAgICAgIGhlYWRpbmcuaWQg
PSAnd2Via2l0TWVkaWFDb250cm9sc0Nsb3NlZENhcHRpb25zSGVhZGluZyc7CisgICAgICAgIGxp
c3QuYXBwZW5kQ2hpbGQoaGVhZGluZyk7CisgICAgICAgIGhlYWRpbmcuaW5uZXJUZXh0ID0gJ1N1
YnRpdGxlcyc7CisgICAgICAgIHRoaXMuY2FwdGlvbk1lbnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVu
dHMucHVzaChoZWFkaW5nKTsKKworICAgICAgICB2YXIgdWwgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd1bCcpOworICAgICAgICB1bC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnbWVudScpOworICAg
ICAgICB1bC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScsICd3ZWJraXRNZWRpYUNvbnRy
b2xzQ2xvc2VkQ2FwdGlvbnNIZWFkaW5nJyk7CisgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQodWwp
OworICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51VHJlZUVsZW1lbnRzLnB1c2go
dWwpOworCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdHJhY2tzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgbWVudUl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScp
OworICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0cmlidXRlKCdyb2xlJywgJ21lbnVpdGVtcmFk
aW8nKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEn
KTsKKyAgICAgICAgICAgIHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5wdXNoKG1lbnVJdGVtKTsKKyAg
ICAgICAgICAgIHRoaXMubGlzdGVuRm9yKG1lbnVJdGVtLCAnY2xpY2snLCB0aGlzLmNhcHRpb25J
dGVtU2VsZWN0ZWQpOworICAgICAgICAgICAgdGhpcy5saXN0ZW5Gb3IobWVudUl0ZW0sICdrZXl1
cCcsIHRoaXMuaGFuZGxlQ2FwdGlvbkl0ZW1LZXlVcCk7CisgICAgICAgICAgICB1bC5hcHBlbmRD
aGlsZChtZW51SXRlbSk7CisKKyAgICAgICAgICAgIHZhciB0cmFjayA9IHRyYWNrc1tpXTsKKyAg
ICAgICAgICAgIG1lbnVJdGVtLmlubmVyVGV4dCA9IHRoaXMuaG9zdC5kaXNwbGF5TmFtZUZvclRy
YWNrKHRyYWNrKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnRyYWNrID0gdHJhY2s7CisKKyAgICAg
ICAgICAgIGlmICh0cmFjayA9PT0gb2ZmSXRlbSkgeworICAgICAgICAgICAgICAgIHZhciBvZmZN
ZW51ID0gbWVudUl0ZW07CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGlmICh0cmFjayA9PT0gYXV0b21hdGljSXRlbSkgeworICAgICAgICAg
ICAgICAgIGlmIChkaXNwbGF5TW9kZSA9PT0gJ2F1dG9tYXRpYycpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbWVudUl0ZW0uY2xhc3NMaXN0LmFkZCh0aGlzLkNsYXNzTmFtZXMuc2VsZWN0ZWQpOwor
ICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAn
KTsKKyAgICAgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0cmlidXRlKCdhcmlhLWNoZWNr
ZWQnLCAndHJ1ZScpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRpc3BsYXlNb2RlICE9ICdhdXRv
bWF0aWMnICYmIHRyYWNrLm1vZGUgPT09ICdzaG93aW5nJykgeworICAgICAgICAgICAgICAgIHZh
ciB0cmFja01lbnVJdGVtU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIG1lbnVJdGVt
LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgICAg
ICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKKyAgICAgICAgICAgICAg
ICBtZW51SXRlbS5zZXRBdHRyaWJ1dGUoJ2FyaWEtY2hlY2tlZCcsICd0cnVlJyk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KIAotICAgICAgICB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51
VHJlZUVsZW1lbnRzID0gdGhpcy5jYXB0aW9uTWVudS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIp
OworICAgICAgICBpZiAob2ZmTWVudSAmJiBkaXNwbGF5TW9kZSA9PT0gJ2ZvcmNlZC1vbmx5JyAm
JiAhdHJhY2tNZW51SXRlbVNlbGVjdGVkKSB7CisgICAgICAgICAgICBvZmZNZW51LmNsYXNzTGlz
dC5hZGQodGhpcy5DbGFzc05hbWVzLnNlbGVjdGVkKTsKKyAgICAgICAgICAgIG1lbnVJdGVtLnNl
dEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnMCcpOworICAgICAgICAgICAgbWVudUl0ZW0uc2V0QXR0
cmlidXRlKCdhcmlhLWNoZWNrZWQnLCAndHJ1ZScpOworICAgICAgICB9CiAKLSAgICAgICAgLy8g
Q2FwdGlvbiBtZW51IGhhcyB0byBiZSBjZW50ZXJlZCB0byB0aGUgY2FwdGlvbiBidXR0b24uCisg
ICAgICAgIC8qIEZvY3VzIGZpcnN0IHNlbGVjdGVkIG1lbnVpdGVtLiAqLworICAgICAgICBmb3Ig
KHZhciBpID0gMCwgYyA9IHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5sZW5ndGg7IGkgPCBjOyBpKysp
IHsKKyAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5jYXB0aW9uTWVudUl0ZW1zW2ldOworICAg
ICAgICAgICAgaWYgKGl0ZW0uY2xhc3NMaXN0LmNvbnRhaW5zKHRoaXMuQ2xhc3NOYW1lcy5zZWxl
Y3RlZCkpIHsKKyAgICAgICAgICAgICAgICBpdGVtLmZvY3VzKCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiBDYXB0aW9uIG1l
bnUgaGFzIHRvIGJlIGNlbnRlcmVkIHRvIHRoZSBjYXB0aW9uIGJ1dHRvbi4gKi8KICAgICAgICAg
dmFyIGNhcHRpb25CdXR0b25DZW50ZXIgPSAgdGhpcy5jb250cm9scy5wYW5lbC5vZmZzZXRMZWZ0
ICsgdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLm9mZnNldExlZnQgKwogICAgICAgICAgICAg
dGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uLm9mZnNldFdpZHRoIC8gMjsKICAgICAgICAgdmFy
IGNhcHRpb25NZW51TGVmdCA9IChjYXB0aW9uQnV0dG9uQ2VudGVyIC0gdGhpcy5jYXB0aW9uTWVu
dS5vZmZzZXRXaWR0aCAvIDIpOwogICAgICAgICBpZiAoY2FwdGlvbk1lbnVMZWZ0ICsgdGhpcy5j
YXB0aW9uTWVudS5vZmZzZXRXaWR0aCA+IHRoaXMuY29udHJvbHMucGFuZWwub2Zmc2V0TGVmdCAr
IHRoaXMuY29udHJvbHMucGFuZWwub2Zmc2V0V2lkdGgpCiAgICAgICAgICAgICB0aGlzLmNhcHRp
b25NZW51LmNsYXNzTGlzdC5hZGQodGhpcy5DbGFzc05hbWVzLm91dCk7CiAgICAgICAgIHRoaXMu
Y2FwdGlvbk1lbnUuc3R5bGUubGVmdCA9IGNhcHRpb25NZW51TGVmdCArICdweCc7Ci0gICAgICAg
IC8vIEFzIGhlaWdodCBpcyBub3QgaW4gdGhlIGNzcywgaXQgbmVlZHMgdG8gYmUgc3BlY2lmaWVk
IHRvIGFuaW1hdGUgaXQuCisgICAgICAgIC8qIEFzIGhlaWdodCBpcyBub3QgaW4gdGhlIGNzcywg
aXQgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIHRvIGFuaW1hdGUgaXQuICovCiAgICAgICAgIHRoaXMu
Y2FwdGlvbk1lbnUuaGVpZ2h0ID0gdGhpcy5jYXB0aW9uTWVudS5vZmZzZXRIZWlnaHQ7CiAgICAg
ICAgIHRoaXMuY2FwdGlvbk1lbnUuc3R5bGUuaGVpZ2h0ID0gMDsKICAgICB9LAogCi0gICAgZGVz
dHJveUNhcHRpb25NZW51OiBmdW5jdGlvbigpCisgICAgY2FwdGlvbkl0ZW1TZWxlY3RlZDogZnVu
Y3Rpb24oZXZlbnQpCiAgICAgeworICAgICAgICB0aGlzLmhvc3Quc2V0U2VsZWN0ZWRUZXh0VHJh
Y2soZXZlbnQudGFyZ2V0LnRyYWNrKTsKICAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsK
ICAgICB9LAogCisgICAgZm9jdXNTaWJsaW5nQ2FwdGlvbkl0ZW06IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdmFyIGN1cnJlbnRJdGVtID0gZXZlbnQudGFyZ2V0OworICAgICAgICB2
YXIgcGVuZGluZ0l0ZW0gPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoKGV2ZW50LmtleUNvZGUpIHsK
KyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmxlZnQ6CisgICAgICAgIGNhc2UgdGhpcy5LZXlD
b2Rlcy51cDoKKyAgICAgICAgICAgIHBlbmRpbmdJdGVtID0gY3VycmVudEl0ZW0ucHJldmlvdXNT
aWJsaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5y
aWdodDoKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmRvd246CisgICAgICAgICAgICBwZW5k
aW5nSXRlbSA9IGN1cnJlbnRJdGVtLm5leHRTaWJsaW5nOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKHBlbmRpbmdJdGVtKSB7CisgICAgICAgICAgICBjdXJyZW50
SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7CisgICAgICAgICAgICBwZW5kaW5n
SXRlbS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJzAnKTsKKyAgICAgICAgICAgIHBlbmRpbmdJ
dGVtLmZvY3VzKCk7CisgICAgICAgIH0KKyAgICB9LAorCisgICAgaGFuZGxlQ2FwdGlvbkl0ZW1L
ZXlVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNv
ZGUpIHsKKyAgICAgICAgY2FzZSB0aGlzLktleUNvZGVzLmVudGVyOgorICAgICAgICBjYXNlIHRo
aXMuS2V5Q29kZXMuc3BhY2U6CisgICAgICAgICAgICB0aGlzLmNhcHRpb25JdGVtU2VsZWN0ZWQo
ZXZlbnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5l
c2NhcGU6CisgICAgICAgICAgICB0aGlzLmhpZGVDYXB0aW9uTWVudSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5sZWZ0OgorICAgICAgICBjYXNlIHRo
aXMuS2V5Q29kZXMudXA6CisgICAgICAgIGNhc2UgdGhpcy5LZXlDb2Rlcy5yaWdodDoKKyAgICAg
ICAgY2FzZSB0aGlzLktleUNvZGVzLmRvd246CisgICAgICAgICAgICB0aGlzLmZvY3VzU2libGlu
Z0NhcHRpb25JdGVtKGV2ZW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfSwKKwog
ICAgIHNob3dDYXB0aW9uTWVudTogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgaWYgKCF0aGlz
LmNhcHRpb25NZW51KQorICAgICAgICAgICAgdGhpcy5idWlsZENhcHRpb25NZW51KCk7CiAgICAg
ICAgIHRoaXMuY2FwdGlvbk1lbnUuc3R5bGUuaGVpZ2h0ID0gdGhpcy5jYXB0aW9uTWVudS5oZWln
aHQgKyAncHgnOwogICAgIH0sCiAKQEAgLTIxNSw0MCArODk4LDUzIEBAIENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZSA9IHsKIAogICAgIGNhcHRpb25NZW51VHJhbnNpdGlvbkVuZDogZnVuY3Rp
b24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5jYXB0aW9uTWVudS5vZmZzZXRIZWln
aHQgPT09IDApCi0gICAgICAgICAgICBDb250cm9sbGVyLnByb3RvdHlwZS5kZXN0cm95Q2FwdGlv
bk1lbnUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKKyAgICAgICAgaWYgKHRoaXMuY2FwdGlvbk1l
bnUub2Zmc2V0SGVpZ2h0ICE9PSAwKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuY2FwdGlvbk1lbnVJdGVtcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHsKKyAgICAgICAgICAg
IHRoaXMuc3RvcExpc3RlbmluZ0ZvcihpdGVtLCAnY2xpY2snLCB0aGlzLmNhcHRpb25JdGVtU2Vs
ZWN0ZWQpOworICAgICAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5nRm9yKGl0ZW0sICdrZXl1cCcs
IHRoaXMuaGFuZGxlQ2FwdGlvbkl0ZW1LZXlVcCk7CisgICAgICAgIH0sIHRoaXMpOworCisgICAg
ICAgIC8qIEZLQSBhbmQgQVg6IGZvY3VzIHRoZSB0cmlnZ2VyIGJlZm9yZSBkZXN0cm95aW5nIHRo
ZSBlbGVtZW50IHdpdGggZm9jdXMuICovCisgICAgICAgIGlmICh0aGlzLmNvbnRyb2xzLmNhcHRp
b25CdXR0b24pCisgICAgICAgICAgICB0aGlzLmNvbnRyb2xzLmNhcHRpb25CdXR0b24uZm9jdXMo
KTsKKworICAgICAgICBpZiAodGhpcy5jYXB0aW9uTWVudS5wYXJlbnROb2RlKQorICAgICAgICAg
ICAgdGhpcy5jYXB0aW9uTWVudS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuY2FwdGlvbk1l
bnUpOworICAgICAgICBkZWxldGUgdGhpcy5jYXB0aW9uTWVudTsKKyAgICAgICAgZGVsZXRlIHRo
aXMuY2FwdGlvbk1lbnVJdGVtczsKICAgICB9LAogCi0gICAgaGFuZGxlQ2FwdGlvbkJ1dHRvbk1v
dXNlT3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgY2FwdGlvbk1lbnVDb250YWluc05vZGU6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewotICAgICAgICB0aGlzLmhhbmRsZUNhcHRpb25CdXR0b25TaG93
TWVudShldmVudCk7CisgICAgICAgIHJldHVybiB0aGlzLmNhcHRpb25NZW51LmNhcHRpb25NZW51
VHJlZUVsZW1lbnRzLmZpbmQoKGl0ZW0pID0+IGl0ZW0gPT0gbm9kZSkKKyAgICAgICAgICAgIHx8
IHRoaXMuY2FwdGlvbk1lbnVJdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtID09IG5vZGUpOworICAg
IH0sCisKKyAgICBoYW5kbGVDYXB0aW9uQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgeworICAgICAgICB0aGlzLnNob3dDYXB0aW9uTWVudSgpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9LAogCi0gICAgaGFuZGxlQ2FwdGlvbkJ1dHRvblNob3dNZW51OiBmdW5jdGlvbihl
dmVudCkKKyAgICBoYW5kbGVDYXB0aW9uQnV0dG9uTW91c2VPdmVyOiBmdW5jdGlvbihldmVudCkK
ICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5jYXB0aW9uTWVudSkKLSAgICAgICAgICAgIHRoaXMu
YnVpbGRDYXB0aW9uTWVudSgpOwotICAgICAgICBpZiAoIWNvbnRhaW5zKHRoaXMuY2FwdGlvbk1l
bnUuY2FwdGlvbk1lbnVUcmVlRWxlbWVudHMsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKQotICAgICAg
ICAgICAgdGhpcy5zaG93Q2FwdGlvbk1lbnUoKTsKKyAgICAgICAgdGhpcy5zaG93Q2FwdGlvbk1l
bnUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIAogICAgIGhhbmRsZUNhcHRpb25C
dXR0b25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICBpZiAodGhpcy5j
YXB0aW9uTWVudSAmJiAhY29udGFpbnModGhpcy5jYXB0aW9uTWVudS5jYXB0aW9uTWVudVRyZWVF
bGVtZW50cywgZXZlbnQucmVsYXRlZFRhcmdldCkpCisgICAgICAgIGlmICh0aGlzLmNhcHRpb25N
ZW51ICYmICF0aGlzLmNhcHRpb25NZW51Q29udGFpbnNOb2RlKGV2ZW50LnJlbGF0ZWRUYXJnZXQp
KQogICAgICAgICAgICAgdGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfSwKIAotICAgIGhhbmRsZUNhcHRpb25Nb3VzZU91dDogZnVuY3Rpb24oZXZlbnQp
CisgICAgaGFuZGxlQ2FwdGlvbk1lbnVNb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCAhPSB0aGlzLmNvbnRyb2xzLmNhcHRpb25C
dXR0b24gJiYKLSAgICAgICAgICAgICFjb250YWlucyh0aGlzLmNhcHRpb25NZW51LmNhcHRpb25N
ZW51VHJlZUVsZW1lbnRzLCBldmVudC5yZWxhdGVkVGFyZ2V0KSkKKyAgICAgICAgaWYgKGV2ZW50
LnJlbGF0ZWRUYXJnZXQgIT0gdGhpcy5jb250cm9scy5jYXB0aW9uQnV0dG9uICYmICF0aGlzLmNh
cHRpb25NZW51Q29udGFpbnNOb2RlKGV2ZW50LnJlbGF0ZWRUYXJnZXQpKQogICAgICAgICAgICAg
dGhpcy5oaWRlQ2FwdGlvbk1lbnUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSwKIH07
Ci0KLU9iamVjdC5jcmVhdGUoQ29udHJvbGxlci5wcm90b3R5cGUpLmV4dGVuZChDb250cm9sbGVy
QWR3YWl0YS5wcm90b3R5cGUpOwotT2JqZWN0LmRlZmluZVByb3BlcnR5KENvbnRyb2xsZXJBZHdh
aXRhLnByb3RvdHlwZSwgJ2NvbnN0cnVjdG9yJywgeyBlbnVtZXJhYmxlOmZhbHNlLCB2YWx1ZTpD
b250cm9sbGVyQWR3YWl0YSB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFjb250cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcwppbmRleCBkY2IyOTE3MDM4ZS4u
Zjc4Njk2ZDY0OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFjb250
cm9scy9tZWRpYUNvbnRyb2xzQmFzZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhY29udHJvbHMvbWVkaWFDb250cm9sc0Jhc2UuanMKQEAgLTkxLDcgKzkxLDYgQEAgQ29udHJv
bGxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRodW1ibmFpbFRyYWNrOiAndGh1bWJuYWlsLXRy
YWNrJywKICAgICAgICAgdm9sdW1lQm94OiAndm9sdW1lLWJveCcsCiAgICAgICAgIG5vVmlkZW86
ICduby12aWRlbycsCi0gICAgICAgIG5vRHVyYXRpb246ICduby1kdXJhdGlvbicsCiAgICAgICAg
IGRvd246ICdkb3duJywKICAgICAgICAgb3V0OiAnb3V0JywKICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9y
bUdUSy5jbWFrZQppbmRleCA3NzgxZDBjNThlNy4uYTFmMDAwZWM3MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRm
b3JtR1RLLmNtYWtlCkBAIC03MCw5ICs3MCw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfVVNFUl9B
R0VOVF9TVFlMRV9TSEVFVFMKICkKIAogc2V0KFdlYkNvcmVfVVNFUl9BR0VOVF9TQ1JJUFRTCi0g
ICAgJHtXRUJDT1JFX0RJUn0vZW4ubHByb2ovbWVkaWFDb250cm9sc0xvY2FsaXplZFN0cmluZ3Mu
anMKICAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVkaWFDb250cm9s
c0Fkd2FpdGEuanMKLSAgICAke1dFQkNPUkVfRElSfS9Nb2R1bGVzL21lZGlhY29udHJvbHMvbWVk
aWFDb250cm9sc0Jhc2UuanMKICkKIAogc2V0KFdlYkNvcmVfVVNFUl9BR0VOVF9TQ1JJUFRTX0RF
UEVOREVOQ0lFUyAke1dFQkNPUkVfRElSfS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVBZHdhaXRhLmNw
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtV1BFLmNtYWtlIGIvU291cmNl
L1dlYkNvcmUvUGxhdGZvcm1XUEUuY21ha2UKaW5kZXggMjAyZWJhY2JiZmQuLjBkNTk4MmUxZGM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNDUsOCArNDUsNiBAQCBsaXN0KEFQUEVO
RCBXZWJDb3JlX1VTRVJfQUdFTlRfU1RZTEVfU0hFRVRTCiApCiAKIHNldChXZWJDb3JlX1VTRVJf
QUdFTlRfU0NSSVBUUwotICAgICR7V0VCQ09SRV9ESVJ9L2VuLmxwcm9qL21lZGlhQ29udHJvbHNM
b2NhbGl6ZWRTdHJpbmdzLmpzCi0gICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRpYWNvbnRy
b2xzL21lZGlhQ29udHJvbHNCYXNlLmpzCiAgICAgJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9tZWRp
YWNvbnRyb2xzL21lZGlhQ29udHJvbHNBZHdhaXRhLmpzCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUFkd2FpdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lQWR3YWl0YS5jcHAKaW5kZXggNzc1NDZlMDAyZTEuLmIx
OGM0ZDA1ZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhl
bWVBZHdhaXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVB
ZHdhaXRhLmNwcApAQCAtNDEsNyArNDEsNiBAQAogI2luY2x1ZGUgIlRpbWVSYW5nZXMuaCIKICNp
bmNsdWRlICJVc2VyQWdlbnRTY3JpcHRzLmgiCiAjaW5jbHVkZSAiVXNlckFnZW50U3R5bGVTaGVl
dHMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTc1LDExICsxNzQsNyBAQCBTdHJpbmcgUmVuZGVyVGhlbWVBZHdhaXRh
OjpleHRyYU1lZGlhQ29udHJvbHNTdHlsZVNoZWV0KCkKIAogU3RyaW5nIFJlbmRlclRoZW1lQWR3
YWl0YTo6bWVkaWFDb250cm9sc1NjcmlwdCgpCiB7Ci0gICAgU3RyaW5nQnVpbGRlciBzY3JpcHRC
dWlsZGVyOwotICAgIHNjcmlwdEJ1aWxkZXIuYXBwZW5kQ2hhcmFjdGVycyhtZWRpYUNvbnRyb2xz
TG9jYWxpemVkU3RyaW5nc0phdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xzTG9jYWxpemVk
U3RyaW5nc0phdmFTY3JpcHQpKTsKLSAgICBzY3JpcHRCdWlsZGVyLmFwcGVuZENoYXJhY3RlcnMo
bWVkaWFDb250cm9sc0Jhc2VKYXZhU2NyaXB0LCBzaXplb2YobWVkaWFDb250cm9sc0Jhc2VKYXZh
U2NyaXB0KSk7Ci0gICAgc2NyaXB0QnVpbGRlci5hcHBlbmRDaGFyYWN0ZXJzKG1lZGlhQ29udHJv
bHNBZHdhaXRhSmF2YVNjcmlwdCwgc2l6ZW9mKG1lZGlhQ29udHJvbHNBZHdhaXRhSmF2YVNjcmlw
dCkpOwotICAgIHJldHVybiBzY3JpcHRCdWlsZGVyLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIFN0
cmluZyhtZWRpYUNvbnRyb2xzQWR3YWl0YUphdmFTY3JpcHQsIHNpemVvZihtZWRpYUNvbnRyb2xz
QWR3YWl0YUphdmFTY3JpcHQpKTsKIH0KICNlbmRpZgogCg==
</data>
<flag name="review"
          id="407466"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>